[llvm] [LTO] Fix the issue of resetting the triple to default when it's empty (PR #157829)
Feng Zou via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 10 18:03:10 PDT 2025
https://github.com/fzou1 updated https://github.com/llvm/llvm-project/pull/157829
>From 274148811a2b600c1ca4414bea4f1693bdc11b08 Mon Sep 17 00:00:00 2001
From: Feng Zou <feng.zou at intel.com>
Date: Wed, 10 Sep 2025 18:39:39 +0800
Subject: [PATCH 1/3] [LTO] Fix the issue of setting default triple when the
triple is empty.
---
llvm/lib/LTO/LTOCodeGenerator.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index cdeab98ff6c98..8ea4e530dc3eb 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -377,8 +377,9 @@ bool LTOCodeGenerator::determineTarget() {
TripleStr = MergedModule->getTargetTriple().str();
llvm::Triple Triple(TripleStr);
- if (TripleStr.empty()) {
- TripleStr = sys::getDefaultTargetTriple();
+ if (Triple.empty()) {
+ Triple = llvm::Triple(sys::getDefaultTargetTriple());
+ TripleStr = Triple.getTriple();
MergedModule->setTargetTriple(Triple);
}
>From 5b4918515d2e111c171cab738e253376521c4dfa Mon Sep 17 00:00:00 2001
From: Feng Zou <feng.zou at intel.com>
Date: Wed, 10 Sep 2025 23:02:33 +0800
Subject: [PATCH 2/3] Add test
---
llvm/test/LTO/X86/empty-triple.ll | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 llvm/test/LTO/X86/empty-triple.ll
diff --git a/llvm/test/LTO/X86/empty-triple.ll b/llvm/test/LTO/X86/empty-triple.ll
new file mode 100644
index 0000000000000..200d7121f69d6
--- /dev/null
+++ b/llvm/test/LTO/X86/empty-triple.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s >%t1
+; RUN: llvm-lto -o %t2 %t1 2>&1 | FileCheck --allow-empty %s
+
+; The test is to check the triple is set to default one when it's empty.
+; Otherwise, an error will be raised by llvm-lto.
+
+; CHECK-NOT: llvm-lto: error: No available targets are compatible with triple ""
>From 68c1a9599f410b2cf0da835f2e47f04342678531 Mon Sep 17 00:00:00 2001
From: Feng Zou <feng.zou at intel.com>
Date: Thu, 11 Sep 2025 09:02:14 +0800
Subject: [PATCH 3/3] Update test and rewrite to avoid constructing Triple from
empty string
---
llvm/lib/LTO/LTOCodeGenerator.cpp | 9 ++++-----
llvm/test/LTO/{X86 => }/empty-triple.ll | 4 ++--
2 files changed, 6 insertions(+), 7 deletions(-)
rename llvm/test/LTO/{X86 => }/empty-triple.ll (51%)
diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index 8ea4e530dc3eb..23e22e7ffcd5c 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -376,12 +376,11 @@ bool LTOCodeGenerator::determineTarget() {
return true;
TripleStr = MergedModule->getTargetTriple().str();
- llvm::Triple Triple(TripleStr);
- if (Triple.empty()) {
- Triple = llvm::Triple(sys::getDefaultTargetTriple());
- TripleStr = Triple.getTriple();
- MergedModule->setTargetTriple(Triple);
+ if (TripleStr.empty()) {
+ TripleStr = sys::getDefaultTargetTriple();
+ MergedModule->setTargetTriple(Triple(TripleStr));
}
+ llvm::Triple Triple(TripleStr);
// create target machine from info for merged modules
std::string ErrMsg;
diff --git a/llvm/test/LTO/X86/empty-triple.ll b/llvm/test/LTO/empty-triple.ll
similarity index 51%
rename from llvm/test/LTO/X86/empty-triple.ll
rename to llvm/test/LTO/empty-triple.ll
index 200d7121f69d6..09d90e0388efa 100644
--- a/llvm/test/LTO/X86/empty-triple.ll
+++ b/llvm/test/LTO/empty-triple.ll
@@ -1,7 +1,7 @@
; RUN: llvm-as < %s >%t1
-; RUN: llvm-lto -o %t2 %t1 2>&1 | FileCheck --allow-empty %s
+; RUN: llvm-lto -o /dev/null %t1 2>&1 | FileCheck --allow-empty %s
; The test is to check the triple is set to default one when it's empty.
; Otherwise, an error will be raised by llvm-lto.
-; CHECK-NOT: llvm-lto: error: No available targets are compatible with triple ""
+; CHECK-NOT: error
More information about the llvm-commits
mailing list