https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/189343
Also stop bothering to call normalizeOffloadTriple. This was produced by code which should always produce normalized triples. >From 5d29276d136f3e8443789f9984b09458164705bb Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Mon, 30 Mar 2026 10:15:38 +0200 Subject: [PATCH] clang: Return Triple from OffloadArchToTriple instead of a string Also stop bothering to call normalizeOffloadTriple. This was produced by code which should always produce normalized triples. --- clang/include/clang/Basic/OffloadArch.h | 4 ++-- clang/lib/Basic/OffloadArch.cpp | 15 ++++++++------- clang/lib/Driver/Driver.cpp | 6 +----- 3 files changed, 11 insertions(+), 14 deletions(-) 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 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
