https://github.com/jhuber6 updated 
https://github.com/llvm/llvm-project/pull/184172

>From a28c50e9d7b8122fb8cf194e62641233fa2c5d18 Mon Sep 17 00:00:00 2001
From: Joseph Huber <[email protected]>
Date: Mon, 2 Mar 2026 10:40:07 -0600
Subject: [PATCH] [Clang] Respect `-f[no]-offload-lto` universally in the
 driver

Summary:
This PR changes the handling of RDC to respect `-f[no]-offload-lto`.
A significant change is that this revets the new driver to using
`-emit-obj` by default, which makes the new behavior more consistent
with the old driver. This prevents us from doing multi-objectp
parallelism by default, but I think we should be able to tell people to
enable LTO to get this type of parallelism.

Some changes to SPIR-V as well, OpenMP used to go to `.s` before but I'm
not sure if that was intentional.
---
 clang/lib/Driver/Driver.cpp                   | 27 +++-------
 .../Driver/amdgpu-openmp-sanitize-options.c   |  6 +--
 clang/test/Driver/amdgpu-openmp-toolchain.c   | 20 ++++----
 clang/test/Driver/hip-phases.hip              | 50 ++++++++++---------
 clang/test/Driver/hip-sanitize-options.hip    |  4 +-
 .../test/Driver/hip-spirv-backend-bindings.c  |  3 +-
 clang/test/Driver/hip-spirv-backend-phases.c  | 28 ++++++-----
 clang/test/Driver/hip-toolchain-no-rdc.hip    |  3 +-
 clang/test/Driver/spirv-openmp-toolchain.c    | 22 ++++----
 9 files changed, 79 insertions(+), 84 deletions(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 1009e9f60fae0..59b3489c9f01a 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -5231,15 +5231,6 @@ Action *Driver::ConstructPhaseAction(
     return C.MakeAction<CompileJobAction>(Input, types::TY_LLVM_BC);
   }
   case phases::Backend: {
-    // Skip a redundant Backend phase for HIP device code when using the new
-    // offload driver, where mid-end is done in linker wrapper.
-    if (TargetDeviceOffloadKind == Action::OFK_HIP &&
-        Args.hasFlag(options::OPT_offload_new_driver,
-                     options::OPT_no_offload_new_driver,
-                     C.getActiveOffloadKinds() != Action::OFK_None) &&
-        !offloadDeviceOnly())
-      return Input;
-
     if (isUsingLTO() && TargetDeviceOffloadKind == Action::OFK_None) {
       types::ID Output;
       if (Args.hasArg(options::OPT_ffat_lto_objects) &&
@@ -5285,21 +5276,19 @@ Action *Driver::ConstructPhaseAction(
     if (Args.hasArg(options::OPT_emit_llvm) ||
         EmitBitcodeForNonOffloadAMDSPIRV ||
         TargetDeviceOffloadKind == Action::OFK_SYCL ||
+        (OffloadingToolChain && OffloadingToolChain->getTriple().isSPIRV() &&
+         TargetDeviceOffloadKind != Action::OFK_None &&
+         !UseSPIRVBackendForHipDeviceOnlyNoRDC) ||
         (((Input->getOffloadingToolChain() &&
            Input->getOffloadingToolChain()->getTriple().isAMDGPU() &&
            TargetDeviceOffloadKind != Action::OFK_None) ||
           TargetDeviceOffloadKind == Action::OFK_HIP) &&
          !UseSPIRVBackendForHipDeviceOnlyNoRDC &&
-         ((Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc,
-                        false) ||
-           (Args.hasFlag(options::OPT_offload_new_driver,
-                         options::OPT_no_offload_new_driver,
-                         C.getActiveOffloadKinds() != Action::OFK_None) &&
-            (!offloadDeviceOnly() ||
-             (Input->getOffloadingToolChain() &&
-              TargetDeviceOffloadKind == Action::OFK_HIP &&
-              Input->getOffloadingToolChain()->getTriple().isSPIRV())))) ||
-          TargetDeviceOffloadKind == Action::OFK_OpenMP))) {
+         Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc,
+                      false) &&
+         !Args.hasFlag(options::OPT_offload_new_driver,
+                       options::OPT_no_offload_new_driver,
+                       C.getActiveOffloadKinds() != Action::OFK_None))) {
       types::ID Output =
           Args.hasArg(options::OPT_S) &&
                   (TargetDeviceOffloadKind == Action::OFK_None ||
diff --git a/clang/test/Driver/amdgpu-openmp-sanitize-options.c 
b/clang/test/Driver/amdgpu-openmp-sanitize-options.c
index 8fb53121e92b4..328ee9984d8a8 100644
--- a/clang/test/Driver/amdgpu-openmp-sanitize-options.c
+++ b/clang/test/Driver/amdgpu-openmp-sanitize-options.c
@@ -104,10 +104,10 @@
 // HOSTSANCOMBINATION: {{"[^"]*clang[^"]*" "-cc1" "-triple" 
"x86_64-unknown-linux-gnu".* "-fopenmp".* 
"-fsanitize=address,fuzzer,fuzzer-no-link".* 
"--offload-targets=amdgcn-amd-amdhsa".* "-x" "c".*}}
 // HOSTSANCOMBINATION2: {{"[^"]*clang[^"]*" "-cc1" "-triple" 
"x86_64-unknown-linux-gnu".* "-fopenmp".* 
"-fsanitize=address,fuzzer,fuzzer-no-link,leak".* 
"--offload-targets=amdgcn-amd-amdhsa".* "-x" "c".*}}
 
-// GPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgcn-amd-amdhsa" 
"-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc".* 
"-mlink-builtin-bitcode" "[^"]*asanrtl.bc".* "-mlink-bitcode-file" 
"[^"]*ockl.bc".* "-target-cpu" "(gfx908|gfx900|gfx1250|gfx1251)".* "-fopenmp".* 
"-fsanitize=address".* "-x" "c".*}}
-// NOGPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgcn-amd-amdhsa" 
"-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-llvm-bc".* "-target-cpu" 
"(gfx908|gfx900)".* "-fopenmp".* "-x" "c".*}}
+// GPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgcn-amd-amdhsa" 
"-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-obj".* 
"-mlink-builtin-bitcode" "[^"]*asanrtl.bc".* "-mlink-bitcode-file" 
"[^"]*ockl.bc".* "-target-cpu" "(gfx908|gfx900|gfx1250|gfx1251)".* "-fopenmp".* 
"-fsanitize=address".* "-x" "c".*}}
+// NOGPUSAN: {{"[^"]*clang[^"]*" "-cc1" "-triple" "amdgcn-amd-amdhsa" 
"-aux-triple" "x86_64-unknown-linux-gnu".* "-emit-obj".* "-target-cpu" 
"(gfx908|gfx900)".* "-fopenmp".* "-x" "c".*}}
 
-// SAN: {{"[^"]*llvm-offload-binary[^"]*" "-o".* 
"--image=file=.*.bc,triple=amdgcn-amd-amdhsa,arch=(gfx908|gfx1250|gfx1251)(:xnack\-|:xnack\+)?,kind=openmp(,feature=(\-xnack|\+xnack))?"}}
+// SAN: {{"[^"]*llvm-offload-binary[^"]*" "-o".* 
"--image=file=.*.o,triple=amdgcn-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=amdgcn-amd-amdhsa".* 
"-x" "ir".*}}
 // SAN: {{"[^"]*clang-linker-wrapper[^"]*".* 
"--host-triple=x86_64-unknown-linux-gnu".* "--linker-path=[^"]*".* 
"--whole-archive" 
"[^"]*(libclang_rt.asan_static.a|libclang_rt.asan_static-x86_64.a)".* 
"--whole-archive" "[^"]*(libclang_rt.asan.a|libclang_rt.asan-x86_64.a)".*}}
 
diff --git a/clang/test/Driver/amdgpu-openmp-toolchain.c 
b/clang/test/Driver/amdgpu-openmp-toolchain.c
index 9203d9271711b..2627b5a8ceb59 100644
--- a/clang/test/Driver/amdgpu-openmp-toolchain.c
+++ b/clang/test/Driver/amdgpu-openmp-toolchain.c
@@ -20,13 +20,14 @@
 // CHECK-PHASES: 4: preprocessor, {3}, cpp-output, (device-openmp, gfx906)
 // CHECK-PHASES: 5: compiler, {4}, ir, (device-openmp, gfx906)
 // CHECK-PHASES: 6: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, 
