From 61a3896d9fe122dafef192a00a7672315761424f Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Wed, 6 Mar 2013 18:12:44 +0000 Subject: [PATCH] [PCH] We don't need to instantiate HeaderFileInfoTrait in ASTReader more than once. We can just re-use the one from HeaderFileInfoLookupTable. llvm-svn: 176565 --- clang/include/clang/Serialization/Module.h | 4 ---- clang/lib/Serialization/ASTReader.cpp | 15 ++++----------- clang/lib/Serialization/Module.cpp | 2 +- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/clang/include/clang/Serialization/Module.h b/clang/include/clang/Serialization/Module.h index abf45995f248..89c604f393ed 100644 --- a/clang/include/clang/Serialization/Module.h +++ b/clang/include/clang/Serialization/Module.h @@ -289,10 +289,6 @@ public: /// the header files. void *HeaderFileInfoTable; - /// \brief Actual data for the list of framework names used in the header - /// search information. - const char *HeaderFileFrameworkStrings; - // === Submodule information === /// \brief The number of submodules in this module. unsigned LocalNumSubmodules; diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index c8c1cd9cad79..53474f5b0b5c 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -2476,7 +2476,6 @@ bool ASTReader::ReadASTBlock(ModuleFile &F) { case HEADER_SEARCH_TABLE: { F.HeaderFileInfoTableData = Blob.data(); F.LocalNumHeaderFileInfos = Record[1]; - F.HeaderFileFrameworkStrings = Blob.data() + Record[2]; if (Record[0]) { F.HeaderFileInfoTable = HeaderFileInfoLookupTable::Create( @@ -4092,31 +4091,25 @@ Optional ASTReader::isPreprocessedEntityInFileID(unsigned Index, namespace { /// \brief Visitor used to search for information about a header file. class HeaderFileInfoVisitor { - ASTReader &Reader; const FileEntry *FE; Optional HFI; public: - HeaderFileInfoVisitor(ASTReader &Reader, const FileEntry *FE) - : Reader(Reader), FE(FE) { } + explicit HeaderFileInfoVisitor(const FileEntry *FE) + : FE(FE) { } static bool visit(ModuleFile &M, void *UserData) { HeaderFileInfoVisitor *This = static_cast(UserData); - HeaderFileInfoTrait Trait(This->Reader, M, - &This->Reader.getPreprocessor().getHeaderSearchInfo(), - M.HeaderFileFrameworkStrings); - HeaderFileInfoLookupTable *Table = static_cast(M.HeaderFileInfoTable); if (!Table) return false; // Look in the on-disk hash table for an entry for this file name. - HeaderFileInfoLookupTable::iterator Pos = Table->find(This->FE->getName(), - &Trait); + HeaderFileInfoLookupTable::iterator Pos = Table->find(This->FE->getName()); if (Pos == Table->end()) return false; @@ -4129,7 +4122,7 @@ namespace { } HeaderFileInfo ASTReader::GetHeaderFileInfo(const FileEntry *FE) { - HeaderFileInfoVisitor Visitor(*this, FE); + HeaderFileInfoVisitor Visitor(FE); ModuleMgr.visit(&HeaderFileInfoVisitor::visit, &Visitor); if (Optional HFI = Visitor.getHeaderFileInfo()) { if (Listener) diff --git a/clang/lib/Serialization/Module.cpp b/clang/lib/Serialization/Module.cpp index 27242d54da9d..2eb397176a12 100644 --- a/clang/lib/Serialization/Module.cpp +++ b/clang/lib/Serialization/Module.cpp @@ -33,7 +33,7 @@ ModuleFile::ModuleFile(ModuleKind Kind, unsigned Generation) PreprocessedEntityOffsets(0), NumPreprocessedEntities(0), LocalNumHeaderFileInfos(0), HeaderFileInfoTableData(0), HeaderFileInfoTable(0), - HeaderFileFrameworkStrings(0), LocalNumSubmodules(0), BaseSubmoduleID(0), + LocalNumSubmodules(0), BaseSubmoduleID(0), LocalNumSelectors(0), SelectorOffsets(0), BaseSelectorID(0), SelectorLookupTableData(0), SelectorLookupTable(0), LocalNumDecls(0), DeclOffsets(0), BaseDeclID(0),