/// supplements.
ASTContext &getContext() { return Context; }
- // FIXME: temporary hack to store declarations that we deserialized
- // before we had access to the Sema object.
- llvm::SmallVector<NamedDecl *, 16> TUDecls;
+ // \brief Contains declarations that were loaded before we have
+ // access to a Sema object.
+ llvm::SmallVector<NamedDecl *, 16> PreloadedDecls;
/// \brief Retrieve the semantic analysis object used to analyze the
/// translation unit in which the precompiled header is being
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;
Sema *SemaObj = Reader.getSema();
while (DataLen > 0) {
NamedDecl *D = cast<NamedDecl>(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
// 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;
(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;
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) {