diff options
author | Thomas Schwinge <tschwinge@baylibre.com> | 2024-12-04 22:37:17 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@baylibre.com> | 2024-12-06 09:50:22 +0100 |
commit | 4ab02a7b26b1845de1e61d8145678da7215442fa (patch) | |
tree | 7ce8b42926a24aa4a85966ceb0bfe211d6327c93 /gcc | |
parent | c80ecfa0927a1ada31864c709220a2adb7c96662 (diff) | |
download | gcc-4ab02a7b26b1845de1e61d8145678da7215442fa.zip gcc-4ab02a7b26b1845de1e61d8145678da7215442fa.tar.gz gcc-4ab02a7b26b1845de1e61d8145678da7215442fa.tar.bz2 |
nvptx: Tag '-misa=[...]', '-mptx=[...]' as 'Negative' of themselves [PR117916]
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/nvptx/nvptx.opt | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt index c040740..53ddf45 100644 --- a/gcc/config/nvptx/nvptx.opt +++ b/gcc/config/nvptx/nvptx.opt @@ -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= |