[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