summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-11-06 07:31:36 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-11-06 07:31:36 +0000
commit28e39d4b1777a8dbae007e81d33c2657509468af (patch)
treef80a792dc46b8f2737d64ab4da6c7276ae11cc3c /clang/lib/Driver/ToolChains.cpp
parent996cb8ad848639f382341d41c7549750cb7b0d4e (diff)
downloadbcm5719-llvm-28e39d4b1777a8dbae007e81d33c2657509468af.tar.gz
bcm5719-llvm-28e39d4b1777a8dbae007e81d33c2657509468af.zip
Start pruning down the set of flags passed to CC1 for header search.
This cleans up the CC1 invocations, and reduces the overhead there. We're still hammering the filesystem looking for the C++ standard libraries though. The only reservation I have about this policy is the case of virtualized files inside of CC1, but it's not clear what the best way to solve that is. The Driver consistently queries the actual filesystem to make its decisions. Changing that would be a very large undertaking. It might be worthwhile, but it's not an immediate goal. llvm-svn: 143864
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r--clang/lib/Driver/ToolChains.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 3d4f12cb865..6d31e462043 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -56,6 +56,10 @@ using namespace clang;
/// \brief Utility function to add a system include directory to CC1 arguments.
static void addSystemInclude(const ArgList &DriverArgs, ArgStringList &CC1Args,
const Twine &Path) {
+ // Prune out non-existent directories to minimize the number of flags.
+ if (!llvm::sys::fs::exists(Path))
+ return;
+
CC1Args.push_back("-internal-isystem");
CC1Args.push_back(DriverArgs.MakeArgString(Path));
}
@@ -70,6 +74,10 @@ static void addSystemInclude(const ArgList &DriverArgs, ArgStringList &CC1Args,
/// classification.
static void addExternCSystemInclude(const ArgList &DriverArgs,
ArgStringList &CC1Args, const Twine &Path) {
+ // Prune out non-existent directories to minimize the number of flags.
+ if (!llvm::sys::fs::exists(Path))
+ return;
+
CC1Args.push_back("-internal-externc-isystem");
CC1Args.push_back(DriverArgs.MakeArgString(Path));
}
@@ -80,6 +88,10 @@ static void addSystemIncludes(const ArgList &DriverArgs,
ArrayRef<StringRef> Paths) {
for (ArrayRef<StringRef>::iterator I = Paths.begin(), E = Paths.end();
I != E; ++I) {
+ // Prune out non-existent directories to minimize the number of flags.
+ if (!llvm::sys::fs::exists(*I))
+ continue;
+
CC1Args.push_back("-internal-isystem");
CC1Args.push_back(DriverArgs.MakeArgString(*I));
}
OpenPOWER on IntegriCloud