diff options
author | John McCall <rjmccall@apple.com> | 2010-06-03 19:28:45 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-06-03 19:28:45 +0000 |
commit | 5250f27420386452a21692a6292c99ee7febdac4 (patch) | |
tree | 94b044a9f5598be6e138b77c6df915ca522e4e11 /lib/Frontend/PCHWriterDecl.cpp | |
parent | df432e338c68e0e06dd7644c43f3f218750b3d58 (diff) |
Hack in some really terrible C++ record PCH support that I need right now.
This is required in order to test:
The ASTImporter should set base classes after formally entering the definition.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105401 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/PCHWriterDecl.cpp')
-rw-r--r-- | lib/Frontend/PCHWriterDecl.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/Frontend/PCHWriterDecl.cpp b/lib/Frontend/PCHWriterDecl.cpp index 42756c35cc..d0a01f083f 100644 --- a/lib/Frontend/PCHWriterDecl.cpp +++ b/lib/Frontend/PCHWriterDecl.cpp @@ -105,6 +105,8 @@ namespace { void VisitObjCCompatibleAliasDecl(ObjCCompatibleAliasDecl *D); void VisitObjCPropertyDecl(ObjCPropertyDecl *D); void VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D); + + void WriteCXXBaseSpecifier(const CXXBaseSpecifier *Base); }; } @@ -559,9 +561,24 @@ void PCHDeclWriter::VisitUnresolvedUsingTypename( Code = pch::DECL_UNRESOLVED_USING_TYPENAME; } +void PCHDeclWriter::WriteCXXBaseSpecifier(const CXXBaseSpecifier *Base) { + Record.push_back(Base->isVirtual()); + Record.push_back(Base->isBaseOfClass()); + Record.push_back(Base->getAccessSpecifierAsWritten()); + Writer.AddTypeRef(Base->getType(), Record); + Writer.AddSourceRange(Base->getSourceRange(), Record); +} + void PCHDeclWriter::VisitCXXRecordDecl(CXXRecordDecl *D) { // assert(false && "cannot write CXXRecordDecl"); VisitRecordDecl(D); + if (D->isDefinition()) { + unsigned NumBases = D->getNumBases(); + Record.push_back(NumBases); + for (CXXRecordDecl::base_class_iterator I = D->bases_begin(), + E = D->bases_end(); I != E; ++I) + WriteCXXBaseSpecifier(&*I); + } Code = pch::DECL_CXX_RECORD; } |