]> granicus.if.org Git - clang/commitdiff
[PCH] In ASTReader::FinishedDeserializing fully load the interesting decls,
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sat, 17 Dec 2011 04:13:28 +0000 (04:13 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sat, 17 Dec 2011 04:13:28 +0000 (04:13 +0000)
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

lib/Serialization/ASTReader.cpp

index 81f08e375bd74e672bcf5f473c46c4a7bb21d0fb..00f7b7ad0e3b02d4b887c6a86f53490bc0a91ca5 100644 (file)
@@ -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.