diff options
author | Chris Lattner <sabre@nondot.org> | 2006-01-15 08:43:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-01-15 08:43:08 +0000 |
commit | 2d5914261369108f419c4000bf00eabf1a2eb6ff (patch) | |
tree | 18f6fae8453207adf6f2920a2f1aae180d200ddf /llvm/lib/CodeGen | |
parent | 5186bd831237c22eec96d00276bdec7b2eb264bc (diff) | |
download | bcm5719-llvm-2d5914261369108f419c4000bf00eabf1a2eb6ff.tar.gz bcm5719-llvm-2d5914261369108f419c4000bf00eabf1a2eb6ff.zip |
Fix custom lowering of dynamic_stackalloc
llvm-svn: 25329
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 57a9b1d7765..7903fa68d7c 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -842,22 +842,25 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { } else Result = Op.getValue(0); + Tmp1 = Result; + Tmp2 = Result.getValue(1); switch (TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0))) { default: assert(0 && "This action is not supported yet!"); case TargetLowering::Custom: { - SDOperand Tmp = TLI.LowerOperation(Result, DAG); - if (Tmp.Val) { - Result = LegalizeOp(Tmp); + Tmp3 = TLI.LowerOperation(Tmp1, DAG); + if (Tmp3.Val) { + Tmp1 = LegalizeOp(Tmp3); + Tmp2 = LegalizeOp(Tmp3.getValue(1)); } // FALLTHROUGH if the target thinks it is legal. } case TargetLowering::Legal: // Since this op produce 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); + AddLegalizedOperand(SDOperand(Node, 0), Tmp1); + AddLegalizedOperand(SDOperand(Node, 1), Tmp2); + return Op.ResNo ? Tmp2 : Tmp1; } assert(0 && "Unreachable"); } |