summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTReader.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-06-16 20:26:19 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-06-16 20:26:19 +0000
commit675d279af405d594552613c40a1507516039c694 (patch)
tree0a261a5d60f673e2c1d0c83e9363ef8c070652a6 /clang/lib/Serialization/ASTReader.cpp
parent50f518be65ce3ea3be9ec06fcb103a752af18005 (diff)
downloadbcm5719-llvm-675d279af405d594552613c40a1507516039c694.tar.gz
bcm5719-llvm-675d279af405d594552613c40a1507516039c694.zip
[modules] When we merge redecl chains or mark a decl used with an update
record, mark all subsequent decls as 'used' too, to maintain the AST invariant that getPreviousDecl()->Used implies this->Used. llvm-svn: 211050
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index e8db122445e..0c9f263faf1 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -8088,7 +8088,10 @@ void ASTReader::finishPendingActions() {
}
// Perform any pending declaration updates.
- while (!PendingUpdateRecords.empty()) {
+ //
+ // Don't do this if we have known-incomplete redecl chains: it relies on
+ // being able to walk redeclaration chains.
+ while (PendingDeclChains.empty() && !PendingUpdateRecords.empty()) {
auto Update = PendingUpdateRecords.pop_back_val();
ReadingKindTracker ReadingKind(Read_Decl, *this);
loadDeclUpdateRecords(Update.first, Update.second);
OpenPOWER on IntegriCloud