diff options
author | Nico Weber <nicolasweber@gmx.de> | 2016-12-09 17:32:52 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2016-12-09 17:32:52 +0000 |
commit | fd8707029eb0bc5157374ed49f51665bf04859b2 (patch) | |
tree | 28587278dd1784c5639e839191bb8f52fb65afac /clang/lib/Serialization/ASTReader.cpp | |
parent | 1c4109b4c236de94e38c45189baf383e66de5b81 (diff) | |
download | bcm5719-llvm-fd8707029eb0bc5157374ed49f51665bf04859b2.tar.gz bcm5719-llvm-fd8707029eb0bc5157374ed49f51665bf04859b2.zip |
Don't assert when redefining a built-in macro in a PCH, PR29119
PCH files store the macro history for a given macro, and the whole history list
for one identifier is given to the Preprocessor at once via
Preprocessor::setLoadedMacroDirective(). This contained an assert that no macro
history exists yet for that identifier. That's usually true, but it's not true
for builtin macros, which are created in Preprocessor() before flags and pchs
are processed. Luckily, ASTWriter stops writing macro history lists at builtins
(see shouldIgnoreMacro() in ASTWriter.cpp), so the head of the history list was
missing for builtin macros. So make the assert weaker, and splice the history
list to the existing single define for builtins.
https://reviews.llvm.org/D27545
llvm-svn: 289228
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 14cc77400c0..2df90da2ef9 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -1953,7 +1953,7 @@ void ASTReader::resolvePendingMacro(IdentifierInfo *II, } if (Latest) - PP.setLoadedMacroDirective(II, Latest); + PP.setLoadedMacroDirective(II, Earliest, Latest); } ASTReader::InputFileInfo |