https://gcc.gnu.org/g:bce3f7429c52d67efeaf83b2373bc1dedf83cbe3
commit bce3f7429c52d67efeaf83b2373bc1dedf83cbe3 Author: Thomas Schwinge <tschwi...@baylibre.com> Date: Wed Dec 4 22:37:17 2024 +0100 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. (cherry picked from commit 4ab02a7b26b1845de1e61d8145678da7215442fa) Diff: --- gcc/ChangeLog.omp | 7 +++++++ gcc/config/nvptx/nvptx.opt | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 337fc2f3a23e..406057238898 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,5 +1,12 @@ 2024-12-18 Thomas Schwinge <tschwi...@baylibre.com> + Backported from trunk: + 2024-12-06 Thomas Schwinge <tschwi...@baylibre.com> + + PR target/117916 + * config/nvptx/nvptx.opt (misa=, mptx=): Tag as 'Negative' of + themselves. + Backported from trunk: 2024-09-05 Thomas Schwinge <tschwi...@baylibre.com> diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt index c04074052286..53ddf451836e 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=