[clang] [clang][AIX] Strip unknown environment component for per target runtime directory (PR #140850)

via cfe-commits cfe-commits at lists.llvm.org
Thu May 22 19:21:50 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-driver

Author: Jake Egan (jakeegan)

<details>
<summary>Changes</summary>

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.

---
Full diff: https://github.com/llvm/llvm-project/pull/140850.diff


2 Files Affected:

- (modified) clang/lib/Driver/ToolChain.cpp (+9) 
- (modified) clang/test/Driver/aix-print-runtime-dir.c (+5) 


``````````diff
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 664aafad0f680..db37dccbd40b8 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -935,6 +935,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..16fe59c918804 100644
--- a/clang/test/Driver/aix-print-runtime-dir.c
+++ b/clang/test/Driver/aix-print-runtime-dir.c
@@ -16,6 +16,11 @@
 // 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-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

``````````

</details>


https://github.com/llvm/llvm-project/pull/140850


More information about the cfe-commits mailing list