[clang] [llvm] [ClangLinkerWrapper][SPIRV] Fix embed bitcode option (PR #213137)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 31 07:35:06 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-offload
Author: Nick Sarnie (sarnex)
<details>
<summary>Changes</summary>
We need to pass the right linker option and not try to containerize it.
Fixes two OpenMP offload JIT tests, the other has some front end assert I will look at.
---
Full diff: https://github.com/llvm/llvm-project/pull/213137.diff
3 Files Affected:
- (modified) clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp (+9-3)
- (modified) offload/test/jit/empty_kernel_lvl1.c (-1)
- (modified) offload/test/jit/empty_kernel_lvl2.c (-1)
``````````diff
diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index c2de6578773c7..f2a58774e99af 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -586,8 +586,13 @@ Expected<StringRef> clang(ArrayRef<StringRef> InputFiles, const ArgList &Args,
if (SaveTemps && linkerSupportsLTO(Args))
CmdArgs.push_back("-Wl,--save-temps");
- if (Args.hasArg(OPT_embed_bitcode))
- CmdArgs.push_back("-Wl,--lto-emit-llvm");
+ if (Args.hasArg(OPT_embed_bitcode)) {
+ // SPIR-V does not use the LTO linker path, it links bitcode via llvm-link.
+ if (Triple.isSPIRV())
+ CmdArgs.push_back("-emit-llvm");
+ else
+ CmdArgs.push_back("-Wl,--lto-emit-llvm");
+ }
// For linking device code with the SYCL offload kind, special handling is
// required. Passing --sycl-link to clang results in a call to
@@ -640,7 +645,8 @@ Error containerizeRawImage(std::unique_ptr<MemoryBuffer> &Img, OffloadKind Kind,
const ArgList &Args) {
llvm::Triple Triple(Args.getLastArgValue(OPT_triple_EQ));
if (Kind == OFK_OpenMP && Triple.isSPIRV() &&
- Triple.getVendor() == llvm::Triple::Intel)
+ Triple.getVendor() == llvm::Triple::Intel &&
+ !Args.hasArg(OPT_embed_bitcode))
return offloading::intel::containerizeOpenMPSPIRVImage(Img, Triple);
return Error::success();
}
diff --git a/offload/test/jit/empty_kernel_lvl1.c b/offload/test/jit/empty_kernel_lvl1.c
index 0bf1675e437b7..812d5c1f46314 100644
--- a/offload/test/jit/empty_kernel_lvl1.c
+++ b/offload/test/jit/empty_kernel_lvl1.c
@@ -29,6 +29,5 @@
// clang-format on
// REQUIRES: gpu
-// XFAIL: intelgpu
#include "empty_kernel.inc"
diff --git a/offload/test/jit/empty_kernel_lvl2.c b/offload/test/jit/empty_kernel_lvl2.c
index 98859aa87fe86..9e2ef17a42fbd 100644
--- a/offload/test/jit/empty_kernel_lvl2.c
+++ b/offload/test/jit/empty_kernel_lvl2.c
@@ -24,6 +24,5 @@
// clang-format on
// REQUIRES: gpu
-// XFAIL: intelgpu
#include "empty_kernel.inc"
``````````
</details>
https://github.com/llvm/llvm-project/pull/213137
More information about the cfe-commits
mailing list