On Mon, Aug 25, 2014 at 2:58 PM, Alexey Samsonov <[email protected]> wrote:
> Author: samsonov > Date: Mon Aug 25 16:58:56 2014 > New Revision: 216410 > > URL: http://llvm.org/viewvc/llvm-project?rev=216410&view=rev > Log: > Pass actual CXXConstructExpr instead of argument iterators > into EmitSynthesizedCXXCopyCtorCall. No functionality change. > > Modified: > cfe/trunk/lib/CodeGen/CGClass.cpp > cfe/trunk/lib/CodeGen/CGExprCXX.cpp > cfe/trunk/lib/CodeGen/CodeGenFunction.h > > Modified: cfe/trunk/lib/CodeGen/CGClass.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGClass.cpp?rev=216410&r1=216409&r2=216410&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGClass.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGClass.cpp Mon Aug 25 16:58:56 2014 > @@ -1690,13 +1690,12 @@ void CodeGenFunction::EmitCXXConstructor > void > CodeGenFunction::EmitSynthesizedCXXCopyCtorCall(const CXXConstructorDecl > *D, > llvm::Value *This, llvm::Value > *Src, > - CallExpr::const_arg_iterator > ArgBeg, > - CallExpr::const_arg_iterator > ArgEnd) { > + const CXXConstructExpr *E) { > if (D->isTrivial()) { > - assert(ArgBeg + 1 == ArgEnd && "unexpected argcount for trivial > ctor"); > + assert(E->getNumArgs() && "unexpected argcount for trivial ctor"); > Shouldn't this be "E->getNumArgs() == 1"? assert(D->isCopyOrMoveConstructor() && > "trivial 1-arg ctor not a copy/move ctor"); > - EmitAggregateCopy(This, Src, (*ArgBeg)->getType()); > + EmitAggregateCopy(This, Src, E->arg_begin()->getType()); > return; > } > llvm::Value *Callee = CGM.GetAddrOfCXXConstructor(D, > clang::Ctor_Complete); > @@ -1718,7 +1717,7 @@ CodeGenFunction::EmitSynthesizedCXXCopyC > > // Skip over first argument (Src). > EmitCallArgs(Args, FPT->isVariadic(), FPT->param_type_begin() + 1, > - FPT->param_type_end(), ArgBeg + 1, ArgEnd); > + FPT->param_type_end(), E->arg_begin() + 1, E->arg_end()); > > EmitCall(CGM.getTypes().arrangeCXXMethodCall(Args, FPT, > RequiredArgs::All), > Callee, ReturnValueSlot(), Args, D); > > Modified: cfe/trunk/lib/CodeGen/CGExprCXX.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprCXX.cpp?rev=216410&r1=216409&r2=216410&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGExprCXX.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExprCXX.cpp Mon Aug 25 16:58:56 2014 > @@ -154,13 +154,13 @@ RValue CodeGenFunction::EmitCXXMemberCal > EmitAggregateAssign(This, RHS, CE->getType()); > return RValue::get(This); > } > - > - if (isa<CXXConstructorDecl>(MD) && > + > + if (isa<CXXConstructorDecl>(MD) && > cast<CXXConstructorDecl>(MD)->isCopyOrMoveConstructor()) { > // Trivial move and copy ctor are the same. > + assert(CE->getNumArgs() == 1 && "unexpected argcount for trivial > ctor"); > llvm::Value *RHS = EmitLValue(*CE->arg_begin()).getAddress(); > - EmitSynthesizedCXXCopyCtorCall(cast<CXXConstructorDecl>(MD), This, > RHS, > - CE->arg_begin(), CE->arg_end()); > + EmitAggregateCopy(This, RHS, CE->arg_begin()->getType()); > return RValue::get(This); > } > llvm_unreachable("unknown trivial member function"); > @@ -452,7 +452,7 @@ CodeGenFunction::EmitSynthesizedCXXCopyC > > assert(!getContext().getAsConstantArrayType(E->getType()) > && "EmitSynthesizedCXXCopyCtor - Copied-in Array"); > - EmitSynthesizedCXXCopyCtorCall(CD, Dest, Src, E->arg_begin(), > E->arg_end()); > + EmitSynthesizedCXXCopyCtorCall(CD, Dest, Src, E); > } > > static CharUnits CalculateCookiePadding(CodeGenFunction &CGF, > > Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=216410&r1=216409&r2=216410&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CodeGenFunction.h (original) > +++ cfe/trunk/lib/CodeGen/CodeGenFunction.h Mon Aug 25 16:58:56 2014 > @@ -1653,8 +1653,7 @@ public: > > void EmitSynthesizedCXXCopyCtorCall(const CXXConstructorDecl *D, > llvm::Value *This, llvm::Value *Src, > - CallExpr::const_arg_iterator ArgBeg, > - CallExpr::const_arg_iterator ArgEnd); > + const CXXConstructExpr *E); > > void EmitCXXAggrConstructorCall(const CXXConstructorDecl *D, > const ConstantArrayType *ArrayTy, > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
