diff options
Diffstat (limited to 'lib/Serialization/ASTReader.cpp')
-rw-r--r-- | lib/Serialization/ASTReader.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 61c3a5c2ff..9f3d7504c7 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -2046,6 +2046,13 @@ ASTReader::ReadASTBlock(PerFileData &F) { } F.DeclOffsets = (const uint32_t *)BlobStart; F.LocalNumDecls = Record[0]; + + // Introduce the global -> local mapping for declarations within this + GlobalDeclMap.insert(std::make_pair(getTotalNumDecls() + 1, + std::make_pair(&F, + -getTotalNumDecls()))); + DeclsLoaded.resize(DeclsLoaded.size() + F.LocalNumDecls); + break; case TU_UPDATE_LEXICAL: { @@ -2522,14 +2529,13 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName, } // Allocate space for loaded slocentries, identifiers, decls and types. - unsigned TotalNumIdentifiers = 0, TotalNumTypes = 0, TotalNumDecls = 0, + unsigned TotalNumIdentifiers = 0, TotalNumTypes = 0, TotalNumPreallocatedPreprocessingEntities = 0, TotalNumMacroDefs = 0, TotalNumSelectors = 0; for (unsigned I = 0, N = Chain.size(); I != N; ++I) { TotalNumSLocEntries += Chain[I]->LocalNumSLocEntries; TotalNumIdentifiers += Chain[I]->LocalNumIdentifiers; TotalNumTypes += Chain[I]->LocalNumTypes; - TotalNumDecls += Chain[I]->LocalNumDecls; TotalNumPreallocatedPreprocessingEntities += Chain[I]->NumPreallocatedPreprocessingEntities; TotalNumMacroDefs += Chain[I]->LocalNumMacroDefinitions; @@ -2537,7 +2543,6 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName, } IdentifiersLoaded.resize(TotalNumIdentifiers); TypesLoaded.resize(TotalNumTypes); - DeclsLoaded.resize(TotalNumDecls); MacroDefinitionsLoaded.resize(TotalNumMacroDefs); if (PP) { if (TotalNumIdentifiers > 0) |