From: Chris Lattner Date: Sun, 15 Jan 2006 08:43:08 +0000 (+0000) Subject: Fix custom lowering of dynamic_stackalloc X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5f652295c27826f26547cf5eb4096a59d86b56b8;p=oota-llvm.git Fix custom lowering of dynamic_stackalloc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25329 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 57a9b1d7765..7903fa68d7c 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/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"); }