From: Douglas Gregor Date: Wed, 22 Apr 2009 21:15:06 +0000 (+0000) Subject: Eliminate some FIXMEs in the PCH reader that were either already fixed or aren't... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6cfc1a8b7582b8433b61222502effb018c534393;p=clang Eliminate some FIXMEs in the PCH reader that were either already fixed or aren't actually things to fix git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69827 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Frontend/PCHReader.h b/include/clang/Frontend/PCHReader.h index a32be0dd7b..cade8af225 100644 --- a/include/clang/Frontend/PCHReader.h +++ b/include/clang/Frontend/PCHReader.h @@ -327,9 +327,9 @@ public: /// supplements. ASTContext &getContext() { return Context; } - // FIXME: temporary hack to store declarations that we deserialized - // before we had access to the Sema object. - llvm::SmallVector TUDecls; + // \brief Contains declarations that were loaded before we have + // access to a Sema object. + llvm::SmallVector PreloadedDecls; /// \brief Retrieve the semantic analysis object used to analyze the /// translation unit in which the precompiled header is being diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp index c6c34e9749..6de13045bb 100644 --- a/lib/Frontend/PCHReader.cpp +++ b/lib/Frontend/PCHReader.cpp @@ -1107,7 +1107,7 @@ public: const unsigned char* d, unsigned DataLen) { using namespace clang::io; - uint32_t Bits = ReadUnalignedLE32(d); // FIXME: use these? + uint32_t Bits = ReadUnalignedLE32(d); bool CPlusPlusOperatorKeyword = Bits & 0x01; Bits >>= 1; bool Poisoned = Bits & 0x01; @@ -1160,7 +1160,6 @@ public: Sema *SemaObj = Reader.getSema(); while (DataLen > 0) { NamedDecl *D = cast(Reader.GetDecl(ReadUnalignedLE32(d))); - if (SemaObj) { // Introduce this declaration into the translation-unit scope // and add it to the declaration chain for this identifier, so @@ -1171,9 +1170,7 @@ public: // Queue this declaration so that it will be added to the // translation unit scope and identifier's declaration chain // once a Sema object is known. - // FIXME: This is a temporary hack. It will go away once we have - // lazy deserialization of macros. - Reader.TUDecls.push_back(D); + Reader.PreloadedDecls.push_back(D); } DataLen -= 4; @@ -1680,8 +1677,6 @@ PCHReader::ReadPCHBlock(uint64_t &PreprocessorBlockOffset) { (const unsigned char *)IdentifierTableData + Record[0], (const unsigned char *)IdentifierTableData, PCHIdentifierLookupTrait(*this)); - // FIXME: What about any identifiers already placed into the - // identifier table? Should we load decls with those names now? PP.getIdentifierTable().setExternalIdentifierLookup(this); break; @@ -2521,14 +2516,13 @@ void PCHReader::PrintStats() { void PCHReader::InitializeSema(Sema &S) { SemaObj = &S; - // FIXME: this makes sure any declarations that were deserialized - // "too early" still get added to the identifier's declaration - // chains. - for (unsigned I = 0, N = TUDecls.size(); I != N; ++I) { - SemaObj->TUScope->AddDecl(Action::DeclPtrTy::make(TUDecls[I])); - SemaObj->IdResolver.AddDecl(TUDecls[I]); - } - TUDecls.clear(); + // Makes sure any declarations that were deserialized "too early" + // still get added to the identifier's declaration chains. + for (unsigned I = 0, N = PreloadedDecls.size(); I != N; ++I) { + SemaObj->TUScope->AddDecl(Action::DeclPtrTy::make(PreloadedDecls[I])); + SemaObj->IdResolver.AddDecl(PreloadedDecls[I]); + } + PreloadedDecls.clear(); } IdentifierInfo* PCHReader::get(const char *NameStart, const char *NameEnd) {