aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Driver/ToolChains.cpp')
-rw-r--r--lib/Driver/ToolChains.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index 3d4f12cb86..6d31e46204 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/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));
}