diff options
-rw-r--r-- | lib/Serialization/ASTWriter.cpp | 14 | ||||
-rw-r--r-- | lib/Serialization/ASTWriterDecl.cpp | 1 |
2 files changed, 9 insertions, 6 deletions
diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index 83ad885969..6cce0afc50 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/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/lib/Serialization/ASTWriterDecl.cpp b/lib/Serialization/ASTWriterDecl.cpp index 070ff8058c..99df3ea674 100644 --- a/lib/Serialization/ASTWriterDecl.cpp +++ b/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()) { |