Author: Arseniy Obolenskiy
Date: 2026-10-09T21:01:43Z
New Revision: bfa9c0dcded8f02591559c716f76c4a244f8037f

URL: 
https://github.com/llvm/llvm-project/commit/bfa9c0dcded8f02591559c716f76c4a244f8037f
DIFF: 
https://github.com/llvm/llvm-project/commit/bfa9c0dcded8f02591559c716f76c4a244f8037f.diff

LOG: [Clang][Driver] Use offload LTO mode when embedding device bitcode 
(#230644)

With `-fno-offload-lto`, `-fembed-bitcode=all` collapsed the device
compile into a backend job that drops HIP includes

Regressed is introduced #201155 (and later in #202736)

Added: 
    

Modified: 
    clang/lib/Driver/Driver.cpp
    clang/test/Driver/embed-bitcode.c

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index a5bd672b8de47..b2dbc32f1b89f 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -5344,8 +5344,10 @@ InputInfoList Driver::BuildJobsForActionNoCache(
   const JobAction *JA = cast<JobAction>(A);
   ActionList CollapsedOffloadActions;
 
-  ToolSelector TS(JA, *TC, C, isSaveTempsEnabled(),
-                  embedBitcodeInObject() && !TC->isUsingLTO(C.getArgs()));
+  ToolSelector TS(
+      JA, *TC, C, isSaveTempsEnabled(),
+      embedBitcodeInObject() &&
+          !TC->isUsingLTO(C.getArgs(), JA->getOffloadingDeviceKind()));
   const Tool *T = TS.getTool(Inputs, CollapsedOffloadActions);
 
   if (!T)

diff  --git a/clang/test/Driver/embed-bitcode.c 
b/clang/test/Driver/embed-bitcode.c
index 916772ea0dedc..a2987dc4e2273 100644
--- a/clang/test/Driver/embed-bitcode.c
+++ b/clang/test/Driver/embed-bitcode.c
@@ -60,3 +60,22 @@
 // RUN: not %clang -target armv7-apple-darwin -miphoneos-version-min=5.0 %s 
-fembed-bitcode -### 2>&1 | \
 // RUN:   FileCheck %s -check-prefix=CHECK-PLATFORM-NOTSUPPORTED
 // CHECK-PLATFORM-NOTSUPPORTED: -fembed-bitcode is not supported on versions 
of iOS prior to 6.0
+
+// RUN: %clang -### -x hip --target=x86_64-unknown-linux-gnu 
--offload-arch=gfx90a \
+// RUN:   --rocm-path=%S/Inputs/rocm -nogpulib -fno-offload-lto 
-fembed-bitcode=all -c %s 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=CHECK-HIP-NO-LTO
+// CHECK-HIP-NO-LTO: "-cc1" "-triple" "{{amdgcn|amdgpu}}{{.*}}" "-emit-llvm-bc"
+// CHECK-HIP-NO-LTO-NOT: "-disable-llvm-passes"
+// CHECK-HIP-NO-LTO-SAME: "-include" "__clang_hip_runtime_wrapper.h"
+// CHECK-HIP-NO-LTO-SAME: "-x" "hip"
+// CHECK-HIP-NO-LTO-NEXT: "-cc1" "-triple" "{{amdgcn|amdgpu}}{{.*}}" 
"-emit-obj" "-fembed-bitcode=all"
+// CHECK-HIP-NO-LTO-SAME: "-disable-llvm-passes"
+// CHECK-HIP-NO-LTO-SAME: "-x" "ir"
+
+// RUN: %clang -### -x hip --target=x86_64-unknown-linux-gnu 
--offload-arch=gfx90a \
+// RUN:   -nogpulib -nogpuinc -fembed-bitcode=all -c %s 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=CHECK-HIP-LTO
+// CHECK-HIP-LTO: "-cc1" "-triple" "{{amdgcn|amdgpu}}{{.*}}" "-emit-llvm-bc"
+// CHECK-HIP-LTO-SAME: "-flto=full"
+// CHECK-HIP-LTO-SAME: "-x" "hip"
+// CHECK-HIP-LTO-NEXT: llvm-offload-binary


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

Reply via email to