]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
nvptx: Tag '-misa=[...]', '-mptx=[...]' as 'Negative' of themselves [PR117916]
authorThomas Schwinge <tschwinge@baylibre.com>
Wed, 4 Dec 2024 21:37:17 +0000 (22:37 +0100)
committerThomas Schwinge <tschwinge@baylibre.com>
Fri, 6 Dec 2024 08:50:22 +0000 (09:50 +0100)
This issue is similar to what a year ago I resolved for GCN in PR112669
"GCN: wrong 'LIBRARY_PATH' in presence of several different '-march=[...]' flags".

Given the current standard nvptx configuration, we get:

    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -mptx=6.3
    .
    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -mptx=3.1
    mptx-3.1

... as expected.  The following, however, is not:

    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -mptx=3.1 -mptx=6.3
    mptx-3.1

This should print '.'.

Or, in a '--with-arch=sm_70' configuration:

    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -misa=sm_70
    .
    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -misa=sm_30
    misa-sm_30

... as expected.  The following, however, are not:

    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -misa=sm_30 -misa=sm_70
    misa-sm_30
    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -misa=sm_30 -march=sm_70
    misa-sm_30
    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -march=sm_30 -march=sm_70
    misa-sm_30
    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -march=sm_30 -misa=sm_70
    misa-sm_30

These should all print '.'.

Even worse:

    $ build-gcc-offload-nvptx-none/gcc/xgcc -print-multi-directory -mgomp -mptx=3.1 -mptx=_
    .

This should print 'mgomp'.  Otherwise, for OpenMP offloading compilation
the wrong (non-'mgomp') multilib is linked in ('.'), and linking fails
due to 'unresolved symbol __nvptx_uni'.

PR target/117916
gcc/
* config/nvptx/nvptx.opt (misa=, mptx=): Tag as 'Negative' of
themselves.

gcc/config/nvptx/nvptx.opt

index c04074052286175e28b114c1dab3f0470fd6d8c1..53ddf451836e8c41b253efbb72a4fc3e97b142f3 100644 (file)
@@ -56,7 +56,7 @@ Target Mask(GOMP)
 Generate code for OpenMP offloading: enables -msoft-stack and -muniform-simt.
 
 misa=
-Target RejectNegative ToLower Joined Enum(ptx_isa) Var(ptx_isa_option) Init(PTX_ISA_unset)
+Target RejectNegative Negative(misa=) ToLower Joined Enum(ptx_isa) Var(ptx_isa_option) Init(PTX_ISA_unset)
 Specify the PTX ISA target architecture to use.
 
 march=
@@ -140,7 +140,7 @@ EnumValue
 Enum(ptx_version) String(_) Value(PTX_VERSION_default)
 
 mptx=
-Target RejectNegative ToLower Joined Enum(ptx_version) Var(ptx_version_option) Init(PTX_VERSION_unset)
+Target RejectNegative Negative(mptx=) ToLower Joined Enum(ptx_version) Var(ptx_version_option) Init(PTX_VERSION_unset)
 Specify the PTX ISA version to use.
 
 minit-regs=