From: Anders Carlsson Date: Wed, 8 Apr 2009 23:13:16 +0000 (+0000) Subject: Use the new EmitCallArgs function. No indented functionality change. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=782f397c1459ef7d8b910c0fb6b95c5f1c19c14f;p=clang Use the new EmitCallArgs function. No indented functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68652 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGBlocks.cpp b/lib/CodeGen/CGBlocks.cpp index 74b6af1425..a623cf18cf 100644 --- a/lib/CodeGen/CGBlocks.cpp +++ b/lib/CodeGen/CGBlocks.cpp @@ -435,16 +435,15 @@ RValue CodeGenFunction::EmitBlockCallExpr(const CallExpr* E) { CallArgList Args; Args.push_back(std::make_pair(RValue::get(BlockLiteral), VoidPtrTy)); + QualType FnType = BPT->getPointeeType(); + // And the rest of the arguments. - for (CallExpr::const_arg_iterator i = E->arg_begin(), e = E->arg_end(); - i != e; ++i) - Args.push_back(std::make_pair(EmitAnyExprToTemp(*i), - i->getType())); + EmitCallArgs(Args, FnType->getAsFunctionProtoType(), + E->arg_begin(), E->arg_end()); // Load the function. llvm::Value *Func = Builder.CreateLoad(FuncPtr, false, "tmp"); - QualType FnType = BPT->getPointeeType(); QualType ResultType = FnType->getAsFunctionType()->getResultType(); const CGFunctionInfo &FnInfo = diff --git a/lib/CodeGen/CGCXX.cpp b/lib/CodeGen/CGCXX.cpp index 217f63a9df..24b4a28299 100644 --- a/lib/CodeGen/CGCXX.cpp +++ b/lib/CodeGen/CGCXX.cpp @@ -166,9 +166,7 @@ RValue CodeGenFunction::EmitCXXMemberCallExpr(const CXXMemberCallExpr *CE) { Args.push_back(std::make_pair(RValue::get(BaseValue), MD->getThisType(getContext()))); - for (CallExpr::const_arg_iterator I = CE->arg_begin(), E = CE->arg_end(); - I != E; ++I) - Args.push_back(std::make_pair(EmitAnyExprToTemp(*I), I->getType())); + EmitCallArgs(Args, FPT, CE->arg_begin(), CE->arg_end()); QualType ResultType = MD->getType()->getAsFunctionType()->getResultType(); return EmitCall(CGM.getTypes().getFunctionInfo(ResultType, Args), diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index 4a7171ebd8..e1cb1d17ec 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -1214,9 +1214,7 @@ RValue CodeGenFunction::EmitCallExpr(llvm::Value *Callee, QualType CalleeType, QualType ResultType = FnType->getAsFunctionType()->getResultType(); CallArgList Args; - for (CallExpr::const_arg_iterator I = ArgBeg; I != ArgEnd; ++I) - Args.push_back(std::make_pair(EmitAnyExprToTemp(*I), - I->getType())); + EmitCallArgs(Args, FnType->getAsFunctionProtoType(), ArgBeg, ArgEnd); return EmitCall(CGM.getTypes().getFunctionInfo(ResultType, Args), Callee, Args, TargetDecl); diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp index 4db29ce05d..487da7a603 100644 --- a/lib/CodeGen/CGObjC.cpp +++ b/lib/CodeGen/CGObjC.cpp @@ -79,6 +79,7 @@ RValue CodeGenFunction::EmitObjCMessageExpr(const ObjCMessageExpr *E) { Receiver = EmitScalarExpr(E->getReceiver()); } + // FIXME: This should use EmitCallArgs. CallArgList Args; for (CallExpr::const_arg_iterator i = E->arg_begin(), e = E->arg_end(); i != e; ++i)