summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2012-01-25 08:04:13 +0000
committerChandler Carruth <chandlerc@gmail.com>2012-01-25 08:04:13 +0000
commita1f1fd3b60c81f38698404c628c250db63168a75 (patch)
tree15796cde215931edd5ee2f0bd8e5ae860f48abfb
parent44d69d9c25dd6215332f240b9c475e70e81a3e2c (diff)
downloadbcm5719-llvm-a1f1fd3b60c81f38698404c628c250db63168a75.tar.gz
bcm5719-llvm-a1f1fd3b60c81f38698404c628c250db63168a75.zip
Switch the Linux C++ standard library header search logic over to use
the GCC installation's multiarch suffix now that it is exposed. llvm-svn: 148938
-rw-r--r--clang/lib/Driver/ToolChains.cpp23
1 files changed, 8 insertions, 15 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 428f37cab7c..ba0c2b431bf 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -2262,19 +2262,10 @@ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
return;
}
- // Check if the target architecture specific dirs need a suffix. Note that we
- // only support the suffix-based bi-arch-like header scheme for host/target
- // mismatches of just bit width.
- // FIXME: This is using the Driver's target triple to emulate the host triple!
- llvm::Triple::ArchType HostArch = getDriver().TargetTriple.getArch();
- llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
- StringRef Suffix;
- if ((HostArch == llvm::Triple::x86 && TargetArch == llvm::Triple::x86_64) ||
- (HostArch == llvm::Triple::ppc && TargetArch == llvm::Triple::ppc64))
- Suffix = "/64";
- if ((HostArch == llvm::Triple::x86_64 && TargetArch == llvm::Triple::x86) ||
- (HostArch == llvm::Triple::ppc64 && TargetArch == llvm::Triple::ppc))
- Suffix = "/32";
+ // We need a detected GCC installation on Linux to provide libstdc++'s
+ // headers. We handled the libc++ case above.
+ if (!GCCInstallation.isValid())
+ return;
// By default, look for the C++ headers in an include directory adjacent to
// the lib directory of the GCC installation. Note that this is expect to be
@@ -2283,12 +2274,14 @@ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
StringRef InstallDir = GCCInstallation.getInstallPath();
StringRef Version = GCCInstallation.getVersion();
if (!addLibStdCXXIncludePaths(LibDir + "/../include/c++/" + Version,
- GCCInstallation.getTriple().str() + Suffix,
+ (GCCInstallation.getTriple().str() +
+ GCCInstallation.getMultiarchSuffix()),
DriverArgs, CC1Args)) {
// Gentoo is weird and places its headers inside the GCC install, so if the
// first attempt to find the headers fails, try this pattern.
addLibStdCXXIncludePaths(InstallDir + "/include/g++-v4",
- GCCInstallation.getTriple().str() + Suffix,
+ (GCCInstallation.getTriple().str() +
+ GCCInstallation.getMultiarchSuffix()),
DriverArgs, CC1Args);
}
}
OpenPOWER on IntegriCloud