diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 2b1e8f02cf663..9fb99145d3b90 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -2097,14 +2097,17 @@ void Generic_GCC::GCCInstallationDetector::init( // The compatible GCC triples for this particular architecture. SmallVector CandidateTripleAliases; SmallVector CandidateBiarchTripleAliases; + // Add some triples that we want to check first. + CandidateTripleAliases.push_back(TargetTriple.str()); + std::string TripleNoVendor = TargetTriple.getArchName().str() + "-" + + TargetTriple.getOSAndEnvironmentName().str(); + if (TargetTriple.getVendor() == llvm::Triple::UnknownVendor) + CandidateTripleAliases.push_back(TripleNoVendor); + CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs, CandidateTripleAliases, CandidateBiarchLibDirs, CandidateBiarchTripleAliases); - TripleNoVendor = TargetTriple.getArchName().str() + "-" + - TargetTriple.getOSAndEnvironmentName().str(); - StringRef TripleNoVendorRef(TripleNoVendor); - // If --gcc-install-dir= is specified, skip filesystem detection. if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_gcc_install_dir_EQ); @@ -2184,13 +2187,6 @@ void Generic_GCC::GCCInstallationDetector::init( // Maybe filter out /gcc and /gcc-cross. bool GCCDirExists = VFS.exists(LibDir + "/gcc"); bool GCCCrossDirExists = VFS.exists(LibDir + "/gcc-cross"); - // Try to match the exact target triple first. - ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, TargetTriple.str(), - false, GCCDirExists, GCCCrossDirExists); - // If vendor is unknown, let's try triple without vendor. - if (TargetTriple.getVendor() == llvm::Triple::UnknownVendor) - ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, TripleNoVendorRef, - false, GCCDirExists, GCCCrossDirExists); for (StringRef Candidate : CandidateTripleAliases) ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, false, GCCDirExists, GCCCrossDirExists); diff --git a/clang/lib/Driver/ToolChains/Gnu.h b/clang/lib/Driver/ToolChains/Gnu.h index dcfc6307cac79..0b664a182d75e 100644 --- a/clang/lib/Driver/ToolChains/Gnu.h +++ b/clang/lib/Driver/ToolChains/Gnu.h @@ -249,7 +249,6 @@ class LLVM_LIBRARY_VISIBILITY Generic_GCC : public ToolChain { void print(raw_ostream &OS) const; private: - std::string TripleNoVendor; static void CollectLibDirsAndTriples(const llvm::Triple &TargetTriple, const llvm::Triple &BiarchTriple,