aboutsummaryrefslogtreecommitdiff
path: root/lib/Serialization
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-07-21 23:29:11 +0000
committerDouglas Gregor <dgregor@apple.com>2011-07-21 23:29:11 +0000
commitf5bb9ae23d68ffb1e1c37b05fc8d943bc6bff12e (patch)
treed7f2db21c4b78a5ad80bfb81dbe00e50bb8d2029 /lib/Serialization
parent409448c832d27703146b70a1137d86b020f29863 (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')
-rw-r--r--lib/Serialization/ASTReader.cpp18
-rw-r--r--lib/Serialization/ASTReaderDecl.cpp2
2 files changed, 8 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) {
diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp
index 8132ed9a5f..3d58f9552b 100644
--- a/lib/Serialization/ASTReaderDecl.cpp
+++ b/lib/Serialization/ASTReaderDecl.cpp
@@ -1688,6 +1688,7 @@ Decl *ASTReader::ReadDeclRecord(unsigned Index, DeclID ID) {
DC->setHasExternalLexicalStorage(Offsets.first != 0);
DC->setHasExternalVisibleStorage(Offsets.second != 0);
DeclContextInfo Info;
+ Info.F = Loc.F;
if (ReadDeclContextStorage(DeclsCursor, Offsets, Info))
return 0;
DeclContextInfos &Infos = DeclContextOffsets[DC];
@@ -1707,6 +1708,7 @@ Decl *ASTReader::ReadDeclRecord(unsigned Index, DeclID ID) {
DeclContextVisibleUpdates &U = I->second;
DeclContextInfos &Infos = DeclContextOffsets[DC];
DeclContextInfo Info;
+ Info.F = Loc.F;
Info.LexicalDecls = 0;
Info.NumLexicalDecls = 0;
for (DeclContextVisibleUpdates::iterator UI = U.begin(), UE = U.end();