Skip to content

Commit 20d497c

Browse files
committed
[Driver] Remove unneeded *-linux-gnu after D158183
Recommit 435ea21. As the comment added by a077271 suggests, these `*Triples` lists should shrink over time. https://reviews.llvm.org/D158183 allows *-unknown-linux-gnu to detect *-linux-gnu. If we additionally allow x86_64-unknown-linux-gnu -m32/-mx32 to detect x86_64-linux-gnu, we can mostly remove these *-linux-gnu elements. Retain x86_64-linux-gnu for now to work around #93609. (In addition, Debian /usr/bin/clang --version uses x86_64-pc-linux-gnu). Retain i586-linux-gnu for now to work around #93502.
1 parent 6aeea70 commit 20d497c

File tree

1 file changed

+33
-36
lines changed

1 file changed

+33
-36
lines changed

clang/lib/Driver/ToolChains/Gnu.cpp

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2227,10 +2227,19 @@ void Generic_GCC::GCCInstallationDetector::init(
22272227
SmallVector<StringRef, 16> CandidateBiarchTripleAliases;
22282228
// Add some triples that we want to check first.
22292229
CandidateTripleAliases.push_back(TargetTriple.str());
2230-
std::string TripleNoVendor = TargetTriple.getArchName().str() + "-" +
2231-
TargetTriple.getOSAndEnvironmentName().str();
2232-
if (TargetTriple.getVendor() == llvm::Triple::UnknownVendor)
2230+
std::string TripleNoVendor, BiarchTripleNoVendor;
2231+
if (TargetTriple.getVendor() == llvm::Triple::UnknownVendor) {
2232+
StringRef OSEnv = TargetTriple.getOSAndEnvironmentName();
2233+
if (TargetTriple.getEnvironment() == llvm::Triple::GNUX32)
2234+
OSEnv = "linux-gnu";
2235+
TripleNoVendor = (TargetTriple.getArchName().str() + '-' + OSEnv).str();
22332236
CandidateTripleAliases.push_back(TripleNoVendor);
2237+
if (BiarchVariantTriple.getArch() != llvm::Triple::UnknownArch) {
2238+
BiarchTripleNoVendor =
2239+
(BiarchVariantTriple.getArchName().str() + '-' + OSEnv).str();
2240+
CandidateBiarchTripleAliases.push_back(BiarchTripleNoVendor);
2241+
}
2242+
}
22342243

22352244
CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs,
22362245
CandidateTripleAliases, CandidateBiarchLibDirs,
@@ -2453,11 +2462,9 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
24532462
// lists should shrink over time. Please don't add more elements to *Triples.
24542463
static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
24552464
static const char *const AArch64Triples[] = {
2456-
"aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux",
2457-
"aarch64-suse-linux"};
2465+
"aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux"};
24582466
static const char *const AArch64beLibDirs[] = {"/lib"};
2459-
static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
2460-
"aarch64_be-linux-gnu"};
2467+
static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu"};
24612468

24622469
static const char *const ARMLibDirs[] = {"/lib"};
24632470
static const char *const ARMTriples[] = {"arm-linux-gnueabi"};
@@ -2482,9 +2489,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
24822489
"x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
24832490
"x86_64-pc-linux-gnu", "x86_64-redhat-linux6E",
24842491
"x86_64-redhat-linux", "x86_64-suse-linux",
2485-
"x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
2486-
"x86_64-slackware-linux", "x86_64-unknown-linux",
2487-
"x86_64-amazon-linux"};
2492+
"x86_64-manbo-linux-gnu", "x86_64-slackware-linux",
2493+
"x86_64-unknown-linux", "x86_64-amazon-linux"};
24882494
static const char *const X32Triples[] = {"x86_64-linux-gnux32",
24892495
"x86_64-pc-linux-gnux32"};
24902496
static const char *const X32LibDirs[] = {"/libx32", "/lib"};
@@ -2500,26 +2506,24 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
25002506
"loongarch64-linux-gnu", "loongarch64-unknown-linux-gnu"};
25012507

25022508
static const char *const M68kLibDirs[] = {"/lib"};
2503-
static const char *const M68kTriples[] = {
2504-
"m68k-linux-gnu", "m68k-unknown-linux-gnu", "m68k-suse-linux"};
2509+
static const char *const M68kTriples[] = {"m68k-unknown-linux-gnu",
2510+
"m68k-suse-linux"};
25052511

