[clang] [clang][AIX] Strip unknown environment component for per target runtime directory (PR #140850)
Jake Egan via cfe-commits
cfe-commits at lists.llvm.org
Thu May 22 19:15:28 PDT 2025
https://github.com/jakeegan updated https://github.com/llvm/llvm-project/pull/140850
>From 120423abadbfd63dbb50387fb5ce26ff0f3ff257 Mon Sep 17 00:00:00 2001
From: Jake Egan <jake.egan at ibm.com>
Date: Wed, 21 May 2025 01:51:00 -0400
Subject: [PATCH 1/4] Handle triple environment component for target runtime
directory on AIX
---
clang/lib/Driver/ToolChain.cpp | 7 +++++++
clang/test/Driver/aix-print-runtime-dir.c | 4 ++++
2 files changed, 11 insertions(+)
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 664aafad0f680..90fb0375d1925 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -935,6 +935,13 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
if (auto Path = getPathForTriple(T))
return *Path;
+ // On AIX, the environment component is not used in the target sub dir name.
+ if (T.isOSAIX() && T.hasEnvironment()) {
+ llvm::Triple AIXTriple(T.getArchName(), T.getVendorName(), llvm::Triple::getOSTypeName(T.getOS()));
+ if (auto Path = getPathForTriple(AIXTriple))
+ return *Path;
+ }
+
if (T.isOSzOS() &&
(!T.getOSVersion().empty() || !T.getEnvironmentVersion().empty())) {
// Build the triple without version information
diff --git a/clang/test/Driver/aix-print-runtime-dir.c b/clang/test/Driver/aix-print-runtime-dir.c
index ffa4d15c21208..ad841cb4f9b5b 100644
--- a/clang/test/Driver/aix-print-runtime-dir.c
+++ b/clang/test/Driver/aix-print-runtime-dir.c
@@ -16,6 +16,10 @@
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir\
// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR64-PER-TARGET %s
+// RUN: %clang -print-runtime-dir --target=powerpc-ibm-aix-unknown \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir\
+// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR32-PER-TARGET %s
+
// PRINT-RUNTIME-DIR: lib{{/|\\}}aix{{$}}
// PRINT-RUNTIME-DIR32-PER-TARGET: lib{{/|\\}}powerpc-ibm-aix{{$}}
// PRINT-RUNTIME-DIR64-PER-TARGET: lib{{/|\\}}powerpc64-ibm-aix{{$}}
>From 6ed30e6b6b1a1627c554f2ec7c08d5014a21251c Mon Sep 17 00:00:00 2001
From: Jake Egan <jake.egan at ibm.com>
Date: Wed, 21 May 2025 09:45:50 -0400
Subject: [PATCH 2/4] Fix formatting
---
clang/lib/Driver/ToolChain.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 90fb0375d1925..4d66a53dad134 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -937,7 +937,8 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
// On AIX, the environment component is not used in the target sub dir name.
if (T.isOSAIX() && T.hasEnvironment()) {
- llvm::Triple AIXTriple(T.getArchName(), T.getVendorName(), llvm::Triple::getOSTypeName(T.getOS()));
+ llvm::Triple AIXTriple(T.getArchName(), T.getVendorName(),
+ llvm::Triple::getOSTypeName(T.getOS()));
if (auto Path = getPathForTriple(AIXTriple))
return *Path;
}
>From 2f230ce42da85029964bfa82c96eb09bb2cfae90 Mon Sep 17 00:00:00 2001
From: Jake Egan <jake.egan at ibm.com>
Date: Thu, 22 May 2025 22:11:59 -0400
Subject: [PATCH 3/4] Only strip -unknown environment component
---
clang/lib/Driver/ToolChain.cpp | 8 ++++----
clang/test/Driver/aix-print-runtime-dir.c | 3 ++-
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 4d66a53dad134..9875f2096f89b 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -935,10 +935,10 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
if (auto Path = getPathForTriple(T))
return *Path;
- // On AIX, the environment component is not used in the target sub dir name.
- if (T.isOSAIX() && T.hasEnvironment()) {
- llvm::Triple AIXTriple(T.getArchName(), T.getVendorName(),
- llvm::Triple::getOSTypeName(T.getOS()));
+ if (T.isOSAIX() && T.getEnvironment() == Triple::UnknownEnvironment) {
+ // Strip unknown environment from the triple.
+ const llvm::Triple AIXTriple(llvm::Triple(T.getArchName(), T.getVendorName(),
+ llvm::Triple::getOSTypeName(T.getOS())));
if (auto Path = getPathForTriple(AIXTriple))
return *Path;
}
diff --git a/clang/test/Driver/aix-print-runtime-dir.c b/clang/test/Driver/aix-print-runtime-dir.c
index ad841cb4f9b5b..16fe59c918804 100644
--- a/clang/test/Driver/aix-print-runtime-dir.c
+++ b/clang/test/Driver/aix-print-runtime-dir.c
@@ -18,8 +18,9 @@
// RUN: %clang -print-runtime-dir --target=powerpc-ibm-aix-unknown \
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir\
-// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR32-PER-TARGET %s
+// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR-UNKNOWN-ENV %s
// PRINT-RUNTIME-DIR: lib{{/|\\}}aix{{$}}
// PRINT-RUNTIME-DIR32-PER-TARGET: lib{{/|\\}}powerpc-ibm-aix{{$}}
// PRINT-RUNTIME-DIR64-PER-TARGET: lib{{/|\\}}powerpc64-ibm-aix{{$}}
+// PRINT-RUNTIME-DIR-UNKNOWN-ENV: lib{{/|\\}}powerpc-ibm-aix
>From 2d679ad7daa1c48a7cf04b1329a54849da89b29f Mon Sep 17 00:00:00 2001
From: Jake Egan <jake.egan at ibm.com>
Date: Thu, 22 May 2025 22:15:15 -0400
Subject: [PATCH 4/4] Fix formatting
---
clang/lib/Driver/ToolChain.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 9875f2096f89b..db37dccbd40b8 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -937,8 +937,9 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
if (T.isOSAIX() && T.getEnvironment() == Triple::UnknownEnvironment) {
// Strip unknown environment from the triple.
- const llvm::Triple AIXTriple(llvm::Triple(T.getArchName(), T.getVendorName(),
- llvm::Triple::getOSTypeName(T.getOS())));
+ const llvm::Triple AIXTriple(
+ llvm::Triple(T.getArchName(), T.getVendorName(),
+ llvm::Triple::getOSTypeName(T.getOS())));
if (auto Path = getPathForTriple(AIXTriple))
return *Path;
}
More information about the cfe-commits
mailing list