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=

Reply via email to