mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 20:12:56 +02:00
Teach legalize to deal with DYNAMIC_STACKALLOC (aka a dynamic llvm alloca)
llvm-svn: 19415
This commit is contained in:
parent
45155a3dee
commit
b3e31c6def
@ -229,7 +229,7 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
|
|||||||
if (I != LegalizedNodes.end()) return I->second;
|
if (I != LegalizedNodes.end()) return I->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDOperand Tmp1, Tmp2;
|
SDOperand Tmp1, Tmp2, Tmp3;
|
||||||
|
|
||||||
SDOperand Result = Op;
|
SDOperand Result = Op;
|
||||||
SDNode *Node = Op.Val;
|
SDNode *Node = Op.Val;
|
||||||
@ -307,6 +307,21 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
|
|||||||
Result = DAG.getNode(Node->getOpcode(), MVT::Other, Tmp1,
|
Result = DAG.getNode(Node->getOpcode(), MVT::Other, Tmp1,
|
||||||
Node->getOperand(1));
|
Node->getOperand(1));
|
||||||
break;
|
break;
|
||||||
|
case ISD::DYNAMIC_STACKALLOC:
|
||||||
|
Tmp1 = LegalizeOp(Node->getOperand(0)); // Legalize the chain.
|
||||||
|
Tmp2 = LegalizeOp(Node->getOperand(1)); // Legalize the size.
|
||||||
|
Tmp3 = LegalizeOp(Node->getOperand(2)); // Legalize the alignment.
|
||||||
|
if (Tmp1 != Node->getOperand(0) || Tmp2 != Node->getOperand(1) ||
|
||||||
|
Tmp3 != Node->getOperand(2))
|
||||||
|
Result = DAG.getNode(ISD::DYNAMIC_STACKALLOC, Node->getValueType(0),
|
||||||
|
Tmp1, Tmp2, Tmp3);
|
||||||
|
|
||||||
|
// Since this op produces two values, make sure to remember that we
|
||||||
|
// legalized both of them.
|
||||||
|
AddLegalizedOperand(SDOperand(Node, 0), Result);
|
||||||
|
AddLegalizedOperand(SDOperand(Node, 1), Result.getValue(1));
|
||||||
|
return Result.getValue(Op.ResNo);
|
||||||
|
|
||||||
case ISD::CALL:
|
case ISD::CALL:
|
||||||
Tmp1 = LegalizeOp(Node->getOperand(0)); // Legalize the chain.
|
Tmp1 = LegalizeOp(Node->getOperand(0)); // Legalize the chain.
|
||||||
Tmp2 = LegalizeOp(Node->getOperand(1)); // Legalize the callee.
|
Tmp2 = LegalizeOp(Node->getOperand(1)); // Legalize the callee.
|
||||||
|
Loading…
Reference in New Issue
Block a user