[clang] bfa9c0d - [Clang][Driver] Use offload LTO mode when embedding device bitcode (#230644)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 9 14:01:50 PDT 2026
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
More information about the cfe-commits
mailing list