Author: Matt Arsenault
Date: 2026-03-30T14:37:05+02:00
New Revision: 10b49bc56988b32d240e4bd74ca3c790eed65ecd

URL: 
https://github.com/llvm/llvm-project/commit/10b49bc56988b32d240e4bd74ca3c790eed65ecd
DIFF: 
https://github.com/llvm/llvm-project/commit/10b49bc56988b32d240e4bd74ca3c790eed65ecd.diff

LOG: clang: Return Triple from OffloadArchToTriple instead of a string (#189343)

Also stop bothering to call normalizeOffloadTriple. This was
produced by code which should always produce normalized triples.

Added: 
    

Modified: 
    clang/include/clang/Basic/OffloadArch.h
    clang/lib/Basic/OffloadArch.cpp
    clang/lib/Driver/Driver.cpp

Removed: 
    


################################################################################
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 32c95222d248d..0686a89d42faf 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