]> granicus.if.org Git - clang/commitdiff
[modules] Avoid the possibility of a redeclaration chain not being marked 'up
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 27 Feb 2015 20:14:19 +0000 (20:14 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 27 Feb 2015 20:14:19 +0000 (20:14 +0000)
to date' after it gets updated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230789 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ExternalASTSource.h
lib/Serialization/ASTReader.cpp

index f35639c19188b0f887942a610ff99fb0f62dff39..700ab6de863702e2ba6197359fd3b740553e67a3 100644 (file)
@@ -412,6 +412,7 @@ public:
   void set(T NewValue) {
     if (LazyData *LazyVal = Value.template dyn_cast<LazyData*>()) {
       LazyVal->LastValue = NewValue;
+      LazyVal->LastGeneration = LazyVal->ExternalSource->getGeneration();
       return;
     }
     Value = NewValue;
index 0ee2b2b2215ea2311651f6ab1601b29a9392e0fe..9d9885b79300d0dedf5b2eea4ac9b51f6b7f1673 100644 (file)
@@ -8317,10 +8317,9 @@ void ASTReader::finishPendingActions() {
     PendingIncompleteDeclChains.clear();
 
     // Load pending declaration chains.
-    for (unsigned I = 0; I != PendingDeclChains.size(); ++I) {
+    for (unsigned I = 0; I != PendingDeclChains.size(); ++I)
       loadPendingDeclChain(PendingDeclChains[I]);
-      PendingDeclChainsKnown.erase(PendingDeclChains[I]);
-    }
+    PendingDeclChainsKnown.clear();
     PendingDeclChains.clear();
 
     // Make the most recent of the top-level declarations visible.