[clang] [llvm] [PowerPC][clang] Fix triple constructor ambiguity causing "unknown" target triple on AIX (PR #147488)
Tony Varghese via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 8 08:58:12 PDT 2025
https://github.com/tonykuttai updated https://github.com/llvm/llvm-project/pull/147488
>From 9d9ed1f239e4e156effcd7c46487c4aeb1201660 Mon Sep 17 00:00:00 2001
From: Tony Varghese <tony.varghese at ibm.com>
Date: Tue, 8 Jul 2025 05:04:12 -0400
Subject: [PATCH 1/2] [PowerPC][clang] Fix triple constructor ambiguity causing
"unknown" target triple on AIX
---
clang/test/Driver/aix-default-target-triple.c | 15 +++++++++++++++
llvm/lib/TargetParser/Unix/Host.inc | 2 +-
2 files changed, 16 insertions(+), 1 deletion(-)
create mode 100644 clang/test/Driver/aix-default-target-triple.c
diff --git a/clang/test/Driver/aix-default-target-triple.c b/clang/test/Driver/aix-default-target-triple.c
new file mode 100644
index 0000000000000..e3ef4712e52d7
--- /dev/null
+++ b/clang/test/Driver/aix-default-target-triple.c
@@ -0,0 +1,15 @@
+// Test for the Triple constructor ambiguity fix on AIX
+// This test verifies that the default target triple is correctly resolved
+// and doesn't fall back to "unknown" due to constructor ambiguity.
+
+// REQUIRES: system-aix
+// RUN: %clang -v %s -c 2>&1 | FileCheck %s --check-prefix=CHECK-TARGET
+
+// Test that the target triple contains AIX and is not "unknown"
+// The target should be something like "powerpc-ibm-aix7.3.0.0"
+// CHECK-TARGET: Target: {{.*}}aix{{.*}}
+// CHECK-TARGET-NOT: error: unknown target triple 'unknown'
+
+int main() {
+ return 0;
+}
diff --git a/llvm/lib/TargetParser/Unix/Host.inc b/llvm/lib/TargetParser/Unix/Host.inc
index ef9e288ee3a01..aeb2f59218700 100644
--- a/llvm/lib/TargetParser/Unix/Host.inc
+++ b/llvm/lib/TargetParser/Unix/Host.inc
@@ -55,7 +55,7 @@ static std::string updateTripleOSVersion(std::string TargetTripleString) {
// On AIX, the AIX version and release should be that of the current host
// unless if the version has already been specified.
if (Triple(LLVM_HOST_TRIPLE).getOS() == Triple::AIX) {
- Triple TT(std::move(TargetTripleString));
+ Triple TT{TargetTripleString};
if (TT.getOS() == Triple::AIX && !TT.getOSMajorVersion()) {
struct utsname name;
if (uname(&name) != -1) {
>From d00b73fdae08d9f6e641163531d2c1988897cdaa Mon Sep 17 00:00:00 2001
From: Tony Varghese <tonypalampalliyil at gmail.com>
Date: Tue, 8 Jul 2025 21:28:03 +0530
Subject: [PATCH 2/2] Update clang/test/Driver/aix-default-target-triple.c
Co-authored-by: Matt Arsenault <arsenm2 at gmail.com>
---
clang/test/Driver/aix-default-target-triple.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/clang/test/Driver/aix-default-target-triple.c b/clang/test/Driver/aix-default-target-triple.c
index e3ef4712e52d7..afad278de78d0 100644
--- a/clang/test/Driver/aix-default-target-triple.c
+++ b/clang/test/Driver/aix-default-target-triple.c
@@ -8,7 +8,6 @@
// Test that the target triple contains AIX and is not "unknown"
// The target should be something like "powerpc-ibm-aix7.3.0.0"
// CHECK-TARGET: Target: {{.*}}aix{{.*}}
-// CHECK-TARGET-NOT: error: unknown target triple 'unknown'
int main() {
return 0;
More information about the llvm-commits
mailing list