https://github.com/jakeegan created https://github.com/llvm/llvm-project/pull/141439
If the runtime path is not found (by getTargetSubDirPath()), since per target runtime directory is enabled on AIX, we should fall back to the target subdirectory rather than the OS subdirectory. >From b044f81c6d1ed67ce7ee27bce7a62d36b3841bad Mon Sep 17 00:00:00 2001 From: Jake Egan <jake.e...@ibm.com> Date: Sun, 25 May 2025 19:40:59 -0400 Subject: [PATCH] Fix rt dir fallback --- clang/lib/Driver/ToolChain.cpp | 23 ++++++++++------------- clang/test/Driver/aix-print-runtime-dir.c | 9 --------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index ce302b308fd19..2cf0030d4b97b 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -933,11 +933,16 @@ 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 (T.isOSAIX()) { + llvm::Triple AIXTriple; + if (T.getEnvironment() == Triple::UnknownEnvironment) { + // Strip unknown environment from the triple. + AIXTriple = llvm::Triple(T.getArchName(), T.getVendorName(), + llvm::Triple::getOSTypeName(T.getOS())); + } else { + // Get the triple without the OS version. + AIXTriple = getTripleWithoutOSVersion(); + } if (auto Path = getPathForTriple(AIXTriple)) return *Path; } @@ -987,14 +992,6 @@ std::optional<std::string> ToolChain::getRuntimePath() const { if (Triple.isOSDarwin()) return {}; - // For AIX, get the triple without the OS version. - if (Triple.isOSAIX()) { - const llvm::Triple &TripleWithoutVersion = getTripleWithoutOSVersion(); - llvm::sys::path::append(P, TripleWithoutVersion.str()); - if (getVFS().exists(P)) - return std::string(P); - return {}; - } llvm::sys::path::append(P, Triple.str()); return std::string(P); } diff --git a/clang/test/Driver/aix-print-runtime-dir.c b/clang/test/Driver/aix-print-runtime-dir.c index ef133728d731f..4740129442540 100644 --- a/clang/test/Driver/aix-print-runtime-dir.c +++ b/clang/test/Driver/aix-print-runtime-dir.c @@ -1,13 +1,5 @@ // Test output of -print-runtime-dir on AIX -// RUN: %clang -print-runtime-dir --target=powerpc-ibm-aix \ -// RUN: -resource-dir=%S/Inputs/resource_dir \ -// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR %s - -// RUN: %clang -print-runtime-dir --target=powerpc64-ibm-aix \ -// RUN: -resource-dir=%S/Inputs/resource_dir \ -// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR %s - // RUN: %clang -print-runtime-dir --target=powerpc-ibm-aix \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir\ // RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR32-PER-TARGET %s @@ -24,7 +16,6 @@ // 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits