Refactor handling of calls:
- Added CodeGenFunction::EmitCall which just takes the callee, return
type, and a list of (Value*,QualType) pairs.
- Added CodeGenFunction::EmitCallArg which handles emitting code for
a call argument and turning it into an appropriate
(Value*,QualType) pair.
- Changed Objective-C runtime interface so that the actual emission
of arguments for message sends is (once again) done in the code to
emit a message send.
No intended functionality change, this is prep work for better ABI
support and for Objective-C property setter support.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55560 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h
index d1f3a6a..e00c665 100644
--- a/lib/CodeGen/CodeGenFunction.h
+++ b/lib/CodeGen/CodeGenFunction.h
@@ -299,6 +299,12 @@
// Scalar Expression Emission
//===--------------------------------------------------------------------===//
+ typedef llvm::SmallVector<std::pair<llvm::Value*, QualType>, 16> CallArgList;
+ void EmitCallArg(const Expr *E, CallArgList &Args);
+ RValue EmitCall(llvm::Value *Callee,
+ QualType ResultType,
+ const CallArgList &Args);
+
RValue EmitCallExpr(const CallExpr *E);
RValue EmitCallExpr(Expr *FnExpr, CallExpr::const_arg_iterator ArgBeg,
@@ -308,13 +314,6 @@
CallExpr::const_arg_iterator ArgBeg,
CallExpr::const_arg_iterator ArgEnd);
- RValue EmitCallExprExt(llvm::Value *Callee,
- QualType ResultType,
- CallExpr::const_arg_iterator ArgBeg,
- CallExpr::const_arg_iterator ArgEnd,
- llvm::Value **ExtraArgs,
- unsigned NumExtraArgs);
-
RValue EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E);