[clang] clang: Use correct triple when constructing offload bundler command (PR #195271)
Matt Arsenault via cfe-commits
cfe-commits at lists.llvm.org
Fri May 1 08:07:47 PDT 2026
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/195271
>From d8d8beada96f4288fd21d12209ccbbb69743fc44 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Fri, 1 May 2026 15:10:53 +0100
Subject: [PATCH] clang: Use correct triple when constructing offload bundler
command
Use the toolchain triple for the particular input instead of the top
level toolchain. NFC for now, but avoids mismatched triples in
a future change.
---
clang/lib/Driver/ToolChains/HIPUtility.cpp | 8 +++++---
clang/test/Driver/hip-toolchain-no-rdc.hip | 2 +-
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/HIPUtility.cpp b/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 3bf0f23409f9f..51e1ba1866009 100644
--- a/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -301,18 +301,20 @@ void HIP::constructHIPFatbinCommand(Compilation &C, const JobAction &JA,
// for backward compatibility. For code object version 4 and greater, the
// offload kind in bundle ID is 'hipv4'.
std::string OffloadKind = "hip";
- auto &TT = T.getToolChain().getTriple();
- if (TT.isAMDGCN() && getAMDGPUCodeObjectVersion(C.getDriver(), Args) >= 4)
+ if (T.getToolChain().getTriple().isAMDGCN() &&
+ getAMDGPUCodeObjectVersion(C.getDriver(), Args) >= 4)
OffloadKind = OffloadKind + "v4";
for (const auto &II : Inputs) {
const auto *A = II.getAction();
+ const llvm::Triple &InputTriple = A->getOffloadingToolChain()->getTriple();
+
auto ArchStr = llvm::StringRef(A->getOffloadingArch());
BundlerTargetArg += ',' + OffloadKind + '-';
if (ArchStr == "amdgcnspirv")
BundlerTargetArg +=
normalizeForBundler(llvm::Triple("spirv64-amd-amdhsa"), true);
else
- BundlerTargetArg += normalizeForBundler(TT, !ArchStr.empty());
+ BundlerTargetArg += normalizeForBundler(InputTriple, !ArchStr.empty());
if (!ArchStr.empty())
BundlerTargetArg += '-' + ArchStr.str();
}
diff --git a/clang/test/Driver/hip-toolchain-no-rdc.hip b/clang/test/Driver/hip-toolchain-no-rdc.hip
index d3748c24eac7e..975515bd0cb40 100644
--- a/clang/test/Driver/hip-toolchain-no-rdc.hip
+++ b/clang/test/Driver/hip-toolchain-no-rdc.hip
@@ -218,7 +218,7 @@
// AMDGCNSPIRV: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}}"-emit-obj" {{.*}}"-target-cpu" "gfx900"{{.*}} "-o" "[[GFX900_OBJ:.*o]]"
// AMDGCNSPIRV: {{".*lld.*"}} {{.*}}"-plugin-opt=mcpu=gfx900" {{.*}} "-o" "[[GFX900_CO:.*out]]" {{.*}}"[[GFX900_OBJ]]"
// AMDGCNSPIRV: {{".*clang-offload-bundler.*"}} "-type=o"
-// AMDGCNSPIRV-SAME: "-targets={{.*}}hip-spirv64-amd-amdhsa--amdgcnspirv,hip-spirv64-amd-amdhsa--gfx900"
+// AMDGCNSPIRV-SAME: "-targets={{.*}}hip-spirv64-amd-amdhsa--amdgcnspirv,hip-amdgcn-amd-amdhsa--gfx900"
// AMDGCNSPIRV-SAME: "-input=[[AMDGCNSPV_CO]]" "-input=[[GFX900_CO]]"
// AMDGCNSPIRV-NEW: "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}}"-emit-llvm-bc" {{.*}} "-o" "[[AMDGCNSPV_BC:.*bc]]"
More information about the cfe-commits
mailing list