Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[IR] Store Triple in Module (NFC) #129868

Merged
merged 4 commits into from
Mar 6, 2025
Merged

[IR] Store Triple in Module (NFC) #129868

merged 4 commits into from
Mar 6, 2025

Conversation

nikic
Copy link
Contributor

@nikic nikic commented Mar 5, 2025

The module currently stores the target triple as a string. This means that any code that wants to actually use the triple first has to instantiate a Triple, which is somewhat expensive. The change in #121652 caused a moderate compile-time regression due to this. While it would be easy enough to work around, I think that architecturally, it makes more sense to store the parsed Triple in the module, so that it can always be directly queried.

For this change, I've opted not to add any magic conversions between std::string and Triple for backwards-compatibilty purses, and instead write out needed Triple()s or str()s explicitly. This is because I think a decent number of them should be changed to work on Triple as well, to avoid unnecessary conversions back and forth.

The only interesting part in this patch is that the default triple is Triple("") instead of Triple() to preserve existing behavior. The former defaults to using the ELF object format instead of unknown object format. We should fix that as well.

Compile-time: https://llvm-compile-time-tracker.com/compare.php?from=e5d5503e4efa48b61194b1e70e469aba91297bec&to=8187b17ebd5ab65ad8bcc0b4ec288d77cb4f739c&stat=instructions:u

The module currently stores the target triple as a string. This
means that any code that wants to actually use the triple first
has to instantiate a Triple, which is somewhat expensive. The
change in llvm#121652 caused a moderate compile-time regression due
to this. While it would be easy enough to work around, I think
that architecturally, it makes more sense to store the parsed
Triple in the module, so that it can always be directly queried.

For this change, I've opted not to add any magic conversions
between std::string and Triple for backwards-compatibilty purses,
and instead write out needed Triple()s or str()s explicitly. This
is because I think a decent number of them should be changed to
work on Triple as well, to avoid unnecessary conversions back and
forth.

The only interesting part in this patch is that the default triple
is Triple("") instead of Triple() to preserve existing behavior.
The former defaults to using the ELF object format instead of
unknown object format. We should fix that as well.
@llvmbot llvmbot added clang Clang issues not falling into any other category backend:AArch64 backend:AMDGPU backend:Hexagon backend:X86 clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:codegen tools:llvm-exegesis debuginfo PGO Profile Guided Optimizations backend:DirectX backend:SPIR-V LTO Link time optimization (regular/full LTO or ThinLTO) coroutines C++20 coroutines compiler-rt:sanitizer flang:openmp llvm:ir llvm:analysis llvm:transforms llvm:binary-utilities clang:openmp OpenMP related changes to Clang offload labels Mar 5, 2025
@llvmbot
Copy link
Member

llvmbot commented Mar 5, 2025

@llvm/pr-subscribers-flang-driver
@llvm/pr-subscribers-mc
@llvm/pr-subscribers-lldb
@llvm/pr-subscribers-mlir
@llvm/pr-subscribers-mlir-execution-engine
@llvm/pr-subscribers-llvm-ir
@llvm/pr-subscribers-coroutines
@llvm/pr-subscribers-debuginfo
@llvm/pr-subscribers-backend-hexagon
@llvm/pr-subscribers-clang
@llvm/pr-subscribers-tools-llvm-exegesis

@llvm/pr-subscribers-backend-aarch64

Author: Nikita Popov (nikic)

Changes

The module currently stores the target triple as a string. This means that any code that wants to actually use the triple first has to instantiate a Triple, which is somewhat expensive. The change in #121652 caused a moderate compile-time regression due to this. While it would be easy enough to work around, I think that architecturally, it makes more sense to store the parsed Triple in the module, so that it can always be directly queried.

For this change, I've opted not to add any magic conversions between std::string and Triple for backwards-compatibilty purses, and instead write out needed Triple()s or str()s explicitly. This is because I think a decent number of them should be changed to work on Triple as well, to avoid unnecessary conversions back and forth.

The only interesting part in this patch is that the default triple is Triple("") instead of Triple() to preserve existing behavior. The former defaults to using the ELF object format instead of unknown object format. We should fix that as well.

Compile-time: https://llvm-compile-time-tracker.com/compare.php?from=e5d5503e4efa48b61194b1e70e469aba91297bec&to=8187b17ebd5ab65ad8bcc0b4ec288d77cb4f739c&stat=instructions:u


Patch is 87.54 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/129868.diff

