Author: rsmith Date: Tue Feb 14 19:16:48 2017 New Revision: 295140 URL: http://llvm.org/viewvc/llvm-project?rev=295140&view=rev Log: Don't look for GCC versions in /usr/lib/<triple> except when <triple> is a freescale triple.
On multiarch systems, this previously caused us to stat every file in /usr/lib/<triple> (typically several thousand files). This change halves the runtime of a clang invocation on an empty file on my system. Modified: cfe/trunk/lib/Driver/ToolChains.cpp Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=295140&r1=295139&r2=295140&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Tue Feb 14 19:16:48 2017 @@ -2757,10 +2757,11 @@ void Generic_GCC::GCCInstallationDetecto {"gcc-cross/" + CandidateTriple.str(), "../..", true}, // The Freescale PPC SDK has the gcc libraries in - // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well. - // FIXME: Only do this on Freescale triples, since some systems put a *lot* - // of files in that location, not just GCC installation data. - {CandidateTriple.str(), "..", true}, + // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well. Only do + // this on Freescale triples, though, since some systems put a *lot* of + // files in that location, not just GCC installation data. + {CandidateTriple.str(), "..", + TargetTriple.getVendor() == llvm::Triple::Freescale}, // Natively multiarch systems sometimes put the GCC triple-specific // directory within their multiarch lib directory, resulting in the _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits