summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTReader.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-07-29 00:21:44 +0000
committerDouglas Gregor <dgregor@apple.com>2011-07-29 00:21:44 +0000
commit8ab4ea8571ae644dc15f7cc77af03ac0a499c3fb (patch)
treeb37ba86b42da8ab076ffb1ed0d4c816717ed89cb /clang/lib/Serialization/ASTReader.cpp
parent530341d748ea9f9735ddf31b12ed9f5074471669 (diff)
downloadbcm5719-llvm-8ab4ea8571ae644dc15f7cc77af03ac0a499c3fb.tar.gz
bcm5719-llvm-8ab4ea8571ae644dc15f7cc77af03ac0a499c3fb.zip
Move the base type ID from the ASTReader's global type map into the
Module itself, which makes more sense. This pattern to be repeated several more times. llvm-svn: 136436
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 34af0b70db9..77286b78984 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -2054,12 +2054,11 @@ ASTReader::ReadASTBlock(Module &F) {
}
F.TypeOffsets = (const uint32_t *)BlobStart;
F.LocalNumTypes = Record[0];
-
+ F.BaseTypeID = getTotalNumTypes();
+
// Introduce the global -> local mapping for types within this
// AST file.
- GlobalTypeMap.insert(std::make_pair(getTotalNumTypes() + 1,
- std::make_pair(&F,
- -getTotalNumTypes())));
+ GlobalTypeMap.insert(std::make_pair(getTotalNumTypes() + 1, &F));
TypesLoaded.resize(TypesLoaded.size() + F.LocalNumTypes);
break;
@@ -3218,8 +3217,8 @@ void ASTReader::ReadPragmaDiagnosticMappings(Diagnostic &Diag) {
ASTReader::RecordLocation ASTReader::TypeCursorForIndex(unsigned Index) {
GlobalTypeMapType::iterator I = GlobalTypeMap.find(Index+1);
assert(I != GlobalTypeMap.end() && "Corrupted global type map");
- return RecordLocation(I->second.first,
- I->second.first->TypeOffsets[Index + I->second.second]);
+ Module *M = I->second;
+ return RecordLocation(M, M->TypeOffsets[Index - M->BaseTypeID]);
}
/// \brief Read and return the type with the given index..
@@ -4374,7 +4373,7 @@ void ASTReader::dump() {
llvm::errs() << "*** AST File Remapping:\n";
dumpModuleIDMap("Global bit offset map", GlobalBitOffsetsMap);
dumpModuleIDMap("Global source location entry map", GlobalSLocEntryMap);
- dumpModuleIDOffsetMap("Global type map", GlobalTypeMap);
+ dumpModuleIDMap("Global type map", GlobalTypeMap);
dumpModuleIDOffsetMap("Global declaration map", GlobalDeclMap);
dumpModuleIDOffsetMap("Global identifier map", GlobalIdentifierMap);
dumpModuleIDOffsetMap("Global selector map", GlobalSelectorMap);
OpenPOWER on IntegriCloud