diff options
author | Dan Gohman <gohman@apple.com> | 2008-09-13 01:54:27 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-09-13 01:54:27 +0000 |
commit | 705e3f774254a03ef28a27c1d15903547a0e9d4c (patch) | |
tree | be6c4833a95fbd06a8315df342c5ee55aef50473 /lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp | |
parent | 00330db76463b811bc5908306a1c7248a1eeaf2b (diff) | |
download | external_llvm-705e3f774254a03ef28a27c1d15903547a0e9d4c.zip external_llvm-705e3f774254a03ef28a27c1d15903547a0e9d4c.tar.gz external_llvm-705e3f774254a03ef28a27c1d15903547a0e9d4c.tar.bz2 |
Define CallSDNode, an SDNode subclass for use with ISD::CALL.
Currently it just holds the calling convention and flags
for isVarArgs and isTailCall.
And it has several utility methods, which eliminate magic
5+2*i and similar index computations in several places.
CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
nodes that are not CSE'd gracefully.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56183 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp index a95a50b..599f0dd 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp @@ -5325,9 +5325,6 @@ TargetLowering::LowerCallTo(SDValue Chain, const Type *RetTy, ArgListTy &Args, SelectionDAG &DAG) { SmallVector<SDValue, 32> Ops; Ops.push_back(Chain); // Op#0 - Chain - Ops.push_back(DAG.getConstant(CallingConv, getPointerTy())); // Op#1 - CC - Ops.push_back(DAG.getConstant(isVarArg, getPointerTy())); // Op#2 - VarArg - Ops.push_back(DAG.getConstant(isTailCall, getPointerTy())); // Op#3 - Tail Ops.push_back(Callee); // Handle all of the outgoing arguments. @@ -5412,10 +5409,10 @@ TargetLowering::LowerCallTo(SDValue Chain, const Type *RetTy, LoweredRetTys.push_back(MVT::Other); // Always has a chain. // Create the CALL node. - SDValue Res = DAG.getNode(ISD::CALL, - DAG.getVTList(&LoweredRetTys[0], - LoweredRetTys.size()), - &Ops[0], Ops.size()); + SDValue Res = DAG.getCall(CallingConv, isVarArg, isTailCall, + DAG.getVTList(&LoweredRetTys[0], + LoweredRetTys.size()), + &Ops[0], Ops.size()); Chain = Res.getValue(LoweredRetTys.size() - 1); // Gather up the call result into a single value. |