summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTWriter.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-10-28 07:38:45 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-10-28 07:38:45 +0000
commit4729972c0f8a54504466bd212a8ee5e1826c681b (patch)
tree16c9b5b8453a8a471a3906d50e0a578a82fcc7e4 /clang/lib/Serialization/ASTWriter.cpp
parent402dbbbd66b1fadcff52b86ab80804554fa8d05e (diff)
downloadbcm5719-llvm-4729972c0f8a54504466bd212a8ee5e1826c681b.tar.gz
bcm5719-llvm-4729972c0f8a54504466bd212a8ee5e1826c681b.zip
Fix the re-serializing decls in a chained PCH mechanism.
llvm-svn: 117534
Diffstat (limited to 'clang/lib/Serialization/ASTWriter.cpp')
-rw-r--r--clang/lib/Serialization/ASTWriter.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 3589b9bd990..3e7667404d5 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -2395,10 +2395,6 @@ void ASTWriter::WriteASTCore(Sema &SemaRef, MemorizeStatCalls *StatCalls,
else
WriteDecl(Context, DOT.getDecl());
}
- for (DeclsToRewriteTy::iterator
- I = DeclsToRewrite.begin(), E = DeclsToRewrite.end(); I != E; ++I) {
- WriteDecl(Context, const_cast<Decl*>(*I));
- }
Stream.ExitBlock();
WritePreprocessor(PP);
@@ -2604,6 +2600,9 @@ void ASTWriter::WriteASTChain(Sema &SemaRef, MemorizeStatCalls *StatCalls,
Stream.EnterSubblock(DECLTYPES_BLOCK_ID, 3);
WriteDeclsBlockAbbrevs();
+ for (DeclsToRewriteTy::iterator
+ I = DeclsToRewrite.begin(), E = DeclsToRewrite.end(); I != E; ++I)
+ DeclTypesToEmit.push(const_cast<Decl*>(*I));
while (!DeclTypesToEmit.empty()) {
DeclOrType DOT = DeclTypesToEmit.front();
DeclTypesToEmit.pop();
@@ -3287,7 +3286,7 @@ void ASTWriter::CompletedTagDefinition(const TagDecl *D) {
// A forward reference was mutated into a definition. Rewrite it.
// FIXME: This happens during template instantiation, should we
// have created a new definition decl instead ?
- DeclsToRewrite.insert(RD);
+ RewriteDecl(RD);
}
for (CXXRecordDecl::redecl_iterator
OpenPOWER on IntegriCloud