[clang] [clang][Driver] SPIRVAMDToolChain must not require device libs. (PR #171815)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 11 05:24:55 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver
@llvm/pr-subscribers-clang
Author: Manuel Carrasco (mgcarrasco)
<details>
<summary>Changes</summary>
Prior to this changes, the toolchain was looking for device libs and failing.
This is fixed by not looking for device libs (for SPIR-V).
The device libs are never linked for SPIR-V.
---
Full diff: https://github.com/llvm/llvm-project/pull/171815.diff
3 Files Affected:
- (modified) clang/lib/Driver/ToolChains/HIPAMD.cpp (+9)
- (modified) clang/lib/Driver/ToolChains/HIPAMD.h (+5)
- (modified) clang/test/Driver/spirv-amd-toolchain.c (+1-1)
``````````diff
diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp
index f2f64922cb404..810218e1e5748 100644
--- a/clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -466,3 +466,12 @@ Tool *SPIRVAMDToolChain::buildLinker() const {
assert(getTriple().getArch() == llvm::Triple::spirv64);
return new tools::AMDGCN::Linker(*this);
}
+
+void SPIRVAMDToolChain::addClangTargetOptions(
+ const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
+ Action::OffloadKind DeviceOffloadingKind) const {
+ // For SPIR-V we must not link any device libraries, so we call the
+ // AMDGPUToolChain impl instead of the ROCMToolChain one.
+ AMDGPUToolChain::addClangTargetOptions(DriverArgs, CC1Args,
+ DeviceOffloadingKind);
+}
diff --git a/clang/lib/Driver/ToolChains/HIPAMD.h b/clang/lib/Driver/ToolChains/HIPAMD.h
index 30fc01a2f8e40..d04e805f7e30c 100644
--- a/clang/lib/Driver/ToolChains/HIPAMD.h
+++ b/clang/lib/Driver/ToolChains/HIPAMD.h
@@ -104,6 +104,11 @@ class LLVM_LIBRARY_VISIBILITY SPIRVAMDToolChain final : public ROCMToolChain {
SPIRVAMDToolChain(const Driver &D, const llvm::Triple &Triple,
const llvm::opt::ArgList &Args);
+ void
+ addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args,
+ Action::OffloadKind DeviceOffloadKind) const override;
+
protected:
Tool *buildLinker() const override;
};
diff --git a/clang/test/Driver/spirv-amd-toolchain.c b/clang/test/Driver/spirv-amd-toolchain.c
index 8f1f0f33e53f9..91cd43622518d 100644
--- a/clang/test/Driver/spirv-amd-toolchain.c
+++ b/clang/test/Driver/spirv-amd-toolchain.c
@@ -12,7 +12,7 @@
// BINDINGS: # "spirv64-amd-amdhsa" - "clang", inputs: ["[[INPUT:.+]]"], output: "[[OUTPUT:.+]]"
// BINDINGS: # "spirv64-amd-amdhsa" - "AMDGCN::Linker", inputs: ["[[OUTPUT]]"], output: "a.out"
-// RUN: %clang -### --target=spirv64-amd-amdhsa %s -nogpulib -nogpuinc 2>&1 \
+// RUN: %clang -### --target=spirv64-amd-amdhsa %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=INVOCATION
// INVOCATION: "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}}"-disable-llvm-optzns" {{.*}} "-o" "[[OUTPUT:.+]]" "-x" "c"
// INVOCATION: "{{.*}}llvm-link" "-o" "[[LINKED_OUTPUT:.+]]" "[[OUTPUT]]"
``````````
</details>
https://github.com/llvm/llvm-project/pull/171815
More information about the cfe-commits
mailing list