diff options
Diffstat (limited to 'lib/Driver/ToolChains.cpp')
-rw-r--r-- | lib/Driver/ToolChains.cpp | 12 |
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)); } |