Reverting r232793 until some new LLDB failures are discussed
llvm-svn: 232905
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index a26f251..55fd600 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -2835,8 +2835,6 @@
}
case EAGERLY_DESERIALIZED_DECLS:
- // FIXME: Skip reading this record if our ASTConsumer doesn't care
- // about "interesting" decls (for instance, if we're building a module).
for (unsigned I = 0, N = Record.size(); I != N; ++I)
EagerlyDeserializedDecls.push_back(getGlobalDeclID(F, Record[I]));
break;
@@ -6834,12 +6832,6 @@
SaveAndRestore<bool> GuardPassingDeclsToConsumer(PassingDeclsToConsumer,
true);
- // Ensure that we've loaded all potentially-interesting declarations
- // that need to be eagerly loaded.
- for (auto ID : EagerlyDeserializedDecls)
- GetDecl(ID);
- EagerlyDeserializedDecls.clear();
-
while (!InterestingDecls.empty()) {
Decl *D = InterestingDecls.front();
InterestingDecls.pop_front();
@@ -6858,8 +6850,17 @@
void ASTReader::StartTranslationUnit(ASTConsumer *Consumer) {
this->Consumer = Consumer;
- if (Consumer)
- PassInterestingDeclsToConsumer();
+ if (!Consumer)
+ return;
+
+ for (unsigned I = 0, N = EagerlyDeserializedDecls.size(); I != N; ++I) {
+ // Force deserialization of this decl, which will cause it to be queued for
+ // passing to the consumer.
+ GetDecl(EagerlyDeserializedDecls[I]);
+ }
+ EagerlyDeserializedDecls.clear();
+
+ PassInterestingDeclsToConsumer();
if (DeserializationListener)
DeserializationListener->ReaderInitialized(this);