summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-01-19 03:14:56 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-01-19 03:14:56 +0000
commit719736c5816bd6b0167b66bc2033fa45f632e555 (patch)
tree6af43df8d57a706a1d04956a0ad49eeeac4bf422 /clang/lib/Lex
parent7d9ce5312441d81a4c154f2823a153974b3e213f (diff)
downloadbcm5719-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.cpp14
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,
OpenPOWER on IntegriCloud