svn commit: r259157 - in stable: 10/contrib/llvm/tools/clang/lib/Driver 9/contrib/llvm/tools/clang/lib/Driver
Dimitry Andric
dim at FreeBSD.org
Tue Dec 10 07:25:26 UTC 2013
Author: dim
Date: Tue Dec 10 07:25:25 2013
New Revision: 259157
URL: http://svnweb.freebsd.org/changeset/base/259157
Log:
MFC r259053:
Pull in r196590 from upstream clang trunk (by rdivacky):
Move the body of GCCInstallationDetector ctor into an init() function
and call it from its only user. The linux toolchain. This saves quite
a lot of directory searching on other platforms.
See http://docs.freebsd.org/cgi/mid.cgi?51E6FAF5.3080802 for the
original discussion. With this fix, the search for gcc installations is
completely eliminated on FreeBSD.
Reported by: Kurt Lidl <lidl at pix.net>
Modified:
stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.h
Directory Properties:
stable/10/ (props changed)
Changes in other areas also in this revision:
Modified:
stable/9/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
stable/9/contrib/llvm/tools/clang/lib/Driver/ToolChains.h
Directory Properties:
stable/9/contrib/llvm/ (props changed)
stable/9/contrib/llvm/tools/clang/ (props changed)
Modified: stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
==============================================================================
--- stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Tue Dec 10 05:01:01 2013 (r259156)
+++ stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Tue Dec 10 07:25:25 2013 (r259157)
@@ -991,7 +991,7 @@ static StringRef getGCCToolchainDir(cons
return GCC_INSTALL_PREFIX;
}
-/// \brief Construct a GCCInstallationDetector from the driver.
+/// \brief Initialize a GCCInstallationDetector from the driver.
///
/// This performs all of the autodetection and sets up the various paths.
/// Once constructed, a GCCInstallationDetector is essentially immutable.
@@ -1000,11 +1000,9 @@ static StringRef getGCCToolchainDir(cons
/// should instead pull the target out of the driver. This is currently
/// necessary because the driver doesn't store the final version of the target
/// triple.
-Generic_GCC::GCCInstallationDetector::GCCInstallationDetector(
- const Driver &D,
- const llvm::Triple &TargetTriple,
- const ArgList &Args)
- : IsValid(false) {
+void
+Generic_GCC::GCCInstallationDetector::init(
+ const Driver &D, const llvm::Triple &TargetTriple, const ArgList &Args) {
llvm::Triple MultiarchTriple
= TargetTriple.isArch32Bit() ? TargetTriple.get64BitArchVariant()
: TargetTriple.get32BitArchVariant();
@@ -1448,7 +1446,7 @@ void Generic_GCC::GCCInstallationDetecto
Generic_GCC::Generic_GCC(const Driver &D, const llvm::Triple& Triple,
const ArgList &Args)
- : ToolChain(D, Triple, Args), GCCInstallation(getDriver(), Triple, Args) {
+ : ToolChain(D, Triple, Args), GCCInstallation() {
getProgramPaths().push_back(getDriver().getInstalledDir());
if (getDriver().getInstalledDir() != getDriver().Dir)
getProgramPaths().push_back(getDriver().Dir);
@@ -2243,6 +2241,7 @@ static StringRef getMultilibDir(const ll
Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
: Generic_ELF(D, Triple, Args) {
+ GCCInstallation.init(D, Triple, Args);
llvm::Triple::ArchType Arch = Triple.getArch();
std::string SysRoot = computeSysRoot(Args);
Modified: stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.h
==============================================================================
--- stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.h Tue Dec 10 05:01:01 2013 (r259156)
+++ stable/10/contrib/llvm/tools/clang/lib/Driver/ToolChains.h Tue Dec 10 07:25:25 2013 (r259157)
@@ -78,7 +78,8 @@ protected:
GCCVersion Version;
public:
- GCCInstallationDetector(const Driver &D, const llvm::Triple &TargetTriple,
+ GCCInstallationDetector() : IsValid(false) {}
+ void init(const Driver &D, const llvm::Triple &TargetTriple,
const ArgList &Args);
/// \brief Check whether we detected a valid GCC install.
More information about the svn-src-stable-10
mailing list