"device-openmp (amdgcn-amd-amdhsa:gfx906)" {5}, ir
-// CHECK-PHASES: 7: backend, {6}, ir, (device-openmp, gfx906)
-// CHECK-PHASES: 8: offload, "device-openmp (amdgcn-amd-amdhsa:gfx906)" {7}, ir
-// CHECK-PHASES: 9: llvm-offload-binary, {8}, image, (device-openmp)
-// CHECK-PHASES: 10: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, 
"device-openmp (x86_64-unknown-linux-gnu)" {9}, ir
-// CHECK-PHASES: 11: backend, {10}, assembler, (host-openmp)
-// CHECK-PHASES: 12: assembler, {11}, object, (host-openmp)
-// CHECK-PHASES: 13: clang-linker-wrapper, {12}, image, (host-openmp)
+// CHECK-PHASES: 7: backend, {6}, assembler, (device-openmp, gfx906)
+// CHECK-PHASES: 8: assembler, {7}, object, (device-openmp, gfx906)
+// CHECK-PHASES: 9: offload, "device-openmp (amdgcn-amd-amdhsa:gfx906)" {8}, 
object
+// CHECK-PHASES: 10: llvm-offload-binary, {9}, image, (device-openmp)
+// CHECK-PHASES: 11: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, 
"device-openmp (x86_64-unknown-linux-gnu)" {10}, ir
+// CHECK-PHASES: 12: backend, {11}, assembler, (host-openmp)
+// CHECK-PHASES: 13: assembler, {12}, object, (host-openmp)
+// CHECK-PHASES: 14: clang-linker-wrapper, {13}, image, (host-openmp)
 
 // RUN:   %clang -### --target=x86_64-unknown-linux-gnu -ccc-print-bindings 
-fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa 
-march=gfx803 -nogpulib %s 2>&1 | FileCheck %s --check-prefix=CHECK-BINDINGS
 // RUN:   %clang -### --target=x86_64-unknown-linux-gnu -ccc-print-bindings 
-fopenmp -fopenmp-targets=amdgcn-amd-amdhsa --offload-arch=gfx803 -nogpulib %s 
2>&1 | FileCheck %s --check-prefix=CHECK-BINDINGS
@@ -42,8 +43,9 @@
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang", inputs: 
["[[HOST_PP]]"], output: "[[HOST_BC:.+]]"
 // CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang", inputs: ["[[INPUT]]"], 
output: "[[DEVICE_PP:.+]]"
 // CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang", inputs: 
["[[DEVICE_PP]]", "[[HOST_BC]]"], output: "[[DEVICE_TEMP_BC:.+]]"
-// CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang", inputs: 
["[[DEVICE_TEMP_BC]]"], output: "[[DEVICE_BC:.+]]"
-// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Packager", 
inputs: ["[[DEVICE_BC]]"], output: "[[DEVICE_IMAGE:.+]]"
+// CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang", inputs: 
["[[DEVICE_TEMP_BC]]"], output: "[[DEVICE_ASM:.+]]"
+// CHECK-BINDINGS-TEMPS: "amdgcn-amd-amdhsa" - "clang::as", inputs: 
["[[DEVICE_ASM]]"], output: "[[DEVICE_OBJ:.+]]"
+// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Packager", 
inputs: ["[[DEVICE_OBJ]]"], output: "[[DEVICE_IMAGE:.+]]"
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang", inputs: 
["[[HOST_BC]]", "[[DEVICE_IMAGE]]"], output: "[[HOST_ASM:.+]]"
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang::as", inputs: 
["[[HOST_ASM]]"], output: "[[HOST_OBJ:.+]]"
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Linker", 
inputs: ["[[HOST_OBJ]]"], output: "a.out"
diff --git a/clang/test/Driver/hip-phases.hip b/clang/test/Driver/hip-phases.hip
index 47e4bfca68a39..6abc808e8cfef 100644
--- a/clang/test/Driver/hip-phases.hip
+++ b/clang/test/Driver/hip-phases.hip
@@ -37,29 +37,31 @@
 // OLDR-DAG: [[P7:[0-9]+]]: backend, {[[P5]]}, ir, (device-[[T]], [[ARCH]])
 // OLD-DAG: [[P8:[0-9]+]]: linker, {[[P7]]}, image, (device-[[T]], [[ARCH]])
 // OLD-DAG: [[P9:[0-9]+]]: offload, "device-[[T]] 
(amdgcn-amd-amdhsa:[[ARCH]])" {[[P8]]}, image
-// NEW-DAG: [[P6:[0-9]+]]: offload, "device-[[T]] 
(amdgcn-amd-amdhsa:[[ARCH]])" {[[P5]]}, ir
+// NEW-DAG: [[P6:[0-9]+]]: backend, {[[P5]]}, assembler, (device-[[T]], 
[[ARCH]])
+// NEW-DAG: [[P7:[0-9]+]]: assembler, {[[P6]]}, object, (device-[[T]], 
[[ARCH]])
+// NEW-DAG: [[P8:[0-9]+]]: offload, "device-[[T]] 
(amdgcn-amd-amdhsa:[[ARCH]])" {[[P7]]}, object
+// NEW-DAG: [[P9:[0-9]+]]: llvm-offload-binary, {[[P8]]}, image, (device-[[T]])
+// NEWN-DAG: [[P10:[0-9]+]]: clang-linker-wrapper, {[[P9]]}, hip-fatbin, 
(device-[[T]])
+// NEWLTO-DAG: [[P10:[0-9]+]]: clang-linker-wrapper, {[[P9]]}, hip-fatbin, 
(device-[[T]])
 // OLDN-DAG: [[P10:[0-9]+]]: linker, {[[P9]]}, hip-fatbin, (device-[[T]])
-// NEW-DAG: [[P7:[0-9]+]]: llvm-offload-binary, {[[P6]]}, image, (device-[[T]])
-// NEWN-DAG: [[P8:[0-9]+]]: clang-linker-wrapper, {[[P7]]}, hip-fatbin, 
(device-[[T]])
-// NEWLTO-DAG: [[P8:[0-9]+]]: clang-linker-wrapper, {[[P7]]}, hip-fatbin, 
(device-[[T]])
 // OLDR-DAG: [[P10:[0-9]+]]: linker, {[[P9]]}, object, (device-[[T]])
 
 // OLDN-DAG: [[P11:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" 
{[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P10]]}, ir
-// NEWN-DAG: [[P9:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" 
{[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P8]]}, ir
-// NEWLTO-DAG: [[P9:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" 
{[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P8]]}, ir
-// NEWR-DAG: [[P8:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" 
{[[P2]]}, "device-[[T]] (x86_64-unknown-linux-gnu)" {[[P7]]}, ir
+// NEWN-DAG: [[P11:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" 
{[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" {[[P10]]}, ir
+// NEWLTO-DAG: [[P11:[0-9]+]]: offload, "host-[[T]] 
(x86_64-unknown-linux-gnu)" {[[P2]]}, "device-[[T]] (amdgcn-amd-amdhsa)" 
{[[P10]]}, ir
+// NEWR-DAG: [[P10:[0-9]+]]: offload, "host-[[T]] (x86_64-unknown-linux-gnu)" 
{[[P2]]}, "device-[[T]] (x86_64-unknown-linux-gnu)" {[[P9]]}, ir
 // OLDR-DAG: [[P11:[0-9]+]]: offload, "device-[[T]] (amdgcn-amd-amdhsa)" 
{[[P10]]}, object
 // OLDN-DAG: [[P12:[0-9]+]]: backend, {[[P11]]}, assembler, (host-[[T]])
 // OLDN-DAG: [[P13:[0-9]+]]: assembler, {[[P12]]}, object, (host-[[T]])
-// NEWN-DAG: [[P10:[0-9]+]]: backend, {[[P9]]}, assembler, (host-[[T]])
-// NEWN-DAG: [[P11:[0-9]+]]: assembler, {[[P10]]}, object, (host-[[T]])
-// NEWLTO-DAG: [[P10:[0-9]+]]: backend, {[[P9]]}, lto-bc, (host-hip)
-// NEWR-DAG: [[P9:[0-9]+]]: backend, {[[P8]]}, assembler, (host-[[T]])
-// NEWR-DAG: [[P10:[0-9]+]]: assembler, {[[P9]]}, object, (host-[[T]])
+// NEWN-DAG: [[P12:[0-9]+]]: backend, {[[P11]]}, assembler, (host-[[T]])
+// NEWN-DAG: [[P13:[0-9]+]]: assembler, {[[P12]]}, object, (host-[[T]])
+// NEWLTO-DAG: [[P12:[0-9]+]]: backend, {[[P11]]}, lto-bc, (host-hip)
+// NEWR-DAG: [[P11:[0-9]+]]: backend, {[[P10]]}, assembler, (host-[[T]])
+// NEWR-DAG: [[P12:[0-9]+]]: assembler, {[[P11]]}, object, (host-[[T]])
 // OLDN-DAG: [[P14:[0-9]+]]: linker, {[[P13]]}, image, (host-[[T]])
-// NEWN-DAG: [[P12:[0-9]+]]: clang-linker-wrapper, {[[P11]]}, image, 
(host-[[T]])
+// NEWN-DAG: [[P14:[0-9]+]]: clang-linker-wrapper, {[[P13]]}, image, 
(host-[[T]])
 // OLDR-DAG: [[P14:[0-9]+]]: linker, {[[P13]], [[P11]]}, image, (host-[[T]])
-// NEWR-DAG: [[P11:[0-9]+]]: clang-linker-wrapper, {[[P10]]}, image, 
(host-[[T]])
+// NEWR-DAG: [[P13:[0-9]+]]: clang-linker-wrapper, {[[P12]]}, image, 
(host-[[T]])
 
 //
 // Test single gpu architecture up to the assemble phase.
@@ -658,15 +660,17 @@
 // LTO-NEXT: 3: input, "[[INPUT]]", hip, (device-hip, gfx908)
 // LTO-NEXT: 4: preprocessor, {3}, hip-cpp-output, (device-hip, gfx908)
 // LTO-NEXT: 5: compiler, {4}, ir, (device-hip, gfx908)
-// LTO-NEXT: 6: offload, "device-hip (amdgcn-amd-amdhsa:gfx908)" {5}, ir
-// LTO-NEXT: 7: input, "[[INPUT]]", hip, (device-hip, gfx90a)
-// LTO-NEXT: 8: preprocessor, {7}, hip-cpp-output, (device-hip, gfx90a)
-// LTO-NEXT: 9: compiler, {8}, ir, (device-hip, gfx90a)
-// LTO-NEXT: 10: offload, "device-hip (amdgcn-amd-amdhsa:gfx90a)" {9}, ir
-// LTO-NEXT: 11: llvm-offload-binary, {6, 10}, image, (device-hip)
-// LTO-NEXT: 12: offload, "host-hip (x86_64-unknown-linux-gnu)" {2}, 
"device-hip (x86_64-unknown-linux-gnu)" {11}, ir
-// LTO-NEXT: 13: backend, {12}, assembler, (host-hip)
-// LTO-NEXT: 14: assembler, {13}, object, (host-hip)
+// LTO-NEXT: 6: backend, {5}, lto-bc, (device-hip, gfx908)
+// LTO-NEXT: 7: offload, "device-hip (amdgcn-amd-amdhsa:gfx908)" {6}, lto-bc
+// LTO-NEXT: 8: input, "[[INPUT]]", hip, (device-hip, gfx90a)
+// LTO-NEXT: 9: preprocessor, {8}, hip-cpp-output, (device-hip, gfx90a)
+// LTO-NEXT: 10: compiler, {9}, ir, (device-hip, gfx90a)
+// LTO-NEXT: 11: backend, {10}, lto-bc, (device-hip, gfx90a)
+// LTO-NEXT: 12: offload, "device-hip (amdgcn-amd-amdhsa:gfx90a)" {11}, lto-bc
+// LTO-NEXT: 13: llvm-offload-binary, {7, 12}, image, (device-hip)
+// LTO-NEXT: 14: offload, "host-hip (x86_64-unknown-linux-gnu)" {2}, 
"device-hip (x86_64-unknown-linux-gnu)" {13}, ir
+// LTO-NEXT: 15: backend, {14}, assembler, (host-hip)
+// LTO-NEXT: 16: assembler, {15}, object, (host-hip)
 
 //
 // Test the new driver when not bundling
diff --git a/clang/test/Driver/hip-sanitize-options.hip 
b/clang/test/Driver/hip-sanitize-options.hip
index 1e69d38f8026f..bca6c6106f8aa 100644
--- a/clang/test/Driver/hip-sanitize-options.hip
+++ b/clang/test/Driver/hip-sanitize-options.hip
@@ -102,10 +102,10 @@
 // CHECK-NOT: {{"[^"]*lld(\.exe){0,1}".* ".*hip.bc"}}
 // CHECK: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* 
"-fsanitize=address"}}
 
-// NORDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* .* 
"-mlink-builtin-bitcode" ".*asanrtl.bc".* "-fsanitize=address".*}} "-o" 
"[[OUT:[^"]*.bc]]"
+// NORDC: {{"[^"]*clang[^"]*".* "-emit-obj".* "-fcuda-is-device".* .* 
"-mlink-builtin-bitcode" ".*asanrtl.bc".* "-fsanitize=address".*}} "-o" 
"[[OUT:[^"]*.o]]"
 // NORDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* 
"-fsanitize=address"}}
 
-// RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* 
"-mlink-builtin-bitcode" ".*asanrtl.bc".* "-fsanitize=address".*}} "-o" 
"[[OUT:[^"]*.bc]]"
+// RDC: {{"[^"]*clang[^"]*".* "-emit-obj".* "-fcuda-is-device".* 
"-mlink-builtin-bitcode" ".*asanrtl.bc".* "-fsanitize=address".*}} "-o" 
"[[OUT:[^"]*.o]]"
 // RDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* 
"-fsanitize=address"}}
 
 // FAIL: error: cannot find ROCm device library for ABI version 5; provide its 
path via '--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to 
build without ROCm device library
diff --git a/clang/test/Driver/hip-spirv-backend-bindings.c 
b/clang/test/Driver/hip-spirv-backend-bindings.c
index 59b3f4fb54d4c..e9fae3d1a1491 100644
--- a/clang/test/Driver/hip-spirv-backend-bindings.c
+++ b/clang/test/Driver/hip-spirv-backend-bindings.c
@@ -9,7 +9,8 @@
 // RUN: 2>&1 | FileCheck %s --check-prefixes=CHECK-SPIRV-BASE,CHECK-SPIRV-RDC
 
 // CHECK-SPIRV-BASE: # "spirv64-amd-amdhsa" - "clang", inputs: 
