[llvm] LTO: Stop storing string triple (PR #157991)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 10 21:51:00 PDT 2025
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/157991
Simplify Triple computing code and avoid reconstruction and
string based logic
>From c6e525e950c81019e9461499e7b62fdfd6574787 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Thu, 11 Sep 2025 13:23:22 +0900
Subject: [PATCH] LTO: Stop storing string triple
Simplify Triple computing code and avoid reconstruction and
string based logic
---
llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h | 1 -
llvm/lib/LTO/LTOCodeGenerator.cpp | 16 ++++++----------
2 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h
index 391589acba40a..806d3c5bdfd77 100644
--- a/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h
+++ b/llvm/include/llvm/LTO/legacy/LTOCodeGenerator.h
@@ -239,7 +239,6 @@ struct LTOCodeGenerator {
std::string FeatureStr;
std::string NativeObjectPath;
const Target *MArch = nullptr;
- std::string TripleStr;
lto_diagnostic_handler_t DiagHandler = nullptr;
void *DiagContext = nullptr;
bool ShouldInternalize = EnableLTOInternalization;
diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index 23e22e7ffcd5c..6f13df73e787b 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -375,16 +375,12 @@ bool LTOCodeGenerator::determineTarget() {
if (TargetMach)
return true;
- TripleStr = MergedModule->getTargetTriple().str();
- if (TripleStr.empty()) {
- TripleStr = sys::getDefaultTargetTriple();
- MergedModule->setTargetTriple(Triple(TripleStr));
- }
- llvm::Triple Triple(TripleStr);
+ if (const Triple &TT = MergedModule->getTargetTriple(); TT.empty())
+ MergedModule->setTargetTriple(Triple(sys::getDefaultTargetTriple()));
// create target machine from info for merged modules
std::string ErrMsg;
- MArch = TargetRegistry::lookupTarget(Triple, ErrMsg);
+ MArch = TargetRegistry::lookupTarget(MergedModule->getTargetTriple(), ErrMsg);
if (!MArch) {
emitError(ErrMsg);
return false;
@@ -393,10 +389,10 @@ bool LTOCodeGenerator::determineTarget() {
// Construct LTOModule, hand over ownership of module and target. Use MAttr as
// the default set of features.
SubtargetFeatures Features(join(Config.MAttrs, ""));
- Features.getDefaultSubtargetFeatures(Triple);
+ Features.getDefaultSubtargetFeatures(MergedModule->getTargetTriple());
FeatureStr = Features.getString();
if (Config.CPU.empty())
- Config.CPU = lto::getThinLTODefaultCPU(Triple);
+ Config.CPU = lto::getThinLTODefaultCPU(MergedModule->getTargetTriple());
// If data-sections is not explicitly set or unset, set data-sections by
// default to match the behaviour of lld and gold plugin.
@@ -412,7 +408,7 @@ bool LTOCodeGenerator::determineTarget() {
std::unique_ptr<TargetMachine> LTOCodeGenerator::createTargetMachine() {
assert(MArch && "MArch is not set!");
return std::unique_ptr<TargetMachine>(MArch->createTargetMachine(
- Triple(TripleStr), Config.CPU, FeatureStr, Config.Options,
+ MergedModule->getTargetTriple(), Config.CPU, FeatureStr, Config.Options,
Config.RelocModel, std::nullopt, Config.CGOptLevel));
}
More information about the llvm-commits
mailing list