From: Argyrios Kyrtzidis Date: Sat, 17 Dec 2011 04:13:28 +0000 (+0000) Subject: [PCH] In ASTReader::FinishedDeserializing fully load the interesting decls, X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=71168330e25fdce4c1a3bf46484a2d81e2e21011;p=clang [PCH] In ASTReader::FinishedDeserializing 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. Could not reduce to a test case unfortunately. rdar://10587158. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146817 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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::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.