diff options
author | Daniel Dunbar <daniel@zuster.org> | 2008-09-09 01:06:48 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2008-09-09 01:06:48 +0000 |
commit | 46f45b9bec4a265ad8400a538e5ec3a5683617f1 (patch) | |
tree | 6a9ca0751b54becfb033fb33a1bc954079ad34d1 /lib/CodeGen/CGObjCGNU.cpp | |
parent | f47be933bef073708c2536fa69ef946e7fe08134 (diff) |
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
Diffstat (limited to 'lib/CodeGen/CGObjCGNU.cpp')
-rw-r--r-- | lib/CodeGen/CGObjCGNU.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/CodeGen/CGObjCGNU.cpp b/lib/CodeGen/CGObjCGNU.cpp index 4d69aed816..2bbbb46cd0 100644 --- a/lib/CodeGen/CGObjCGNU.cpp +++ b/lib/CodeGen/CGObjCGNU.cpp @@ -28,6 +28,7 @@ #include "llvm/Target/TargetData.h" #include <map> using namespace clang; +using namespace CodeGen; using llvm::dyn_cast; // The version of the runtime that this class targets. Must match the version @@ -281,9 +282,9 @@ CGObjCGNU::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, // Call the method CallArgList ActualArgs; - ActualArgs.push_back(std::make_pair(Receiver, + ActualArgs.push_back(std::make_pair(RValue::get(Receiver), CGF.getContext().getObjCIdType())); - ActualArgs.push_back(std::make_pair(cmd, + ActualArgs.push_back(std::make_pair(RValue::get(cmd), CGF.getContext().getObjCSelType())); ActualArgs.insert(ActualArgs.end(), CallArgs.begin(), CallArgs.end()); return CGF.EmitCall(imp, ResultType, ActualArgs); @@ -328,9 +329,9 @@ CGObjCGNU::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, // Call the method. CallArgList ActualArgs; - ActualArgs.push_back(std::make_pair(Receiver, + ActualArgs.push_back(std::make_pair(RValue::get(Receiver), CGF.getContext().getObjCIdType())); - ActualArgs.push_back(std::make_pair(cmd, + ActualArgs.push_back(std::make_pair(RValue::get(cmd), CGF.getContext().getObjCSelType())); ActualArgs.insert(ActualArgs.end(), CallArgs.begin(), CallArgs.end()); return CGF.EmitCall(imp, ResultType, ActualArgs); |