diff options
Diffstat (limited to 'lib/Frontend/FrontendAction.cpp')
-rw-r--r-- | lib/Frontend/FrontendAction.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Frontend/FrontendAction.cpp b/lib/Frontend/FrontendAction.cpp index 742caf158b..4b642b395c 100644 --- a/lib/Frontend/FrontendAction.cpp +++ b/lib/Frontend/FrontendAction.cpp @@ -23,6 +23,7 @@ #include "clang/Parse/ParseAST.h" #include "clang/Serialization/ASTDeserializationListener.h" #include "clang/Serialization/ASTReader.h" +#include "clang/Serialization/GlobalModuleIndex.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/MemoryBuffer.h" @@ -380,6 +381,16 @@ bool FrontendAction::Execute() { } else ExecuteAction(); + // If we are supposed to rebuild the global module index, do so now unless + // an error occurred. + if (CI.getBuildGlobalModuleIndex() && CI.hasFileManager() && + CI.hasPreprocessor() && + (!CI.hasDiagnostics() || !CI.getDiagnostics().hasErrorOccurred())) { + GlobalModuleIndex::writeIndex( + CI.getFileManager(), + CI.getPreprocessor().getHeaderSearchInfo().getModuleCachePath()); + } + return true; } |