diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2016-07-13 20:35:26 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2016-07-13 20:35:26 +0000 |
commit | 70ec1c7e62461ad559cc302adbd2f4e83e2fc264 (patch) | |
tree | 45b7751d3f95398d2109446dfb642e2640a60698 /clang/lib/Serialization/ASTReader.cpp | |
parent | 56a76961aae9cf7e4bed4647cdc7b247a53dbe0a (diff) | |
download | bcm5719-llvm-70ec1c7e62461ad559cc302adbd2f4e83e2fc264.tar.gz bcm5719-llvm-70ec1c7e62461ad559cc302adbd2f4e83e2fc264.zip |
[PCH/preamble] Make sure that if the preamble/PCH was serialized with errors that we set diagnostic engine state appropriately.
Otherwise there can be a crash with CFG analysis warnings doing work on invalid AST.
Fixes crash of rdar://26224134
llvm-svn: 275313
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 820f339a75d..b35bd7bd329 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -2309,6 +2309,11 @@ ASTReader::ReadControlBlock(ModuleFile &F, Diag(diag::err_pch_with_compiler_errors); return HadErrors; } + if (hasErrors) { + Diags.ErrorOccurred = true; + Diags.UncompilableErrorOccurred = true; + Diags.UnrecoverableErrorOccurred = true; + } F.RelocatablePCH = Record[4]; // Relative paths in a relocatable PCH are relative to our sysroot. |