diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-06-16 20:26:19 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-06-16 20:26:19 +0000 |
commit | 675d279af405d594552613c40a1507516039c694 (patch) | |
tree | 0a261a5d60f673e2c1d0c83e9363ef8c070652a6 /clang/lib/Serialization/ASTReader.cpp | |
parent | 50f518be65ce3ea3be9ec06fcb103a752af18005 (diff) | |
download | bcm5719-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.cpp | 5 |
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); |