diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-07-21 23:29:11 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-07-21 23:29:11 +0000 |
commit | f5bb9ae23d68ffb1e1c37b05fc8d943bc6bff12e (patch) | |
tree | d7f2db21c4b78a5ad80bfb81dbe00e50bb8d2029 /lib/Serialization/ASTReader.cpp | |
parent | 409448c832d27703146b70a1137d86b020f29863 (diff) |
Clean up the rest of the local -> global declaration ID mappings
within the ASTReader (I hope).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135720 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization/ASTReader.cpp')
-rw-r--r-- | lib/Serialization/ASTReader.cpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 74fbd6cc5e..52669d75e4 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -719,7 +719,7 @@ public: if (DataLen > 0) { llvm::SmallVector<uint32_t, 4> DeclIDs; for (; DataLen > 0; DataLen -= 4) - DeclIDs.push_back(ReadUnalignedLE32(d)); + DeclIDs.push_back(Reader.getGlobalDeclID(F, ReadUnalignedLE32(d))); Reader.SetGloballyVisibleDecls(II, DeclIDs); } @@ -2062,6 +2062,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { case TU_UPDATE_LEXICAL: { DeclContextInfo Info = { + &F, /* No visible information */ 0, reinterpret_cast<const KindDeclIDPair *>(BlobStart), BlobLen / sizeof(KindDeclIDPair) @@ -2079,7 +2080,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { ASTDeclContextNameLookupTrait(*this)); if (ID == 1 && Context) { // Is it the TU? DeclContextInfo Info = { - Table, /* No lexical inforamtion */ 0, 0 + &F, Table, /* No lexical inforamtion */ 0, 0 }; DeclContextOffsets[Context->getTranslationUnitDecl()].push_back(Info); } else @@ -4121,9 +4122,7 @@ ExternalLoadResult ASTReader::FindExternalLexicalDecls(const DeclContext *DC, if (isKindWeWant && !isKindWeWant((Decl::Kind)ID->first)) continue; - // FIXME: Modules need to know whether this is already mapped to a - // global ID or not. - Decl *D = GetDecl(ID->second); + Decl *D = GetLocalDecl(*I->F, ID->second); assert(D && "Null decl in lexical decls"); Decls.push_back(D); } @@ -4158,11 +4157,9 @@ ASTReader::FindExternalVisibleDeclsByName(const DeclContext *DC, if (Pos == LookupTable->end()) continue; - // FIXME: Modules need to know whether this is already mapped to a - // global ID or not. ASTDeclContextNameLookupTrait::data_type Data = *Pos; for (; Data.first != Data.second; ++Data.first) - Decls.push_back(cast<NamedDecl>(GetDecl(*Data.first))); + Decls.push_back(GetLocalDeclAs<NamedDecl>(*I->F, *Data.first)); break; } @@ -4194,10 +4191,8 @@ void ASTReader::MaterializeVisibleDecls(const DeclContext *DC) { = *ItemI; ASTDeclContextNameLookupTrait::data_type Data = Val.second; Decls.clear(); - // FIXME: Modules need to know whether this is already mapped to a - // global ID or not. for (; Data.first != Data.second; ++Data.first) - Decls.push_back(cast<NamedDecl>(GetDecl(*Data.first))); + Decls.push_back(GetLocalDeclAs<NamedDecl>(*I->F, *Data.first)); MaterializeVisibleDeclsForName(DC, Val.first, Decls); } } @@ -4664,7 +4659,6 @@ ASTReader::SetGloballyVisibleDecls(IdentifierInfo *II, } for (unsigned I = 0, N = DeclIDs.size(); I != N; ++I) { - // FIXME: Are these IDs local or global? It's not clear! NamedDecl *D = cast<NamedDecl>(GetDecl(DeclIDs[I])); if (SemaObj) { if (SemaObj->TUScope) { |