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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits