[clang] clang: Return Triple from OffloadArchToTriple instead of a string (PR #189343)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 30 02:36:27 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver
Author: Matt Arsenault (arsenm)
<details>
<summary>Changes</summary>
Also stop bothering to call normalizeOffloadTriple. This was
produced by code which should always produce normalized triples.
---
Full diff: https://github.com/llvm/llvm-project/pull/189343.diff
3 Files Affected:
- (modified) clang/include/clang/Basic/OffloadArch.h (+2-2)
- (modified) clang/lib/Basic/OffloadArch.cpp (+8-7)
- (modified) clang/lib/Driver/Driver.cpp (+1-5)
``````````diff
diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h
index 531e5e37935eb..ca97fb166d8fc 100644
--- a/clang/include/clang/Basic/OffloadArch.h
+++ b/clang/include/clang/Basic/OffloadArch.h
@@ -152,8 +152,8 @@ const char *OffloadArchToVirtualArchString(OffloadArch A);
// OffloadArch::Unknown if the string is not recognized.
OffloadArch StringToOffloadArch(llvm::StringRef S);
-llvm::StringRef OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
- OffloadArch ID);
+llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
+ OffloadArch ID);
} // namespace clang
diff --git a/clang/lib/Basic/OffloadArch.cpp b/clang/lib/Basic/OffloadArch.cpp
index d15df3deca74b..3cd1a50d7a839 100644
--- a/clang/lib/Basic/OffloadArch.cpp
+++ b/clang/lib/Basic/OffloadArch.cpp
@@ -147,19 +147,20 @@ OffloadArch StringToOffloadArch(llvm::StringRef S) {
return Result->Arch;
}
-llvm::StringRef OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
- OffloadArch ID) {
+llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
+ OffloadArch ID) {
if (ID == OffloadArch::AMDGCNSPIRV)
- return "spirv64-amd-amdhsa";
+ return llvm::Triple("spirv64-amd-amdhsa");
if (IsNVIDIAOffloadArch(ID))
- return DefaultToolchainTriple.isArch64Bit() ? "nvptx64-nvidia-cuda"
- : "nvptx-nvidia-cuda";
+ return DefaultToolchainTriple.isArch64Bit()
+ ? llvm::Triple("nvptx64-nvidia-cuda")
+ : llvm::Triple("nvptx-nvidia-cuda");
if (IsAMDOffloadArch(ID))
- return "amdgcn-amd-amdhsa";
+ return llvm::Triple("amdgcn-amd-amdhsa");
- return "";
+ return {};
}
} // namespace clang
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 76bf9ab84e97f..b0b27b357a053 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -997,12 +997,8 @@ static TripleSet inferOffloadToolchains(Compilation &C,
return {};
}
- llvm::StringRef TripleStr =
+ llvm::Triple Triple =
OffloadArchToTriple(C.getDefaultToolChain().getTriple(), ID);
- if (TripleStr.empty())
- continue;
-
- llvm::Triple Triple = ToolChain::normalizeOffloadTriple(TripleStr);
// Make a new argument that dispatches this argument to the appropriate
// toolchain. This is required when we infer it and create potentially
``````````
</details>
https://github.com/llvm/llvm-project/pull/189343
More information about the cfe-commits
mailing list