aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Serialization/ASTReader.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp
index 81f08e375b..00f7b7ad0e 100644
--- a/lib/Serialization/ASTReader.cpp
+++ b/lib/Serialization/ASTReader.cpp
@@ -6028,6 +6028,15 @@ void ASTReader::FinishedDeserializing() {
assert(NumCurrentElementsDeserializing &&
"FinishedDeserializing not paired with StartedDeserializing");
if (NumCurrentElementsDeserializing == 1) {
+
+ // Fully load the interesting decls, including deserializing their bodies,
+ // so that any other declarations that get referenced in the body will be
+ // fully deserialized by the time we pass them to the consumer.
+ for (std::deque<Decl *>::iterator
+ I = InterestingDecls.begin(),
+ E = InterestingDecls.end(); I != E; ++I)
+ (*I)->getBody();
+
do {
// If any identifiers with corresponding top-level declarations have
// been loaded, load those declarations now.