["[[INPUT:.+]]"], output: "[[HIPI:.+\.hipi]]"
-// CHECK-SPIRV-BASE: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], 
output: "[[SPV_BC:.+\.bc]]"
+// CHECK-SPIRV-BASE: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[HIPI]]"], 
output: "[[SPV_TMP_BC:.+\.bc]]"
+// CHECK-SPIRV-BASE: # "spirv64-amd-amdhsa" - "clang", inputs: 
["[[SPV_TMP_BC]]"], output: "[[SPV_BC:.+\.bc]]"
 // CHECK-SPIRV: # "spirv64-amd-amdhsa" - "Offload::Packager", inputs: 
["[[SPV_BC]]"], output: "[[HIP_OUT:.+\.out]]"
 // CHECK-SPIRV: # "spirv64-amd-amdhsa" - "Offload::Linker", inputs: 
["[[HIP_OUT]]"], output: "[[HIPFB:.+\.hipfb]]"
 // CHECK-SPIRV-RDC: # "x86_64-unknown-linux-gnu" - "Offload::Packager", 
inputs: ["[[SPV_BC]]"], output: "[[HIP_OUT:.+\.out]]"
diff --git a/clang/test/Driver/hip-spirv-backend-phases.c 
b/clang/test/Driver/hip-spirv-backend-phases.c
index d743b8cd50c40..857b68124d4c2 100644
--- a/clang/test/Driver/hip-spirv-backend-phases.c
+++ b/clang/test/Driver/hip-spirv-backend-phases.c
@@ -10,14 +10,15 @@
 // CHECK-SPIRV-BINARY: [[P3:[0-9]+]]: input, "[[INPUT]].c", hip, (device-hip, 
amdgcnspirv)
 // CHECK-SPIRV-BINARY: [[P4:[0-9]+]]: preprocessor,  {[[P3]]}, hip-cpp-output, 
(device-hip, amdgcnspirv)
 // CHECK-SPIRV-BINARY: [[P5:[0-9]+]]: compiler,  {[[P4]]}, ir, (device-hip, 
amdgcnspirv)
-// CHECK-SPIRV-BINARY: [[P6:[0-9]+]]: offload,  "device-hip 
(spirv64-amd-amdhsa:amdgcnspirv)" {[[P5]]}, ir
-// CHECK-SPIRV-BINARY: [[P7:[0-9]+]]: llvm-offload-binary, {[[P6]]}, image, 
(device-hip)
-// CHECK-SPIRV-BINARY: [[P8:[0-9]+]]: clang-linker-wrapper, {[[P7]]}, 
hip-fatbin, (device-hip)
+// CHECK-SPIRV-BINARY: [[P6:[0-9]+]]: backend,  {[[P5]]}, ir, (device-hip, 
amdgcnspirv)
+// CHECK-SPIRV-BINARY: [[P7:[0-9]+]]: offload,  "device-hip 
(spirv64-amd-amdhsa:amdgcnspirv)" {[[P6]]}, ir
+// CHECK-SPIRV-BINARY: [[P8:[0-9]+]]: llvm-offload-binary, {[[P7]]}, image, 
(device-hip)
+// CHECK-SPIRV-BINARY: [[P9:[0-9]+]]: clang-linker-wrapper, {[[P8]]}, 
hip-fatbin, (device-hip)
 
-// CHECK-SPIRV-BINARY: [[P9:[0-9]+]]: offload, "host-hip 
(x86_64-unknown-linux-gnu)" {[[P2]]}, "device-hip (spirv64-amd-amdhsa)" 
{[[P8]]}, ir
-// CHECK-SPIRV-BINARY: [[P10:[0-9]+]]: backend, {[[P9]]}, assembler, (host-hip)
-// CHECK-SPIRV-BINARY: [[P11:[0-9]+]]: assembler, {[[P10]]}, object, (host-hip)
-// CHECK-SPIRV-BINARY: [[P12:[0-9]+]]: clang-linker-wrapper, {[[P11]]}, image, 
(host-hip)
+// CHECK-SPIRV-BINARY: [[P10:[0-9]+]]: offload, "host-hip 
(x86_64-unknown-linux-gnu)" {[[P2]]}, "device-hip (spirv64-amd-amdhsa)" 
{[[P9]]}, ir
+// CHECK-SPIRV-BINARY: [[P11:[0-9]+]]: backend, {[[P10]]}, assembler, 
(host-hip)
+// CHECK-SPIRV-BINARY: [[P12:[0-9]+]]: assembler, {[[P11]]}, object, (host-hip)
+// CHECK-SPIRV-BINARY: [[P13:[0-9]+]]: clang-linker-wrapper, {[[P12]]}, image, 
(host-hip)
 
 // RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu 
