@@ -216,7 +216,8 @@ const unsigned DefaultPreambleRebuildInterval = 5;
216216static llvm::sys::cas_flag ActiveASTUnitObjects;
217217
218218ASTUnit::ASTUnit (bool _MainFileIsAST)
219- : Reader(0 ), OnlyLocalDecls(false ), CaptureDiagnostics(false ),
219+ : Reader(0 ), HadModuleLoaderFatalFailure(false ),
220+ OnlyLocalDecls(false ), CaptureDiagnostics(false ),
220221 MainFileIsAST(_MainFileIsAST),
221222 TUKind(TU_Complete), WantTiming(getenv(" LIBCLANG_TIMING" )),
222223 OwnsRemappedFileBuffers(true ),
@@ -1705,6 +1706,7 @@ void ASTUnit::transferASTDataFromCompilerInstance(CompilerInstance &CI) {
17051706 CI.setFileManager (0 );
17061707 Target = &CI.getTarget ();
17071708 Reader = CI.getModuleManager ();
1709+ HadModuleLoaderFatalFailure = CI.hadModuleLoaderFatalFailure ();
17081710}
17091711
17101712StringRef ASTUnit::getMainFileName () const {
@@ -2504,6 +2506,9 @@ void ASTUnit::CodeComplete(StringRef File, unsigned Line, unsigned Column,
25042506}
25052507
25062508bool ASTUnit::Save (StringRef File) {
2509+ if (HadModuleLoaderFatalFailure)
2510+ return true ;
2511+
25072512 // Write to a temporary file and later rename it to the actual file, to avoid
25082513 // possible race conditions.
25092514 SmallString<128 > TempPath;
0 commit comments