Skip to content

Commit 6d1d937

Browse files
authored
[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.
1 parent 2faa45c commit 6d1d937

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

clang/lib/Driver/ToolChain.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,15 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
933933
if (auto Path = getPathForTriple(T))
934934
return *Path;
935935

936+
if (T.isOSAIX() && T.getEnvironment() == Triple::UnknownEnvironment) {
937+
// Strip unknown environment from the triple.
938+
const llvm::Triple AIXTriple(
939+
llvm::Triple(T.getArchName(), T.getVendorName(),
940+
llvm::Triple::getOSTypeName(T.getOS())));
941+
if (auto Path = getPathForTriple(AIXTriple))
942+
return *Path;
943+
}
944+
936945
if (T.isOSzOS() &&
937946
(!T.getOSVersion().empty() || !T.getEnvironmentVersion().empty())) {
938947
// Build the triple without version information

clang/test/Driver/aix-print-runtime-dir.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@
1616
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir\
1717
// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR64-PER-TARGET %s
1818

19+
// RUN: %clang -print-runtime-dir --target=powerpc-ibm-aix-unknown \
20+
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
21+
// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR32-UNKNOWN-ENV %s
22+
23+
// RUN: %clang -print-runtime-dir --target=powerpc64-ibm-aix-unknown \
24+
// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
25+
// RUN: | FileCheck --check-prefix=PRINT-RUNTIME-DIR64-UNKNOWN-ENV %s
26+
1927
// PRINT-RUNTIME-DIR: lib{{/|\\}}aix{{$}}
2028
// PRINT-RUNTIME-DIR32-PER-TARGET: lib{{/|\\}}powerpc-ibm-aix{{$}}
2129
// PRINT-RUNTIME-DIR64-PER-TARGET: lib{{/|\\}}powerpc64-ibm-aix{{$}}
30+
// PRINT-RUNTIME-DIR32-UNKNOWN-ENV: lib{{/|\\}}powerpc-ibm-aix
31+
// PRINT-RUNTIME-DIR64-UNKNOWN-ENV: lib{{/|\\}}powerpc64-ibm-aix

0 commit comments

Comments
 (0)