diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h index ff99a1cc2769..26d18f7c1471 100644 --- a/clang/include/clang/AST/DeclCXX.h +++ b/clang/include/clang/AST/DeclCXX.h @@ -1106,7 +1106,7 @@ public: } }; -/// CXXBaseOrMemberInitializer - Represents a C++ base or member +/// CXXCtorInitializer - Represents a C++ base or member /// initializer, which is part of a constructor initializer that /// initializes one non-static member variable or one base class. For /// example, in the following, both 'A(a)' and 'f(3.14159)' are member @@ -1120,7 +1120,7 @@ public: /// B(A& a) : A(a), f(3.14159) { } /// }; /// @endcode -class CXXBaseOrMemberInitializer { +class CXXCtorInitializer { /// \brief Either the base class name (stored as a TypeSourceInfo*), an normal /// field (FieldDecl) or an anonymous field (IndirectFieldDecl*) being /// initialized. @@ -1156,50 +1156,34 @@ class CXXBaseOrMemberInitializer { /// object in memory. unsigned SourceOrderOrNumArrayIndices : 14; - CXXBaseOrMemberInitializer(ASTContext &Context, - FieldDecl *Member, SourceLocation MemberLoc, - SourceLocation L, - Expr *Init, - SourceLocation R, - VarDecl **Indices, - unsigned NumIndices); + CXXCtorInitializer(ASTContext &Context, FieldDecl *Member, + SourceLocation MemberLoc, SourceLocation L, Expr *Init, + SourceLocation R, VarDecl **Indices, unsigned NumIndices); public: - /// CXXBaseOrMemberInitializer - Creates a new base-class initializer. + /// CXXCtorInitializer - Creates a new base-class initializer. explicit - CXXBaseOrMemberInitializer(ASTContext &Context, - TypeSourceInfo *TInfo, bool IsVirtual, - SourceLocation L, - Expr *Init, - SourceLocation R, - SourceLocation EllipsisLoc); + CXXCtorInitializer(ASTContext &Context, TypeSourceInfo *TInfo, bool IsVirtual, + SourceLocation L, Expr *Init, SourceLocation R, + SourceLocation EllipsisLoc); - /// CXXBaseOrMemberInitializer - Creates a new member initializer. + /// CXXCtorInitializer - Creates a new member initializer. explicit - CXXBaseOrMemberInitializer(ASTContext &Context, - FieldDecl *Member, SourceLocation MemberLoc, - SourceLocation L, - Expr *Init, - SourceLocation R); + CXXCtorInitializer(ASTContext &Context, FieldDecl *Member, + SourceLocation MemberLoc, SourceLocation L, Expr *Init, + SourceLocation R); explicit - CXXBaseOrMemberInitializer(ASTContext &Context, - IndirectFieldDecl *Member, - SourceLocation MemberLoc, - SourceLocation L, - Expr *Init, - SourceLocation R); + CXXCtorInitializer(ASTContext &Context, IndirectFieldDecl *Member, + SourceLocation MemberLoc, SourceLocation L, Expr *Init, + SourceLocation R); /// \brief Creates a new member initializer that optionally contains /// array indices used to describe an elementwise initialization. - static CXXBaseOrMemberInitializer *Create(ASTContext &Context, - FieldDecl *Member, - SourceLocation MemberLoc, - SourceLocation L, - Expr *Init, - SourceLocation R, - VarDecl **Indices, - unsigned NumIndices); + static CXXCtorInitializer *Create(ASTContext &Context, FieldDecl *Member, + SourceLocation MemberLoc, SourceLocation L, + Expr *Init, SourceLocation R, + VarDecl **Indices, unsigned NumIndices); /// isBaseInitializer - Returns true when this initializer is /// initializing a base class. @@ -1359,10 +1343,10 @@ class CXXConstructorDecl : public CXXMethodDecl { bool ImplicitlyDefined : 1; /// Support for base and member initializers. - /// BaseOrMemberInitializers - The arguments used to initialize the base + /// CtorInitializers - The arguments used to initialize the base /// or member. - CXXBaseOrMemberInitializer **BaseOrMemberInitializers; - unsigned NumBaseOrMemberInitializers; + CXXCtorInitializer **CtorInitializers; + unsigned NumCtorInitializers; CXXConstructorDecl(CXXRecordDecl *RD, const DeclarationNameInfo &NameInfo, QualType T, TypeSourceInfo *TInfo, @@ -1371,7 +1355,7 @@ class CXXConstructorDecl : public CXXMethodDecl { : CXXMethodDecl(CXXConstructor, RD, NameInfo, T, TInfo, false, SC_None, isInline), IsExplicitSpecified(isExplicitSpecified), ImplicitlyDefined(false), - BaseOrMemberInitializers(0), NumBaseOrMemberInitializers(0) { + CtorInitializers(0), NumCtorInitializers(0) { setImplicit(isImplicitlyDeclared); } @@ -1414,23 +1398,23 @@ public: } /// init_iterator - Iterates through the member/base initializer list. - typedef CXXBaseOrMemberInitializer **init_iterator; + typedef CXXCtorInitializer **init_iterator; /// init_const_iterator - Iterates through the memberbase initializer list. - typedef CXXBaseOrMemberInitializer * const * init_const_iterator; + typedef CXXCtorInitializer * const * init_const_iterator; /// init_begin() - Retrieve an iterator to the first initializer. - init_iterator init_begin() { return BaseOrMemberInitializers; } + init_iterator init_begin() { return CtorInitializers; } /// begin() - Retrieve an iterator to the first initializer. - init_const_iterator init_begin() const { return BaseOrMemberInitializers; } + init_const_iterator init_begin() const { return CtorInitializers; } /// init_end() - Retrieve an iterator past the last initializer. init_iterator init_end() { - return BaseOrMemberInitializers + NumBaseOrMemberInitializers; + return CtorInitializers + NumCtorInitializers; } /// end() - Retrieve an iterator past the last initializer. init_const_iterator init_end() const { - return BaseOrMemberInitializers + NumBaseOrMemberInitializers; + return CtorInitializers + NumCtorInitializers; } typedef std::reverse_iterator init_reverse_iterator; @@ -1452,16 +1436,16 @@ public: /// getNumArgs - Determine the number of arguments used to /// initialize the member or base. - unsigned getNumBaseOrMemberInitializers() const { - return NumBaseOrMemberInitializers; + unsigned getNumCtorInitializers() const { + return NumCtorInitializers; } - void setNumBaseOrMemberInitializers(unsigned numBaseOrMemberInitializers) { - NumBaseOrMemberInitializers = numBaseOrMemberInitializers; + void setNumCtorInitializers(unsigned numCtorInitializers) { + NumCtorInitializers = numCtorInitializers; } - void setBaseOrMemberInitializers(CXXBaseOrMemberInitializer ** initializers) { - BaseOrMemberInitializers = initializers; + void setCtorInitializers(CXXCtorInitializer ** initializers) { + CtorInitializers = initializers; } /// isDefaultConstructor - Whether this constructor is a default /// constructor (C++ [class.ctor]p5), which can be used to diff --git a/clang/include/clang/AST/DeclObjC.h b/clang/include/clang/AST/DeclObjC.h index 2112d537c3e1..853bc9f035fb 100644 --- a/clang/include/clang/AST/DeclObjC.h +++ b/clang/include/clang/AST/DeclObjC.h @@ -28,7 +28,7 @@ class ObjCProtocolDecl; class ObjCCategoryDecl; class ObjCPropertyDecl; class ObjCPropertyImplDecl; -class CXXBaseOrMemberInitializer; +class CXXCtorInitializer; class ObjCListBase { void operator=(const ObjCListBase &); // DO NOT IMPLEMENT @@ -1213,7 +1213,7 @@ class ObjCImplementationDecl : public ObjCImplDecl { ObjCInterfaceDecl *SuperClass; /// Support for ivar initialization. /// IvarInitializers - The arguments used to initialize the ivars - CXXBaseOrMemberInitializer **IvarInitializers; + CXXCtorInitializer **IvarInitializers; unsigned NumIvarInitializers; /// true of class extension has at least one bitfield ivar. @@ -1232,10 +1232,10 @@ public: ObjCInterfaceDecl *superDecl); /// init_iterator - Iterates through the ivar initializer list. - typedef CXXBaseOrMemberInitializer **init_iterator; + typedef CXXCtorInitializer **init_iterator; /// init_const_iterator - Iterates through the ivar initializer list. - typedef CXXBaseOrMemberInitializer * const * init_const_iterator; + typedef CXXCtorInitializer * const * init_const_iterator; /// init_begin() - Retrieve an iterator to the first initializer. init_iterator init_begin() { return IvarInitializers; } @@ -1260,7 +1260,7 @@ public: } void setIvarInitializers(ASTContext &C, - CXXBaseOrMemberInitializer ** initializers, + CXXCtorInitializer ** initializers, unsigned numInitializers); bool hasSynthBitfield() const { return HasSynthBitfield; } diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index 0a198a871885..ad9f6ddef344 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -215,7 +215,7 @@ public: /// be overridden for clients that need access to the name. /// /// \returns false if the visitation was terminated early, true otherwise. - bool TraverseConstructorInitializer(CXXBaseOrMemberInitializer *Init); + bool TraverseConstructorInitializer(CXXCtorInitializer *Init); // ---- Methods on Stmts ---- @@ -600,7 +600,7 @@ bool RecursiveASTVisitor::TraverseTemplateArguments( template bool RecursiveASTVisitor::TraverseConstructorInitializer( - CXXBaseOrMemberInitializer *Init) { + CXXCtorInitializer *Init) { // FIXME: recurse on TypeLoc of the base initializer if isBaseInitializer()? if (Init->isWritten()) TRY_TO(TraverseStmt(Init->getInit())); diff --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h index c0f6ff10e80b..1c7e9bfef60a 100644 --- a/clang/include/clang/Analysis/CFG.h +++ b/clang/include/clang/Analysis/CFG.h @@ -34,7 +34,7 @@ namespace clang { class Expr; class FieldDecl; class VarDecl; - class CXXBaseOrMemberInitializer; + class CXXCtorInitializer; class CXXBaseSpecifier; class CXXBindTemporaryExpr; class CFG; @@ -110,13 +110,13 @@ public: class CFGInitializer : public CFGElement { public: CFGInitializer() {} - CFGInitializer(CXXBaseOrMemberInitializer* I) + CFGInitializer(CXXCtorInitializer* I) : CFGElement(I, Initializer) {} - CXXBaseOrMemberInitializer* getInitializer() const { - return static_cast(Data1.getPointer()); + CXXCtorInitializer* getInitializer() const { + return static_cast(Data1.getPointer()); } - operator CXXBaseOrMemberInitializer*() const { return getInitializer(); } + operator CXXCtorInitializer*() const { return getInitializer(); } static bool classof(const CFGElement *E) { return E->getKind() == Initializer; @@ -492,7 +492,7 @@ public: Elements.push_back(CFGStmt(statement), C); } - void appendInitializer(CXXBaseOrMemberInitializer *initializer, + void appendInitializer(CXXCtorInitializer *initializer, BumpVectorContext& C) { Elements.push_back(CFGInitializer(initializer), C); } diff --git a/clang/include/clang/Analysis/ProgramPoint.h b/clang/include/clang/Analysis/ProgramPoint.h index 12597e91068e..36e40164c0e5 100644 --- a/clang/include/clang/Analysis/ProgramPoint.h +++ b/clang/include/clang/Analysis/ProgramPoint.h @@ -307,7 +307,7 @@ public: class PostInitializer : public ProgramPoint { public: - PostInitializer(const CXXBaseOrMemberInitializer *I, + PostInitializer(const CXXCtorInitializer *I, const LocationContext *L) : ProgramPoint(I, PostInitializerKind, L) {} diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h index ce2692c6194f..aebf82ee68ba 100644 --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -162,7 +162,7 @@ public: typedef Stmt StmtTy; typedef OpaquePtr DeclGroupPtrTy; typedef CXXBaseSpecifier BaseTy; - typedef CXXBaseOrMemberInitializer MemInitTy; + typedef CXXCtorInitializer MemInitTy; typedef NestedNameSpecifier CXXScopeTy; typedef TemplateParameterList TemplateParamsTy; typedef OpaquePtr TemplateTy; diff --git a/clang/include/clang/Sema/Ownership.h b/clang/include/clang/Sema/Ownership.h index eac810a43eb1..5f2f0eba7124 100644 --- a/clang/include/clang/Sema/Ownership.h +++ b/clang/include/clang/Sema/Ownership.h @@ -23,7 +23,7 @@ namespace clang { class Attr; - class CXXBaseOrMemberInitializer; + class CXXCtorInitializer; class CXXBaseSpecifier; class Decl; class DeclGroupRef; @@ -417,7 +417,7 @@ namespace clang { template<> struct IsResultPtrLowBitFree { static const bool value = true; }; - template<> struct IsResultPtrLowBitFree { + template<> struct IsResultPtrLowBitFree { static const bool value = true; }; @@ -430,7 +430,7 @@ namespace clang { typedef ActionResult StmtResult; typedef ActionResult TypeResult; typedef ActionResult BaseResult; - typedef ActionResult MemInitResult; + typedef ActionResult MemInitResult; typedef ActionResult DeclResult; typedef OpaquePtr ParsedTemplateTy; diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index b860e2bd5ea9..0f15ab85d3d9 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -203,7 +203,7 @@ public: typedef OpaquePtr TypeTy; typedef Attr AttrTy; typedef CXXBaseSpecifier BaseTy; - typedef CXXBaseOrMemberInitializer MemInitTy; + typedef CXXCtorInitializer MemInitTy; typedef Expr ExprTy; typedef Stmt StmtTy; typedef TemplateParameterList TemplateParamsTy; @@ -2573,9 +2573,9 @@ public: CXXRecordDecl *ClassDecl, SourceLocation EllipsisLoc); - bool SetBaseOrMemberInitializers(CXXConstructorDecl *Constructor, - CXXBaseOrMemberInitializer **Initializers, - unsigned NumInitializers, bool AnyErrors); + bool SetCtorInitializers(CXXConstructorDecl *Constructor, + CXXCtorInitializer **Initializers, + unsigned NumInitializers, bool AnyErrors); void SetIvarInitializers(ObjCImplementationDecl *ObjCImplementation); @@ -4746,7 +4746,7 @@ public: void CodeCompleteNamespaceAliasDecl(Scope *S); void CodeCompleteOperatorName(Scope *S); void CodeCompleteConstructorInitializer(Decl *Constructor, - CXXBaseOrMemberInitializer** Initializers, + CXXCtorInitializer** Initializers, unsigned NumInitializers); void CodeCompleteObjCAtDirective(Scope *S, Decl *ObjCImpDecl, diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h index cc3497a10092..845ca4b10f91 100644 --- a/clang/include/clang/Serialization/ASTReader.h +++ b/clang/include/clang/Serialization/ASTReader.h @@ -53,7 +53,7 @@ class Decl; class DeclContext; class NestedNameSpecifier; class CXXBaseSpecifier; -class CXXBaseOrMemberInitializer; +class CXXCtorInitializer; class GotoStmt; class LabelStmt; class MacroDefinition; @@ -1098,10 +1098,10 @@ public: CXXBaseSpecifier ReadCXXBaseSpecifier(PerFileData &F, const RecordData &Record,unsigned &Idx); - /// \brief Read a CXXBaseOrMemberInitializer array. - std::pair - ReadCXXBaseOrMemberInitializers(PerFileData &F, - const RecordData &Record, unsigned &Idx); + /// \brief Read a CXXCtorInitializer array. + std::pair + ReadCXXCtorInitializers(PerFileData &F, const RecordData &Record, + unsigned &Idx); /// \brief Read a source location from raw form. SourceLocation ReadSourceLocation(PerFileData &Module, unsigned Raw) { diff --git a/clang/include/clang/Serialization/ASTWriter.h b/clang/include/clang/Serialization/ASTWriter.h index e0f1d9632144..86e241939ef7 100644 --- a/clang/include/clang/Serialization/ASTWriter.h +++ b/clang/include/clang/Serialization/ASTWriter.h @@ -41,7 +41,7 @@ class ASTContext; class ASTSerializationListener; class NestedNameSpecifier; class CXXBaseSpecifier; -class CXXBaseOrMemberInitializer; +class CXXCtorInitializer; class LabelStmt; class MacroDefinition; class MemorizeStatCalls; @@ -482,10 +482,11 @@ public: /// \brief Emit a C++ base specifier. void AddCXXBaseSpecifier(const CXXBaseSpecifier &Base, RecordDataImpl &Record); - /// \brief Emit a CXXBaseOrMemberInitializer array. - void AddCXXBaseOrMemberInitializers( - const CXXBaseOrMemberInitializer * const *BaseOrMembers, - unsigned NumBaseOrMembers, RecordDataImpl &Record); + /// \brief Emit a CXXCtorInitializer array. + void AddCXXCtorInitializers( + const CXXCtorInitializer * const *CtorInitializers, + unsigned NumCtorInitializers, + RecordDataImpl &Record); void AddCXXDefinitionData(const CXXRecordDecl *D, RecordDataImpl &Record); diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 13a25321d4b6..be87d3cbb8b4 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -999,43 +999,46 @@ bool CXXMethodDecl::hasInlineBody() const { return CheckFn->hasBody(fn) && !fn->isOutOfLine(); } -CXXBaseOrMemberInitializer:: -CXXBaseOrMemberInitializer(ASTContext &Context, - TypeSourceInfo *TInfo, bool IsVirtual, - SourceLocation L, Expr *Init, SourceLocation R, - SourceLocation EllipsisLoc) +CXXCtorInitializer::CXXCtorInitializer(ASTContext &Context, + TypeSourceInfo *TInfo, bool IsVirtual, + SourceLocation L, Expr *Init, + SourceLocation R, + SourceLocation EllipsisLoc) : BaseOrMember(TInfo), MemberOrEllipsisLocation(EllipsisLoc), Init(Init), LParenLoc(L), RParenLoc(R), IsVirtual(IsVirtual), IsWritten(false), SourceOrderOrNumArrayIndices(0) { } -CXXBaseOrMemberInitializer:: -CXXBaseOrMemberInitializer(ASTContext &Context, - FieldDecl *Member, SourceLocation MemberLoc, - SourceLocation L, Expr *Init, SourceLocation R) +CXXCtorInitializer::CXXCtorInitializer(ASTContext &Context, + FieldDecl *Member, + SourceLocation MemberLoc, + SourceLocation L, Expr *Init, + SourceLocation R) : BaseOrMember(Member), MemberOrEllipsisLocation(MemberLoc), Init(Init), LParenLoc(L), RParenLoc(R), IsVirtual(false), IsWritten(false), SourceOrderOrNumArrayIndices(0) { } -CXXBaseOrMemberInitializer:: -CXXBaseOrMemberInitializer(ASTContext &Context, - IndirectFieldDecl *Member, SourceLocation MemberLoc, - SourceLocation L, Expr *Init, SourceLocation R) +CXXCtorInitializer::CXXCtorInitializer(ASTContext &Context, + IndirectFieldDecl *Member, + SourceLocation MemberLoc, + SourceLocation L, Expr *Init, + SourceLocation R) : BaseOrMember(Member), MemberOrEllipsisLocation(MemberLoc), Init(Init), LParenLoc(L), RParenLoc(R), IsVirtual(false), IsWritten(false), SourceOrderOrNumArrayIndices(0) { } -CXXBaseOrMemberInitializer:: -CXXBaseOrMemberInitializer(ASTContext &Context, - FieldDecl *Member, SourceLocation MemberLoc, - SourceLocation L, Expr *Init, SourceLocation R, - VarDecl **Indices, - unsigned NumIndices) +CXXCtorInitializer::CXXCtorInitializer(ASTContext &Context, + FieldDecl *Member, + SourceLocation MemberLoc, + SourceLocation L, Expr *Init, + SourceLocation R, + VarDecl **Indices, + unsigned NumIndices) : BaseOrMember(Member), MemberOrEllipsisLocation(MemberLoc), Init(Init), LParenLoc(L), RParenLoc(R), IsVirtual(false), IsWritten(false), SourceOrderOrNumArrayIndices(NumIndices) @@ -1044,51 +1047,49 @@ CXXBaseOrMemberInitializer(ASTContext &Context, memcpy(MyIndices, Indices, NumIndices * sizeof(VarDecl *)); } -CXXBaseOrMemberInitializer * -CXXBaseOrMemberInitializer::Create(ASTContext &Context, - FieldDecl *Member, - SourceLocation MemberLoc, - SourceLocation L, - Expr *Init, - SourceLocation R, - VarDecl **Indices, - unsigned NumIndices) { - void *Mem = Context.Allocate(sizeof(CXXBaseOrMemberInitializer) + +CXXCtorInitializer *CXXCtorInitializer::Create(ASTContext &Context, + FieldDecl *Member, + SourceLocation MemberLoc, + SourceLocation L, Expr *Init, + SourceLocation R, + VarDecl **Indices, + unsigned NumIndices) { + void *Mem = Context.Allocate(sizeof(CXXCtorInitializer) + sizeof(VarDecl *) * NumIndices, - llvm::alignOf()); - return new (Mem) CXXBaseOrMemberInitializer(Context, Member, MemberLoc, + llvm::alignOf()); + return new (Mem) CXXCtorInitializer(Context, Member, MemberLoc, L, Init, R, Indices, NumIndices); } -TypeLoc CXXBaseOrMemberInitializer::getBaseClassLoc() const { +TypeLoc CXXCtorInitializer::getBaseClassLoc() const { if (isBaseInitializer()) return BaseOrMember.get()->getTypeLoc(); else return TypeLoc(); } -Type *CXXBaseOrMemberInitializer::getBaseClass() { +Type *CXXCtorInitializer::getBaseClass() { if (isBaseInitializer()) return BaseOrMember.get()->getType().getTypePtr(); else return 0; } -const Type *CXXBaseOrMemberInitializer::getBaseClass() const { +const Type *CXXCtorInitializer::getBaseClass() const { if (isBaseInitializer()) return BaseOrMember.get()->getType().getTypePtr(); else return 0; } -SourceLocation CXXBaseOrMemberInitializer::getSourceLocation() const { +SourceLocation CXXCtorInitializer::getSourceLocation() const { if (isAnyMemberInitializer()) return getMemberLocation(); return getBaseClassLoc().getLocalSourceRange().getBegin(); } -SourceRange CXXBaseOrMemberInitializer::getSourceRange() const { +SourceRange CXXCtorInitializer::getSourceRange() const { return SourceRange(getSourceLocation(), getRParenLoc()); } diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp index eaa117a04563..3d87fa99b0ca 100644 --- a/clang/lib/AST/DeclPrinter.cpp +++ b/clang/lib/AST/DeclPrinter.cpp @@ -432,14 +432,14 @@ void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) { if (D->hasAttr()) Proto += " __attribute((noreturn))"; if (CXXConstructorDecl *CDecl = dyn_cast(D)) { - if (CDecl->getNumBaseOrMemberInitializers() > 0) { + if (CDecl->getNumCtorInitializers() > 0) { Proto += " : "; Out << Proto; Proto.clear(); for (CXXConstructorDecl::init_const_iterator B = CDecl->init_begin(), E = CDecl->init_end(); B != E; ++B) { - CXXBaseOrMemberInitializer * BMInitializer = (*B); + CXXCtorInitializer * BMInitializer = (*B); if (B != CDecl->init_begin()) Out << ", "; if (BMInitializer->isAnyMemberInitializer()) { diff --git a/clang/lib/AST/DumpXML.cpp b/clang/lib/AST/DumpXML.cpp index 65a18aa8d1b2..3cfff31910af 100644 --- a/clang/lib/AST/DumpXML.cpp +++ b/clang/lib/AST/DumpXML.cpp @@ -502,7 +502,7 @@ struct XMLDumper : public XMLDeclVisitor, // CXXDestructorDecl ? // CXXConversionDecl ? - void dispatch(CXXBaseOrMemberInitializer *Init) { + void dispatch(CXXCtorInitializer *Init) { // TODO } diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp index 93d70999ea88..f1b9d4c076ac 100644 --- a/clang/lib/Analysis/CFG.cpp +++ b/clang/lib/Analysis/CFG.cpp @@ -340,7 +340,7 @@ private: CFGBlock *addStmt(Stmt *S) { return Visit(S, AddStmtChoice::AlwaysAdd); } - CFGBlock *addInitializer(CXXBaseOrMemberInitializer *I); + CFGBlock *addInitializer(CXXCtorInitializer *I); void addAutomaticObjDtors(LocalScope::const_iterator B, LocalScope::const_iterator E, Stmt* S); void addImplicitDtorsForDestructor(const CXXDestructorDecl *DD); @@ -359,7 +359,7 @@ private: AddStmtChoice asc = AddStmtChoice::AlwaysAdd) { B->appendStmt(S, cfg->getBumpVectorContext()); } - void appendInitializer(CFGBlock *B, CXXBaseOrMemberInitializer *I) { + void appendInitializer(CFGBlock *B, CXXCtorInitializer *I) { B->appendInitializer(I, cfg->getBumpVectorContext()); } void appendBaseDtor(CFGBlock *B, const CXXBaseSpecifier *BS) { @@ -526,7 +526,7 @@ CFGBlock* CFGBuilder::createBlock(bool add_successor) { } /// addInitializer - Add C++ base or member initializer element to CFG. -CFGBlock *CFGBuilder::addInitializer(CXXBaseOrMemberInitializer *I) { +CFGBlock *CFGBuilder::addInitializer(CXXCtorInitializer *I) { if (!BuildOpts.AddInitializers) return Block; @@ -3050,7 +3050,7 @@ static void print_elem(llvm::raw_ostream &OS, StmtPrinterHelper* Helper, OS << '\n'; } else if (CFGInitializer IE = E.getAs()) { - CXXBaseOrMemberInitializer* I = IE; + CXXCtorInitializer* I = IE; if (I->isBaseInitializer()) OS << I->getBaseClass()->getAsCXXRecordDecl()->getName(); else OS << I->getAnyMember()->getName(); diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index e2a3f27a1dcf..2a92258b8469 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -363,7 +363,7 @@ static bool BaseInitializerUsesThis(ASTContext &C, const Expr *Init) { static void EmitBaseInitializer(CodeGenFunction &CGF, const CXXRecordDecl *ClassDecl, - CXXBaseOrMemberInitializer *BaseInit, + CXXCtorInitializer *BaseInit, CXXCtorType CtorType) { assert(BaseInit->isBaseInitializer() && "Must have base initializer!"); @@ -405,7 +405,7 @@ static void EmitBaseInitializer(CodeGenFunction &CGF, static void EmitAggMemberInitializer(CodeGenFunction &CGF, LValue LHS, llvm::Value *ArrayIndexVar, - CXXBaseOrMemberInitializer *MemberInit, + CXXCtorInitializer *MemberInit, QualType T, unsigned Index) { if (Index == MemberInit->getNumArrayIndices()) { @@ -509,7 +509,7 @@ namespace { static void EmitMemberInitializer(CodeGenFunction &CGF, const CXXRecordDecl *ClassDecl, - CXXBaseOrMemberInitializer *MemberInit, + CXXCtorInitializer *MemberInit, const CXXConstructorDecl *Constructor, FunctionArgList &Args) { assert(MemberInit->isAnyMemberInitializer() && @@ -531,7 +531,7 @@ static void EmitMemberInitializer(CodeGenFunction &CGF, LHS = CGF.EmitLValueForFieldInitialization(ThisPtr, Field, 0); } - // FIXME: If there's no initializer and the CXXBaseOrMemberInitializer + // FIXME: If there's no initializer and the CXXCtorInitializer // was implicitly generated, we shouldn't be zeroing memory. RValue RHS; if (FieldType->isReferenceType()) { @@ -707,12 +707,12 @@ void CodeGenFunction::EmitCtorPrologue(const CXXConstructorDecl *CD, FunctionArgList &Args) { const CXXRecordDecl *ClassDecl = CD->getParent(); - llvm::SmallVector MemberInitializers; + llvm::SmallVector MemberInitializers; for (CXXConstructorDecl::init_const_iterator B = CD->init_begin(), E = CD->init_end(); B != E; ++B) { - CXXBaseOrMemberInitializer *Member = (*B); + CXXCtorInitializer *Member = (*B); if (Member->isBaseInitializer()) EmitBaseInitializer(*this, ClassDecl, Member, CtorType); diff --git a/clang/lib/CodeGen/CGObjC.cpp b/clang/lib/CodeGen/CGObjC.cpp index 8945a860cce9..3574ba2c1853 100644 --- a/clang/lib/CodeGen/CGObjC.cpp +++ b/clang/lib/CodeGen/CGObjC.cpp @@ -420,17 +420,17 @@ void CodeGenFunction::GenerateObjCSetter(ObjCImplementationDecl *IMP, void CodeGenFunction::GenerateObjCCtorDtorMethod(ObjCImplementationDecl *IMP, ObjCMethodDecl *MD, bool ctor) { - llvm::SmallVector IvarInitializers; + llvm::SmallVector IvarInitializers; MD->createImplicitParams(CGM.getContext(), IMP->getClassInterface()); StartObjCMethod(MD, IMP->getClassInterface()); for (ObjCImplementationDecl::init_const_iterator B = IMP->init_begin(), E = IMP->init_end(); B != E; ++B) { - CXXBaseOrMemberInitializer *Member = (*B); + CXXCtorInitializer *Member = (*B); IvarInitializers.push_back(Member); } if (ctor) { for (unsigned I = 0, E = IvarInitializers.size(); I != E; ++I) { - CXXBaseOrMemberInitializer *IvarInit = IvarInitializers[I]; + CXXCtorInitializer *IvarInit = IvarInitializers[I]; FieldDecl *Field = IvarInit->getAnyMember(); QualType FieldType = Field->getType(); ObjCIvarDecl *Ivar = cast(Field); diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index bc3f977bfc7a..a5cdaa86748a 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -1746,7 +1746,7 @@ void Parser::ParseConstructorInitializer(Decl *ConstructorDecl) { SourceLocation ColonLoc = ConsumeToken(); - llvm::SmallVector MemInitializers; + llvm::SmallVector MemInitializers; bool AnyErrors = false; do { diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index b33f3fcb7c1c..50ea6cb0b5f4 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -3602,7 +3602,7 @@ void Sema::CodeCompleteOperatorName(Scope *S) { } void Sema::CodeCompleteConstructorInitializer(Decl *ConstructorD, - CXXBaseOrMemberInitializer** Initializers, + CXXCtorInitializer** Initializers, unsigned NumInitializers) { CXXConstructorDecl *Constructor = static_cast(ConstructorD); diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index b6c6d4d03839..e7bd7d5e8707 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -1381,11 +1381,11 @@ Sema::BuildMemberInitializer(ValueDecl *Member, Expr **Args, } if (DirectMember) { - return new (Context) CXXBaseOrMemberInitializer(Context, DirectMember, + return new (Context) CXXCtorInitializer(Context, DirectMember, IdLoc, LParenLoc, Init, RParenLoc); } else { - return new (Context) CXXBaseOrMemberInitializer(Context, IndirectMember, + return new (Context) CXXCtorInitializer(Context, IndirectMember, IdLoc, LParenLoc, Init, RParenLoc); } @@ -1496,7 +1496,7 @@ Sema::BuildBaseInitializer(QualType BaseType, TypeSourceInfo *BaseTInfo, ExprTemporaries.begin() + ExprEvalContexts.back().NumTemporaries, ExprTemporaries.end()); - return new (Context) CXXBaseOrMemberInitializer(Context, BaseTInfo, + return new (Context) CXXCtorInitializer(Context, BaseTInfo, /*IsVirtual=*/false, LParenLoc, BaseInit.takeAs(), @@ -1551,7 +1551,7 @@ Sema::BuildBaseInitializer(QualType BaseType, TypeSourceInfo *BaseTInfo, ExprResult Init = Owned(new (Context) ParenListExpr(Context, LParenLoc, Args, NumArgs, RParenLoc)); - return new (Context) CXXBaseOrMemberInitializer(Context, BaseTInfo, + return new (Context) CXXCtorInitializer(Context, BaseTInfo, BaseSpec->isVirtual(), LParenLoc, Init.takeAs(), @@ -1559,7 +1559,7 @@ Sema::BuildBaseInitializer(QualType BaseType, TypeSourceInfo *BaseTInfo, EllipsisLoc); } - return new (Context) CXXBaseOrMemberInitializer(Context, BaseTInfo, + return new (Context) CXXCtorInitializer(Context, BaseTInfo, BaseSpec->isVirtual(), LParenLoc, BaseInit.takeAs(), @@ -1580,7 +1580,7 @@ BuildImplicitBaseInitializer(Sema &SemaRef, CXXConstructorDecl *Constructor, ImplicitInitializerKind ImplicitInitKind, CXXBaseSpecifier *BaseSpec, bool IsInheritedVirtualBase, - CXXBaseOrMemberInitializer *&CXXBaseInit) { + CXXCtorInitializer *&CXXBaseInit) { InitializedEntity InitEntity = InitializedEntity::InitializeBase(SemaRef.Context, BaseSpec, IsInheritedVirtualBase); @@ -1636,7 +1636,7 @@ BuildImplicitBaseInitializer(Sema &SemaRef, CXXConstructorDecl *Constructor, return true; CXXBaseInit = - new (SemaRef.Context) CXXBaseOrMemberInitializer(SemaRef.Context, + new (SemaRef.Context) CXXCtorInitializer(SemaRef.Context, SemaRef.Context.getTrivialTypeSourceInfo(BaseSpec->getType(), SourceLocation()), BaseSpec->isVirtual(), @@ -1652,7 +1652,7 @@ static bool BuildImplicitMemberInitializer(Sema &SemaRef, CXXConstructorDecl *Constructor, ImplicitInitializerKind ImplicitInitKind, FieldDecl *Field, - CXXBaseOrMemberInitializer *&CXXMemberInit) { + CXXCtorInitializer *&CXXMemberInit) { if (Field->isInvalidDecl()) return true; @@ -1751,7 +1751,7 @@ BuildImplicitMemberInitializer(Sema &SemaRef, CXXConstructorDecl *Constructor, return true; CXXMemberInit - = CXXBaseOrMemberInitializer::Create(SemaRef.Context, Field, Loc, Loc, + = CXXCtorInitializer::Create(SemaRef.Context, Field, Loc, Loc, MemberInit.takeAs(), Loc, IndexVariables.data(), IndexVariables.size()); @@ -1777,7 +1777,7 @@ BuildImplicitMemberInitializer(Sema &SemaRef, CXXConstructorDecl *Constructor, return true; CXXMemberInit = - new (SemaRef.Context) CXXBaseOrMemberInitializer(SemaRef.Context, + new (SemaRef.Context) CXXCtorInitializer(SemaRef.Context, Field, Loc, Loc, MemberInit.get(), Loc); @@ -1815,8 +1815,8 @@ struct BaseAndFieldInfo { CXXConstructorDecl *Ctor; bool AnyErrorsInInits; ImplicitInitializerKind IIK; - llvm::DenseMap AllBaseFields; - llvm::SmallVector AllToInit; + llvm::DenseMap AllBaseFields; + llvm::SmallVector AllToInit; BaseAndFieldInfo(Sema &S, CXXConstructorDecl *Ctor, bool ErrorsInInits) : S(S), Ctor(Ctor), AnyErrorsInInits(ErrorsInInits) { @@ -1833,7 +1833,7 @@ static bool CollectFieldInitializer(BaseAndFieldInfo &Info, FieldDecl *Top, FieldDecl *Field) { // Overwhelmingly common case: we have a direct initializer for this field. - if (CXXBaseOrMemberInitializer *Init = Info.AllBaseFields.lookup(Field)) { + if (CXXCtorInitializer *Init = Info.AllBaseFields.lookup(Field)) { Info.AllToInit.push_back(Init); return false; } @@ -1853,7 +1853,7 @@ static bool CollectFieldInitializer(BaseAndFieldInfo &Info, // First check for an explicit initializer for one field. for (RecordDecl::field_iterator FA = FieldClassDecl->field_begin(), EA = FieldClassDecl->field_end(); FA != EA; FA++) { - if (CXXBaseOrMemberInitializer *Init = Info.AllBaseFields.lookup(*FA)) { + if (CXXCtorInitializer *Init = Info.AllBaseFields.lookup(*FA)) { Info.AllToInit.push_back(Init); // Once we've initialized a field of an anonymous union, the union @@ -1887,7 +1887,7 @@ static bool CollectFieldInitializer(BaseAndFieldInfo &Info, if (Info.AnyErrorsInInits) return false; - CXXBaseOrMemberInitializer *Init = 0; + CXXCtorInitializer *Init = 0; if (BuildImplicitMemberInitializer(Info.S, Info.Ctor, Info.IIK, Field, Init)) return true; @@ -1898,20 +1898,20 @@ static bool CollectFieldInitializer(BaseAndFieldInfo &Info, } bool -Sema::SetBaseOrMemberInitializers(CXXConstructorDecl *Constructor, - CXXBaseOrMemberInitializer **Initializers, +Sema::SetCtorInitializers(CXXConstructorDecl *Constructor, + CXXCtorInitializer **Initializers, unsigned NumInitializers, bool AnyErrors) { if (Constructor->getDeclContext()->isDependentContext()) { // Just store the initializers as written, they will be checked during // instantiation. if (NumInitializers > 0) { - Constructor->setNumBaseOrMemberInitializers(NumInitializers); - CXXBaseOrMemberInitializer **baseOrMemberInitializers = - new (Context) CXXBaseOrMemberInitializer*[NumInitializers]; + Constructor->setNumCtorInitializers(NumInitializers); + CXXCtorInitializer **baseOrMemberInitializers = + new (Context) CXXCtorInitializer*[NumInitializers]; memcpy(baseOrMemberInitializers, Initializers, - NumInitializers * sizeof(CXXBaseOrMemberInitializer*)); - Constructor->setBaseOrMemberInitializers(baseOrMemberInitializers); + NumInitializers * sizeof(CXXCtorInitializer*)); + Constructor->setCtorInitializers(baseOrMemberInitializers); } return false; @@ -1928,7 +1928,7 @@ Sema::SetBaseOrMemberInitializers(CXXConstructorDecl *Constructor, bool HadError = false; for (unsigned i = 0; i < NumInitializers; i++) { - CXXBaseOrMemberInitializer *Member = Initializers[i]; + CXXCtorInitializer *Member = Initializers[i]; if (Member->isBaseInitializer()) Info.AllBaseFields[Member->getBaseClass()->getAs()] = Member; @@ -1948,12 +1948,12 @@ Sema::SetBaseOrMemberInitializers(CXXConstructorDecl *Constructor, for (CXXRecordDecl::base_class_iterator VBase = ClassDecl->vbases_begin(), E = ClassDecl->vbases_end(); VBase != E; ++VBase) { - if (CXXBaseOrMemberInitializer *Value + if (CXXCtorInitializer *Value = Info.AllBaseFields.lookup(VBase->getType()->getAs())) { Info.AllToInit.push_back(Value); } else if (!AnyErrors) { bool IsInheritedVirtualBase = !DirectVBases.count(VBase); - CXXBaseOrMemberInitializer *CXXBaseInit; + CXXCtorInitializer *CXXBaseInit; if (BuildImplicitBaseInitializer(*this, Constructor, Info.IIK, VBase, IsInheritedVirtualBase, CXXBaseInit)) { @@ -1972,11 +1972,11 @@ Sema::SetBaseOrMemberInitializers(CXXConstructorDecl *Constructor, if (Base->isVirtual()) continue; - if (CXXBaseOrMemberInitializer *Value + if (CXXCtorInitializer *Value = Info.AllBaseFields.lookup(Base->getType()->getAs())) { Info.AllToInit.push_back(Value); } else if (!AnyErrors) { - CXXBaseOrMemberInitializer *CXXBaseInit; + CXXCtorInitializer *CXXBaseInit; if (BuildImplicitBaseInitializer(*this, Constructor, Info.IIK, Base, /*IsInheritedVirtualBase=*/false, CXXBaseInit)) { @@ -2002,12 +2002,12 @@ Sema::SetBaseOrMemberInitializers(CXXConstructorDecl *Constructor, NumInitializers = Info.AllToInit.size(); if (NumInitializers > 0) { - Constructor->setNumBaseOrMemberInitializers(NumInitializers); - CXXBaseOrMemberInitializer **baseOrMemberInitializers = - new (Context) CXXBaseOrMemberInitializer*[NumInitializers]; + Constructor->setNumCtorInitializers(NumInitializers); + CXXCtorInitializer **baseOrMemberInitializers = + new (Context) CXXCtorInitializer*[NumInitializers]; memcpy(baseOrMemberInitializers, Info.AllToInit.data(), - NumInitializers * sizeof(CXXBaseOrMemberInitializer*)); - Constructor->setBaseOrMemberInitializers(baseOrMemberInitializers); + NumInitializers * sizeof(CXXCtorInitializer*)); + Constructor->setCtorInitializers(baseOrMemberInitializers); // Constructors implicitly reference the base and member // destructors. @@ -2032,7 +2032,7 @@ static void *GetKeyForBase(ASTContext &Context, QualType BaseType) { } static void *GetKeyForMember(ASTContext &Context, - CXXBaseOrMemberInitializer *Member) { + CXXCtorInitializer *Member) { if (!Member->isAnyMemberInitializer()) return GetKeyForBase(Context, QualType(Member->getBaseClass(), 0)); @@ -2061,7 +2061,7 @@ static void *GetKeyForMember(ASTContext &Context, static void DiagnoseBaseOrMemInitializerOrder(Sema &SemaRef, const CXXConstructorDecl *Constructor, - CXXBaseOrMemberInitializer **Inits, + CXXCtorInitializer **Inits, unsigned NumInits) { if (Constructor->getDeclContext()->isDependentContext()) return; @@ -2070,7 +2070,7 @@ DiagnoseBaseOrMemInitializerOrder(Sema &SemaRef, // location of at least one initializer. bool ShouldCheckOrder = false; for (unsigned InitIndex = 0; InitIndex != NumInits; ++InitIndex) { - CXXBaseOrMemberInitializer *Init = Inits[InitIndex]; + CXXCtorInitializer *Init = Inits[InitIndex]; if (SemaRef.Diags.getDiagnosticLevel(diag::warn_initializer_out_of_order, Init->getSourceLocation()) != Diagnostic::Ignored) { @@ -2110,9 +2110,9 @@ DiagnoseBaseOrMemInitializerOrder(Sema &SemaRef, unsigned NumIdealInits = IdealInitKeys.size(); unsigned IdealIndex = 0; - CXXBaseOrMemberInitializer *PrevInit = 0; + CXXCtorInitializer *PrevInit = 0; for (unsigned InitIndex = 0; InitIndex != NumInits; ++InitIndex) { - CXXBaseOrMemberInitializer *Init = Inits[InitIndex]; + CXXCtorInitializer *Init = Inits[InitIndex]; void *InitKey = GetKeyForMember(SemaRef.Context, Init); // Scan forward to try to find this initializer in the idealized @@ -2154,8 +2154,8 @@ DiagnoseBaseOrMemInitializerOrder(Sema &SemaRef, namespace { bool CheckRedundantInit(Sema &S, - CXXBaseOrMemberInitializer *Init, - CXXBaseOrMemberInitializer *&PrevInit) { + CXXCtorInitializer *Init, + CXXCtorInitializer *&PrevInit) { if (!PrevInit) { PrevInit = Init; return false; @@ -2180,11 +2180,11 @@ bool CheckRedundantInit(Sema &S, return true; } -typedef std::pair UnionEntry; +typedef std::pair UnionEntry; typedef llvm::DenseMap RedundantUnionMap; bool CheckRedundantUnionInit(Sema &S, - CXXBaseOrMemberInitializer *Init, + CXXCtorInitializer *Init, RedundantUnionMap &Unions) { FieldDecl *Field = Init->getAnyMember(); RecordDecl *Parent = Field->getParent(); @@ -2235,20 +2235,20 @@ void Sema::ActOnMemInitializers(Decl *ConstructorDecl, return; } - CXXBaseOrMemberInitializer **MemInits = - reinterpret_cast(meminits); + CXXCtorInitializer **MemInits = + reinterpret_cast(meminits); // Mapping for the duplicate initializers check. // For member initializers, this is keyed with a FieldDecl*. // For base initializers, this is keyed with a Type*. - llvm::DenseMap Members; + llvm::DenseMap Members; // Mapping for the inconsistent anonymous-union initializers check. RedundantUnionMap MemberUnions; bool HadError = false; for (unsigned i = 0; i < NumMemInits; i++) { - CXXBaseOrMemberInitializer *Init = MemInits[i]; + CXXCtorInitializer *Init = MemInits[i]; // Set the source order index. Init->setSourceOrder(i); @@ -2270,7 +2270,7 @@ void Sema::ActOnMemInitializers(Decl *ConstructorDecl, DiagnoseBaseOrMemInitializerOrder(*this, Constructor, MemInits, NumMemInits); - SetBaseOrMemberInitializers(Constructor, MemInits, NumMemInits, AnyErrors); + SetCtorInitializers(Constructor, MemInits, NumMemInits, AnyErrors); } void @@ -2369,7 +2369,7 @@ void Sema::ActOnDefaultCtorInitializers(Decl *CDtorDecl) { if (CXXConstructorDecl *Constructor = dyn_cast(CDtorDecl)) - SetBaseOrMemberInitializers(Constructor, 0, 0, /*AnyErrors=*/false); + SetCtorInitializers(Constructor, 0, 0, /*AnyErrors=*/false); } bool Sema::RequireNonAbstractType(SourceLocation Loc, QualType T, @@ -4442,7 +4442,7 @@ void Sema::DefineImplicitDefaultConstructor(SourceLocation CurrentLocation, ImplicitlyDefinedFunctionScope Scope(*this, Constructor); DiagnosticErrorTrap Trap(Diags); - if (SetBaseOrMemberInitializers(Constructor, 0, 0, /*AnyErrors=*/false) || + if (SetCtorInitializers(Constructor, 0, 0, /*AnyErrors=*/false) || Trap.hasErrorOccurred()) { Diag(CurrentLocation, diag::note_member_synthesized_at) << CXXConstructor << Context.getTagDeclType(ClassDecl); @@ -5415,7 +5415,7 @@ void Sema::DefineImplicitCopyConstructor(SourceLocation CurrentLocation, ImplicitlyDefinedFunctionScope Scope(*this, CopyConstructor); DiagnosticErrorTrap Trap(Diags); - if (SetBaseOrMemberInitializers(CopyConstructor, 0, 0, /*AnyErrors=*/false) || + if (SetCtorInitializers(CopyConstructor, 0, 0, /*AnyErrors=*/false) || Trap.hasErrorOccurred()) { Diag(CurrentLocation, diag::note_member_synthesized_at) << CXXCopyConstructor << Context.getTagDeclType(ClassDecl); @@ -7125,13 +7125,13 @@ void Sema::SetIvarInitializers(ObjCImplementationDecl *ObjCImplementation) { CollectIvarsToConstructOrDestruct(OID, ivars); if (ivars.empty()) return; - llvm::SmallVector AllToInit; + llvm::SmallVector AllToInit; for (unsigned i = 0; i < ivars.size(); i++) { FieldDecl *Field = ivars[i]; if (Field->isInvalidDecl()) continue; - CXXBaseOrMemberInitializer *Member; + CXXCtorInitializer *Member; InitializedEntity InitEntity = InitializedEntity::InitializeMember(Field); InitializationKind InitKind = InitializationKind::CreateDefault(ObjCImplementation->getLocation()); @@ -7146,11 +7146,10 @@ void Sema::SetIvarInitializers(ObjCImplementationDecl *ObjCImplementation) { continue; Member = - new (Context) CXXBaseOrMemberInitializer(Context, - Field, SourceLocation(), - SourceLocation(), - MemberInit.takeAs(), - SourceLocation()); + new (Context) CXXCtorInitializer(Context, Field, SourceLocation(), + SourceLocation(), + MemberInit.takeAs(), + SourceLocation()); AllToInit.push_back(Member); // Be sure that the destructor is accessible and is marked as referenced. diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 8c66588da290..338a5333c890 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -1981,14 +1981,14 @@ void Sema::CollectIvarsToConstructOrDestruct(ObjCInterfaceDecl *OI, } void ObjCImplementationDecl::setIvarInitializers(ASTContext &C, - CXXBaseOrMemberInitializer ** initializers, + CXXCtorInitializer ** initializers, unsigned numInitializers) { if (numInitializers > 0) { NumIvarInitializers = numInitializers; - CXXBaseOrMemberInitializer **ivarInitializers = - new (C) CXXBaseOrMemberInitializer*[NumIvarInitializers]; + CXXCtorInitializer **ivarInitializers = + new (C) CXXCtorInitializer*[NumIvarInitializers]; memcpy(ivarInitializers, initializers, - numInitializers * sizeof(CXXBaseOrMemberInitializer*)); + numInitializers * sizeof(CXXCtorInitializer*)); IvarInitializers = ivarInitializers; } } diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 649fbf66251a..e59f94a2cac9 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -2359,7 +2359,7 @@ Sema::InstantiateMemInitializers(CXXConstructorDecl *New, for (CXXConstructorDecl::init_const_iterator Inits = Tmpl->init_begin(), InitsEnd = Tmpl->init_end(); Inits != InitsEnd; ++Inits) { - CXXBaseOrMemberInitializer *Init = *Inits; + CXXCtorInitializer *Init = *Inits; // Only instantiate written initializers, let Sema re-construct implicit // ones. diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index d0edd71cd1e9..487e23f19c27 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -4338,17 +4338,16 @@ ASTReader::ReadCXXBaseSpecifier(PerFileData &F, EllipsisLoc); } -std::pair -ASTReader::ReadCXXBaseOrMemberInitializers(PerFileData &F, - const RecordData &Record, - unsigned &Idx) { - CXXBaseOrMemberInitializer **BaseOrMemberInitializers = 0; +std::pair +ASTReader::ReadCXXCtorInitializers(PerFileData &F, const RecordData &Record, + unsigned &Idx) { + CXXCtorInitializer **CtorInitializers = 0; unsigned NumInitializers = Record[Idx++]; if (NumInitializers) { ASTContext &C = *getContext(); - BaseOrMemberInitializers - = new (C) CXXBaseOrMemberInitializer*[NumInitializers]; + CtorInitializers + = new (C) CXXCtorInitializer*[NumInitializers]; for (unsigned i=0; i != NumInitializers; ++i) { TypeSourceInfo *BaseClassInfo = 0; bool IsBaseVirtual = false; @@ -4382,38 +4381,32 @@ ASTReader::ReadCXXBaseOrMemberInitializers(PerFileData &F, Indices.push_back(cast(GetDecl(Record[Idx++]))); } - CXXBaseOrMemberInitializer *BOMInit; + CXXCtorInitializer *BOMInit; if (IsBaseInitializer) { - BOMInit = new (C) CXXBaseOrMemberInitializer(C, BaseClassInfo, - IsBaseVirtual, LParenLoc, - Init, RParenLoc, - MemberOrEllipsisLoc); + BOMInit = new (C) CXXCtorInitializer(C, BaseClassInfo, IsBaseVirtual, + LParenLoc, Init, RParenLoc, + MemberOrEllipsisLoc); } else if (IsWritten) { if (Member) - BOMInit = new (C) CXXBaseOrMemberInitializer(C, Member, - MemberOrEllipsisLoc, - LParenLoc, Init, - RParenLoc); + BOMInit = new (C) CXXCtorInitializer(C, Member, MemberOrEllipsisLoc, + LParenLoc, Init, RParenLoc); else - BOMInit = new (C) CXXBaseOrMemberInitializer(C, IndirectMember, - MemberOrEllipsisLoc, - LParenLoc, - Init, RParenLoc); + BOMInit = new (C) CXXCtorInitializer(C, IndirectMember, + MemberOrEllipsisLoc, LParenLoc, + Init, RParenLoc); } else { - BOMInit = CXXBaseOrMemberInitializer::Create(C, Member, - MemberOrEllipsisLoc, - LParenLoc, Init, RParenLoc, - Indices.data(), - Indices.size()); + BOMInit = CXXCtorInitializer::Create(C, Member, MemberOrEllipsisLoc, + LParenLoc, Init, RParenLoc, + Indices.data(), Indices.size()); } if (IsWritten) BOMInit->setSourceOrder(SourceOrderOrNumArrayIndices); - BaseOrMemberInitializers[i] = BOMInit; + CtorInitializers[i] = BOMInit; } } - return std::make_pair(BaseOrMemberInitializers, NumInitializers); + return std::make_pair(CtorInitializers, NumInitializers); } NestedNameSpecifier * diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 239abbeb3997..5c66a9680f9a 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -609,7 +609,7 @@ void ASTDeclReader::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { D->setSuperClass( cast_or_null(Reader.GetDecl(Record[Idx++]))); llvm::tie(D->IvarInitializers, D->NumIvarInitializers) - = Reader.ReadCXXBaseOrMemberInitializers(F, Record, Idx); + = Reader.ReadCXXCtorInitializers(F, Record, Idx); D->setHasSynthBitfield(Record[Idx++]); } @@ -903,8 +903,8 @@ void ASTDeclReader::VisitCXXConstructorDecl(CXXConstructorDecl *D) { D->IsExplicitSpecified = Record[Idx++]; D->ImplicitlyDefined = Record[Idx++]; - llvm::tie(D->BaseOrMemberInitializers, D->NumBaseOrMemberInitializers) - = Reader.ReadCXXBaseOrMemberInitializers(F, Record, Idx); + llvm::tie(D->CtorInitializers, D->NumCtorInitializers) + = Reader.ReadCXXCtorInitializers(F, Record, Idx); } void ASTDeclReader::VisitCXXDestructorDecl(CXXDestructorDecl *D) { diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 52415b0d516a..d3b103f56c1f 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -3294,12 +3294,13 @@ void ASTWriter::FlushCXXBaseSpecifiers() { CXXBaseSpecifiersToWrite.clear(); } -void ASTWriter::AddCXXBaseOrMemberInitializers( - const CXXBaseOrMemberInitializer * const *BaseOrMembers, - unsigned NumBaseOrMembers, RecordDataImpl &Record) { - Record.push_back(NumBaseOrMembers); - for (unsigned i=0; i != NumBaseOrMembers; ++i) { - const CXXBaseOrMemberInitializer *Init = BaseOrMembers[i]; +void ASTWriter::AddCXXCtorInitializers( + const CXXCtorInitializer * const *CtorInitializers, + unsigned NumCtorInitializers, + RecordDataImpl &Record) { + Record.push_back(NumCtorInitializers); + for (unsigned i=0; i != NumCtorInitializers; ++i) { + const CXXCtorInitializer *Init = CtorInitializers[i]; Record.push_back(Init->isBaseInitializer()); if (Init->isBaseInitializer()) { diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp index ff1f4bf44b85..7223362165f4 100644 --- a/clang/lib/Serialization/ASTWriterDecl.cpp +++ b/clang/lib/Serialization/ASTWriterDecl.cpp @@ -503,8 +503,8 @@ void ASTDeclWriter::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D) { void ASTDeclWriter::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { VisitObjCImplDecl(D); Writer.AddDeclRef(D->getSuperClass(), Record); - Writer.AddCXXBaseOrMemberInitializers(D->IvarInitializers, - D->NumIvarInitializers, Record); + Writer.AddCXXCtorInitializers(D->IvarInitializers, D->NumIvarInitializers, + Record); Record.push_back(D->hasSynthBitfield()); Code = serialization::DECL_OBJC_IMPLEMENTATION; } @@ -781,8 +781,8 @@ void ASTDeclWriter::VisitCXXConstructorDecl(CXXConstructorDecl *D) { Record.push_back(D->IsExplicitSpecified); Record.push_back(D->ImplicitlyDefined); - Writer.AddCXXBaseOrMemberInitializers(D->BaseOrMemberInitializers, - D->NumBaseOrMemberInitializers, Record); + Writer.AddCXXCtorInitializers(D->CtorInitializers, D->NumCtorInitializers, + Record); Code = serialization::DECL_CXX_CONSTRUCTOR; } diff --git a/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp index 3f77244dc4af..67ddcce85948 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ExprEngine.cpp @@ -640,7 +640,7 @@ void ExprEngine::ProcessStmt(const CFGStmt S, StmtNodeBuilder& builder) { void ExprEngine::ProcessInitializer(const CFGInitializer Init, StmtNodeBuilder &builder) { // We don't set EntryNode and currentStmt. And we don't clean up state. - const CXXBaseOrMemberInitializer *BMI = Init.getInitializer(); + const CXXCtorInitializer *BMI = Init.getInitializer(); ExplodedNode *Pred = builder.getBasePredecessor(); const LocationContext *LC = Pred->getLocationContext(); diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 979d678d5ace..38b86cd23fa1 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -689,11 +689,11 @@ bool CursorVisitor::VisitDeclaratorDecl(DeclaratorDecl *DD) { } /// \brief Compare two base or member initializers based on their source order. -static int CompareCXXBaseOrMemberInitializers(const void* Xp, const void *Yp) { - CXXBaseOrMemberInitializer const * const *X - = static_cast(Xp); - CXXBaseOrMemberInitializer const * const *Y - = static_cast(Yp); +static int CompareCXXCtorInitializers(const void* Xp, const void *Yp) { + CXXCtorInitializer const * const *X + = static_cast(Xp); + CXXCtorInitializer const * const *Y + = static_cast(Yp); if ((*X)->getSourceOrder() < (*Y)->getSourceOrder()) return -1; @@ -738,7 +738,7 @@ bool CursorVisitor::VisitFunctionDecl(FunctionDecl *ND) { if (ND->isThisDeclarationADefinition()) { if (CXXConstructorDecl *Constructor = dyn_cast(ND)) { // Find the initializers that were written in the source. - llvm::SmallVector WrittenInits; + llvm::SmallVector WrittenInits; for (CXXConstructorDecl::init_iterator I = Constructor->init_begin(), IEnd = Constructor->init_end(); I != IEnd; ++I) { @@ -750,11 +750,11 @@ bool CursorVisitor::VisitFunctionDecl(FunctionDecl *ND) { // Sort the initializers in source order llvm::array_pod_sort(WrittenInits.begin(), WrittenInits.end(), - &CompareCXXBaseOrMemberInitializers); + &CompareCXXCtorInitializers); // Visit the initializers in source order for (unsigned I = 0, N = WrittenInits.size(); I != N; ++I) { - CXXBaseOrMemberInitializer *Init = WrittenInits[I]; + CXXCtorInitializer *Init = WrittenInits[I]; if (Init->isAnyMemberInitializer()) { if (Visit(MakeCursorMemberRef(Init->getAnyMember(), Init->getMemberLocation(), TU)))