--offload-arch=amdgcnspirv \
 // RUN:         -nogpuinc -nogpulib -x hip %s -save-temps \
@@ -31,13 +32,14 @@
 // CHECK-SPIRV-BINARY-RDC: [[P3:[0-9]+]]: input, "[[INPUT]].c", hip, 
(device-hip, amdgcnspirv)
 // CHECK-SPIRV-BINARY-RDC: [[P4:[0-9]+]]: preprocessor,  {[[P3]]}, 
hip-cpp-output, (device-hip, amdgcnspirv)
 // CHECK-SPIRV-BINARY-RDC: [[P5:[0-9]+]]: compiler,  {[[P4]]}, ir, 
(device-hip, amdgcnspirv)
-// CHECK-SPIRV-BINARY-RDC: [[P6:[0-9]+]]: offload,  "device-hip 
(spirv64-amd-amdhsa:amdgcnspirv)" {[[P5]]}, ir
-// CHECK-SPIRV-BINARY-RDC: [[P7:[0-9]+]]: llvm-offload-binary, {[[P6]]}, 
image, (device-hip)
+// CHECK-SPIRV-BINARY-RDC: [[P6:[0-9]+]]: backend,  {[[P5]]}, ir, (device-hip, 
amdgcnspirv)
+// CHECK-SPIRV-BINARY-RDC: [[P7:[0-9]+]]: offload,  "device-hip 
(spirv64-amd-amdhsa:amdgcnspirv)" {[[P6]]}, ir
+// CHECK-SPIRV-BINARY-RDC: [[P8:[0-9]+]]: llvm-offload-binary, {[[P7]]}, 
image, (device-hip)
 
-// CHECK-SPIRV-BINARY-RDC: [[P8:[0-9]+]]: offload, "host-hip 
(x86_64-unknown-linux-gnu)" {[[P2]]}, "device-hip (x86_64-unknown-linux-gnu)" 
{[[P7]]}, ir
-// CHECK-SPIRV-BINARY-RDC: [[P9:[0-9]+]]: backend, {[[P8]]}, assembler, 
(host-hip)
-// CHECK-SPIRV-BINARY-RDC: [[P10:[0-9]+]]: assembler, {[[P9]]}, object, 
(host-hip)
-// CHECK-SPIRV-BINARY-RDC: [[P11:[0-9]+]]: clang-linker-wrapper, {[[P10]]}, 
image, (host-hip)
+// CHECK-SPIRV-BINARY-RDC: [[P9:[0-9]+]]: offload, "host-hip 
(x86_64-unknown-linux-gnu)" {[[P2]]}, "device-hip (x86_64-unknown-linux-gnu)" 
{[[P8]]}, ir
+// CHECK-SPIRV-BINARY-RDC: [[P10:[0-9]+]]: backend, {[[P9]]}, assembler, 
(host-hip)
+// CHECK-SPIRV-BINARY-RDC: [[P11:[0-9]+]]: assembler, {[[P10]]}, object, 
(host-hip)
+// CHECK-SPIRV-BINARY-RDC: [[P12:[0-9]+]]: clang-linker-wrapper, {[[P11]]}, 
image, (host-hip)
 
 // RUN: %clang --offload-new-driver --target=x86_64-unknown-linux-gnu 
--offload-arch=amdgcnspirv \
 // RUN:         -nogpuinc -nogpulib -x hip %s -save-temps \
diff --git a/clang/test/Driver/hip-toolchain-no-rdc.hip 
b/clang/test/Driver/hip-toolchain-no-rdc.hip
index da420f3b1a24c..b930da4915fb8 100644
--- a/clang/test/Driver/hip-toolchain-no-rdc.hip
+++ b/clang/test/Driver/hip-toolchain-no-rdc.hip
@@ -52,8 +52,7 @@
 
 // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
 // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
-// OLD-SAME: "-emit-obj"
-// NEW-SAME: "-emit-llvm-bc"
+// CHECK-SAME: "-emit-obj"
 // CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
 // CHECK-SAME: "-fcuda-is-device" "-fno-threadsafe-statics" "-mllvm" 
"-amdgpu-internalize-symbols"
 // CHECK-SAME: "-fvisibility=hidden"
diff --git a/clang/test/Driver/spirv-openmp-toolchain.c 
b/clang/test/Driver/spirv-openmp-toolchain.c
index a409ec17c0daf..8d51109f4c3c4 100644
--- a/clang/test/Driver/spirv-openmp-toolchain.c
+++ b/clang/test/Driver/spirv-openmp-toolchain.c
@@ -4,7 +4,7 @@
 
 // verify the tools invocations
 // CHECK: "-cc1" "-triple" 
