Changes in directory llvm/lib/Target/PowerPC:
PPCISelDAGToDAG.cpp updated: 1.150 -> 1.151 PPCISelLowering.cpp updated: 1.66 -> 1.67 --- Log message: Use the default impl of DYNAMIC_STACKALLOC, allowing us to delete some code. --- Diffs of the changes: (+4 -41) PPCISelDAGToDAG.cpp | 38 -------------------------------------- PPCISelLowering.cpp | 7 ++++--- 2 files changed, 4 insertions(+), 41 deletions(-) Index: llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp diff -u llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.150 llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.151 --- llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.150 Wed Jan 11 20:01:45 2006 +++ llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp Sun Jan 15 03:02:48 2006 @@ -96,7 +96,6 @@ #include "PPCGenDAGISel.inc" private: - SDOperand SelectDYNAMIC_STACKALLOC(SDOperand Op); SDOperand SelectADD_PARTS(SDOperand Op); SDOperand SelectSUB_PARTS(SDOperand Op); SDOperand SelectSETCC(SDOperand Op); @@ -531,42 +530,6 @@ return 0; } -SDOperand PPCDAGToDAGISel::SelectDYNAMIC_STACKALLOC(SDOperand Op) { - SDNode *N = Op.Val; - - // FIXME: We are currently ignoring the requested alignment for handling - // greater than the stack alignment. This will need to be revisited at some - // point. Align = N.getOperand(2); - if (!isa<ConstantSDNode>(N->getOperand(2)) || - cast<ConstantSDNode>(N->getOperand(2))->getValue() != 0) { - std::cerr << "Cannot allocate stack object with greater alignment than" - << " the stack alignment yet!"; - abort(); - } - SDOperand Chain = Select(N->getOperand(0)); - SDOperand Amt = Select(N->getOperand(1)); - - SDOperand R1Reg = CurDAG->getRegister(PPC::R1, MVT::i32); - - SDOperand R1Val = CurDAG->getCopyFromReg(Chain, PPC::R1, MVT::i32); - Chain = R1Val.getValue(1); - - // Subtract the amount (guaranteed to be a multiple of the stack alignment) - // from the stack pointer, giving us the result pointer. - SDOperand Result = CurDAG->getTargetNode(PPC::SUBF, MVT::i32, Amt, R1Val); - - // Copy this result back into R1. - Chain = CurDAG->getNode(ISD::CopyToReg, MVT::Other, Chain, R1Reg, Result); - - // Copy this result back out of R1 to make sure we're not using the stack - // space without decrementing the stack pointer. - Result = CurDAG->getCopyFromReg(Chain, PPC::R1, MVT::i32); - - // Finally, replace the DYNAMIC_STACKALLOC with the copyfromreg. - CodeGenMap[Op.getValue(0)] = Result; - CodeGenMap[Op.getValue(1)] = Result.getValue(1); - return SDOperand(Result.Val, Op.ResNo); -} SDOperand PPCDAGToDAGISel::SelectADD_PARTS(SDOperand Op) { SDNode *N = Op.Val; @@ -854,7 +817,6 @@ switch (N->getOpcode()) { default: break; - case ISD::DYNAMIC_STACKALLOC: return SelectDYNAMIC_STACKALLOC(Op); case ISD::ADD_PARTS: return SelectADD_PARTS(Op); case ISD::SUB_PARTS: return SelectSUB_PARTS(Op); case ISD::SETCC: return SelectSETCC(Op); Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp diff -u llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.66 llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.67 --- llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.66 Fri Jan 13 21:14:10 2006 +++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp Sun Jan 15 03:02:48 2006 @@ -110,9 +110,10 @@ setOperationAction(ISD::GlobalAddress, MVT::i32, Custom); setOperationAction(ISD::ConstantPool, MVT::i32, Custom); - // Not implemented yet. - setOperationAction(ISD::STACKSAVE, MVT::Other, Expand); - setOperationAction(ISD::STACKRESTORE, MVT::Other, Expand); + // Use the default implementation. + setOperationAction(ISD::STACKSAVE , MVT::Other, Expand); + setOperationAction(ISD::STACKRESTORE , MVT::Other, Expand); + setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32 , Expand); if (TM.getSubtarget<PPCSubtarget>().is64Bit()) { // They also have instructions for converting between i64 and fp. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits