diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-09-14 20:57:14 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-09-14 20:57:14 +0000 |
| commit | 4fe9b181825d20263dd63c0b067bd80326cb241b (patch) | |
| tree | 3fd00d0a3149333d609a7a56138a2c634d9c46fd /clang/lib | |
| parent | dcd60104c6515fb1a8549cc1e6d106274e9b340f (diff) | |
| download | bcm5719-llvm-4fe9b181825d20263dd63c0b067bd80326cb241b.tar.gz bcm5719-llvm-4fe9b181825d20263dd63c0b067bd80326cb241b.zip | |
Revert my exported-macro hackery. Something is amiss
llvm-svn: 139734
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Serialization/ASTWriter.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 657c5ed29f8..28a69d4bdbb 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -2223,26 +2223,24 @@ class ASTIdentifierTableTrait { /// that needs a full IdentifierInfo structure written into the hash /// table. bool isInterestingIdentifier(IdentifierInfo *II, MacroInfo *&Macro) { + Macro = 0; + if (II->isPoisoned() || II->isExtensionToken() || II->getObjCOrBuiltinID() || II->getFETokenInfo<void>()) return true; - return hasMacroDefinition(II, Macro); - } - - bool hasMacroDefinition(IdentifierInfo *II, MacroInfo *&Macro) { if (!II->hasMacroDefinition()) return false; if (!IsModule) return true; - if (Macro || (Macro = PP.getMacroInfo(II))) + if ((Macro = PP.getMacroInfo(II))) return Macro->isExported(); - return false; + return false; } public: @@ -2263,10 +2261,11 @@ public: EmitKeyDataLength(raw_ostream& Out, IdentifierInfo* II, IdentID ID) { unsigned KeyLen = II->getLength() + 1; unsigned DataLen = 4; // 4 bytes for the persistent ID << 1 - MacroInfo *Macro = 0; + MacroInfo *Macro; if (isInterestingIdentifier(II, Macro)) { DataLen += 2; // 2 bytes for builtin ID, flags - if (hasMacroDefinition(const_cast<IdentifierInfo *>(II), Macro)) + if (II->hasMacroDefinition() && + !PP.getMacroInfo(const_cast<IdentifierInfo *>(II))->isBuiltinMacro()) DataLen += 4; for (IdentifierResolver::iterator D = IdentifierResolver::begin(II), DEnd = IdentifierResolver::end(); @@ -2291,7 +2290,7 @@ public: void EmitData(raw_ostream& Out, IdentifierInfo* II, IdentID ID, unsigned) { - MacroInfo *Macro = 0; + MacroInfo *Macro; if (!isInterestingIdentifier(II, Macro)) { clang::io::Emit32(Out, ID << 1); return; @@ -2299,16 +2298,18 @@ public: clang::io::Emit32(Out, (ID << 1) | 0x01); uint32_t Bits = 0; - bool HasMacroDefinition = hasMacroDefinition(II, Macro); + bool hasMacroDefinition + = II->hasMacroDefinition() && + (Macro || (Macro = PP.getMacroInfo(II))) && !Macro->isBuiltinMacro(); Bits = (uint32_t)II->getObjCOrBuiltinID(); - Bits = (Bits << 1) | unsigned(HasMacroDefinition); + Bits = (Bits << 1) | unsigned(hasMacroDefinition); Bits = (Bits << 1) | unsigned(II->isExtensionToken()); Bits = (Bits << 1) | unsigned(II->isPoisoned()); Bits = (Bits << 1) | unsigned(II->hasRevertedTokenIDToIdentifier()); Bits = (Bits << 1) | unsigned(II->isCPlusPlusOperatorKeyword()); clang::io::Emit16(Out, Bits); - if (HasMacroDefinition) + if (hasMacroDefinition) clang::io::Emit32(Out, Writer.getMacroOffset(II)); // Emit the declaration IDs in reverse order, because the |

