[clang] 6d1d937 - [clang][AIX] Strip unknown environment component for per target runtime directory (#140850)
via cfe-commits
cfe-commits at lists.llvm.org
Sat May 24 00:05:31 PDT 2025
Author: Jake Egan
Date: 2025-05-24T03:05:27-04:00
New Revision: 6d1d9374bd83f83f7d631ea599e4e75f7e9163ea
URL: https://github.com/llvm/llvm-project/commit/6d1d9374bd83f83f7d631ea599e4e75f7e9163ea
DIFF: https://github.com/llvm/llvm-project/commit/6d1d9374bd83f83f7d631ea599e4e75f7e9163ea.diff
LOG: [clang][AIX] Strip unknown environment component for per target runtime directory (#140850)
Previously, when the triple is `powerpc-ibm-aix-unknown`, the driver
fails to find subdirectory `lib/powerpc-ibm-aix`.
This ensures the correct runtime path is found if the triple has the
-unknown environment component attached.
Added:
Modified:
clang/lib/Driver/ToolChain.cpp
clang/test/Driver/aix-print-runtime-dir.c
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 4dab08cb6fd88..ce302b308fd19 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -933,6 +933,15 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
if (auto Path = getPathForTriple(T))
return *Path;
+ 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;
+ }
+
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..ef133728d731f 100644
--- a/clang/test/Driver/aix-print-runtime-dir.c
+++ b/clang/test/Driver/aix-print-runtime-dir.c
@@ -16,6 +16,16 @@
// 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-UNKNOWN-ENV %s
+
+// RUN: %clang -print-runtime-dir --target=powerpc64-ibm-aix-unknown \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR64-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-DIR32-UNKNOWN-ENV: lib{{/|\\}}powerpc-ibm-aix
+// PRINT-RUNTIME-DIR64-UNKNOWN-ENV: lib{{/|\\}}powerpc64-ibm-aix
More information about the cfe-commits
mailing list