"x86_64-unknown-linux-gnu"{{.*}}"-emit-llvm-bc"{{.*}}"-x" "c"
-// CHECK: "-cc1" "-triple" "spirv64-intel" "-aux-triple" 
"x86_64-unknown-linux-gnu"{{.*}} "-o" "{{.*}}.o"
+// CHECK: "-cc1" "-triple" "spirv64-intel" "-aux-triple" 
"x86_64-unknown-linux-gnu"{{.*}} "-o" "{{.*}}.bc"
 // CHECK: "-cc1" "-triple" "x86_64-unknown-linux-gnu"{{.*}}"-emit-obj"
 // CHECK: clang-linker-wrapper{{.*}} "-o" "a.out"
 
@@ -18,14 +18,13 @@
 // CHECK-PHASES: 4: preprocessor, {3}, cpp-output, (device-openmp)
 // CHECK-PHASES: 5: compiler, {4}, ir, (device-openmp)
 // CHECK-PHASES: 6: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, 
"device-openmp (spirv64-intel)" {5}, ir
-// CHECK-PHASES: 7: backend, {6}, assembler, (device-openmp)
-// CHECK-PHASES: 8: assembler, {7}, object, (device-openmp)
-// CHECK-PHASES: 9: offload, "device-openmp (spirv64-intel)" {8}, object
-// CHECK-PHASES: 10: llvm-offload-binary, {9}, image, (device-openmp)
-// CHECK-PHASES: 11: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, 
"device-openmp (x86_64-unknown-linux-gnu)" {10}, ir
-// CHECK-PHASES: 12: backend, {11}, assembler, (host-openmp)
-// CHECK-PHASES: 13: assembler, {12}, object, (host-openmp)
-// CHECK-PHASES: 14: clang-linker-wrapper, {13}, image, (host-openmp)
+// CHECK-PHASES: 7: backend, {6}, ir, (device-openmp)
+// CHECK-PHASES: 8: offload, "device-openmp (spirv64-intel)" {7}, ir
+// CHECK-PHASES: 9: llvm-offload-binary, {8}, image, (device-openmp)
+// CHECK-PHASES: 10: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, 
"device-openmp (x86_64-unknown-linux-gnu)" {9}, ir
+// CHECK-PHASES: 11: backend, {10}, assembler, (host-openmp)
+// CHECK-PHASES: 12: assembler, {11}, object, (host-openmp)
+// CHECK-PHASES: 13: clang-linker-wrapper, {12}, image, (host-openmp)
 
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu -ccc-print-bindings 
-fopenmp=libomp -fopenmp-targets=spirv64-intel -nogpulib %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-BINDINGS
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu -ccc-print-bindings 
-fopenmp=libomp -fopenmp-targets=spirv64-intel -nogpulib %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-BINDINGS
@@ -42,9 +41,8 @@
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang", inputs: 
["[[HOST_PP]]"], output: "[[HOST_BC:.+]]"
 // CHECK-BINDINGS-TEMPS: "spirv64-intel" - "clang", inputs: ["[[INPUT]]"], 
output: "[[DEVICE_PP:.+]]"
 // CHECK-BINDINGS-TEMPS: "spirv64-intel" - "clang", inputs: ["[[DEVICE_PP]]", 
"[[HOST_BC]]"], output: "[[DEVICE_BC:.+]]"
-// CHECK-BINDINGS-TEMPS: "spirv64-intel" - "clang", inputs: ["[[DEVICE_BC]]"], 
output: "[[DEVICE_ASM:.+]]"
-// CHECK-BINDINGS-TEMPS: "spirv64-intel" - "SPIR-V::Assembler", inputs: 
["[[DEVICE_ASM]]"], output: "[[DEVICE_SPV:.+]]"
-// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Packager", 
inputs: ["[[DEVICE_SPV]]"], output: "[[DEVICE_IMAGE:.+]]"
+// CHECK-BINDINGS-TEMPS: "spirv64-intel" - "clang", inputs: ["[[DEVICE_BC]]"], 
output: "[[DEVICE_BC2:.+]]"
+// CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Packager", 
inputs: ["[[DEVICE_BC2]]"], output: "[[DEVICE_IMAGE:.+]]"
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang", inputs: 
["[[HOST_BC]]", "[[DEVICE_IMAGE]]"], output: "[[HOST_ASM:.+]]"
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "clang::as", inputs: 
["[[HOST_ASM]]"], output: "[[HOST_OBJ:.+]]"
 // CHECK-BINDINGS-TEMPS: "x86_64-unknown-linux-gnu" - "Offload::Linker", 
inputs: ["[[HOST_OBJ]]"], output: "a.out"

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to