93 Files Affected:

  • (modified) clang/lib/CodeGen/BackendUtil.cpp (+1-1)
  • (modified) clang/lib/CodeGen/CodeGenAction.cpp (+3-3)
  • (modified) clang/lib/CodeGen/ModuleBuilder.cpp (+1-1)
  • (modified) clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp (+1-1)
  • (modified) clang/lib/Interpreter/DeviceOffload.cpp (+2-2)
  • (modified) clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp (+2-2)
  • (modified) clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp (+7-6)
  • (modified) llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp (+1-1)
  • (modified) llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h (+1-1)
  • (modified) llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h (+1-1)
  • (modified) llvm/include/llvm/IR/Module.h (+7-5)
  • (modified) llvm/include/llvm/LTO/legacy/LTOModule.h (+2-6)
  • (modified) llvm/include/llvm/TargetParser/Triple.h (+3)
  • (modified) llvm/lib/Analysis/DXILMetadataAnalysis.cpp (+1-1)
  • (modified) llvm/lib/Analysis/Lint.cpp (+1-1)
  • (modified) llvm/lib/Analysis/TargetLibraryInfo.cpp (+3-4)
  • (modified) llvm/lib/AsmParser/LLParser.cpp (+2-2)
  • (modified) llvm/lib/Bitcode/Reader/BitcodeReader.cpp (+3-3)
  • (modified) llvm/lib/Bitcode/Writer/BitcodeWriter.cpp (+2-2)
  • (modified) llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp (+5-5)
  • (modified) llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp (+1-2)
  • (modified) llvm/lib/CodeGen/GlobalMerge.cpp (+1-1)
  • (modified) llvm/lib/CodeGen/MIRParser/MIRParser.cpp (+4-4)
  • (modified) llvm/lib/CodeGen/StackProtector.cpp (+1-1)
  • (modified) llvm/lib/CodeGen/WinEHPrepare.cpp (+1-1)
  • (modified) llvm/lib/ExecutionEngine/TargetSelect.cpp (+1-1)
  • (modified) llvm/lib/Frontend/Offloading/OffloadWrapper.cpp (+1-1)
  • (modified) llvm/lib/Frontend/Offloading/Utility.cpp (+3-3)
  • (modified) llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp (+2-2)
  • (modified) llvm/lib/IR/AsmWriter.cpp (+1-1)
  • (modified) llvm/lib/IR/Core.cpp (+3-3)
  • (modified) llvm/lib/IR/EHPersonalities.cpp (+1-1)
  • (modified) llvm/lib/IR/Globals.cpp (+2-4)
  • (modified) llvm/lib/IR/ValueSymbolTable.cpp (+1-1)
  • (modified) llvm/lib/IR/Verifier.cpp (+1-1)
  • (modified) llvm/lib/LTO/LTO.cpp (+3-2)
  • (modified) llvm/lib/LTO/LTOBackend.cpp (+9-8)
  • (modified) llvm/lib/LTO/LTOCodeGenerator.cpp (+3-3)
  • (modified) llvm/lib/LTO/LTOModule.cpp (+3-3)
  • (modified) llvm/lib/LTO/ThinLTOCodeGenerator.cpp (+7-7)
  • (modified) llvm/lib/LTO/UpdateCompilerUsed.cpp (+1-1)
  • (modified) llvm/lib/Linker/IRMover.cpp (+4-4)
  • (modified) llvm/lib/Object/IRObjectFile.cpp (+1-1)
  • (modified) llvm/lib/Object/IRSymtab.cpp (+3-4)
  • (modified) llvm/lib/ProfileData/InstrProf.cpp (+2-2)
  • (modified) llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64StackTagging.cpp (+2-3)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp (+2-2)
  • (modified) llvm/lib/Target/DirectX/DXILOpBuilder.cpp (+1-1)
  • (modified) llvm/lib/Target/DirectX/DXILOpLowering.cpp (+3-3)
  • (modified) llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp (+2-2)
  • (modified) llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp (+2-2)
  • (modified) llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp (+1-1)
  • (modified) llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp (+3-3)
  • (modified) llvm/lib/Target/SPIRV/SPIRVAPI.cpp (+5-5)
  • (modified) llvm/lib/Target/X86/X86MCInstLower.cpp (+2-3)
  • (modified) llvm/lib/Transforms/CFGuard/CFGuard.cpp (+2-2)
  • (modified) llvm/lib/Transforms/Coroutines/CoroSplit.cpp (+1-2)
  • (modified) llvm/lib/Transforms/IPO/Internalize.cpp (+3-3)
  • (modified) llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp (+4-5)
  • (modified) llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp (+3-3)
  • (modified) llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp (+2-2)
  • (modified) llvm/lib/Transforms/Instrumentation/InstrOrderFile.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/MemProfiler.cpp (+5-5)
  • (modified) llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/TypeSanitizer.cpp (+1-1)
  • (modified) llvm/tools/bugpoint/BugDriver.cpp (+2-1)
  • (modified) llvm/tools/llc/llc.cpp (+2-2)
  • (modified) llvm/tools/lli/lli.cpp (+5-6)
  • (modified) llvm/tools/llvm-exegesis/lib/Assembler.cpp (+1-1)
  • (modified) llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp (+1-1)
  • (modified) llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp (+1-1)
  • (modified) llvm/tools/lto/lto.cpp (+2-2)
  • (modified) llvm/tools/opt/optdriver.cpp (+1-1)
  • (modified) llvm/unittests/Analysis/LazyCallGraphTest.cpp (+1-1)
  • (modified) llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h (+1-1)
  • (modified) llvm/unittests/ExecutionEngine/Orc/OrcTestCommon.cpp (+4-4)
  • (modified) llvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp (+2-2)
  • (modified) llvm/unittests/ExecutionEngine/Orc/ReOptimizeLayerTest.cpp (+1-1)
  • (modified) llvm/unittests/IR/LegacyPassManagerTest.cpp (+1-1)
  • (modified) llvm/unittests/Target/AArch64/InstSizes.cpp (+1-1)
  • (modified) llvm/unittests/Target/ARM/InstSizes.cpp (+1-1)
  • (modified) llvm/unittests/Target/LoongArch/InstSizes.cpp (+1-1)
  • (modified) llvm/unittests/Target/X86/MachineSizeOptsTest.cpp (+1-1)
  • (modified) llvm/unittests/Transforms/Vectorize/VPlanHCFGTest.cpp (+2-2)
  • (modified) offload/plugins-nextgen/common/src/PluginInterface.cpp (+1-1)
  • (modified) polly/lib/CodeGen/IslNodeBuilder.cpp (+1-2)
  • (modified) polly/lib/CodeGen/PerfMonitor.cpp (+1-1)
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index 1750719e17670..62a0e3c69bad1 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -595,7 +595,7 @@ static void setCommandLineOpts(const CodeGenOptions &CodeGenOpts) {
 void EmitAssemblyHelper::CreateTargetMachine(bool MustCreateTM) {
   // Create the TargetMachine for generating code.
   std::string Error;
-  std::string Triple = TheModule->getTargetTriple();
+  std::string Triple = TheModule->getTargetTriple().str();
   const llvm::Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error);
   if (!TheTarget) {
     if (MustCreateTM)
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp
index 7aa3639cabf39..4321efd49af36 100644
--- a/clang/lib/CodeGen/CodeGenAction.cpp
+++ b/clang/lib/CodeGen/CodeGenAction.cpp
@@ -1032,7 +1032,7 @@ CodeGenAction::loadModule(MemoryBufferRef MBRef) {
     // linker using merged object file.
     if (!Bm) {
       auto M = std::make_unique<llvm::Module>("empty", *VMContext);
-      M->setTargetTriple(CI.getTargetOpts().Triple);
+      M->setTargetTriple(Triple(CI.getTargetOpts().Triple));
       return M;
     }
     Expected<std::unique_ptr<llvm::Module>> MOrErr =
@@ -1123,10 +1123,10 @@ void CodeGenAction::ExecuteAction() {
     return;
 
   const TargetOptions &TargetOpts = CI.getTargetOpts();
-  if (TheModule->getTargetTriple() != TargetOpts.Triple) {
+  if (TheModule->getTargetTriple().str() != TargetOpts.Triple) {
     Diagnostics.Report(SourceLocation(), diag::warn_fe_override_module)
         << TargetOpts.Triple;
-    TheModule->setTargetTriple(TargetOpts.Triple);
+    TheModule->setTargetTriple(Triple(TargetOpts.Triple));
   }
 
   EmbedObject(TheModule.get(), CodeGenOpts, Diagnostics);
diff --git a/clang/lib/CodeGen/ModuleBuilder.cpp b/clang/lib/CodeGen/ModuleBuilder.cpp
index d4e0ab0339a8b..09a7d79ae4afb 100644
--- a/clang/lib/CodeGen/ModuleBuilder.cpp
+++ b/clang/lib/CodeGen/ModuleBuilder.cpp
@@ -151,7 +151,7 @@ namespace {
     void Initialize(ASTContext &Context) override {
       Ctx = &Context;
 
-      M->setTargetTriple(Ctx->getTargetInfo().getTriple().getTriple());
+      M->setTargetTriple(Ctx->getTargetInfo().getTriple());
       M->setDataLayout(Ctx->getTargetInfo().getDataLayoutString());
       const auto &SDKVersion = Ctx->getTargetInfo().getSDKVersion();
       if (!SDKVersion.empty())
diff --git a/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp b/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp
index 788c8b932ab52..e32778d1b4767 100644
--- a/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp
+++ b/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp
@@ -255,7 +255,7 @@ class PCHContainerGenerator : public ASTConsumer {
     if (Diags.hasErrorOccurred())
       return;
 
-    M->setTargetTriple(Ctx.getTargetInfo().getTriple().getTriple());
+    M->setTargetTriple(Ctx.getTargetInfo().getTriple());
     M->setDataLayout(Ctx.getTargetInfo().getDataLayoutString());
 
     // PCH files don't have a signature field in the control block,
diff --git a/clang/lib/Interpreter/DeviceOffload.cpp b/clang/lib/Interpreter/DeviceOffload.cpp
index 1999d63d1aa04..8fb484d185704 100644
--- a/clang/lib/Interpreter/DeviceOffload.cpp
+++ b/clang/lib/Interpreter/DeviceOffload.cpp
@@ -77,13 +77,13 @@ llvm::Expected<llvm::StringRef> IncrementalCUDADeviceParser::GeneratePTX() {
   std::string Error;
 
   const llvm::Target *Target = llvm::TargetRegistry::lookupTarget(
-      PTU.TheModule->getTargetTriple(), Error);
+      PTU.TheModule->getTargetTriple().str(), Error);
   if (!Target)
     return llvm::make_error<llvm::StringError>(std::move(Error),
                                                std::error_code());
   llvm::TargetOptions TO = llvm::TargetOptions();
   llvm::TargetMachine *TargetMachine = Target->createTargetMachine(
-      PTU.TheModule->getTargetTriple(), TargetOpts.CPU, "", TO,
+      PTU.TheModule->getTargetTriple().str(), TargetOpts.CPU, "", TO,
       llvm::Reloc::Model::PIC_);
   PTU.TheModule->setDataLayout(TargetMachine->createDataLayout());
 
diff --git a/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp b/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
index 798b34b3ef0af..4618c0bcc6be8 100644
--- a/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
+++ b/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
@@ -127,8 +127,8 @@ static std::string OptLLVM(const std::string &IR, CodeGenOptLevel OLvl) {
     ErrorAndExit(E);
 
   std::unique_ptr<TargetMachine> TM(TheTarget->createTargetMachine(
-      M->getTargetTriple(), codegen::getCPUStr(), codegen::getFeaturesStr(),
-      Options, codegen::getExplicitRelocModel(),
+      M->getTargetTriple().str(), codegen::getCPUStr(),
+      codegen::getFeaturesStr(), Options, codegen::getExplicitRelocModel(),
       codegen::getExplicitCodeModel(), OLvl));
   if (!TM)
     ErrorAndExit("Could not create target machine");
diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 7db8f3e27d704..5f5d103bbcf49 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -622,16 +622,17 @@ Expected<StringRef> writeOffloadFile(const OffloadFile &File) {
 Expected<StringRef> compileModule(Module &M, OffloadKind Kind) {
   llvm::TimeTraceScope TimeScope("Compile module");
   std::string Msg;
-  const Target *T = TargetRegistry::lookupTarget(M.getTargetTriple(), Msg);
+  const Target *T =
+      TargetRegistry::lookupTarget(M.getTargetTriple().str(), Msg);
   if (!T)
     return createStringError(Msg);
 
   auto Options =
-      codegen::InitTargetOptionsFromCodeGenFlags(Triple(M.getTargetTriple()));
+      codegen::InitTargetOptionsFromCodeGenFlags(M.getTargetTriple());
   StringRef CPU = "";
   StringRef Features = "";
   std::unique_ptr<TargetMachine> TM(
-      T->createTargetMachine(M.getTargetTriple(), CPU, Features, Options,
+      T->createTargetMachine(M.getTargetTriple().str(), CPU, Features, Options,
                              Reloc::PIC_, M.getCodeModel()));
 
   if (M.getDataLayout().isDefault())
@@ -650,7 +651,7 @@ Expected<StringRef> compileModule(Module &M, OffloadKind Kind) {
   auto OS = std::make_unique<llvm::raw_fd_ostream>(FD, true);
 
   legacy::PassManager CodeGenPasses;
-  TargetLibraryInfoImpl TLII(Triple(M.getTargetTriple()));
+  TargetLibraryInfoImpl TLII(M.getTargetTriple());
   CodeGenPasses.add(new TargetLibraryInfoWrapperPass(TLII));
   if (TM->addPassesToEmitFile(CodeGenPasses, *OS, nullptr,
                               CodeGenFileType::ObjectFile))
@@ -674,8 +675,8 @@ wrapDeviceImages(ArrayRef<std::unique_ptr<MemoryBuffer>> Buffers,
 
   LLVMContext Context;
   Module M("offload.wrapper.module", Context);
-  M.setTargetTriple(
-      Args.getLastArgValue(OPT_host_triple_EQ, sys::getDefaultTargetTriple()));
+  M.setTargetTriple(Triple(
+      Args.getLastArgValue(OPT_host_triple_EQ, sys::getDefaultTargetTriple())));
 
   switch (Kind) {
   case OFK_OpenMP:
diff --git a/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp b/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp
index f498a97442c44..78152af052c07 100644
--- a/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp
+++ b/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp
@@ -207,7 +207,7 @@ int main(int Argc, char *Argv[]) {
           ExitOnErr(JITTargetMachineBuilder::detectHost()));
     } else {
       Builder.setJITTargetMachineBuilder(
-          JITTargetMachineBuilder(Triple(M.getTargetTriple())));
+          JITTargetMachineBuilder(M.getTargetTriple()));
     }
     if (!M.getDataLayout().getStringRepresentation().empty())
       Builder.setDataLayout(M.getDataLayout());
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h b/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
index 593f7a41337cb..67347e851ca1b 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
@@ -104,7 +104,7 @@ class StaticInitGVIterator {
 
   StaticInitGVIterator(Module &M)
       : I(M.global_values().begin()), E(M.global_values().end()),
-        ObjFmt(Triple(M.getTargetTriple()).getObjectFormat()) {
+        ObjFmt(M.getTargetTriple().getObjectFormat()) {
     if (I != E) {
       if (!isStaticInitGlobal(*I))
         moveToNextStaticInitGlobal();
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
index 80b4aa2bd2855..28909cef4748d 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
@@ -479,7 +479,7 @@ class OpenMPIRBuilder {
   /// not have an effect on \p M (see initialize)
   OpenMPIRBuilder(Module &M)
       : M(M), Builder(M.getContext()), OffloadInfoManager(this),
-        T(Triple(M.getTargetTriple())) {}
+        T(M.getTargetTriple()) {}
   ~OpenMPIRBuilder();
 
   class AtomicInfo : public llvm::AtomicInfo {
diff --git a/llvm/include/llvm/IR/Module.h b/llvm/include/llvm/IR/Module.h
index 12b50fc506516..48dc29c24c582 100644
--- a/llvm/include/llvm/IR/Module.h
+++ b/llvm/include/llvm/IR/Module.h
@@ -31,6 +31,7 @@
 #include "llvm/IR/SymbolTableListTraits.h"
 #include "llvm/Support/CBindingWrapping.h"
 #include "llvm/Support/CodeGen.h"
+#include "llvm/TargetParser/Triple.h"
 #include <cstddef>
 #include <cstdint>
 #include <iterator>
@@ -189,8 +190,10 @@ class LLVM_ABI Module {
   std::string ModuleID;           ///< Human readable identifier for the module
   std::string SourceFileName;     ///< Original source file name for module,
                                   ///< recorded in bitcode.
-  std::string TargetTriple;       ///< Platform target triple Module compiled on
-                                  ///< Format: (arch)(sub)-(vendor)-(sys0-(abi)
+  /// Platform target triple Module compiled on
+  /// Format: (arch)(sub)-(vendor)-(sys0-(abi)
+  // FIXME: Default construction is not the same as empty triple :(
+  Triple TargetTriple = Triple("");
   NamedMDSymTabType NamedMDSymTab;  ///< NamedMDNode names.
   DataLayout DL;                  ///< DataLayout associated with the module
   StringMap<unsigned>
@@ -294,8 +297,7 @@ class LLVM_ABI Module {
   const DataLayout &getDataLayout() const { return DL; }
 
   /// Get the target triple which is a string describing the target host.
-  /// @returns a string containing the target triple.
-  const std::string &getTargetTriple() const { return TargetTriple; }
+  const Triple &getTargetTriple() const { return TargetTriple; }
 
   /// Get the global data context.
   /// @returns LLVMContext - a container for LLVM's global information
@@ -338,7 +340,7 @@ class LLVM_ABI Module {
   void setDataLayout(const DataLayout &Other);
 
   /// Set the target triple.
-  void setTargetTriple(StringRef T) { TargetTriple = std::string(T); }
+  void setTargetTriple(Triple T) { TargetTriple = std::move(T); }
 
   /// Set the module-scope inline assembly blocks.
   /// A trailing newline is added if the input doesn't have one.
diff --git a/llvm/include/llvm/LTO/legacy/LTOModule.h b/llvm/include/llvm/LTO/legacy/LTOModule.h
index e861a56bcbac1..91a38b7c0da80 100644
--- a/llvm/include/llvm/LTO/legacy/LTOModule.h
+++ b/llvm/include/llvm/LTO/legacy/LTOModule.h
@@ -118,14 +118,10 @@ struct LTOModule {
   std::unique_ptr<Module> takeModule() { return std::move(Mod); }
 
   /// Return the Module's target triple.
-  const std::string &getTargetTriple() {
-    return getModule().getTargetTriple();
-  }
+  const Triple &getTargetTriple() { return getModule().getTargetTriple(); }
 
   /// Set the Module's target triple.
-  void setTargetTriple(StringRef Triple) {
-    getModule().setTargetTriple(Triple);
-  }
+  void setTargetTriple(Triple T) { getModule().setTargetTriple(T); }
 
   /// Get the number of symbols
   uint32_t getSymbolCount() {
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 09c0d223d9b4d..390ed7fbab8c0 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -463,6 +463,9 @@ class Triple {
 
   const std::string &getTriple() const { return Data; }
 
+  /// Whether the triple is empty / default constructed.
+  bool empty() const { return Data.empty(); }
+
   /// Get the architecture (first) component of the triple.
   StringRef getArchName() const;
 
diff --git a/llvm/lib/Analysis/DXILMetadataAnalysis.cpp b/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
index a7f666a3f8b48..87aa14e9c701f 100644
--- a/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
+++ b/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
@@ -24,7 +24,7 @@ using namespace dxil;
 
 static ModuleMetadataInfo collectMetadataInfo(Module &M) {
   ModuleMetadataInfo MMDAI;
-  Triple TT(Triple(M.getTargetTriple()));
+  const Triple &TT = M.getTargetTriple();
   MMDAI.DXILVersion = TT.getDXILVersion();
   MMDAI.ShaderModelVersion = TT.getOSVersion();
   MMDAI.ShaderProfile = TT.getEnvironment();
diff --git a/llvm/lib/Analysis/Lint.cpp b/llvm/lib/Analysis/Lint.cpp
index e9d96a0c2972a..1db0ca372d797 100644
--- a/llvm/lib/Analysis/Lint.cpp
+++ b/llvm/lib/Analysis/Lint.cpp
@@ -139,7 +139,7 @@ class Lint : public InstVisitor<Lint> {
 
   Lint(Module *Mod, const DataLayout *DL, AliasAnalysis *AA,
        AssumptionCache *AC, DominatorTree *DT, TargetLibraryInfo *TLI)
-      : Mod(Mod), TT(Triple::normalize(Mod->getTargetTriple())), DL(DL), AA(AA),
+      : Mod(Mod), TT(Mod->getTargetTriple().normalize()), DL(DL), AA(AA),
         AC(AC), DT(DT), TLI(TLI), MessagesStr(Messages) {}
 
   void WriteValues(ArrayRef<const Value *> Vs) {
diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp
index 8557901192e40..3a8cdf946da37 100644
--- a/llvm/lib/Analysis/TargetLibraryInfo.cpp
+++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp
@@ -118,7 +118,7 @@ static bool hasBcmp(const Triple &TT) {
   return TT.isOSFreeBSD() || TT.isOSSolaris();
 }
 
-static bool isCallingConvCCompatible(CallingConv::ID CC, StringRef TT,
+static bool isCallingConvCCompatible(CallingConv::ID CC, const Triple &TT,
                                      FunctionType *FuncTy) {
   switch (CC) {
   default:
@@ -131,7 +131,7 @@ static bool isCallingConvCCompatible(CallingConv::ID CC, StringRef TT,
 
     // The iOS ABI diverges from the standard in some cases, so for now don't
     // try to simplify those calls.
-    if (Triple(TT).isiOS())
+    if (TT.isiOS())
       return false;
 
     if (!FuncTy->getReturnType()->isPointerTy() &&
@@ -1446,8 +1446,7 @@ TargetLibraryInfoImpl::getVectorMappingInfo(StringRef F, const ElementCount &VF,
 TargetLibraryInfo TargetLibraryAnalysis::run(const Function &F,
                                              FunctionAnalysisManager &) {
   if (!BaselineInfoImpl)
-    BaselineInfoImpl =
-        TargetLibraryInfoImpl(Triple(F.getParent()->getTargetTriple()));
+    BaselineInfoImpl = TargetLibraryInfoImpl(F.getParent()->getTargetTriple());
   return TargetLibraryInfo(*BaselineInfoImpl, &F);
 }
 
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 777bf5f7bb386..c8d792981793d 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -522,7 +522,7 @@ bool LLParser::parseTargetDefinitions(DataLayoutCallbackTy DataLayoutCallback) {
   // Run the override callback to potentially change the data layout string, and
   // parse the data layout string.
   if (auto LayoutOverride =
-          DataLayoutCallback(M->getTargetTriple(), TentativeDLStr)) {
+          DataLayoutCallback(M->getTargetTriple().str(), TentativeDLStr)) {
     TentativeDLStr = *LayoutOverride;
     DLStrLoc = {};
   }
@@ -646,7 +646,7 @@ bool LLParser::parseTargetDefinition(std::string &TentativeDLStr,
     if (parseToken(lltok::equal, "expected '=' after target triple") ||
         parseStringConstant(Str))
       return true;
-    M->setTargetTriple(Str);
+    M->setTargetTriple(Triple(Str));
     return false;
   case lltok::kw_datalayout:
     Lex.Lex();
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index d687495c42de6..e4dc7d6ed86b0 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -4530,12 +4530,12 @@ Error BitcodeReader::parseModule(uint64_t ResumeBit,
 
     // Auto-upgrade the layout string
     TentativeDataLayoutStr = llvm::UpgradeDataLayoutString(
-        TentativeDataLayoutStr, TheModule->getTargetTriple());
+        TentativeDataLayoutStr, TheModule->getTargetTriple().str());
 
     // Apply override
     if (Callbacks.DataLayout) {
       if (auto LayoutOverride = (*Callbacks.DataLayout)(
-              TheModule->getTargetTriple(), TentativeDataLayoutStr))
+              TheModule->getTargetTriple().str(), TentativeDataLayoutStr))
         TentativeDataLayoutStr = *LayoutOverride;
     }
 
@@ -4719,7 +4719,7 @@ Error BitcodeReader::parseModule(uint64_t ResumeBit,
       std::string S;
       if (convertToString(Record, 0, S))
         return error("Invalid record");
-      TheModule->setTargetTriple(S);
+      TheModule->setTargetTriple(Triple(S));
       break;
     }
     case bitc::MODULE_CODE_DATALAYOUT: {  // DATALAYOUT: [strchr x N]
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index 440a2c9ace8a3..6e2e45a51069d 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -1449,8 +1449,8 @@ serializeSanitizerMetadata(const GlobalValue::SanitizerMetadata &Meta) {
 void ModuleBitcodeWriter::writeModuleInfo() {
   // Emit various pieces of data attached to a module.
   if (!M.getTargetTriple().empty())
-    writeStringRecord(Stream, bitc::MODULE_CODE_TRIPLE, M.getTargetTriple(),
-                      0 /*TODO*/);
+    writeStringRecord(Stream, bitc::MODULE_CODE_TRIPLE,
+                      M.getTargetTriple().str(), 0 /*TODO*/);
   const std::string &DL = M.getDataLayoutStr();
   if (!DL.empty())
     writeStringRecord(Stream, bitc::MODULE_CODE_DATALAYOUT, DL, 0 /*TODO*/);
diff --git a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
index bda0e266d01de..5c3b900ca29b6 100644
--- a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
@@ -619,7 +619,7 @@ void CodeViewDebug::beginModule(Module *M) {
     return;
   }
 
-  TheCPU = mapArchToCVCPUType(Triple(M->getTargetTriple()).getArch());
+  TheCPU = mapArchToCVCPUType(M->getTargetTriple().getArch());
 
   // Get the current source language.
   const MDNode *Node = *M->debug_compile_units_begin();
@@ -845,7 +845,7 @@ void CodeViewDebug::emitCompilerInformation() {
     Flags |= static_cast<uint32_t>(CompileSym3Flags::PGO);
   }
   using ArchType = llvm::Triple::ArchType;
-  ArchType Arch = Triple(MMI->getModule()->getTargetTriple()).getArch();
+  ArchType Arch = MMI->getModule()->getTargetTriple().getArch();
   if (Asm->TM.Options.Hotpatch || Arch == ArchType::thumb ||
       Arch == ArchType::aarch64) {
     Flags |= static_cast<uint32_t>(CompileSym3Flags::HotPatch);
@@ -1098,7 +1098,7 @@ void CodeViewDebug::emitDebugInfoForFunction(const Function *GV,
     FuncName = std::string(GlobalValue::dropLLVMManglingEscape(GV->getName()));
 
   // Emit FPO data, but only on 32-bit x86. No other platforms use it.
-  if (Triple(MMI->getModule()->getTargetTriple()).getArch() == Triple::x86)
+  if (MMI->getModule()->getTargetTriple().getArch() == Triple::x86)
     OS.emitCVFPOData(Fn);
 
   // Emit a symbol subsection, required by VS2012+ to find function boundaries.
@@ -1560,7 +1560,7 @@ void CodeViewDebug::beginFunctionImpl(const MachineFunction *MF) {
   }
 
   // Mark branches that may potentially be using jump tables with labels.
-  bool isThumb = Triple(MMI->getModule()->getTargetTriple()).getArch() ==
+  bool isThumb = MMI->getModule()->getTargetTriple().getArch() ==
                  llvm::Triple::ArchType::thumb;
   discoverJumpTableBranches(MF, isThumb);
 }
@@ -3068,7 +3068,7 @@ void CodeViewDebug::endFunctionImpl(const MachineFunction *MF) {
     }
   }
 
-  bool isThumb = T...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Mar 5, 2025

@llvm/pr-subscribers-backend-x86

Author: Nikita Popov (nikic)

Changes

The module currently stores the target triple as a string. This means that any code that wants to actually use the triple first has to instantiate a Triple, which is somewhat expensive. The change in #121652 caused a moderate compile-time regression due to this. While it would be easy enough to work around, I think that architecturally, it makes more sense to store the parsed Triple in the module, so that it can always be directly queried.

For this change, I've opted not to add any magic conversions between std::string and Triple for backwards-compatibilty purses, and instead write out needed Triple()s or str()s explicitly. This is because I think a decent number of them should be changed to work on Triple as well, to avoid unnecessary conversions back and forth.

The only interesting part in this patch is that the default triple is Triple("") instead of Triple() to preserve existing behavior. The former defaults to using the ELF object format instead of unknown object format. We should fix that as well.

Compile-time: https://llvm-compile-time-tracker.com/compare.php?from=e5d5503e4efa48b61194b1e70e469aba91297bec&amp;to=8187b17ebd5ab65ad8bcc0b4ec288d77cb4f739c&amp;stat=instructions:u


Patch is 87.54 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/129868.diff

93 Files Affected:

  • (modified) clang/lib/CodeGen/BackendUtil.cpp (+1-1)
  • (modified) clang/lib/CodeGen/CodeGenAction.cpp (+3-3)
  • (modified) clang/lib/CodeGen/ModuleBuilder.cpp (+1-1)
  • (modified) clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp (+1-1)
  • (modified) clang/lib/Interpreter/DeviceOffload.cpp (+2-2)
  • (modified) clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp (+2-2)
  • (modified) clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp (+7-6)
  • (modified) llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp (+1-1)
  • (modified) llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h (+1-1)
  • (modified) llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h (+1-1)
  • (modified) llvm/include/llvm/IR/Module.h (+7-5)
  • (modified) llvm/include/llvm/LTO/legacy/LTOModule.h (+2-6)
  • (modified) llvm/include/llvm/TargetParser/Triple.h (+3)
  • (modified) llvm/lib/Analysis/DXILMetadataAnalysis.cpp (+1-1)
  • (modified) llvm/lib/Analysis/Lint.cpp (+1-1)
  • (modified) llvm/lib/Analysis/TargetLibraryInfo.cpp (+3-4)
  • (modified) llvm/lib/AsmParser/LLParser.cpp (+2-2)
  • (modified) llvm/lib/Bitcode/Reader/BitcodeReader.cpp (+3-3)
  • (modified) llvm/lib/Bitcode/Writer/BitcodeWriter.cpp (+2-2)
  • (modified) llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp (+5-5)
  • (modified) llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp (+1-2)
  • (modified) llvm/lib/CodeGen/GlobalMerge.cpp (+1-1)
  • (modified) llvm/lib/CodeGen/MIRParser/MIRParser.cpp (+4-4)
  • (modified) llvm/lib/CodeGen/StackProtector.cpp (+1-1)
  • (modified) llvm/lib/CodeGen/WinEHPrepare.cpp (+1-1)
  • (modified) llvm/lib/ExecutionEngine/TargetSelect.cpp (+1-1)
  • (modified) llvm/lib/Frontend/Offloading/OffloadWrapper.cpp (+1-1)
  • (modified) llvm/lib/Frontend/Offloading/Utility.cpp (+3-3)
  • (modified) llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp (+2-2)
  • (modified) llvm/lib/IR/AsmWriter.cpp (+1-1)
  • (modified) llvm/lib/IR/Core.cpp (+3-3)
  • (modified) llvm/lib/IR/EHPersonalities.cpp (+1-1)
  • (modified) llvm/lib/IR/Globals.cpp (+2-4)
  • (modified) llvm/lib/IR/ValueSymbolTable.cpp (+1-1)
  • (modified) llvm/lib/IR/Verifier.cpp (+1-1)
  • (modified) llvm/lib/LTO/LTO.cpp (+3-2)
  • (modified) llvm/lib/LTO/LTOBackend.cpp (+9-8)
  • (modified) llvm/lib/LTO/LTOCodeGenerator.cpp (+3-3)
  • (modified) llvm/lib/LTO/LTOModule.cpp (+3-3)
  • (modified) llvm/lib/LTO/ThinLTOCodeGenerator.cpp (+7-7)
  • (modified) llvm/lib/LTO/UpdateCompilerUsed.cpp (+1-1)
  • (modified) llvm/lib/Linker/IRMover.cpp (+4-4)
  • (modified) llvm/lib/Object/IRObjectFile.cpp (+1-1)
  • (modified) llvm/lib/Object/IRSymtab.cpp (+3-4)
  • (modified) llvm/lib/ProfileData/InstrProf.cpp (+2-2)
  • (modified) llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64StackTagging.cpp (+2-3)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp (+2-2)
  • (modified) llvm/lib/Target/DirectX/DXILOpBuilder.cpp (+1-1)
  • (modified) llvm/lib/Target/DirectX/DXILOpLowering.cpp (+3-3)
  • (modified) llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp (+2-2)
  • (modified) llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp (+2-2)
  • (modified) llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp (+1-1)
  • (modified) llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp (+3-3)
  • (modified) llvm/lib/Target/SPIRV/SPIRVAPI.cpp (+5-5)
  • (modified) llvm/lib/Target/X86/X86MCInstLower.cpp (+2-3)
  • (modified) llvm/lib/Transforms/CFGuard/CFGuard.cpp (+2-2)
  • (modified) llvm/lib/Transforms/Coroutines/CoroSplit.cpp (+1-2)
  • (modified) llvm/lib/Transforms/IPO/Internalize.cpp (+3-3)
  • (modified) llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp (+4-5)
  • (modified) llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp (+3-3)
  • (modified) llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp (+2-2)
  • (modified) llvm/lib/Transforms/Instrumentation/InstrOrderFile.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/MemProfiler.cpp (+5-5)
  • (modified) llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp (+1-1)
  • (modified) llvm/lib/Transforms/Instrumentation/TypeSanitizer.cpp (+1-1)
  • (modified) llvm/tools/bugpoint/BugDriver.cpp (+2-1)
  • (modified) llvm/tools/llc/llc.cpp (+2-2)
  • (modified) llvm/tools/lli/lli.cpp (+5-6)
  • (modified) llvm/tools/llvm-exegesis/lib/Assembler.cpp (+1-1)
  • (modified) llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp (+1-1)
  • (modified) llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp (+1-1)
  • (modified) llvm/tools/lto/lto.cpp (+2-2)
  • (modified) llvm/tools/opt/optdriver.cpp (+1-1)
  • (modified) llvm/unittests/Analysis/LazyCallGraphTest.cpp (+1-1)
  • (modified) llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h (+1-1)
  • (modified) llvm/unittests/ExecutionEngine/Orc/OrcTestCommon.cpp (+4-4)
  • (modified) llvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp (+2-2)
  • (modified) llvm/unittests/ExecutionEngine/Orc/ReOptimizeLayerTest.cpp (+1-1)
  • (modified) llvm/unittests/IR/LegacyPassManagerTest.cpp (+1-1)
  • (modified) llvm/unittests/Target/AArch64/InstSizes.cpp (+1-1)
  • (modified) llvm/unittests/Target/ARM/InstSizes.cpp (+1-1)
  • (modified) llvm/unittests/Target/LoongArch/InstSizes.cpp (+1-1)
  • (modified) llvm/unittests/Target/X86/MachineSizeOptsTest.cpp (+1-1)
  • (modified) llvm/unittests/Transforms/Vectorize/VPlanHCFGTest.cpp (+2-2)
  • (modified) offload/plugins-nextgen/common/src/PluginInterface.cpp (+1-1)
  • (modified) polly/lib/CodeGen/IslNodeBuilder.cpp (+1-2)
  • (modified) polly/lib/CodeGen/PerfMonitor.cpp (+1-1)
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index 1750719e17670..62a0e3c69bad1 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -595,7 +595,7 @@ static void setCommandLineOpts(const CodeGenOptions &CodeGenOpts) {
 void EmitAssemblyHelper::CreateTargetMachine(bool MustCreateTM) {
   // Create the TargetMachine for generating code.
   std::string Error;
-  std::string Triple = TheModule->getTargetTriple();
+  std::string Triple = TheModule->getTargetTriple().str();
   const llvm::Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error);
   if (!TheTarget) {
     if (MustCreateTM)
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp
index 7aa3639cabf39..4321efd49af36 100644
--- a/clang/lib/CodeGen/CodeGenAction.cpp
+++ b/clang/lib/CodeGen/CodeGenAction.cpp
@@ -1032,7 +1032,7 @@ CodeGenAction::loadModule(MemoryBufferRef MBRef) {
     // linker using merged object file.
     if (!Bm) {
       auto M = std::make_unique<llvm::Module>("empty", *VMContext);
-      M->setTargetTriple(CI.getTargetOpts().Triple);
+      M->setTargetTriple(Triple(CI.getTargetOpts().Triple));
       return M;
     }
     Expected<std::unique_ptr<llvm::Module>> MOrErr =
@@ -1123,10 +1123,10 @@ void CodeGenAction::ExecuteAction() {
     return;
 
   const TargetOptions &TargetOpts = CI.getTargetOpts();
-  if (TheModule->getTargetTriple() != TargetOpts.Triple) {
+  if (TheModule->getTargetTriple().str() != TargetOpts.Triple) {
     Diagnostics.Report(SourceLocation(), diag::warn_fe_override_module)
         << TargetOpts.Triple;
-    TheModule->setTargetTriple(TargetOpts.Triple);
+    TheModule->setTargetTriple(Triple(TargetOpts.Triple));
   }
 
   EmbedObject(TheModule.get(), CodeGenOpts, Diagnostics);
diff --git a/clang/lib/CodeGen/ModuleBuilder.cpp b/clang/lib/CodeGen/ModuleBuilder.cpp
index d4e0ab0339a8b..09a7d79ae4afb 100644
--- a/clang/lib/CodeGen/ModuleBuilder.cpp
+++ b/clang/lib/CodeGen/ModuleBuilder.cpp
@@ -151,7 +151,7 @@ namespace {
     void Initialize(ASTContext &Context) override {
       Ctx = &Context;
 
-      M->setTargetTriple(Ctx->getTargetInfo().getTriple().getTriple());
+      M->setTargetTriple(Ctx->getTargetInfo().getTriple());
       M->setDataLayout(Ctx->getTargetInfo().getDataLayoutString());
       const auto &SDKVersion = Ctx->getTargetInfo().getSDKVersion();
       if (!SDKVersion.empty())
diff --git a/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp b/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp
index 788c8b932ab52..e32778d1b4767 100644
--- a/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp
+++ b/clang/lib/CodeGen/ObjectFilePCHContainerWriter.cpp
@@ -255,7 +255,7 @@ class PCHContainerGenerator : public ASTConsumer {
     if (Diags.hasErrorOccurred())
       return;
 
-    M->setTargetTriple(Ctx.getTargetInfo().getTriple().getTriple());
+    M->setTargetTriple(Ctx.getTargetInfo().getTriple());
     M->setDataLayout(Ctx.getTargetInfo().getDataLayoutString());
 
     // PCH files don't have a signature field in the control block,
diff --git a/clang/lib/Interpreter/DeviceOffload.cpp b/clang/lib/Interpreter/DeviceOffload.cpp
index 1999d63d1aa04..8fb484d185704 100644
--- a/clang/lib/Interpreter/DeviceOffload.cpp
+++ b/clang/lib/Interpreter/DeviceOffload.cpp
@@ -77,13 +77,13 @@ llvm::Expected<llvm::StringRef> IncrementalCUDADeviceParser::GeneratePTX() {
   std::string Error;
 
   const llvm::Target *Target = llvm::TargetRegistry::lookupTarget(
-      PTU.TheModule->getTargetTriple(), Error);
+      PTU.TheModule->getTargetTriple().str(), Error);
   if (!Target)
     return llvm::make_error<llvm::StringError>(std::move(Error),
                                                std::error_code());
   llvm::TargetOptions TO = llvm::TargetOptions();
   llvm::TargetMachine *TargetMachine = Target->createTargetMachine(
-      PTU.TheModule->getTargetTriple(), TargetOpts.CPU, "", TO,
+      PTU.TheModule->getTargetTriple().str(), TargetOpts.CPU, "", TO,
       llvm::Reloc::Model::PIC_);
   PTU.TheModule->setDataLayout(TargetMachine->createDataLayout());
 
diff --git a/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp b/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
index 798b34b3ef0af..4618c0bcc6be8 100644
--- a/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
+++ b/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
@@ -127,8 +127,8 @@ static std::string OptLLVM(const std::string &IR, CodeGenOptLevel OLvl) {
     ErrorAndExit(E);
 
   std::unique_ptr<TargetMachine> TM(TheTarget->createTargetMachine(
-      M->getTargetTriple(), codegen::getCPUStr(), codegen::getFeaturesStr(),
-      Options, codegen::getExplicitRelocModel(),
+      M->getTargetTriple().str(), codegen::getCPUStr(),
+      codegen::getFeaturesStr(), Options, codegen::getExplicitRelocModel(),
       codegen::getExplicitCodeModel(), OLvl));
   if (!TM)
     ErrorAndExit("Could not create target machine");
diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 7db8f3e27d704..5f5d103bbcf49 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -622,16 +622,17 @@ Expected<StringRef> writeOffloadFile(const OffloadFile &File) {
 Expected<StringRef> compileModule(Module &M, OffloadKind Kind) {
   llvm::TimeTraceScope TimeScope("Compile module");
   std::string Msg;
-  const Target *T = TargetRegistry::lookupTarget(M.getTargetTriple(), Msg);
+  const Target *T =
+      TargetRegistry::lookupTarget(M.getTargetTriple().str(), Msg);
   if (!T)
     return createStringError(Msg);
 
   auto Options =
-      codegen::InitTargetOptionsFromCodeGenFlags(Triple(M.getTargetTriple()));
+      codegen::InitTargetOptionsFromCodeGenFlags(M.getTargetTriple());
   StringRef CPU = "";
   StringRef Features = "";
   std::unique_ptr<TargetMachine> TM(
-      T->createTargetMachine(M.getTargetTriple(), CPU, Features, Options,
+      T->createTargetMachine(M.getTargetTriple().str(), CPU, Features, Options,
                              Reloc::PIC_, M.getCodeModel()));
 
   if (M.getDataLayout().isDefault())
@@ -650,7 +651,7 @@ Expected<StringRef> compileModule(Module &M, OffloadKind Kind) {
   auto OS = std::make_unique<llvm::raw_fd_ostream>(FD, true);
 
   legacy::PassManager CodeGenPasses;
-  TargetLibraryInfoImpl TLII(Triple(M.getTargetTriple()));
+  TargetLibraryInfoImpl TLII(M.getTargetTriple());
   CodeGenPasses.add(new TargetLibraryInfoWrapperPass(TLII));
   if (TM->addPassesToEmitFile(CodeGenPasses, *OS, nullptr,
                               CodeGenFileType::ObjectFile))
@@ -674,8 +675,8 @@ wrapDeviceImages(ArrayRef<std::unique_ptr<MemoryBuffer>> Buffers,
 
   LLVMContext Context;
   Module M("offload.wrapper.module", Context);
-  M.setTargetTriple(
-      Args.getLastArgValue(OPT_host_triple_EQ, sys::getDefaultTargetTriple()));
+  M.setTargetTriple(Triple(
+      Args.getLastArgValue(OPT_host_triple_EQ, sys::getDefaultTargetTriple())));
 
   switch (Kind) {
   case OFK_OpenMP:
diff --git a/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp b/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp
index f498a97442c44..78152af052c07 100644
--- a/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp
+++ b/llvm/examples/OrcV2Examples/LLJITWithThinLTOSummaries/LLJITWithThinLTOSummaries.cpp
@@ -207,7 +207,7 @@ int main(int Argc, char *Argv[]) {
           ExitOnErr(JITTargetMachineBuilder::detectHost()));
     } else {
       Builder.setJITTargetMachineBuilder(
-          JITTargetMachineBuilder(Triple(M.getTargetTriple())));
+          JITTargetMachineBuilder(M.getTargetTriple()));
     }
     if (!M.getDataLayout().getStringRepresentation().empty())
       Builder.setDataLayout(M.getDataLayout());
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h b/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
index 593f7a41337cb..67347e851ca1b 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
@@ -104,7 +104,7 @@ class StaticInitGVIterator {
 
   StaticInitGVIterator(Module &M)
       : I(M.global_values().begin()), E(M.global_values().end()),
-        ObjFmt(Triple(M.getTargetTriple()).getObjectFormat()) {
+        ObjFmt(M.getTargetTriple().getObjectFormat()) {
     if (I != E) {
       if (!isStaticInitGlobal(*I))
         moveToNextStaticInitGlobal();
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
index 80b4aa2bd2855..28909cef4748d 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
@@ -479,7 +479,7 @@ class OpenMPIRBuilder {
   /// not have an effect on \p M (see initialize)
   OpenMPIRBuilder(Module &M)
       : M(M), Builder(M.getContext()), OffloadInfoManager(this),
-        T(Triple(M.getTargetTriple())) {}
+        T(M.getTargetTriple()) {}
   ~OpenMPIRBuilder();
 
   class AtomicInfo : public llvm::AtomicInfo {
diff --git a/llvm/include/llvm/IR/Module.h b/llvm/include/llvm/IR/Module.h
index 12b50fc506516..48dc29c24c582 100644
--- a/llvm/include/llvm/IR/Module.h
+++ b/llvm/include/llvm/IR/Module.h
@@ -31,6 +31,7 @@
 #include "llvm/IR/SymbolTableListTraits.h"
 #include "llvm/Support/CBindingWrapping.h"
 #include "llvm/Support/CodeGen.h"
+#include "llvm/TargetParser/Triple.h"
 #include <cstddef>
 #include <cstdint>
 #include <iterator>
@@ -189,8 +190,10 @@ class LLVM_ABI Module {
   std::string ModuleID;           ///< Human readable identifier for the module
   std::string SourceFileName;     ///< Original source file name for module,
                                   ///< recorded in bitcode.
-  std::string TargetTriple;       ///< Platform target triple Module compiled on
-                                  ///< Format: (arch)(sub)-(vendor)-(sys0-(abi)
+  /// Platform target triple Module compiled on
+  /// Format: (arch)(sub)-(vendor)-(sys0-(abi)
+  // FIXME: Default construction is not the same as empty triple :(
+  Triple TargetTriple = Triple("");
   NamedMDSymTabType NamedMDSymTab;  ///< NamedMDNode names.
   DataLayout DL;                  ///< DataLayout associated with the module
   StringMap<unsigned>
@@ -294,8 +297,7 @@ class LLVM_ABI Module {
   const DataLayout &getDataLayout() const { return DL; }
 
   /// Get the target triple which is a string describing the target host.
-  /// @returns a string containing the target triple.
-  const std::string &getTargetTriple() const { return TargetTriple; }
+  const Triple &getTargetTriple() const { return TargetTriple; }
 
   /// Get the global data context.
   /// @returns LLVMContext - a container for LLVM's global information
@@ -338,7 +340,7 @@ class LLVM_ABI Module {
   void setDataLayout(const DataLayout &Other);
 
   /// Set the target triple.
-  void setTargetTriple(StringRef T) { TargetTriple = std::string(T); }
+  void setTargetTriple(Triple T) { TargetTriple = std::move(T); }
 
   /// Set the module-scope inline assembly blocks.
   /// A trailing newline is added if the input doesn't have one.
diff --git a/llvm/include/llvm/LTO/legacy/LTOModule.h b/llvm/include/llvm/LTO/legacy/LTOModule.h
index e861a56bcbac1..91a38b7c0da80 100644
--- a/llvm/include/llvm/LTO/legacy/LTOModule.h
+++ b/llvm/include/llvm/LTO/legacy/LTOModule.h
@@ -118,14 +118,10 @@ struct LTOModule {
   std::unique_ptr<Module> takeModule() { return std::move(Mod); }
 
   /// Return the Module's target triple.
-  const std::string &getTargetTriple() {
-    return getModule().getTargetTriple();
-  }
+  const Triple &getTargetTriple() { return getModule().getTargetTriple(); }
 
   /// Set the Module's target triple.
-  void setTargetTriple(StringRef Triple) {
-    getModule().setTargetTriple(Triple);
-  }
+  void setTargetTriple(Triple T) { getModule().setTargetTriple(T); }
 
   /// Get the number of symbols
   uint32_t getSymbolCount() {
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 09c0d223d9b4d..390ed7fbab8c0 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -463,6 +463,9 @@ class Triple {
 
   const std::string &getTriple() const { return Data; }
 
+  /// Whether the triple is empty / default constructed.
+  bool empty() const { return Data.empty(); }
+
   /// Get the architecture (first) component of the triple.
   StringRef getArchName() const;
 
diff --git a/llvm/lib/Analysis/DXILMetadataAnalysis.cpp b/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
index a7f666a3f8b48..87aa14e9c701f 100644
--- a/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
+++ b/llvm/lib/Analysis/DXILMetadataAnalysis.cpp
@@ -24,7 +24,7 @@ using namespace dxil;
 
 static ModuleMetadataInfo collectMetadataInfo(Module &M) {
   ModuleMetadataInfo MMDAI;
-  Triple TT(Triple(M.getTargetTriple()));
+  const Triple &TT = M.getTargetTriple();
   MMDAI.DXILVersion = TT.getDXILVersion();
   MMDAI.ShaderModelVersion = TT.getOSVersion();
   MMDAI.ShaderProfile = TT.getEnvironment();
diff --git a/llvm/lib/Analysis/Lint.cpp b/llvm/lib/Analysis/Lint.cpp
index e9d96a0c2972a..1db0ca372d797 100644
--- a/llvm/lib/Analysis/Lint.cpp
+++ b/llvm/lib/Analysis/Lint.cpp
@@ -139,7 +139,7 @@ class Lint : public InstVisitor<Lint> {
 
   Lint(Module *Mod, const DataLayout *DL, AliasAnalysis *AA,
        AssumptionCache *AC, DominatorTree *DT, TargetLibraryInfo *TLI)
-      : Mod(Mod), TT(Triple::normalize(Mod->getTargetTriple())), DL(DL), AA(AA),
+      : Mod(Mod), TT(Mod->getTargetTriple().normalize()), DL(DL), AA(AA),
         AC(AC), DT(DT), TLI(TLI), MessagesStr(Messages) {}
 
   void WriteValues(ArrayRef<const Value *> Vs) {
diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp
index 8557901192e40..3a8cdf946da37 100644
--- a/llvm/lib/Analysis/TargetLibraryInfo.cpp
+++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp
@@ -118,7 +118,7 @@ static bool hasBcmp(const Triple &TT) {
   return TT.isOSFreeBSD() || TT.isOSSolaris();
 }
 
-static bool isCallingConvCCompatible(CallingConv::ID CC, StringRef TT,
+static bool isCallingConvCCompatible(CallingConv::ID CC, const Triple &TT,
                                      FunctionType *FuncTy) {
   switch (CC) {
   default:
@@ -131,7 +131,7 @@ static bool isCallingConvCCompatible(CallingConv::ID CC, StringRef TT,
 
     // The iOS ABI diverges from the standard in some cases, so for now don't
     // try to simplify those calls.
-    if (Triple(TT).isiOS())
+    if (TT.isiOS())
       return false;
 
     if (!FuncTy->getReturnType()->isPointerTy() &&
@@ -1446,8 +1446,7 @@ TargetLibraryInfoImpl::getVectorMappingInfo(StringRef F, const ElementCount &VF,
 TargetLibraryInfo TargetLibraryAnalysis::run(const Function &F,
                                              FunctionAnalysisManager &) {
   if (!BaselineInfoImpl)
-    BaselineInfoImpl =
-        TargetLibraryInfoImpl(Triple(F.getParent()->getTargetTriple()));
+    BaselineInfoImpl = TargetLibraryInfoImpl(F.getParent()->getTargetTriple());
   return TargetLibraryInfo(*BaselineInfoImpl, &F);
 }
 
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 777bf5f7bb386..c8d792981793d 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -522,7 +522,7 @@ bool LLParser::parseTargetDefinitions(DataLayoutCallbackTy DataLayoutCallback) {
   // Run the override callback to potentially change the data layout string, and
   // parse the data layout string.
   if (auto LayoutOverride =
-          DataLayoutCallback(M->getTargetTriple(), TentativeDLStr)) {
+          DataLayoutCallback(M->getTargetTriple().str(), TentativeDLStr)) {
     TentativeDLStr = *LayoutOverride;
     DLStrLoc = {};
   }
@@ -646,7 +646,7 @@ bool LLParser::parseTargetDefinition(std::string &TentativeDLStr,
     if (parseToken(lltok::equal, "expected '=' after target triple") ||
         parseStringConstant(Str))
       return true;
-    M->setTargetTriple(Str);
+    M->setTargetTriple(Triple(Str));
     return false;
   case lltok::kw_datalayout:
     Lex.Lex();
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index d687495c42de6..e4dc7d6ed86b0 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -4530,12 +4530,12 @@ Error BitcodeReader::parseModule(uint64_t ResumeBit,
 
     // Auto-upgrade the layout string
     TentativeDataLayoutStr = llvm::UpgradeDataLayoutString(
-        TentativeDataLayoutStr, TheModule->getTargetTriple());
+        TentativeDataLayoutStr, TheModule->getTargetTriple().str());
 
     // Apply override
     if (Callbacks.DataLayout) {
       if (auto LayoutOverride = (*Callbacks.DataLayout)(
-              TheModule->getTargetTriple(), TentativeDataLayoutStr))
+              TheModule->getTargetTriple().str(), TentativeDataLayoutStr))
         TentativeDataLayoutStr = *LayoutOverride;
     }
 
@@ -4719,7 +4719,7 @@ Error BitcodeReader::parseModule(uint64_t ResumeBit,
       std::string S;
       if (convertToString(Record, 0, S))
         return error("Invalid record");
-      TheModule->setTargetTriple(S);
+      TheModule->setTargetTriple(Triple(S));
       break;
     }
     case bitc::MODULE_CODE_DATALAYOUT: {  // DATALAYOUT: [strchr x N]
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index 440a2c9ace8a3..6e2e45a51069d 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -1449,8 +1449,8 @@ serializeSanitizerMetadata(const GlobalValue::SanitizerMetadata &Meta) {
 void ModuleBitcodeWriter::writeModuleInfo() {
   // Emit various pieces of data attached to a module.
   if (!M.getTargetTriple().empty())
-    writeStringRecord(Stream, bitc::MODULE_CODE_TRIPLE, M.getTargetTriple(),
-                      0 /*TODO*/);
+    writeStringRecord(Stream, bitc::MODULE_CODE_TRIPLE,
+                      M.getTargetTriple().str(), 0 /*TODO*/);
   const std::string &DL = M.getDataLayoutStr();
   if (!DL.empty())
     writeStringRecord(Stream, bitc::MODULE_CODE_DATALAYOUT, DL, 0 /*TODO*/);
diff --git a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
index bda0e266d01de..5c3b900ca29b6 100644
--- a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
@@ -619,7 +619,7 @@ void CodeViewDebug::beginModule(Module *M) {
     return;
   }
 
-  TheCPU = mapArchToCVCPUType(Triple(M->getTargetTriple()).getArch());
+  TheCPU = mapArchToCVCPUType(M->getTargetTriple().getArch());
 
   // Get the current source language.
   const MDNode *Node = *M->debug_compile_units_begin();
@@ -845,7 +845,7 @@ void CodeViewDebug::emitCompilerInformation() {
     Flags |= static_cast<uint32_t>(CompileSym3Flags::PGO);
   }
   using ArchType = llvm::Triple::ArchType;
-  ArchType Arch = Triple(MMI->getModule()->getTargetTriple()).getArch();
+  ArchType Arch = MMI->getModule()->getTargetTriple().getArch();
   if (Asm->TM.Options.Hotpatch || Arch == ArchType::thumb ||
       Arch == ArchType::aarch64) {
     Flags |= static_cast<uint32_t>(CompileSym3Flags::HotPatch);
@@ -1098,7 +1098,7 @@ void CodeViewDebug::emitDebugInfoForFunction(const Function *GV,
     FuncName = std::string(GlobalValue::dropLLVMManglingEscape(GV->getName()));
 
   // Emit FPO data, but only on 32-bit x86. No other platforms use it.
-  if (Triple(MMI->getModule()->getTargetTriple()).getArch() == Triple::x86)
+  if (MMI->getModule()->getTargetTriple().getArch() == Triple::x86)
     OS.emitCVFPOData(Fn);
 
   // Emit a symbol subsection, required by VS2012+ to find function boundaries.
@@ -1560,7 +1560,7 @@ void CodeViewDebug::beginFunctionImpl(const MachineFunction *MF) {
   }
 
   // Mark branches that may potentially be using jump tables with labels.
-  bool isThumb = Triple(MMI->getModule()->getTargetTriple()).getArch() ==
+  bool isThumb = MMI->getModule()->getTargetTriple().getArch() ==
                  llvm::Triple::ArchType::thumb;
   discoverJumpTableBranches(MF, isThumb);
 }
@@ -3068,7 +3068,7 @@ void CodeViewDebug::endFunctionImpl(const MachineFunction *MF) {
     }
   }
 
-  bool isThumb = T...
[truncated]

@llvmbot llvmbot added the mc Machine (object) code label Mar 5, 2025
@llvmbot llvmbot added flang:driver flang Flang issues not falling into any other category labels Mar 5, 2025
Copy link
Member

@dtcxzyw dtcxzyw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@nikic nikic merged commit 979c275 into llvm:main Mar 6, 2025
15 checks passed
@nikic nikic deleted the module-triple branch March 6, 2025 09:27
@llvm-ci
Copy link
Collaborator

llvm-ci commented Mar 6, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-ubuntu-22-cmake-build-only running on rocm-docker-ubu-22 while building clang,flang,lldb,llvm,mlir,offload,polly at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/203/builds/3703

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[3857/7730] Building CXX object tools/mlir/lib/Conversion/ArithToEmitC/CMakeFiles/obj.MLIRArithToEmitC.dir/ArithToEmitC.cpp.o
[3858/7730] Building CXX object tools/mlir/lib/Conversion/ArmSMEToSCF/CMakeFiles/obj.MLIRArmSMEToSCF.dir/ArmSMEToSCF.cpp.o
[3859/7730] Building CXX object tools/lto/CMakeFiles/LTO.dir/lto.cpp.o
[3860/7730] Building CXX object tools/mlir/lib/Conversion/ArithToArmSME/CMakeFiles/obj.MLIRArithToArmSME.dir/ArithToArmSME.cpp.o
[3861/7730] Building CXX object tools/mlir/lib/Dialect/MLProgram/IR/CMakeFiles/obj.MLIRMLProgramDialect.dir/MLProgramOps.cpp.o
[3862/7730] Building CXX object tools/mlir/lib/Dialect/Async/Transforms/CMakeFiles/obj.MLIRAsyncTransforms.dir/AsyncRuntimeRefCountingOpt.cpp.o
[3863/7730] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Detensorize.cpp.o
[3864/7730] Building CXX object tools/mlir/lib/Conversion/TosaToArith/CMakeFiles/obj.MLIRTosaToArith.dir/TosaToArith.cpp.o
[3865/7730] Building CXX object lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o
[3866/7730] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib && :
/usr/bin/ld: lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o: in function `llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias]':
LLParser.cpp:(.text._ZN4llvm8LLParser21parseTargetDefinitionERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5SMLocE+0x18e): undefined reference to `llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
[3867/7730] Building CXX object tools/llvm-mca/CMakeFiles/llvm-mca.dir/llvm-mca.cpp.o
[3868/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRToLLVMIRTranslationRegistration.dir/ConvertToLLVMIR.cpp.o
[3869/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/StandardInstrumentations.cpp.o
[3870/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRFromLLVMIRTranslationRegistration.dir/ConvertFromLLVMIR.cpp.o
[3871/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/Dialect/OpenMPCommon.cpp.o
[3872/7730] Building CXX object tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.MLIRExecutionEngineUtils.dir/OptUtils.cpp.o
[3873/7730] Building CXX object tools/llvm-lto/CMakeFiles/llvm-lto.dir/llvm-lto.cpp.o
[3874/7730] Building CXX object tools/llvm-lto2/CMakeFiles/llvm-lto2.dir/llvm-lto2.cpp.o
[3875/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilderPipelines.cpp.o
[3876/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/DataLayoutImporter.cpp.o
[3877/7730] Building CXX object tools/mlir/lib/Conversion/LLVMCommon/CMakeFiles/obj.MLIRLLVMCommonConversion.dir/MemRefBuilder.cpp.o
[3878/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUMCCodeEmitter.cpp.o
[3879/7730] Building CXX object tools/mlir/lib/Conversion/ArithCommon/CMakeFiles/obj.MLIRArithAttrToLLVMConversion.dir/AttrToLLVMConverter.cpp.o
[3880/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LLVMImportInterface.cpp.o
[3881/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeFiles/obj.MLIRArmNeonToLLVMIRTranslation.dir/ArmNeonToLLVMIRTranslation.cpp.o
[3882/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LoopAnnotationImporter.cpp.o
[3883/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/DebugTranslation.cpp.o
[3884/7730] Building CXX object tools/llvm-profdata/CMakeFiles/llvm-profdata.dir/llvm-profdata.cpp.o
[3885/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeFiles/obj.MLIRArmSMEToLLVMIRTranslation.dir/ArmSMEToLLVMIRTranslation.cpp.o
[3886/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/Utils/CMakeFiles/obj.MLIRNVGPUUtils.dir/MMAUtils.cpp.o
[3887/7730] Building CXX object tools/mlir/lib/Conversion/AMDGPUToROCDL/CMakeFiles/obj.MLIRAMDGPUToROCDL.dir/AMDGPUToROCDL.cpp.o
[3888/7730] Building CXX object tools/mlir/lib/Conversion/ArithToAMDGPU/CMakeFiles/obj.MLIRArithToAMDGPU.dir/ArithToAMDGPU.cpp.o
[3889/7730] Building CXX object tools/mlir/lib/Conversion/VectorToLLVM/CMakeFiles/obj.MLIRVectorToLLVMPass.dir/ConvertVectorToLLVMPass.cpp.o
[3890/7730] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink.cpp.o
[3891/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/CMakeFiles/obj.MLIRLLVMIRToLLVMTranslation.dir/LLVMIRToLLVMTranslation.cpp.o
[3892/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/ModuleImport.cpp.o
[3893/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/IR/CMakeFiles/obj.MLIRNVGPUDialect.dir/NVGPUDialect.cpp.o
[3894/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/ModuleTranslation.cpp.o
[3895/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
[3896/7730] Building CXX object tools/mlir/lib/Conversion/GPUCommon/CMakeFiles/obj.MLIRGPUToGPURuntimeTransforms.dir/GPUToLLVMConversion.cpp.o
[3897/7730] Building CXX object tools/mlir/lib/Conversion/MathToLibm/CMakeFiles/obj.MLIRMathToLibm.dir/MathToLibm.cpp.o
[3898/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilder.cpp.o
[3899/7730] Building CXX object lib/Target/AMDGPU/Disassembler/CMakeFiles/LLVMAMDGPUDisassembler.dir/AMDGPUDisassembler.cpp.o
ninja: build stopped: subcommand failed.
Step 7 (build cmake config) failure: build cmake config (failure)
...
[3857/7730] Building CXX object tools/mlir/lib/Conversion/ArithToEmitC/CMakeFiles/obj.MLIRArithToEmitC.dir/ArithToEmitC.cpp.o
[3858/7730] Building CXX object tools/mlir/lib/Conversion/ArmSMEToSCF/CMakeFiles/obj.MLIRArmSMEToSCF.dir/ArmSMEToSCF.cpp.o
[3859/7730] Building CXX object tools/lto/CMakeFiles/LTO.dir/lto.cpp.o
[3860/7730] Building CXX object tools/mlir/lib/Conversion/ArithToArmSME/CMakeFiles/obj.MLIRArithToArmSME.dir/ArithToArmSME.cpp.o
[3861/7730] Building CXX object tools/mlir/lib/Dialect/MLProgram/IR/CMakeFiles/obj.MLIRMLProgramDialect.dir/MLProgramOps.cpp.o
[3862/7730] Building CXX object tools/mlir/lib/Dialect/Async/Transforms/CMakeFiles/obj.MLIRAsyncTransforms.dir/AsyncRuntimeRefCountingOpt.cpp.o
[3863/7730] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/Detensorize.cpp.o
[3864/7730] Building CXX object tools/mlir/lib/Conversion/TosaToArith/CMakeFiles/obj.MLIRTosaToArith.dir/TosaToArith.cpp.o
[3865/7730] Building CXX object lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o
[3866/7730] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib && :
/usr/bin/ld: lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o: in function `llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias]':
LLParser.cpp:(.text._ZN4llvm8LLParser21parseTargetDefinitionERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5SMLocE+0x18e): undefined reference to `llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
[3867/7730] Building CXX object tools/llvm-mca/CMakeFiles/llvm-mca.dir/llvm-mca.cpp.o
[3868/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRToLLVMIRTranslationRegistration.dir/ConvertToLLVMIR.cpp.o
[3869/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/StandardInstrumentations.cpp.o
[3870/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRFromLLVMIRTranslationRegistration.dir/ConvertFromLLVMIR.cpp.o
[3871/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/Dialect/OpenMPCommon.cpp.o
[3872/7730] Building CXX object tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.MLIRExecutionEngineUtils.dir/OptUtils.cpp.o
[3873/7730] Building CXX object tools/llvm-lto/CMakeFiles/llvm-lto.dir/llvm-lto.cpp.o
[3874/7730] Building CXX object tools/llvm-lto2/CMakeFiles/llvm-lto2.dir/llvm-lto2.cpp.o
[3875/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilderPipelines.cpp.o
[3876/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/DataLayoutImporter.cpp.o
[3877/7730] Building CXX object tools/mlir/lib/Conversion/LLVMCommon/CMakeFiles/obj.MLIRLLVMCommonConversion.dir/MemRefBuilder.cpp.o
[3878/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUMCCodeEmitter.cpp.o
[3879/7730] Building CXX object tools/mlir/lib/Conversion/ArithCommon/CMakeFiles/obj.MLIRArithAttrToLLVMConversion.dir/AttrToLLVMConverter.cpp.o
[3880/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LLVMImportInterface.cpp.o
[3881/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeFiles/obj.MLIRArmNeonToLLVMIRTranslation.dir/ArmNeonToLLVMIRTranslation.cpp.o
[3882/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LoopAnnotationImporter.cpp.o
[3883/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/DebugTranslation.cpp.o
[3884/7730] Building CXX object tools/llvm-profdata/CMakeFiles/llvm-profdata.dir/llvm-profdata.cpp.o
[3885/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeFiles/obj.MLIRArmSMEToLLVMIRTranslation.dir/ArmSMEToLLVMIRTranslation.cpp.o
[3886/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/Utils/CMakeFiles/obj.MLIRNVGPUUtils.dir/MMAUtils.cpp.o
[3887/7730] Building CXX object tools/mlir/lib/Conversion/AMDGPUToROCDL/CMakeFiles/obj.MLIRAMDGPUToROCDL.dir/AMDGPUToROCDL.cpp.o
[3888/7730] Building CXX object tools/mlir/lib/Conversion/ArithToAMDGPU/CMakeFiles/obj.MLIRArithToAMDGPU.dir/ArithToAMDGPU.cpp.o
[3889/7730] Building CXX object tools/mlir/lib/Conversion/VectorToLLVM/CMakeFiles/obj.MLIRVectorToLLVMPass.dir/ConvertVectorToLLVMPass.cpp.o
[3890/7730] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink.cpp.o
[3891/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/CMakeFiles/obj.MLIRLLVMIRToLLVMTranslation.dir/LLVMIRToLLVMTranslation.cpp.o
[3892/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/ModuleImport.cpp.o
[3893/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/IR/CMakeFiles/obj.MLIRNVGPUDialect.dir/NVGPUDialect.cpp.o
[3894/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/ModuleTranslation.cpp.o
[3895/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/TransformOps/CMakeFiles/obj.MLIRNVGPUTransformOps.dir/NVGPUTransformOps.cpp.o
[3896/7730] Building CXX object tools/mlir/lib/Conversion/GPUCommon/CMakeFiles/obj.MLIRGPUToGPURuntimeTransforms.dir/GPUToLLVMConversion.cpp.o
[3897/7730] Building CXX object tools/mlir/lib/Conversion/MathToLibm/CMakeFiles/obj.MLIRMathToLibm.dir/MathToLibm.cpp.o
[3898/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilder.cpp.o
[3899/7730] Building CXX object lib/Target/AMDGPU/Disassembler/CMakeFiles/LLVMAMDGPUDisassembler.dir/AMDGPUDisassembler.cpp.o
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Mar 6, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-rhel-9-cmake-build-only running on rocm-docker-rhel-9 while building clang,flang,lldb,llvm,mlir,offload,polly at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/205/builds/2494

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[3864/7730] Creating library symlink lib/libMLIRAnalysis.so
[3865/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/StandardInstrumentations.cpp.o
[3866/7730] Building CXX object tools/mlir/lib/Dialect/Math/IR/CMakeFiles/obj.MLIRMathDialect.dir/MathOps.cpp.o
[3867/7730] Building CXX object lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o
[3868/7730] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-statistics.cpp.o
[3869/7730] Building CXX object tools/mlir/lib/Dialect/Math/IR/CMakeFiles/obj.MLIRMathDialect.dir/MathDialect.cpp.o
[3870/7730] Building CXX object tools/mlir/lib/Conversion/ArithToEmitC/CMakeFiles/obj.MLIRArithToEmitC.dir/ArithToEmitCPass.cpp.o
[3871/7730] Building CXX object tools/mlir/lib/CAPI/Transforms/CMakeFiles/obj.MLIRCAPITransforms.dir/Passes.cpp.o
[3872/7730] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DataLayoutPropagation.cpp.o
[3873/7730] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib && :
/usr/bin/ld: lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o: in function `llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias]':
LLParser.cpp:(.text._ZN4llvm8LLParser21parseTargetDefinitionERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5SMLocE+0x161): undefined reference to `llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
[3874/7730] Building CXX object tools/llvm-mca/CMakeFiles/llvm-mca.dir/llvm-mca.cpp.o
[3875/7730] Building CXX object tools/lto/CMakeFiles/LTO.dir/lto.cpp.o
[3876/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRToLLVMIRTranslationRegistration.dir/ConvertToLLVMIR.cpp.o
[3877/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUMCCodeEmitter.cpp.o
[3878/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRFromLLVMIRTranslationRegistration.dir/ConvertFromLLVMIR.cpp.o
[3879/7730] Building CXX object tools/llvm-lto/CMakeFiles/llvm-lto.dir/llvm-lto.cpp.o
[3880/7730] Building CXX object tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.MLIRExecutionEngineUtils.dir/OptUtils.cpp.o
[3881/7730] Building CXX object tools/mlir/lib/Dialect/GPU/CMakeFiles/obj.MLIRGPUDialect.dir/IR/ValueBoundsOpInterfaceImpl.cpp.o
[3882/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilderPipelines.cpp.o
[3883/7730] Building CXX object tools/llvm-lto2/CMakeFiles/llvm-lto2.dir/llvm-lto2.cpp.o
[3884/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeFiles/obj.MLIRArmNeonToLLVMIRTranslation.dir/ArmNeonToLLVMIRTranslation.cpp.o
[3885/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/DataLayoutImporter.cpp.o
[3886/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LLVMImportInterface.cpp.o
[3887/7730] Building CXX object tools/llvm-profdata/CMakeFiles/llvm-profdata.dir/llvm-profdata.cpp.o
[3888/7730] Building CXX object tools/mlir/lib/Conversion/ArithCommon/CMakeFiles/obj.MLIRArithAttrToLLVMConversion.dir/AttrToLLVMConverter.cpp.o
[3889/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LoopAnnotationImporter.cpp.o
[3890/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/DebugImporter.cpp.o
[3891/7730] Building CXX object tools/mlir/lib/Conversion/FuncToLLVM/CMakeFiles/obj.MLIRFuncToLLVM.dir/FuncToLLVM.cpp.o
[3892/7730] Building CXX object tools/mlir/lib/Conversion/NVVMToLLVM/CMakeFiles/obj.MLIRNVVMToLLVM.dir/NVVMToLLVM.cpp.o
[3893/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeFiles/obj.MLIRArmSMEToLLVMIRTranslation.dir/ArmSMEToLLVMIRTranslation.cpp.o
[3894/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/Utils/CMakeFiles/obj.MLIRNVGPUUtils.dir/MMAUtils.cpp.o
[3895/7730] Building CXX object tools/mlir/lib/Conversion/GPUToSPIRV/CMakeFiles/obj.MLIRGPUToSPIRV.dir/GPUToSPIRVPass.cpp.o
[3896/7730] Building CXX object tools/mlir/lib/Conversion/GPUToLLVMSPV/CMakeFiles/obj.MLIRGPUToLLVMSPV.dir/GPUToLLVMSPV.cpp.o
[3897/7730] Building CXX object tools/mlir/lib/Conversion/ArithToAMDGPU/CMakeFiles/obj.MLIRArithToAMDGPU.dir/ArithToAMDGPU.cpp.o
[3898/7730] Building CXX object tools/mlir/lib/Conversion/AMDGPUToROCDL/CMakeFiles/obj.MLIRAMDGPUToROCDL.dir/AMDGPUToROCDL.cpp.o
[3899/7730] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink.cpp.o
[3900/7730] Building CXX object tools/mlir/lib/Conversion/MathToLLVM/CMakeFiles/obj.MLIRMathToLLVM.dir/MathToLLVM.cpp.o
[3901/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/IR/CMakeFiles/obj.MLIRNVGPUDialect.dir/NVGPUDialect.cpp.o
[3902/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/ModuleTranslation.cpp.o
[3903/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/ModuleImport.cpp.o
[3904/7730] Building CXX object tools/mlir/lib/Conversion/GPUToROCDL/CMakeFiles/obj.MLIRGPUToROCDLTransforms.dir/LowerGpuOpsToROCDLOps.cpp.o
[3905/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilder.cpp.o
[3906/7730] Building CXX object lib/Target/AMDGPU/Disassembler/CMakeFiles/LLVMAMDGPUDisassembler.dir/AMDGPUDisassembler.cpp.o
ninja: build stopped: subcommand failed.
Step 7 (build cmake config) failure: build cmake config (failure)
...
[3864/7730] Creating library symlink lib/libMLIRAnalysis.so
[3865/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/StandardInstrumentations.cpp.o
[3866/7730] Building CXX object tools/mlir/lib/Dialect/Math/IR/CMakeFiles/obj.MLIRMathDialect.dir/MathOps.cpp.o
[3867/7730] Building CXX object lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o
[3868/7730] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-statistics.cpp.o
[3869/7730] Building CXX object tools/mlir/lib/Dialect/Math/IR/CMakeFiles/obj.MLIRMathDialect.dir/MathDialect.cpp.o
[3870/7730] Building CXX object tools/mlir/lib/Conversion/ArithToEmitC/CMakeFiles/obj.MLIRArithToEmitC.dir/ArithToEmitCPass.cpp.o
[3871/7730] Building CXX object tools/mlir/lib/CAPI/Transforms/CMakeFiles/obj.MLIRCAPITransforms.dir/Passes.cpp.o
[3872/7730] Building CXX object tools/mlir/lib/Dialect/Linalg/Transforms/CMakeFiles/obj.MLIRLinalgTransforms.dir/DataLayoutPropagation.cpp.o
[3873/7730] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-9-cmake-build-only/build/lib && :
/usr/bin/ld: lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o: in function `llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias]':
LLParser.cpp:(.text._ZN4llvm8LLParser21parseTargetDefinitionERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5SMLocE+0x161): undefined reference to `llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
[3874/7730] Building CXX object tools/llvm-mca/CMakeFiles/llvm-mca.dir/llvm-mca.cpp.o
[3875/7730] Building CXX object tools/lto/CMakeFiles/LTO.dir/lto.cpp.o
[3876/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRToLLVMIRTranslationRegistration.dir/ConvertToLLVMIR.cpp.o
[3877/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUMCCodeEmitter.cpp.o
[3878/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRFromLLVMIRTranslationRegistration.dir/ConvertFromLLVMIR.cpp.o
[3879/7730] Building CXX object tools/llvm-lto/CMakeFiles/llvm-lto.dir/llvm-lto.cpp.o
[3880/7730] Building CXX object tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.MLIRExecutionEngineUtils.dir/OptUtils.cpp.o
[3881/7730] Building CXX object tools/mlir/lib/Dialect/GPU/CMakeFiles/obj.MLIRGPUDialect.dir/IR/ValueBoundsOpInterfaceImpl.cpp.o
[3882/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilderPipelines.cpp.o
[3883/7730] Building CXX object tools/llvm-lto2/CMakeFiles/llvm-lto2.dir/llvm-lto2.cpp.o
[3884/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeFiles/obj.MLIRArmNeonToLLVMIRTranslation.dir/ArmNeonToLLVMIRTranslation.cpp.o
[3885/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/DataLayoutImporter.cpp.o
[3886/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LLVMImportInterface.cpp.o
[3887/7730] Building CXX object tools/llvm-profdata/CMakeFiles/llvm-profdata.dir/llvm-profdata.cpp.o
[3888/7730] Building CXX object tools/mlir/lib/Conversion/ArithCommon/CMakeFiles/obj.MLIRArithAttrToLLVMConversion.dir/AttrToLLVMConverter.cpp.o
[3889/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/LoopAnnotationImporter.cpp.o
[3890/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/DebugImporter.cpp.o
[3891/7730] Building CXX object tools/mlir/lib/Conversion/FuncToLLVM/CMakeFiles/obj.MLIRFuncToLLVM.dir/FuncToLLVM.cpp.o
[3892/7730] Building CXX object tools/mlir/lib/Conversion/NVVMToLLVM/CMakeFiles/obj.MLIRNVVMToLLVM.dir/NVVMToLLVM.cpp.o
[3893/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeFiles/obj.MLIRArmSMEToLLVMIRTranslation.dir/ArmSMEToLLVMIRTranslation.cpp.o
[3894/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/Utils/CMakeFiles/obj.MLIRNVGPUUtils.dir/MMAUtils.cpp.o
[3895/7730] Building CXX object tools/mlir/lib/Conversion/GPUToSPIRV/CMakeFiles/obj.MLIRGPUToSPIRV.dir/GPUToSPIRVPass.cpp.o
[3896/7730] Building CXX object tools/mlir/lib/Conversion/GPUToLLVMSPV/CMakeFiles/obj.MLIRGPUToLLVMSPV.dir/GPUToLLVMSPV.cpp.o
[3897/7730] Building CXX object tools/mlir/lib/Conversion/ArithToAMDGPU/CMakeFiles/obj.MLIRArithToAMDGPU.dir/ArithToAMDGPU.cpp.o
[3898/7730] Building CXX object tools/mlir/lib/Conversion/AMDGPUToROCDL/CMakeFiles/obj.MLIRAMDGPUToROCDL.dir/AMDGPUToROCDL.cpp.o
[3899/7730] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink.cpp.o
[3900/7730] Building CXX object tools/mlir/lib/Conversion/MathToLLVM/CMakeFiles/obj.MLIRMathToLLVM.dir/MathToLLVM.cpp.o
[3901/7730] Building CXX object tools/mlir/lib/Dialect/NVGPU/IR/CMakeFiles/obj.MLIRNVGPUDialect.dir/NVGPUDialect.cpp.o
[3902/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRExport.dir/ModuleTranslation.cpp.o
[3903/7730] Building CXX object tools/mlir/lib/Target/LLVMIR/CMakeFiles/obj.MLIRTargetLLVMIRImport.dir/ModuleImport.cpp.o
[3904/7730] Building CXX object tools/mlir/lib/Conversion/GPUToROCDL/CMakeFiles/obj.MLIRGPUToROCDLTransforms.dir/LowerGpuOpsToROCDLOps.cpp.o
[3905/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilder.cpp.o
[3906/7730] Building CXX object lib/Target/AMDGPU/Disassembler/CMakeFiles/LLVMAMDGPUDisassembler.dir/AMDGPUDisassembler.cpp.o
ninja: build stopped: subcommand failed.

nikic added a commit that referenced this pull request Mar 6, 2025
Try to fix share libs build after #129868.
@llvm-ci
Copy link
Collaborator

llvm-ci commented Mar 6, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-rhel-8-cmake-build-only running on rocm-docker-rhel-8 while building clang,flang,lldb,llvm,mlir,offload,polly at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/204/builds/2515

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[4026/7730] Creating library symlink lib/libLLVMX86Desc.so
[4027/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUAlwaysInlinePass.cpp.o
[4028/7730] Linking CXX shared library lib/libLLVMX86AsmParser.so.21.0git
[4029/7730] Creating library symlink lib/libLLVMX86AsmParser.so
[4030/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600EmitClauseMarkers.cpp.o
[4031/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600ClauseMergePass.cpp.o
[4032/7730] Linking CXX shared library lib/libLLVMX86TargetMCA.so.21.0git
[4033/7730] Building CXX object tools/lto/CMakeFiles/LTO.dir/LTODisassembler.cpp.o
[4034/7730] Creating library symlink lib/libLLVMX86TargetMCA.so
[4035/7730] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib && :
lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o: In function `llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias.226]':
LLParser.cpp:(.text._ZN4llvm8LLParser21parseTargetDefinitionERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5SMLocE+0x153): undefined reference to `llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
[4036/7730] Linking CXX shared library lib/libLLVMTextAPI.so.21.0git
[4037/7730] Building CXX object lib/Target/AMDGPU/TargetInfo/CMakeFiles/LLVMAMDGPUInfo.dir/AMDGPUTargetInfo.cpp.o
[4038/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600ExpandSpecialInstrs.cpp.o
[4039/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUWaitSGPRHazards.cpp.o
[4040/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600AsmPrinter.cpp.o
[4041/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/R600InstPrinter.cpp.o
[4042/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600ControlFlowFinalizer.cpp.o
[4043/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/GCNPreRAOptimizations.cpp.o
[4044/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600RegisterInfo.cpp.o
[4045/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUMCAsmInfo.cpp.o
[4046/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600Subtarget.cpp.o
[4047/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600MachineScheduler.cpp.o
[4048/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/R600MCCodeEmitter.cpp.o
[4049/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/GCNRegPressure.cpp.o
[4050/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUAttributor.cpp.o
[4051/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUELFObjectWriter.cpp.o
[4052/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/GCNVOPDUtils.cpp.o
[4053/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600InstrInfo.cpp.o
[4054/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600Packetizer.cpp.o
[4055/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUMCInstLower.cpp.o
[4056/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUPromoteAlloca.cpp.o
[4057/7730] Building CXX object lib/Target/AMDGPU/Utils/CMakeFiles/LLVMAMDGPUUtils.dir/AMDGPUAsmUtils.cpp.o
[4058/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUCallLowering.cpp.o
[4059/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUMIRFormatter.cpp.o
/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp: In lambda function:
/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp:62: warning: comparison of integer expressions of different signedness: ‘uint64_t’ {aka ‘long unsigned int’} and ‘const int64_t’ {aka ‘const long int’} [-Wsign-compare]
     if (Id == None)
 
[4060/7730] Building CXX object tools/clang/lib/AST/CMakeFiles/obj.clangAST.dir/ASTImporterLookupTable.cpp.o
[4061/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilderPipelines.cpp.o
In file included from /usr/include/c++/8/cassert:44,
                 from /home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/include/llvm/ProfileData/InstrProf.h:39,
                 from /home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/include/llvm/Analysis/IndirectCallPromotionAnalysis.h:16,
                 from /home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/include/llvm/Transforms/IPO/MemProfContextDisambiguation.h:18,
Step 7 (build cmake config) failure: build cmake config (failure)
...
[4026/7730] Creating library symlink lib/libLLVMX86Desc.so
[4027/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUAlwaysInlinePass.cpp.o
[4028/7730] Linking CXX shared library lib/libLLVMX86AsmParser.so.21.0git
[4029/7730] Creating library symlink lib/libLLVMX86AsmParser.so
[4030/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600EmitClauseMarkers.cpp.o
[4031/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600ClauseMergePass.cpp.o
[4032/7730] Linking CXX shared library lib/libLLVMX86TargetMCA.so.21.0git
[4033/7730] Building CXX object tools/lto/CMakeFiles/LTO.dir/LTODisassembler.cpp.o
[4034/7730] Creating library symlink lib/libLLVMX86TargetMCA.so
[4035/7730] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib && :
lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o: In function `llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias.226]':
LLParser.cpp:(.text._ZN4llvm8LLParser21parseTargetDefinitionERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5SMLocE+0x153): undefined reference to `llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
[4036/7730] Linking CXX shared library lib/libLLVMTextAPI.so.21.0git
[4037/7730] Building CXX object lib/Target/AMDGPU/TargetInfo/CMakeFiles/LLVMAMDGPUInfo.dir/AMDGPUTargetInfo.cpp.o
[4038/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600ExpandSpecialInstrs.cpp.o
[4039/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUWaitSGPRHazards.cpp.o
[4040/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600AsmPrinter.cpp.o
[4041/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/R600InstPrinter.cpp.o
[4042/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600ControlFlowFinalizer.cpp.o
[4043/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/GCNPreRAOptimizations.cpp.o
[4044/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600RegisterInfo.cpp.o
[4045/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUMCAsmInfo.cpp.o
[4046/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600Subtarget.cpp.o
[4047/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600MachineScheduler.cpp.o
[4048/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/R600MCCodeEmitter.cpp.o
[4049/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/GCNRegPressure.cpp.o
[4050/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUAttributor.cpp.o
[4051/7730] Building CXX object lib/Target/AMDGPU/MCTargetDesc/CMakeFiles/LLVMAMDGPUDesc.dir/AMDGPUELFObjectWriter.cpp.o
[4052/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/GCNVOPDUtils.cpp.o
[4053/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600InstrInfo.cpp.o
[4054/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/R600Packetizer.cpp.o
[4055/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUMCInstLower.cpp.o
[4056/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUPromoteAlloca.cpp.o
[4057/7730] Building CXX object lib/Target/AMDGPU/Utils/CMakeFiles/LLVMAMDGPUUtils.dir/AMDGPUAsmUtils.cpp.o
[4058/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUCallLowering.cpp.o
[4059/7730] Building CXX object lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/AMDGPUMIRFormatter.cpp.o
/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp: In lambda function:
/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp:62: warning: comparison of integer expressions of different signedness: ‘uint64_t’ {aka ‘long unsigned int’} and ‘const int64_t’ {aka ‘const long int’} [-Wsign-compare]
     if (Id == None)
 
[4060/7730] Building CXX object tools/clang/lib/AST/CMakeFiles/obj.clangAST.dir/ASTImporterLookupTable.cpp.o
[4061/7730] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilderPipelines.cpp.o
In file included from /usr/include/c++/8/cassert:44,
                 from /home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/include/llvm/ProfileData/InstrProf.h:39,
                 from /home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/include/llvm/Analysis/IndirectCallPromotionAnalysis.h:16,
                 from /home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/llvm-project/llvm/include/llvm/Transforms/IPO/MemProfContextDisambiguation.h:18,

@llvm-ci
Copy link
Collaborator

llvm-ci commented Mar 6, 2025

LLVM Buildbot has detected a new failure on builder llvm-nvptx64-nvidia-ubuntu running on as-builder-7 while building clang,flang,lldb,llvm,mlir,offload,polly at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/160/builds/14104

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
145.095 [228/128/2362] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-statistics.cpp.o
145.123 [227/128/2363] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-elf.cpp.o
145.141 [226/128/2364] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceDbgRecords.cpp.o
145.193 [225/128/2365] Building CXX object tools/dsymutil/CMakeFiles/dsymutil.dir/MachOUtils.cpp.o
145.251 [224/128/2366] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceAliases.cpp.o
145.308 [223/128/2367] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/COFFDump.cpp.o
145.317 [222/128/2368] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86LoadValueInjectionRetHardening.cpp.o
145.349 [221/128/2369] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86CompressEVEX.cpp.o
145.555 [220/128/2370] Building CXX object lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o
145.647 [219/128/2371] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=gold   -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/buildbot/worker/as-builder-7/ramdisk/llvm-nvptx64-nvidia-ubuntu/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/buildbot/worker/as-builder-7/ramdisk/llvm-nvptx64-nvidia-ubuntu/build/lib && :
lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o:LLParser.cpp:function llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias]: error: undefined reference to 'llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
145.684 [219/127/2372] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86SelectionDAGInfo.cpp.o
145.720 [219/126/2373] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-macho.cpp.o
145.761 [219/125/2374] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceGlobalObjects.cpp.o
145.763 [219/124/2375] Building CXX object tools/llc/CMakeFiles/llc.dir/llc.cpp.o
145.854 [219/123/2376] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceGlobalValues.cpp.o
145.907 [219/122/2377] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86WinFixupBufferSecurityCheck.cpp.o
145.960 [219/121/2378] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/GISel/X86RegisterBankInfo.cpp.o
146.008 [219/120/2379] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86ArgumentStackSlotRebase.cpp.o
146.042 [219/119/2380] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/XCOFFDump.cpp.o
146.048 [219/118/2381] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86FastTileConfig.cpp.o
146.320 [219/117/2382] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86PadShortFunction.cpp.o
146.389 [219/116/2383] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceFunctionBodies.cpp.o
146.431 [219/115/2384] Building CXX object tools/llvm-ml/CMakeFiles/llvm-ml.dir/llvm-ml.cpp.o
146.478 [219/114/2385] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceFunctions.cpp.o
146.553 [219/113/2386] Building CXX object lib/Target/NVPTX/CMakeFiles/LLVMNVPTXCodeGen.dir/NVPTXTargetMachine.cpp.o
146.745 [219/112/2387] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/GISel/X86CallLowering.cpp.o
146.753 [219/111/2388] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceModuleData.cpp.o
146.874 [219/110/2389] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86SpeculativeExecutionSideEffectSuppression.cpp.o
146.890 [219/109/2390] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86LowerTileCopy.cpp.o
146.938 [219/108/2391] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/TestRunner.cpp.o
146.944 [219/107/2392] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86ReturnThunks.cpp.o
146.945 [219/106/2393] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86AvoidStoreForwardingBlocks.cpp.o
147.013 [219/105/2394] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceGlobalVarInitializers.cpp.o
147.038 [219/104/2395] Building CXX object tools/llvm-debuginfo-analyzer/CMakeFiles/llvm-debuginfo-analyzer.dir/Options.cpp.o
147.046 [219/103/2396] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86FixupVectorConstants.cpp.o
147.130 [219/102/2397] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/SourcePrinter.cpp.o
147.266 [219/101/2398] Building CXX object lib/Target/X86/MCTargetDesc/CMakeFiles/LLVMX86Desc.dir/X86MCTargetDesc.cpp.o
147.273 [219/100/2399] Building CXX object tools/dsymutil/CMakeFiles/dsymutil.dir/dsymutil.cpp.o
147.407 [219/99/2400] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceSpecialGlobals.cpp.o
147.416 [219/98/2401] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86IndirectBranchTracking.cpp.o
147.518 [219/97/2402] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86FixupLEAs.cpp.o
147.550 [219/96/2403] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86TileConfig.cpp.o
147.652 [219/95/2404] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceGlobalVars.cpp.o
147.710 [219/94/2405] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86PartialReduction.cpp.o
147.889 [219/93/2406] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86DomainReassignment.cpp.o

@llvm-ci
Copy link
Collaborator

llvm-ci commented Mar 6, 2025

LLVM Buildbot has detected a new failure on builder llvm-nvptx-nvidia-ubuntu running on as-builder-7 while building clang,flang,lldb,llvm,mlir,offload,polly at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/180/builds/14101

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
138.817 [252/128/2338] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86LowerAMXType.cpp.o
138.875 [251/128/2339] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86LowerAMXIntrinsics.cpp.o
139.737 [250/128/2340] Building CXX object lib/Target/X86/Disassembler/CMakeFiles/LLVMX86Disassembler.dir/X86Disassembler.cpp.o
139.860 [249/128/2341] Linking CXX shared library lib/libLLVMX86Disassembler.so.21.0git
139.900 [248/128/2342] Creating library symlink lib/libLLVMX86Disassembler.so
140.428 [247/128/2343] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/WasmDump.cpp.o
140.480 [246/128/2344] Building CXX object tools/llvm-gsymutil/CMakeFiles/llvm-gsymutil.dir/llvm-gsymutil.cpp.o
140.616 [245/128/2345] Building CXX object lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o
140.647 [244/128/2346] Building CXX object tools/llvm-ml/CMakeFiles/llvm-ml.dir/Disassembler.cpp.o
140.710 [243/128/2347] Linking CXX shared library lib/libLLVMAsmParser.so.21.0git
FAILED: lib/libLLVMAsmParser.so.21.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=gold   -Wl,--gc-sections -shared -Wl,-soname,libLLVMAsmParser.so.21.0git -o lib/libLLVMAsmParser.so.21.0git lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLLexer.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/Parser.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/buildbot/worker/as-builder-7/ramdisk/llvm-nvptx-nvidia-ubuntu/build/lib:"  lib/libLLVMCore.so.21.0git  lib/libLLVMBinaryFormat.so.21.0git  lib/libLLVMSupport.so.21.0git  -Wl,-rpath-link,/home/buildbot/worker/as-builder-7/ramdisk/llvm-nvptx-nvidia-ubuntu/build/lib && :
lib/AsmParser/CMakeFiles/LLVMAsmParser.dir/LLParser.cpp.o:LLParser.cpp:function llvm::LLParser::parseTargetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, llvm::SMLoc&) [clone .localalias]: error: undefined reference to 'llvm::Triple::Triple(llvm::Twine const&)'
collect2: error: ld returned 1 exit status
140.768 [243/127/2348] Building CXX object tools/llvm-dwarfdump/CMakeFiles/llvm-dwarfdump.dir/llvm-dwarfdump.cpp.o
140.804 [243/126/2349] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86CmovConversion.cpp.o
140.920 [243/125/2350] Building CXX object tools/sancov/CMakeFiles/sancov.dir/sancov.cpp.o
141.309 [243/124/2351] Building CXX object tools/llvm-lipo/CMakeFiles/llvm-lipo.dir/llvm-lipo.cpp.o
141.332 [243/123/2352] Building CXX object lib/Target/NVPTX/CMakeFiles/LLVMNVPTXCodeGen.dir/NVPTXTargetMachine.cpp.o
141.682 [243/122/2353] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceDbgRecords.cpp.o
141.714 [243/121/2354] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-coff.cpp.o
141.719 [243/120/2355] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/OffloadDump.cpp.o
141.788 [243/119/2356] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-statistics.cpp.o
141.831 [243/118/2357] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86FloatingPoint.cpp.o
141.837 [243/117/2358] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceGlobalValues.cpp.o
141.915 [243/116/2359] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86AvoidTrailingCall.cpp.o
141.985 [243/115/2360] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-elf.cpp.o
142.003 [243/114/2361] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86MacroFusion.cpp.o
142.069 [243/113/2362] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceAliases.cpp.o
142.069 [243/112/2363] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceFunctions.cpp.o
142.080 [243/111/2364] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceGlobalObjects.cpp.o
142.188 [243/110/2365] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86SelectionDAGInfo.cpp.o
142.195 [243/109/2366] Building CXX object tools/llvm-jitlink/CMakeFiles/llvm-jitlink.dir/llvm-jitlink-macho.cpp.o
142.321 [243/108/2367] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/deltas/ReduceFunctionBodies.cpp.o
142.347 [243/107/2368] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86FixupSetCC.cpp.o
142.357 [243/106/2369] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86FixupInstTuning.cpp.o
142.387 [243/105/2370] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/XCOFFDump.cpp.o
142.441 [243/104/2371] Building CXX object tools/dsymutil/CMakeFiles/dsymutil.dir/MachOUtils.cpp.o
142.510 [243/103/2372] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/COFFDump.cpp.o
142.541 [243/102/2373] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86InsertWait.cpp.o
142.545 [243/101/2374] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86CompressEVEX.cpp.o
142.690 [243/100/2375] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86WinFixupBufferSecurityCheck.cpp.o
142.710 [243/99/2376] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86PadShortFunction.cpp.o
142.741 [243/98/2377] Building CXX object tools/llvm-objdump/CMakeFiles/llvm-objdump.dir/SourcePrinter.cpp.o
142.744 [243/97/2378] Building CXX object tools/llvm-libtool-darwin/CMakeFiles/llvm-libtool-darwin.dir/llvm-libtool-darwin.cpp.o
142.800 [243/96/2379] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86VZeroUpper.cpp.o
142.936 [243/95/2380] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86FixupBWInsts.cpp.o
142.952 [243/94/2381] Building CXX object tools/llvm-reduce/CMakeFiles/llvm-reduce.dir/TestRunner.cpp.o
142.953 [243/93/2382] Building CXX object tools/llc/CMakeFiles/llc.dir/llc.cpp.o

nikic added a commit that referenced this pull request Mar 6, 2025
To fix the shared libs build after #129868.
nikic added a commit that referenced this pull request Mar 6, 2025
@llvm-ci
Copy link
Collaborator

llvm-ci commented Mar 6, 2025

LLVM Buildbot has detected a new failure on builder premerge-monolithic-linux running on premerge-linux-1 while building clang,flang,lldb,llvm,mlir,offload,polly at step 6 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/153/builds/24811

Here is the relevant piece of the build log for the reference
Step 6 (build-unified-tree) failure: build (failure)
...
624.811 [4908/58/3550] Building CXX object tools/clang/lib/StaticAnalyzer/Frontend/CMakeFiles/obj.clangStaticAnalyzerFrontend.dir/FrontendActions.cpp.o
624.863 [4907/58/3551] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/WebKit/RawPtrRefCallArgsChecker.cpp.o
625.010 [4906/58/3552] Linking CXX executable bin/llvm-cxxdump
625.060 [4905/58/3553] Building CXX object tools/clang/lib/Format/CMakeFiles/obj.clangFormat.dir/SortJavaScriptImports.cpp.o
625.306 [4904/58/3554] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/WebKit/UncountedLambdaCapturesChecker.cpp.o
625.930 [4903/58/3555] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/WebKit/RawPtrRefLocalVarsChecker.cpp.o
625.946 [4902/58/3556] Building CXX object tools/clang/tools/clang-offload-bundler/CMakeFiles/clang-offload-bundler.dir/ClangOffloadBundler.cpp.o
625.971 [4901/58/3557] Building CXX object tools/clang/tools/clang-offload-packager/CMakeFiles/clang-offload-packager.dir/ClangOffloadPackager.cpp.o
626.104 [4900/58/3558] Building CXX object tools/clang/lib/Format/CMakeFiles/obj.clangFormat.dir/WhitespaceManager.cpp.o
626.134 [4899/58/3559] Building CXX object examples/Kaleidoscope/Chapter8/CMakeFiles/Kaleidoscope-Ch8.dir/toy.cpp.o
FAILED: examples/Kaleidoscope/Chapter8/CMakeFiles/Kaleidoscope-Ch8.dir/toy.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes /usr/bin/ccache /usr/bin/clang++ -DGTEST_HAS_RTTI=0 -DLLVM_BUILD_STATIC -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/build/buildbot/premerge-monolithic-linux/build/examples/Kaleidoscope/Chapter8 -I/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/examples/Kaleidoscope/Chapter8 -I/build/buildbot/premerge-monolithic-linux/build/include -I/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include -isystem /usr/include/libxml2 -gmlt -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++17 -MD -MT examples/Kaleidoscope/Chapter8/CMakeFiles/Kaleidoscope-Ch8.dir/toy.cpp.o -MF examples/Kaleidoscope/Chapter8/CMakeFiles/Kaleidoscope-Ch8.dir/toy.cpp.o.d -o examples/Kaleidoscope/Chapter8/CMakeFiles/Kaleidoscope-Ch8.dir/toy.cpp.o -c /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/examples/Kaleidoscope/Chapter8/toy.cpp
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/examples/Kaleidoscope/Chapter8/toy.cpp:1228:30: error: no viable conversion from 'std::string' (aka 'basic_string<char>') to 'Triple'
  TheModule->setTargetTriple(TargetTriple);
                             ^~~~~~~~~~~~
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/TargetParser/Triple.h:44:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'const Triple &' for 1st argument
class Triple {
      ^
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/TargetParser/Triple.h:44:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'Triple &&' for 1st argument
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/TargetParser/Triple.h:349:12: note: explicit constructor is not a candidate
  explicit Triple(const Twine &Str);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/basic_string.h:806:7: note: candidate function
      operator __sv_type() const noexcept
      ^
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/IR/Module.h:343:31: note: passing argument to parameter 'T' here
  void setTargetTriple(Triple T) { TargetTriple = std::move(T); }
                              ^
1 error generated.
626.276 [4899/57/3560] Building CXX object tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o
626.311 [4899/56/3561] Linking CXX executable bin/clang-offload-bundler
626.439 [4899/55/3562] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/WebKit/RefCntblBaseVirtualDtorChecker.cpp.o
626.447 [4899/54/3563] Linking CXX executable bin/clang-offload-packager
626.804 [4899/53/3564] Building CXX object tools/clang/lib/StaticAnalyzer/Frontend/CMakeFiles/obj.clangStaticAnalyzerFrontend.dir/AnalyzerHelpFlags.cpp.o
626.886 [4899/52/3565] Building CXX object tools/clang/lib/Format/CMakeFiles/obj.clangFormat.dir/UnwrappedLineParser.cpp.o
626.943 [4899/51/3566] Building CXX object tools/llvm-ml/CMakeFiles/llvm-ml.dir/Disassembler.cpp.o
627.118 [4899/50/3567] Building CXX object tools/clang/lib/Format/CMakeFiles/obj.clangFormat.dir/TokenAnnotator.cpp.o
627.954 [4899/49/3568] Building CXX object tools/clang/lib/Format/CMakeFiles/obj.clangFormat.dir/Format.cpp.o
627.957 [4899/48/3569] Building CXX object tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o
627.972 [4899/47/3570] Building CXX object tools/clang/lib/Interpreter/CMakeFiles/obj.clangInterpreter.dir/Value.cpp.o
628.169 [4899/46/3571] Building CXX object tools/clang/tools/clang-format/CMakeFiles/clang-format.dir/ClangFormat.cpp.o
628.551 [4899/45/3572] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/StreamChecker.cpp.o
628.787 [4899/44/3573] Building CXX object tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/UninitializedObject/UninitializedObjectChecker.cpp.o
629.079 [4899/43/3574] Building CXX object tools/clang/lib/StaticAnalyzer/Frontend/CMakeFiles/obj.clangStaticAnalyzerFrontend.dir/ModelInjector.cpp.o
629.320 [4899/42/3575] Building CXX object tools/clang/tools/clang-refactor/CMakeFiles/clang-refactor.dir/TestSupport.cpp.o
629.438 [4899/41/3576] Building CXX object tools/clang/lib/StaticAnalyzer/Frontend/CMakeFiles/obj.clangStaticAnalyzerFrontend.dir/AnalysisConsumer.cpp.o
629.453 [4899/40/3577] Building CXX object tools/clang/tools/extra/clang-tidy/utils/CMakeFiles/obj.clangTidyUtils.dir/Aliasing.cpp.o
629.898 [4899/39/3578] Building CXX object tools/clang/lib/Interpreter/CMakeFiles/obj.clangInterpreter.dir/IncrementalExecutor.cpp.o
630.112 [4899/38/3579] Building CXX object tools/clang/tools/diagtool/CMakeFiles/diagtool.dir/ShowEnabledWarnings.cpp.o

nikic added a commit that referenced this pull request Mar 6, 2025
Zentrik added a commit to Zentrik/llvm-project that referenced this pull request Mar 6, 2025
searlmc1 pushed a commit to ROCm/llvm-project that referenced this pull request Mar 7, 2025
lands and reverts
979c275 [IR] Store Triple in Module (NFC) (llvm#129868)
kito-cheng added a commit that referenced this pull request Mar 7, 2025
#130105)

…etParser from clangTesting

Commit 979c275 (#129868) introduced a
dependency on the llvm::Triple::Triple in `lookupTarget`. This is part
of TargetParser, which wasn't listed in
clang/lib/Testing/CMakeLists.txt. This broke the
-DBUILD_SHARED_LIBS=True builds.

Fixes #130112
searlmc1 pushed a commit to ROCm/llvm-project that referenced this pull request Mar 7, 2025
compiler-errors added a commit to compiler-errors/rust that referenced this pull request Mar 7, 2025
setTargetTriple now accepts Triple rather than string

llvm/llvm-project#129868 updated `setTargetTriple`
compiler-errors added a commit to compiler-errors/rust that referenced this pull request Mar 7, 2025
setTargetTriple now accepts Triple rather than string

llvm/llvm-project#129868 updated `setTargetTriple`
jhpratt added a commit to jhpratt/rust that referenced this pull request Mar 8, 2025
setTargetTriple now accepts Triple rather than string

llvm/llvm-project#129868 updated `setTargetTriple`
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Mar 8, 2025
Rollup merge of rust-lang#138137 - ZequanWu:fix-triple, r=cuviper

setTargetTriple now accepts Triple rather than string

llvm/llvm-project#129868 updated `setTargetTriple`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AArch64 backend:AMDGPU backend:DirectX backend:Hexagon backend:SPIR-V backend:X86 clang:codegen clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:openmp OpenMP related changes to Clang clang Clang issues not falling into any other category compiler-rt:sanitizer coroutines C++20 coroutines debuginfo flang:driver flang:openmp flang Flang issues not falling into any other category lldb llvm:analysis llvm:binary-utilities llvm:ir llvm:transforms LTO Link time optimization (regular/full LTO or ThinLTO) mc Machine (object) code mlir:execution-engine mlir:llvm mlir offload PGO Profile Guided Optimizations tools:llvm-exegesis
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

5 participants