summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-12-12 23:17:57 +0000
committerDouglas Gregor <dgregor@apple.com>2011-12-12 23:17:57 +0000
commit18b5864b83ab5c0df67b22f789ef992e40906869 (patch)
tree70a3d67e34f9eafd31506ec8b3d74050008583cb /clang
parentb989e6e50a246f1230f6ace650343a0cf6256089 (diff)
downloadbcm5719-llvm-18b5864b83ab5c0df67b22f789ef992e40906869.tar.gz
bcm5719-llvm-18b5864b83ab5c0df67b22f789ef992e40906869.zip
Tweak submodule ID handling in the AST writer
llvm-svn: 146445
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Serialization/ASTWriter.cpp14
-rw-r--r--clang/lib/Serialization/ASTWriterDecl.cpp1
2 files changed, 9 insertions, 6 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 83ad885969d..6cce0afc50a 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -1970,7 +1970,7 @@ void ASTWriter::WriteSubmodules(Module *WritingModule) {
if (!Mod->Imports.empty()) {
Record.clear();
for (unsigned I = 0, N = Mod->Imports.size(); I != N; ++I) {
- unsigned ImportedID = SubmoduleIDs[Mod->Imports[I]];
+ unsigned ImportedID = getSubmoduleID(Mod->Imports[I]);
assert(ImportedID && "Unknown submodule!");
Record.push_back(ImportedID);
}
@@ -1981,10 +1981,14 @@ void ASTWriter::WriteSubmodules(Module *WritingModule) {
if (!Mod->Exports.empty()) {
Record.clear();
for (unsigned I = 0, N = Mod->Exports.size(); I != N; ++I) {
- unsigned ExportedID = SubmoduleIDs[Mod->Exports[I].getPointer()];
- assert((ExportedID || !Mod->Exports[I].getPointer()) &&
- "Unknown submodule!");
- Record.push_back(ExportedID);
+ if (Module *Exported = Mod->Exports[I].getPointer()) {
+ unsigned ExportedID = SubmoduleIDs[Exported];
+ assert(ExportedID > 0 && "Unknown submodule ID?");
+ Record.push_back(ExportedID);
+ } else {
+ Record.push_back(0);
+ }
+
Record.push_back(Mod->Exports[I].getInt());
}
Stream.EmitRecord(SUBMODULE_EXPORTS, Record);
diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp
index 070ff8058cb..99df3ea6746 100644
--- a/clang/lib/Serialization/ASTWriterDecl.cpp
+++ b/clang/lib/Serialization/ASTWriterDecl.cpp
@@ -976,7 +976,6 @@ void ASTDeclWriter::VisitCXXConversionDecl(CXXConversionDecl *D) {
void ASTDeclWriter::VisitImportDecl(ImportDecl *D) {
VisitDecl(D);
- Writer.SubmoduleIDs[D->getImportedModule()];
ArrayRef<SourceLocation> IdentifierLocs = D->getIdentifierLocs();
Record.push_back(!IdentifierLocs.empty());
if (IdentifierLocs.empty()) {
OpenPOWER on IntegriCloud