diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-10-24 17:26:54 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-10-24 17:26:54 +0000 |
commit | e16a5300baf930a0c74c81955444a63d45ac4bef (patch) | |
tree | 16156283bcf452f25fedbaf6bd440c6d74d776d8 /clang/lib/Serialization/ASTWriter.cpp | |
parent | d170d844c4b2ba3c1890113dbf61b6056ce4a577 (diff) | |
download | bcm5719-llvm-e16a5300baf930a0c74c81955444a63d45ac4bef.tar.gz bcm5719-llvm-e16a5300baf930a0c74c81955444a63d45ac4bef.zip |
Keep track in chained PCH of implicit members that were added after the definition was completed.
llvm-svn: 117240
Diffstat (limited to 'clang/lib/Serialization/ASTWriter.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTWriter.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 436525f1999..340f0cc5593 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -3326,3 +3326,17 @@ void ASTWriter::CompletedTagDefinition(const TagDecl *D) { } } } + +void ASTWriter::AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D) { + assert(D->isImplicit()); + if (!(D->getPCHLevel() == 0 && RD->getPCHLevel() > 0)) + return; // Not a source member added to a class from PCH. + if (!isa<CXXMethodDecl>(D)) + return; // We are interested in lazily declared implicit methods. + + // A decl coming from PCH was modified. + assert(RD->isDefinition()); + UpdateRecord &Record = DeclUpdates[RD]; + Record.push_back(UPD_CXX_ADDED_IMPLICIT_MEMBER); + AddDeclRef(D, Record); +} |