summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/PCHWriter.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-08-09 10:54:12 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-08-09 10:54:12 +0000
commit5b6a03f4906abda74da0a3f5fa4515d2613f49d7 (patch)
tree91864c443114ae647eeeb26a6c642facda97be21 /clang/lib/Frontend/PCHWriter.cpp
parentec846ac2ccfce003ea189cdc19317207d5e68328 (diff)
downloadbcm5719-llvm-5b6a03f4906abda74da0a3f5fa4515d2613f49d7.tar.gz
bcm5719-llvm-5b6a03f4906abda74da0a3f5fa4515d2613f49d7.zip
Refactor into functions PCH reading/writing the CXXBaseOrMemberInitializers. No functionality change.
llvm-svn: 110566
Diffstat (limited to 'clang/lib/Frontend/PCHWriter.cpp')
-rw-r--r--clang/lib/Frontend/PCHWriter.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp
index 4646f424b7c..0eed4ccd71e 100644
--- a/clang/lib/Frontend/PCHWriter.cpp
+++ b/clang/lib/Frontend/PCHWriter.cpp
@@ -3015,6 +3015,36 @@ void PCHWriter::AddCXXBaseSpecifier(const CXXBaseSpecifier &Base,
AddSourceRange(Base.getSourceRange(), Record);
}
+void PCHWriter::AddCXXBaseOrMemberInitializers(
+ const CXXBaseOrMemberInitializer * const *BaseOrMembers,
+ unsigned NumBaseOrMembers, RecordData &Record) {
+ Record.push_back(NumBaseOrMembers);
+ for (unsigned i=0; i != NumBaseOrMembers; ++i) {
+ const CXXBaseOrMemberInitializer *Init = BaseOrMembers[i];
+
+ Record.push_back(Init->isBaseInitializer());
+ if (Init->isBaseInitializer()) {
+ AddTypeSourceInfo(Init->getBaseClassInfo(), Record);
+ Record.push_back(Init->isBaseVirtual());
+ } else {
+ AddDeclRef(Init->getMember(), Record);
+ }
+ AddSourceLocation(Init->getMemberLocation(), Record);
+ AddStmt(Init->getInit());
+ AddDeclRef(Init->getAnonUnionMember(), Record);
+ AddSourceLocation(Init->getLParenLoc(), Record);
+ AddSourceLocation(Init->getRParenLoc(), Record);
+ Record.push_back(Init->isWritten());
+ if (Init->isWritten()) {
+ Record.push_back(Init->getSourceOrder());
+ } else {
+ Record.push_back(Init->getNumArrayIndices());
+ for (unsigned i=0, e=Init->getNumArrayIndices(); i != e; ++i)
+ AddDeclRef(Init->getArrayIndex(i), Record);
+ }
+ }
+}
+
void PCHWriter::SetReader(PCHReader *Reader) {
assert(Reader && "Cannot remove chain");
assert(FirstDeclID == NextDeclID &&
OpenPOWER on IntegriCloud