Change CodeGen to emit calls using (RValue,Type) list:
- Add CodeGenFunction::EmitAnyExprToTemp
o Like EmitAnyExpr, but emits aggregates to a temporary location if
none is available. Seems like this should be simpler (even aside
from using first class aggregates).
- Killed CodeGenFunction::EmitCallArg (just append the pair)
- Conversion of RValues to actual call arguments is now isolated in
CodeGenFunction::EmitCall.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55970 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGCall.h b/lib/CodeGen/CGCall.h
index b4e8d1f..78a83a8 100644
--- a/lib/CodeGen/CGCall.h
+++ b/lib/CodeGen/CGCall.h
@@ -17,6 +17,8 @@
#include "clang/AST/Type.h"
+#include "CGValue.h"
+
namespace llvm {
class Function;
struct ParamAttrsWithIndex;
@@ -36,7 +38,7 @@
/// CallArgList - Type for representing both the value and type of
/// arguments in a call.
- typedef llvm::SmallVector<std::pair<llvm::Value*, QualType>, 16> CallArgList;
+ typedef llvm::SmallVector<std::pair<RValue, QualType>, 16> CallArgList;
/// CGFunctionInfo - Class to encapsulate the information about a
/// function definition.