From a126651270acf17c434f60f86a3ab3687f87813a Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 19 Dec 2011 21:09:25 +0000 Subject: [PATCH] Eliminate the first->last redeclaration map from the AST file format. It's no longer being used, now that we have a new implementation of redeclaration chains. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146905 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Serialization/ASTBitCodes.h | 18 +++++++----------- include/clang/Serialization/ASTReader.h | 6 ------ lib/Serialization/ASTReader.cpp | 10 ---------- lib/Serialization/ASTWriter.cpp | 21 +++++---------------- 4 files changed, 12 insertions(+), 43 deletions(-) diff --git a/include/clang/Serialization/ASTBitCodes.h b/include/clang/Serialization/ASTBitCodes.h index cce6916b4e..a4b6b8f45e 100644 --- a/include/clang/Serialization/ASTBitCodes.h +++ b/include/clang/Serialization/ASTBitCodes.h @@ -366,10 +366,10 @@ namespace clang { /// \brief Record code for an update to the TU's lexically contained /// declarations. TU_UPDATE_LEXICAL = 28, - - /// \brief Record code for an update to first decls pointing to the - /// latest redeclarations. - REDECLS_UPDATE_LATEST = 29, + + /// \brief Record code for the array describing the first/last local + /// redeclarations of each entity. + LOCAL_REDECLARATIONS = 29, /// \brief Record code for declarations that Sema keeps references of. SEMA_DECL_REFS = 30, @@ -445,18 +445,14 @@ namespace clang { /// \brief Record code for ObjC categories in a module that are chained to /// an interface. - OBJC_CHAINED_CATEGORIES, + OBJC_CHAINED_CATEGORIES = 49, /// \brief Record code for a file sorted array of DeclIDs in a module. - FILE_SORTED_DECLS, + FILE_SORTED_DECLS = 50, /// \brief Record code for an array of all of the (sub)modules that were /// imported by the AST file. - IMPORTED_MODULES, - - /// \brief Record code for the array describing the first/last local - /// redeclarations of each entity. - LOCAL_REDECLARATIONS + IMPORTED_MODULES = 51 }; /// \brief Record types used within a source manager block. diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h index bbeacb4f22..fd0a897518 100644 --- a/include/clang/Serialization/ASTReader.h +++ b/include/clang/Serialization/ASTReader.h @@ -333,12 +333,6 @@ private: /// declarations that have not yet been linked to their definitions. llvm::SmallPtrSet PendingDefinitions; - typedef llvm::DenseMap - FirstLatestDeclIDMap; - /// \brief Map of first declarations from a chained PCH that point to the - /// most recent declarations in another AST file. - FirstLatestDeclIDMap FirstLatestDeclIDs; - /// \brief Set of ObjC interfaces that have categories chained to them in /// other modules. llvm::DenseSet ObjCChainedCategoriesInterfaces; diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index bc4fa668b3..1efc95408b 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1882,16 +1882,6 @@ ASTReader::ReadASTBlock(ModuleFile &F) { break; } - case REDECLS_UPDATE_LATEST: { - assert(Record.size() % 2 == 0 && "Expected pairs of DeclIDs"); - for (unsigned i = 0, e = Record.size(); i < e; /* in loop */) { - DeclID First = ReadDeclID(F, Record, i); - DeclID Latest = ReadDeclID(F, Record, i); - FirstLatestDeclIDs[First] = Latest; - } - break; - } - case LANGUAGE_OPTIONS: if (ParseLanguageOptions(Record) && !DisableValidation) return IgnorePCH; diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index e1af601614..1776b97bb0 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -778,7 +778,7 @@ void ASTWriter::WriteBlockInfoBlock() { RECORD(IMPORTS); RECORD(REFERENCED_SELECTOR_POOL); RECORD(TU_UPDATE_LEXICAL); - RECORD(REDECLS_UPDATE_LATEST); + RECORD(LOCAL_REDECLARATIONS); RECORD(SEMA_DECL_REFS); RECORD(WEAK_UNDECLARED_IDENTIFIERS); RECORD(PENDING_IMPLICIT_INSTANTIATIONS); @@ -798,8 +798,10 @@ void ASTWriter::WriteBlockInfoBlock() { RECORD(KNOWN_NAMESPACES); RECORD(MODULE_OFFSET_MAP); RECORD(SOURCE_MANAGER_LINE_TABLE); - RECORD(LOCAL_REDECLARATIONS); - + RECORD(OBJC_CHAINED_CATEGORIES); + RECORD(FILE_SORTED_DECLS); + RECORD(IMPORTED_MODULES); + // SourceManager Block. BLOCK(SOURCE_MANAGER_BLOCK); RECORD(SM_SLOC_FILE_ENTRY); @@ -3313,19 +3315,6 @@ void ASTWriter::WriteASTCore(Sema &SemaRef, MemorizeStatCalls *StatCalls, Stream.EmitRecord(SPECIAL_TYPES, SpecialTypes); - /// Build a record containing first declarations from a chained PCH and the - /// most recent declarations in this AST that they point to. - RecordData FirstLatestDeclIDs; - for (FirstLatestDeclMap::iterator I = FirstLatestDecls.begin(), - E = FirstLatestDecls.end(); - I != E; ++I) { - AddDeclRef(I->first, FirstLatestDeclIDs); - AddDeclRef(I->second, FirstLatestDeclIDs); - } - - if (!FirstLatestDeclIDs.empty()) - Stream.EmitRecord(REDECLS_UPDATE_LATEST, FirstLatestDeclIDs); - // Write the record containing external, unnamed definitions. if (!ExternalDefinitions.empty()) Stream.EmitRecord(EXTERNAL_DEFINITIONS, ExternalDefinitions);