diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-10-24 17:26:40 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-10-24 17:26:40 +0000 |
commit | 89eaf3af92c72c0c1aae807644e39cabc461d685 (patch) | |
tree | b00ef65eeebcbd134d089d8e9e2c653bd9a3f169 /lib/Serialization/ASTWriterDecl.cpp | |
parent | 7b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8 (diff) |
Refactoring.
- Pass around RecordDataImpl instead of the concrete RecordData so that any SmallVector can be used.
- Move ASTDeclWriter::WriteCXXDefinitionData to ASTWriter::AddCXXDefinitionData.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117236 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization/ASTWriterDecl.cpp')
-rw-r--r-- | lib/Serialization/ASTWriterDecl.cpp | 43 |
1 files changed, 2 insertions, 41 deletions
diff --git a/lib/Serialization/ASTWriterDecl.cpp b/lib/Serialization/ASTWriterDecl.cpp index 4463ce931b..4e479b33de 100644 --- a/lib/Serialization/ASTWriterDecl.cpp +++ b/lib/Serialization/ASTWriterDecl.cpp @@ -34,7 +34,6 @@ namespace clang { typedef ASTWriter::RecordData RecordData; RecordData &Record; - void WriteCXXDefinitionData(struct CXXRecordDecl::DefinitionData &Data); public: serialization::DeclCode Code; unsigned AbbrevToUse; @@ -721,42 +720,6 @@ void ASTDeclWriter::VisitUnresolvedUsingTypenameDecl( Code = serialization::DECL_UNRESOLVED_USING_TYPENAME; } -void ASTDeclWriter::WriteCXXDefinitionData( - struct CXXRecordDecl::DefinitionData &Data) { - Record.push_back(Data.UserDeclaredConstructor); - Record.push_back(Data.UserDeclaredCopyConstructor); - Record.push_back(Data.UserDeclaredCopyAssignment); - Record.push_back(Data.UserDeclaredDestructor); - Record.push_back(Data.Aggregate); - Record.push_back(Data.PlainOldData); - Record.push_back(Data.Empty); - Record.push_back(Data.Polymorphic); - Record.push_back(Data.Abstract); - Record.push_back(Data.HasTrivialConstructor); - Record.push_back(Data.HasTrivialCopyConstructor); - Record.push_back(Data.HasTrivialCopyAssignment); - Record.push_back(Data.HasTrivialDestructor); - Record.push_back(Data.ComputedVisibleConversions); - Record.push_back(Data.DeclaredDefaultConstructor); - Record.push_back(Data.DeclaredCopyConstructor); - Record.push_back(Data.DeclaredCopyAssignment); - Record.push_back(Data.DeclaredDestructor); - - Record.push_back(Data.NumBases); - for (unsigned i = 0; i != Data.NumBases; ++i) - Writer.AddCXXBaseSpecifier(Data.Bases[i], Record); - - // FIXME: Make VBases lazily computed when needed to avoid storing them. - Record.push_back(Data.NumVBases); - for (unsigned i = 0; i != Data.NumVBases; ++i) - Writer.AddCXXBaseSpecifier(Data.VBases[i], Record); - - Writer.AddUnresolvedSet(Data.Conversions, Record); - Writer.AddUnresolvedSet(Data.VisibleConversions, Record); - // Data.Definition is the owning decl, no need to write it. - Writer.AddDeclRef(Data.FirstFriend, Record); -} - void ASTDeclWriter::VisitCXXRecordDecl(CXXRecordDecl *D) { VisitRecordDecl(D); @@ -764,10 +727,8 @@ void ASTDeclWriter::VisitCXXRecordDecl(CXXRecordDecl *D) { if (D->DefinitionData) DefinitionDecl = D->DefinitionData->Definition; Writer.AddDeclRef(DefinitionDecl, Record); - if (D == DefinitionDecl) { - assert(D->DefinitionData); - WriteCXXDefinitionData(*D->DefinitionData); - } + if (D == DefinitionDecl) + Writer.AddCXXDefinitionData(D, Record); enum { CXXRecNotTemplate = 0, CXXRecTemplate, CXXRecMemberSpecialization |