diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-19 03:14:56 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-19 03:14:56 +0000 |
| commit | 719736c5816bd6b0167b66bc2033fa45f632e555 (patch) | |
| tree | 6af43df8d57a706a1d04956a0ad49eeeac4bf422 /clang/lib/Lex | |
| parent | 7d9ce5312441d81a4c154f2823a153974b3e213f (diff) | |
| download | bcm5719-llvm-719736c5816bd6b0167b66bc2033fa45f632e555.tar.gz bcm5719-llvm-719736c5816bd6b0167b66bc2033fa45f632e555.zip | |
[PCH/Modules] Revert r172843, it caused a module to fail building.
llvm-svn: 172884
Diffstat (limited to 'clang/lib/Lex')
| -rw-r--r-- | clang/lib/Lex/PPMacroExpansion.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp index ba2b8efe7f1..7901705fec3 100644 --- a/clang/lib/Lex/PPMacroExpansion.cpp +++ b/clang/lib/Lex/PPMacroExpansion.cpp @@ -55,9 +55,11 @@ void Preprocessor::setMacroInfo(IdentifierInfo *II, MacroInfo *MI) { II->setChangedSinceDeserialization(); } -void Preprocessor::addLoadedMacroInfo(IdentifierInfo *II, MacroInfo *MI) { +void Preprocessor::addLoadedMacroInfo(IdentifierInfo *II, MacroInfo *MI, + MacroInfo *Hint) { assert(MI && "Missing macro?"); assert(MI->isFromAST() && "Macro is not from an AST?"); + assert(!MI->getPreviousDefinition() && "Macro already in chain?"); MacroInfo *&StoredMI = Macros[II]; @@ -77,7 +79,7 @@ void Preprocessor::addLoadedMacroInfo(IdentifierInfo *II, MacroInfo *MI) { // Simple case: if this is the first actual definition, just put it at // th beginning. if (!StoredMI->isDefined()) { - MI->getFirstDefinition()->setPreviousDefinition(StoredMI); + MI->setPreviousDefinition(StoredMI); StoredMI = MI; II->setHasMacroDefinition(true); @@ -110,14 +112,16 @@ void Preprocessor::addLoadedMacroInfo(IdentifierInfo *II, MacroInfo *MI) { MI->setAmbiguous(true); // Wire this macro information into the chain. - MI->getFirstDefinition()->setPreviousDefinition( - Prev->getPreviousDefinition()); + MI->setPreviousDefinition(Prev->getPreviousDefinition()); Prev->setPreviousDefinition(MI); return; } // The macro is not a definition; put it at the end of the list. - StoredMI->getFirstDefinition()->setPreviousDefinition(MI); + MacroInfo *Prev = Hint? Hint : StoredMI; + while (Prev->getPreviousDefinition()) + Prev = Prev->getPreviousDefinition(); + Prev->setPreviousDefinition(MI); } void Preprocessor::makeLoadedMacroInfoVisible(IdentifierInfo *II, |