25062512
static const char *const MIPSLibDirs[] = {"/libo32", "/lib"};
25072513
static const char *const MIPSTriples[] = {
25082514
"mips-linux-gnu", "mips-mti-linux", "mips-mti-linux-gnu",
25092515
"mips-img-linux-gnu", "mipsisa32r6-linux-gnu"};
25102516
static const char *const MIPSELLibDirs[] = {"/libo32", "/lib"};
2511-
static const char *const MIPSELTriples[] = {
2512-
"mipsel-linux-gnu", "mips-img-linux-gnu", "mipsisa32r6el-linux-gnu"};
2517+
static const char *const MIPSELTriples[] = {"mipsel-linux-gnu",
2518+
"mips-img-linux-gnu"};
25132519

25142520
static const char *const MIPS64LibDirs[] = {"/lib64", "/lib"};
25152521
static const char *const MIPS64Triples[] = {
2516-
"mips64-linux-gnu", "mips-mti-linux-gnu",
2517-
"mips-img-linux-gnu", "mips64-linux-gnuabi64",
2522+
"mips-mti-linux-gnu", "mips-img-linux-gnu", "mips64-linux-gnuabi64",
25182523
"mipsisa64r6-linux-gnu", "mipsisa64r6-linux-gnuabi64"};
25192524
static const char *const MIPS64ELLibDirs[] = {"/lib64", "/lib"};
25202525
static const char *const MIPS64ELTriples[] = {
2521-
"mips64el-linux-gnu", "mips-mti-linux-gnu",
2522-
"mips-img-linux-gnu", "mips64el-linux-gnuabi64",
2526+
"mips-mti-linux-gnu", "mips-img-linux-gnu", "mips64el-linux-gnuabi64",
25232527
"mipsisa64r6el-linux-gnu", "mipsisa64r6el-linux-gnuabi64"};
25242528

25252529
static const char *const MIPSN32LibDirs[] = {"/lib32"};
@@ -2534,46 +2538,39 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
25342538

25352539
static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
25362540
static const char *const PPCTriples[] = {
2537-
"powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe",
2541+
"powerpc-unknown-linux-gnu",
25382542
// On 32-bit PowerPC systems running SUSE Linux, gcc is configured as a
25392543
// 64-bit compiler which defaults to "-m32", hence "powerpc64-suse-linux".
25402544
"powerpc64-suse-linux", "powerpc-montavista-linuxspe"};
25412545
static const char *const PPCLELibDirs[] = {"/lib32", "/lib"};
2542-
static const char *const PPCLETriples[] = {"powerpcle-linux-gnu",
2543-
"powerpcle-unknown-linux-gnu",
2546+
static const char *const PPCLETriples[] = {"powerpcle-unknown-linux-gnu",
25442547
"powerpcle-linux-musl"};
25452548

25462549
static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
2547-
static const char *const PPC64Triples[] = {
2548-
"powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu",
2549-
"powerpc64-suse-linux", "ppc64-redhat-linux"};
2550+
static const char *const PPC64Triples[] = {"powerpc64-unknown-linux-gnu",
2551+
"powerpc64-suse-linux",
2552+
"ppc64-redhat-linux"};
25502553
static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"};
25512554
static const char *const PPC64LETriples[] = {
2552-
"powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
2553-
"powerpc64le-none-linux-gnu", "powerpc64le-suse-linux",
2554-
"ppc64le-redhat-linux"};
2555+
"powerpc64le-unknown-linux-gnu", "powerpc64le-none-linux-gnu",
2556+
"powerpc64le-suse-linux", "ppc64le-redhat-linux"};
25552557

25562558
static const char *const RISCV32LibDirs[] = {"/lib32", "/lib"};
25572559
static const char *const RISCV32Triples[] = {"riscv32-unknown-linux-gnu",
2558-
"riscv32-linux-gnu",
25592560
"riscv32-unknown-elf"};
25602561
static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"};
25612562
static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu",
2562-
"riscv64-linux-gnu",
25632563
"riscv64-unknown-elf"};
25642564

25652565
static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
2566-
static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",
2567-
"sparcv8-linux-gnu"};
2566+
static const char *const SPARCv8Triples[] = {"sparcv8-linux-gnu"};
25682567
static const char *const SPARCv9LibDirs[] = {"/lib64", "/lib"};
2569-
static const char *const SPARCv9Triples[] = {"sparc64-linux-gnu",
2570-
"sparcv9-linux-gnu"};
2568+
static const char *const SPARCv9Triples[] = {"sparcv9-linux-gnu"};
25712569

25722570
static const char *const SystemZLibDirs[] = {"/lib64", "/lib"};
25732571
static const char *const SystemZTriples[] = {
2574-
"s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
2575-
"s390x-suse-linux", "s390x-redhat-linux"};
2576-
2572+
"s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu", "s390x-suse-linux",
2573+
"s390x-redhat-linux"};
25772574

25782575
using std::begin;
25792576
using std::end;

0 commit comments

Comments
 (0)