summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTWriterDecl.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2011-04-24 16:28:13 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2011-04-24 16:28:13 +0000
commitfa1f370b7d208646a324a36ab1c4de324755af5d (patch)
treedc2f3fc66786e852eb0046be4b39902ade2b08da /clang/lib/Serialization/ASTWriterDecl.cpp
parentab238a7d1895201ad3d10fc961ca68105b3844fb (diff)
downloadbcm5719-llvm-fa1f370b7d208646a324a36ab1c4de324755af5d.tar.gz
bcm5719-llvm-fa1f370b7d208646a324a36ab1c4de324755af5d.zip
Fix adding an anonymous namespace in a chained PCH to a namespace from a previous PCH.
Fix anonymous namespaces in PCH. llvm-svn: 130104
Diffstat (limited to 'clang/lib/Serialization/ASTWriterDecl.cpp')
-rw-r--r--clang/lib/Serialization/ASTWriterDecl.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp
index b3b55f584ae..db72be3f584 100644
--- a/clang/lib/Serialization/ASTWriterDecl.cpp
+++ b/clang/lib/Serialization/ASTWriterDecl.cpp
@@ -12,6 +12,7 @@
//===----------------------------------------------------------------------===//
#include "clang/Serialization/ASTWriter.h"
+#include "ASTCommon.h"
#include "clang/AST/DeclVisitor.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclTemplate.h"
@@ -21,6 +22,7 @@
#include "llvm/Bitcode/BitstreamWriter.h"
#include "llvm/Support/ErrorHandling.h"
using namespace clang;
+using namespace serialization;
//===----------------------------------------------------------------------===//
// Declaration serialization
@@ -705,6 +707,18 @@ void ASTDeclWriter::VisitNamespaceDecl(NamespaceDecl *D) {
}
}
}
+
+ if (Writer.hasChain() && D->isOriginalNamespace() &&
+ D->isAnonymousNamespace()) {
+ // This is an original anonymous namespace. If its parent is in a previous
+ // PCH (or is the TU), mark that parent for update.
+ Decl *Parent = cast<Decl>(D->getParent()->getPrimaryContext());
+ if (Parent->getPCHLevel() > 0) {
+ ASTWriter::UpdateRecord &Record = Writer.DeclUpdates[Parent];
+ Record.push_back(UPD_CXX_ADDED_ANONYMOUS_NAMESPACE);
+ Writer.AddDeclRef(D, Record);
+ }
+ }
}
void ASTDeclWriter::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) {
OpenPOWER on IntegriCloud