[llvm-branch-commits] [clang] clang/AMDGPU: Stop passing redundant -target-cpu to cc1 (PR #206483)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Jun 29 06:16:26 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-amdgpu

Author: Matt Arsenault (arsenm)

<details>
<summary>Changes</summary>

Now that the exact target is encoded in the triple's subarch field,
-target-cpu is redundant. This avoids polluting the resultant IR with
unwanted "target-cpu" attributes. The net result is the desired codegen
when compiling libraries for a major subarch and linking it into a
program compiled for a specific arch. e.g., compiling for "gfx9-generic"
would pollute the IR with "target-cpu"="gfx9-generic", so codegen
would ultimately be performed for the generic target even after
linking into the concrete gfx9 cpu. The specialization will now be
achieved by merging the triples without the linker or optimization
passes needing to fixup function attributes.

---

Patch is 64.94 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/206483.diff


33 Files Affected:

- (modified) clang/lib/Basic/Targets/AMDGPU.cpp (+1) 
- (modified) clang/lib/Driver/ToolChains/CommonArgs.cpp (+20-10) 
- (modified) clang/test/CodeGenHIP/hip-cumode.hip (+2-2) 
- (modified) clang/test/Driver/amdgpu-hip-system-arch.c (+1-1) 
- (modified) clang/test/Driver/amdgpu-macros.cl (+3-3) 
- (modified) clang/test/Driver/amdgpu-mcpu.cl (+62-62) 
- (modified) clang/test/Driver/amdgpu-openmp-sanitize-options.c (+2-2) 
- (modified) clang/test/Driver/amdgpu-openmp-toolchain.c (+4-2) 
- (modified) clang/test/Driver/amdgpu-xnack-sramecc-flags.c (+10-10) 
- (modified) clang/test/Driver/cuda-flush-denormals-to-zero.cu (+6-6) 
- (modified) clang/test/Driver/hip-cuid-hash.hip (+4-4) 
- (modified) clang/test/Driver/hip-cuid.hip (+5-7) 
- (modified) clang/test/Driver/hip-default-gpu-arch.hip (+1-1) 
- (modified) clang/test/Driver/hip-device-compile.hip (-2) 
- (modified) clang/test/Driver/hip-gsplit-dwarf-options.hip (+4-4) 
- (modified) clang/test/Driver/hip-macros.hip (+3-3) 
- (modified) clang/test/Driver/hip-offload-arch.hip (+4-4) 
- (modified) clang/test/Driver/hip-rdc-device-only.hip (+12-16) 
- (modified) clang/test/Driver/hip-sanitize-options.hip (+26-26) 
- (modified) clang/test/Driver/hip-save-temps.hip (+4-4) 
- (modified) clang/test/Driver/hip-target-id.hip (+1-9) 
- (modified) clang/test/Driver/hip-toolchain-device-only.hip (-2) 
- (modified) clang/test/Driver/hip-toolchain-mllvm.hip (-2) 
- (modified) clang/test/Driver/hip-toolchain-no-rdc.hip (+1-5) 
- (modified) clang/test/Driver/hip-toolchain-rdc-separate.hip (-4) 
- (modified) clang/test/Driver/hip-toolchain-rdc-static-lib.hip (-4) 
- (modified) clang/test/Driver/hip-toolchain-rdc.hip (-4) 
- (modified) clang/test/Driver/hip-unbundle-preproc.hipi (+2-2) 
- (modified) clang/test/Driver/hip-wavefront-size.hip (+6-4) 
- (modified) clang/test/Driver/openmp-offload-infer.c (+1-1) 
- (modified) clang/test/Driver/openmp-system-arch.c (+4-4) 
- (modified) clang/test/Driver/target-id.cl (+1-1) 
- (added) clang/test/Preprocessor/amdgpu-subarch-cc1-target-cpu.cl (+24) 


``````````diff
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index 67d8f65c2975d..ca1cb59f07a30 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -16,6 +16,7 @@
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/MacroBuilder.h"
 #include "clang/Basic/TargetBuiltins.h"
+#include "clang/Basic/TargetID.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/TargetParser/AMDGPUTargetParser.h"
 using namespace clang;
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 3855b4855555d..dff3a6dd1eb74 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -360,15 +360,15 @@ static void renderRemarksHotnessOptions(const ArgList &Args,
 }
 
 static bool shouldIgnoreUnsupportedTargetFeature(const Arg &TargetFeatureArg,
-                                                 llvm::Triple T,
-                                                 StringRef Processor) {
+                                                 const llvm::Triple &T) {
   // Warn no-cumode for AMDGCN processors not supporing WGP mode.
-  if (!T.isAMDGPU())
+  if (!T.isAMDGCN())
     return false;
-  auto GPUKind = T.isAMDGCN() ? llvm::AMDGPU::parseArchAMDGCN(Processor)
-                              : llvm::AMDGPU::parseArchR600(Processor);
-  auto GPUFeatures = T.isAMDGCN() ? llvm::AMDGPU::getArchAttrAMDGCN(GPUKind)
-                                  : llvm::AMDGPU::getArchAttrR600(GPUKind);
+
+  llvm::AMDGPU::GPUKind GK =
+      llvm::AMDGPU::getGPUKindFromSubArch(T.getSubArch());
+  unsigned GPUFeatures = llvm::AMDGPU::getArchAttrAMDGCN(GK);
+
   if (GPUFeatures & llvm::AMDGPU::FEATURE_WGP)
     return false;
   return TargetFeatureArg.getOption().matches(options::OPT_mno_cumode);
@@ -394,12 +394,11 @@ void tools::handleTargetFeaturesGroup(const Driver &D,
     assert(Name.starts_with("m") && "Invalid feature name.");
     Name = Name.substr(1);
 
-    auto Proc = getCPUName(D, Args, Triple);
-    if (shouldIgnoreUnsupportedTargetFeature(*A, Triple, Proc)) {
+    if (shouldIgnoreUnsupportedTargetFeature(*A, Triple)) {
       if (Warned.count(Name) == 0) {
         D.getDiags().Report(
             clang::diag::warn_drv_unsupported_option_for_processor)
-            << A->getAsString(Args) << Proc;
+            << A->getAsString(Args) << Triple.getArchName();
         Warned.insert(Name);
       }
       continue;
@@ -683,6 +682,17 @@ void tools::AddTargetFeature(const ArgList &Args,
 /// Get the (LLVM) name of the AMDGPU gpu we are targeting.
 static std::string getAMDGPUTargetGPU(const llvm::Triple &T,
                                       const ArgList &Args) {
+  // When the triple already encodes a specific subarch (e.g.
+  // amdgpu9.0a-amd-amdhsa), the processor is implied by the triple and there is
+  // no need to additionally pass -target-cpu. A major-family subarch (e.g.
+  // amdgpu9) is not specific enough, so fall through to -mcpu in that case.
+  if (T.isAMDGCN()) {
+    llvm::Triple::SubArchType SubArch = T.getSubArch();
+    if (SubArch != llvm::Triple::NoSubArch &&
+        SubArch != llvm::AMDGPU::getMajorSubArch(SubArch))
+      return "";
+  }
+
   if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
     auto GPUName = getProcessorFromTargetID(T, A->getValue());
     return llvm::StringSwitch<std::string>(GPUName)
diff --git a/clang/test/CodeGenHIP/hip-cumode.hip b/clang/test/CodeGenHIP/hip-cumode.hip
index 61fd53c644e8c..08287173cf6a1 100644
--- a/clang/test/CodeGenHIP/hip-cumode.hip
+++ b/clang/test/CodeGenHIP/hip-cumode.hip
@@ -5,7 +5,7 @@
 // RUN: %clang -S -o - --offload-arch=gfx906 --cuda-device-only -nogpuinc -nogpulib -mcumode \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=NOWGP %s
 // RUN: %clang -S -o - --offload-arch=gfx906 --cuda-device-only -nogpuinc -nogpulib -mno-cumode \
-// RUN:   %s 2>&1 | FileCheck -DOFFLOAD_ARCH=gfx906 --check-prefixes=NOWGP,WARN-CUMODE %s
+// RUN:   %s 2>&1 | FileCheck -DOFFLOAD_ARCH=amdgpu9.06 --check-prefixes=NOWGP,WARN-CUMODE %s
 // RUN: %clang -S -o - --offload-arch=gfx1030 --cuda-device-only -nogpuinc -nogpulib \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=CUMODE-OFF %s
 // RUN: %clang -S -o - --offload-arch=gfx1030 --cuda-device-only -nogpuinc -nogpulib -mcumode \
@@ -17,7 +17,7 @@
 // RUN: %clang -S -o - --offload-arch=gfx1250 --cuda-device-only -nogpuinc -nogpulib -mcumode \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=NOWGP %s
 // RUN: %clang -S -o - --offload-arch=gfx1250 --cuda-device-only -nogpuinc -nogpulib -mno-cumode \
-// RUN:   %s 2>&1 | FileCheck -DOFFLOAD_ARCH=gfx1250 --check-prefixes=NOWGP,WARN-CUMODE %s
+// RUN:   %s 2>&1 | FileCheck -DOFFLOAD_ARCH=amdgpu12.50 --check-prefixes=NOWGP,WARN-CUMODE %s
 // WARN-CUMODE: warning: ignoring '-mno-cumode' option as it is not currently supported for processor '[[OFFLOAD_ARCH]]' [-Woption-ignored]
 // NOWGP-NOT: .amdhsa_workgroup_processor_mode
 // CUMODE-ON: .amdhsa_workgroup_processor_mode 0
diff --git a/clang/test/Driver/amdgpu-hip-system-arch.c b/clang/test/Driver/amdgpu-hip-system-arch.c
index a6e298cd37b20..eebedb520ab03 100644
--- a/clang/test/Driver/amdgpu-hip-system-arch.c
+++ b/clang/test/Driver/amdgpu-hip-system-arch.c
@@ -29,7 +29,7 @@
 // RUN:   | FileCheck %s --check-prefix=ARCH-GFX906
 // RUN:   %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib --offload-new-driver --offload-arch=native --amdgpu-arch-tool=%t/amdgpu_arch_gfx906 -x hip %s 2>&1 \
 // RUN:   | FileCheck %s --check-prefix=ARCH-GFX906
-// ARCH-GFX906: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"{{.*}}"-target-cpu" "gfx906"
+// ARCH-GFX906: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa"
 
 // case when CLANG_TOOLCHAIN_PROGRAM_TIMEOUT is malformed.
 // RUN: env CLANG_TOOLCHAIN_PROGRAM_TIMEOUT=foo \
diff --git a/clang/test/Driver/amdgpu-macros.cl b/clang/test/Driver/amdgpu-macros.cl
index f162b0cc541df..793922980639e 100644
--- a/clang/test/Driver/amdgpu-macros.cl
+++ b/clang/test/Driver/amdgpu-macros.cl
@@ -182,7 +182,7 @@
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 -mcumode \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=CUMODE-ON %s
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx906 -mno-cumode \
-// RUN:   %s 2>&1 | FileCheck -DMCPU=gfx906 --check-prefixes=CUMODE-ON,WARN-CUMODE %s
+// RUN:   %s 2>&1 | FileCheck -DMCPU=amdgpu9.06 --check-prefixes=CUMODE-ON,WARN-CUMODE %s
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1030 \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=CUMODE-OFF %s
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1030 -mcumode \
@@ -194,13 +194,13 @@
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1250 -mcumode \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=CUMODE-ON %s
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1250 -mno-cumode \
-// RUN:   %s 2>&1 | FileCheck -DMCPU=gfx1250 --check-prefixes=CUMODE-ON,WARN-CUMODE %s
+// RUN:   %s 2>&1 | FileCheck -DMCPU=amdgpu12.50 --check-prefixes=CUMODE-ON,WARN-CUMODE %s
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1251 \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=CUMODE-ON %s
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1251 -mcumode \
 // RUN:   %s 2>&1 | FileCheck --check-prefix=CUMODE-ON %s
 // RUN: %clang -E -dM -target amdgcn -mcpu=gfx1251 -mno-cumode \
-// RUN:   %s 2>&1 | FileCheck -DMCPU=gfx1251 --check-prefixes=CUMODE-ON,WARN-CUMODE %s
+// RUN:   %s 2>&1 | FileCheck -DMCPU=amdgpu12.51 --check-prefixes=CUMODE-ON,WARN-CUMODE %s
 // WARN-CUMODE-DAG: warning: ignoring '-mno-cumode' option as it is not currently supported for processor '[[MCPU]]' [-Woption-ignored]
 // CUMODE-ON-DAG: #define __AMDGCN_CUMODE__ 1
 // CUMODE-OFF-DAG: #define __AMDGCN_CUMODE__ 0
diff --git a/clang/test/Driver/amdgpu-mcpu.cl b/clang/test/Driver/amdgpu-mcpu.cl
index 931e08fcd9f01..7d9bd7ef546b7 100644
--- a/clang/test/Driver/amdgpu-mcpu.cl
+++ b/clang/test/Driver/amdgpu-mcpu.cl
@@ -133,66 +133,66 @@
 // RUN: %clang -### -target amdgcn -mcpu=gfx12-5-generic %s 2>&1 | FileCheck --check-prefix=GFX12_5_GENERIC %s
 // RUN: %clang -### -target amdgcn -mcpu=gfx13-generic %s 2>&1 | FileCheck --check-prefix=GFX13_GENERIC %s
 
-// GCNDEFAULT-NOT: -target-cpu
-// GFX600:    "-target-cpu" "gfx600"
-// GFX601:    "-target-cpu" "gfx601"
-// GFX602:    "-target-cpu" "gfx602"
-// GFX700:    "-target-cpu" "gfx700"
-// GFX701:    "-target-cpu" "gfx701"
-// GFX702:    "-target-cpu" "gfx702"
-// GFX703:    "-target-cpu" "gfx703"
-// GFX704:    "-target-cpu" "gfx704"
-// GFX705:    "-target-cpu" "gfx705"
-// GFX801:    "-target-cpu" "gfx801"
-// GFX802:    "-target-cpu" "gfx802"
-// GFX803:    "-target-cpu" "gfx803"
-// GFX805:    "-target-cpu" "gfx805"
-// GFX810:    "-target-cpu" "gfx810"
-// GFX900:    "-target-cpu" "gfx900"
-// GFX902:    "-target-cpu" "gfx902"
-// GFX904:    "-target-cpu" "gfx904"
-// GFX906:    "-target-cpu" "gfx906"
-// GFX908:    "-target-cpu" "gfx908"
-// GFX909:    "-target-cpu" "gfx909"
-// GFX90A:    "-target-cpu" "gfx90a"
-// GFX90C:    "-target-cpu" "gfx90c"
-// GFX942:    "-target-cpu" "gfx942"
-// GFX950:    "-target-cpu" "gfx950"
-// GFX1010:   "-target-cpu" "gfx1010"
-// GFX1011:   "-target-cpu" "gfx1011"
-// GFX1012:   "-target-cpu" "gfx1012"
-// GFX1013:   "-target-cpu" "gfx1013"
-// GFX1030:   "-target-cpu" "gfx1030"
-// GFX1031:   "-target-cpu" "gfx1031"
-// GFX1032:   "-target-cpu" "gfx1032"
-// GFX1033:   "-target-cpu" "gfx1033"
-// GFX1034:   "-target-cpu" "gfx1034"
-// GFX1035:   "-target-cpu" "gfx1035"
-// GFX1036:   "-target-cpu" "gfx1036"
-// GFX1100:   "-target-cpu" "gfx1100"
-// GFX1101:   "-target-cpu" "gfx1101"
-// GFX1102:   "-target-cpu" "gfx1102"
-// GFX1103:   "-target-cpu" "gfx1103"
-// GFX1150:   "-target-cpu" "gfx1150"
-// GFX1151:   "-target-cpu" "gfx1151"
-// GFX1152:   "-target-cpu" "gfx1152"
-// GFX1153:   "-target-cpu" "gfx1153"
-// GFX1154:   "-target-cpu" "gfx1154"
-// GFX1170:   "-target-cpu" "gfx1170"
-// GFX1171:   "-target-cpu" "gfx1171"
-// GFX1172:   "-target-cpu" "gfx1172"
-// GFX1200:   "-target-cpu" "gfx1200"
-// GFX1201:   "-target-cpu" "gfx1201"
-// GFX1250:   "-target-cpu" "gfx1250"
-// GFX1251:   "-target-cpu" "gfx1251"
-// GFX1310:   "-target-cpu" "gfx1310"
+// GCNDEFAULT: "-triple" "amdgpu--"
+// GFX600:    "-triple" "amdgpu6.00--"
+// GFX601:    "-triple" "amdgpu6.01--"
+// GFX602:    "-triple" "amdgpu6.02--"
+// GFX700:    "-triple" "amdgpu7.00--"
+// GFX701:    "-triple" "amdgpu7.01--"
+// GFX702:    "-triple" "amdgpu7.02--"
+// GFX703:    "-triple" "amdgpu7.03--"
+// GFX704:    "-triple" "amdgpu7.04--"
+// GFX705:    "-triple" "amdgpu7.05--"
+// GFX801:    "-triple" "amdgpu8.01--"
+// GFX802:    "-triple" "amdgpu8.02--"
+// GFX803:    "-triple" "amdgpu8.03--"
+// GFX805:    "-triple" "amdgpu8.05--"
+// GFX810:    "-triple" "amdgpu8.10--"
+// GFX900:    "-triple" "amdgpu9.00--"
+// GFX902:    "-triple" "amdgpu9.02--"
+// GFX904:    "-triple" "amdgpu9.04--"
+// GFX906:    "-triple" "amdgpu9.06--"
+// GFX908:    "-triple" "amdgpu9.08--"
+// GFX909:    "-triple" "amdgpu9.09--"
+// GFX90A:    "-triple" "amdgpu9.0a--"
+// GFX90C:    "-triple" "amdgpu9.0c--"
+// GFX942:    "-triple" "amdgpu9.42--"
+// GFX950:    "-triple" "amdgpu9.50--"
+// GFX1010:   "-triple" "amdgpu10.10--"
+// GFX1011:   "-triple" "amdgpu10.11--"
+// GFX1012:   "-triple" "amdgpu10.12--"
+// GFX1013:   "-triple" "amdgpu10.13--"
+// GFX1030:   "-triple" "amdgpu10.30--"
+// GFX1031:   "-triple" "amdgpu10.31--"
+// GFX1032:   "-triple" "amdgpu10.32--"
+// GFX1033:   "-triple" "amdgpu10.33--"
+// GFX1034:   "-triple" "amdgpu10.34--"
+// GFX1035:   "-triple" "amdgpu10.35--"
+// GFX1036:   "-triple" "amdgpu10.36--"
+// GFX1100:   "-triple" "amdgpu11.00--"
+// GFX1101:   "-triple" "amdgpu11.01--"
+// GFX1102:   "-triple" "amdgpu11.02--"
+// GFX1103:   "-triple" "amdgpu11.03--"
+// GFX1150:   "-triple" "amdgpu11.50--"
+// GFX1151:   "-triple" "amdgpu11.51--"
+// GFX1152:   "-triple" "amdgpu11.52--"
+// GFX1153:   "-triple" "amdgpu11.53--"
+// GFX1154:   "-triple" "amdgpu11.54--"
+// GFX1170:   "-triple" "amdgpu11.70--"
+// GFX1171:   "-triple" "amdgpu11.71--"
+// GFX1172:   "-triple" "amdgpu11.72--"
+// GFX1200:   "-triple" "amdgpu12.00--"
+// GFX1201:   "-triple" "amdgpu12.01--"
+// GFX1250:   "-triple" "amdgpu12.50--"
+// GFX1251:   "-triple" "amdgpu12.51--"
+// GFX1310:   "-triple" "amdgpu13.10--"
 
-// GFX9_GENERIC:      "-target-cpu" "gfx9-generic"
-// GFX9_4_GENERIC:    "-target-cpu" "gfx9-4-generic"
-// GFX10_1_GENERIC:   "-target-cpu" "gfx10-1-generic"
-// GFX10_3_GENERIC:   "-target-cpu" "gfx10-3-generic"
-// GFX11_GENERIC:     "-target-cpu" "gfx11-generic"
-// GFX11_7_GENERIC:   "-target-cpu" "gfx11-7-generic"
-// GFX12_GENERIC:     "-target-cpu" "gfx12-generic"
-// GFX12_5_GENERIC:   "-target-cpu" "gfx12-5-generic"
-// GFX13_GENERIC:     "-target-cpu" "gfx13-generic"
+// GFX9_GENERIC:      "-triple" "amdgpu9--"
+// GFX9_4_GENERIC:    "-triple" "amdgpu9.4--"
+// GFX10_1_GENERIC:   "-triple" "amdgpu10.1--"
+// GFX10_3_GENERIC:   "-triple" "amdgpu10.3--"
+// GFX11_GENERIC:     "-triple" "amdgpu11--"
+// GFX11_7_GENERIC:   "-triple" "amdgpu11.7--"
+// GFX12_GENERIC:     "-triple" "amdgpu12--"
+// GFX12_5_GENERIC:   "-triple" "amdgpu12.5--"
+// GFX13_GENERIC:     "-triple" "amdgpu13--"
diff --git a/clang/test/Driver/amdgpu-openmp-sanitize-options.c b/clang/test/Driver/amdgpu-openmp-sanitize-options.c
index 9d2d4a27bf334..052595a2132ec 100644
--- a/clang/test/Driver/amdgpu-openmp-sanitize-options.c
+++ b/clang/test/Driver/amdgpu-openmp-sanitize-options.c
@@ -104,8 +104,8 @@
 // HOSTSANCOMBINATION: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address,fuzzer,fuzzer-no-link".* "--offload-targets=amdgpu-amd-amdhsa".* "-x" "c".*}}
 // HOSTSANCOMBINATION2: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address,fuzzer,fuzzer-no-link,leak".* "--offload-targets=amdgpu-amd-amdhsa".* "-x" "c".*}}
 
-// GPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgpu.+-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-mlink-bitcode-file" "[^"]*asanrtl.bc".* "-mlink-builtin-bitcode" "[^"]*ockl.bc".* "-target-cpu" "(gfx908|gfx900|gfx1250|gfx1251)".* "-fopenmp".* "-fsanitize=address".* "-x" "c".*}}
-// NOGPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgpu.+-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-target-cpu" "(gfx908|gfx900)".* "-fopenmp".* "-x" "c".*}}
+// GPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgpu.+-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-mlink-bitcode-file" "[^"]*asanrtl.bc".* "-mlink-builtin-bitcode" "[^"]*ockl.bc".* "-fopenmp".* "-fsanitize=address".* "-x" "c".*}}
+// NOGPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgpu.+-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc" "-flto=full" "-flto-unit".* "-fopenmp".* "-x" "c".*}}
 
 // SAN: {{"[^"]*llvm-offload-binary[^"]*" "-o".* "--image=file=.*.o,triple=amdgpu.*-amd-amdhsa,arch=(gfx908|gfx1250|gfx1251)(:xnack\-|:xnack\+)?,kind=openmp(,feature=(\-xnack|\+xnack))?"}}
 // SAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "x86_64-unknown-linux-gnu".* "-fopenmp".* "-fsanitize=address".* "--offload-targets=amdgpu-amd-amdhsa".* "-x" "ir".*}}
diff --git a/clang/test/Driver/amdgpu-openmp-toolchain.c b/clang/test/Driver/amdgpu-openmp-toolchain.c
index 2461587cbf5aa..207a357f5f6d0 100644
--- a/clang/test/Driver/amdgpu-openmp-toolchain.c
+++ b/clang/test/Driver/amdgpu-openmp-toolchain.c
@@ -7,7 +7,8 @@
 
 // verify the tools invocations
 // CHECK: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-emit-llvm-bc"{{.*}}"-x" "c"
-// CHECK: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-flto=full" "-flto-unit"{{.*}}"-target-cpu" "gfx906"
+// CHECK: "-cc1" "-triple" "amdgpu9.06-amd-amdhsa" "-aux-triple" "x86_64-unknown-linux-gnu"{{.*}}"-flto=full" "-flto-unit"
+// CHECK-NOT: "-target-cpu"
 // CHECK: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-emit-obj"
 // CHECK: clang-linker-wrapper{{.*}}"--device-compiler=amdgpu-amd-amdhsa=-flto=full"{{.*}} "-o" "a.out"
 
@@ -63,7 +64,8 @@
 
 // RUN: %clang -### -target x86_64-pc-linux-gnu -fopenmp --offload-arch=gfx90a:sramecc-:xnack+ \
 // RUN:   -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-TARGET-ID
-// CHECK-TARGET-ID: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a" "-target-feature" "+xnack" "-target-feature" "-sramecc"
+// CHECK-TARGET-ID: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-feature" "+xnack" "-target-feature" "-sramecc"
+// CHECK-TARGET-ID-NOT: "-target-cpu"
 // CHECK-TARGET-ID: llvm-offload-binary{{.*}}arch=gfx90a:sramecc-:xnack+,kind=openmp
 
 // RUN: not %clang -### -target x86_64-pc-linux-gnu -fopenmp --offload-arch=gfx90a,gfx90a:xnack+ \
diff --git a/clang/test/Driver/amdgpu-xnack-sramecc-flags.c b/clang/test/Driver/amdgpu-xnack-sramecc-flags.c
index 214ea6c46ef3d..364c3acdbfbc1 100644
--- a/clang/test/Driver/amdgpu-xnack-sramecc-flags.c
+++ b/clang/test/Driver/amdgpu-xnack-sramecc-flags.c
@@ -71,7 +71,7 @@
 // Test offload with target ID features synthesized from --offload-arch
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a:xnack+:sramecc- \
 // RUN:   -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-TARGETID %s
-// OMP-TARGETID: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-TARGETID: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa"
 // OMP-TARGETID-SAME: "-target-feature" "+xnack"
 // OMP-TARGETID-SAME: "-target-feature" "-sramecc"
 
@@ -79,7 +79,7 @@
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa \
 // RUN:   -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx908:xnack-:sramecc+ \
 // RUN:   -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-MARCH %s
-// OMP-MARCH: "-cc1" "-triple" "amdgpu9.08-amd-amdhsa" {{.*}} "-target-cpu" "gfx908"
+// OMP-MARCH: "-cc1" "-triple" "amdgpu9.08-amd-amdhsa"
 // OMP-MARCH-SAME: "-target-feature" "-xnack"
 // OMP-MARCH-SAME: "-target-feature" "+sramecc"
 
@@ -89,7 +89,7 @@
 // RUN:   -Xopenmp-target=amdgcn-amd-amdhsa -mxnack \
 // RUN:   -Xopenmp-target=amdgcn-amd-amdhsa -mno-sramecc \
 // RUN:   -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-FLAGS %s
-// OMP-FLAGS: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-FLAGS: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa"
 // OMP-FLAGS-SAME: "-target-feature" "+xnack"
 // OMP-FLAGS-SAME: "-target-feature" "-sramecc"
 
@@ -98,7 +98,7 @@
 // RUN:   -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx90a:xnack- \
 // RUN:   -Xopenmp-target=amdgcn-amd-amdhsa -mxnack \
 // RUN:   -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-TARGETID-WINS %s
-// OMP-TARGETID-WINS: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-TARGETID-WINS: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa"
 // OMP-TARGETID-WINS-SAME: "-target-feature" "-xnack"
 
 // Test offload using base architecture gfx90a with -mxnack flag for xnack+
@@ -106,7 +106,7 @@
 // RUN:   --offload-arch=gfx90a \
 // RUN:   -Xopenmp-target=amdgcn-amd-amdhsa -mxnack \
 // RUN:   -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-GFX90A-XNACK-ON %s
-// OMP-GFX90A-XNACK-ON: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-GFX90A-XNACK-ON: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa"
 // OMP-GFX90A-XNACK-ON-SAME: "-target-feature" "+xnack"
 
 // Test offload using base architecture gfx90a with -mno-xnack flag for xnack-
@@ -114,7 +114,7 @@
 // RUN:   --offload-arch=gfx90a \
 // RUN:   -Xopenmp-target=amdgcn-amd-amdhsa -mno-xnack \
 // RUN:   -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-GFX90A-XNACK-OFF %s
-// OMP-GFX90A-XNACK-OFF: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-GFX90A-XNACK-OFF: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa"
 // OMP-GFX90A-XNACK-OFF-SAME: "-target-feature" "-xnack"
 
 // Test offload with multiple device compilations for same base architecture.
@@ -123,9 +123,9 @@
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp \
 // RUN:   --offload-arch=gfx90a:xnack+ --offload-arch=gfx90a:xnack- -mxnack \
 // RUN:   -nogpulib %s 2>&1 | FileCheck -check-prefix=OMP-MULTI-XNACK %s
-// OMP-MULTI-XNACK: "-cc1" "-triple" "amdgpu9.0a-amd-amdhsa" {{.*}} "-target-cpu" "gfx90a"
+// OMP-MULTI-XNACK: "-cc1" ...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/206483


More information about the llvm-branch-commits mailing list