diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Frontend/PCHReader.cpp | 23 | ||||
-rw-r--r-- | lib/Frontend/PCHWriter.cpp | 6 |
2 files changed, 7 insertions, 22 deletions
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp index 0502e674a9..d5cf75ce3b 100644 --- a/lib/Frontend/PCHReader.cpp +++ b/lib/Frontend/PCHReader.cpp @@ -689,9 +689,6 @@ public: uint32_t Offset = ReadUnalignedLE32(d); Reader.ReadMacroRecord(Stream, Offset); DataLen -= 4; - } else if (II->hasMacroDefinition() && !Reader.isBuiltinMacro(II)) { - // A previous part of the chain added a macro, but this part #undefed it. - Reader.EraseMacro(II); } // Read all of the declarations visible at global scope with this @@ -1389,15 +1386,6 @@ MacroDefinition *PCHReader::getMacroDefinition(pch::IdentID ID) { return MacroDefinitionsLoaded[ID]; } -void PCHReader::EraseMacro(IdentifierInfo *II) { - PP->setMacroInfo(II, 0); -} - -bool PCHReader::isBuiltinMacro(IdentifierInfo *II) { - assert(II->hasMacroDefinition() && "Identifier is not a macro"); - return PP->getMacroInfo(II)->isBuiltinMacro(); -} - /// \brief If we are loading a relocatable PCH file, and the filename is /// not an absolute path, add the system root to the beginning of the file /// name. @@ -3184,12 +3172,11 @@ void PCHReader::InitializeSema(Sema &S) { } IdentifierInfo* PCHReader::get(const char *NameStart, const char *NameEnd) { - // Try to find this name within our on-disk hash tables. We need to aggregate - // the info from all of them. - IdentifierInfo *II = 0; + // Try to find this name within our on-disk hash tables. We start with the + // most recent one, since that one contains the most up-to-date info. for (unsigned I = 0, N = Chain.size(); I != N; ++I) { PCHIdentifierLookupTable *IdTable - = (PCHIdentifierLookupTable *)Chain[N - I - 1]->IdentifierLookupTable; + = (PCHIdentifierLookupTable *)Chain[I]->IdentifierLookupTable; if (!IdTable) continue; std::pair<const char*, unsigned> Key(NameStart, NameEnd - NameStart); @@ -3200,9 +3187,9 @@ IdentifierInfo* PCHReader::get(const char *NameStart, const char *NameEnd) { // Dereferencing the iterator has the effect of building the // IdentifierInfo node and populating it with the various // declarations it needs. - II = *Pos; + return *Pos; } - return II; + return 0; } std::pair<ObjCMethodList, ObjCMethodList> diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp index 8bf85efd62..641492ca59 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -1819,8 +1819,7 @@ public: for (IdentifierResolver::iterator D = IdentifierResolver::begin(II), DEnd = IdentifierResolver::end(); D != DEnd; ++D) - if (!Writer.hasChain() || (*D)->getPCHLevel() == 0) - DataLen += sizeof(pch::DeclID); + DataLen += sizeof(pch::DeclID); } clang::io::Emit16(Out, DataLen); // We emit the key length after the data length so that every @@ -1872,8 +1871,7 @@ public: for (llvm::SmallVector<Decl *, 16>::reverse_iterator D = Decls.rbegin(), DEnd = Decls.rend(); D != DEnd; ++D) - if (!Writer.hasChain() || (*D)->getPCHLevel() == 0) - clang::io::Emit32(Out, Writer.getDeclID(*D)); + clang::io::Emit32(Out, Writer.getDeclID(*D)); } }; } // end anonymous namespace |