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

Reply via email to