Add callseq_begin/end support
authorChris Lattner <sabre@nondot.org>
Wed, 24 Aug 2005 00:47:15 +0000 (00:47 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 24 Aug 2005 00:47:15 +0000 (00:47 +0000)
Call stil not supported yet

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22998 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCISelDAGToDAG.cpp

index d949bce741fbe466361f4559b086ce1b3c7a981e..5300f59b89f9cdccef3298772abac7ea5bda310e 100644 (file)
@@ -920,6 +920,16 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
                          AddrOp1, AddrOp2, Select(N->getOperand(0)));
     break;
   }
+
+  case ISD::CALLSEQ_START:
+  case ISD::CALLSEQ_END: {
+    unsigned Amt = cast<ConstantSDNode>(N->getOperand(1))->getValue();
+    unsigned Opc = N->getOpcode() == ISD::CALLSEQ_START ?
+                       PPC::ADJCALLSTACKDOWN : PPC::ADJCALLSTACKUP;
+    CurDAG->SelectNodeTo(N, MVT::Other, Opc, Select(N->getOperand(0)),
+                         getI32Imm(Amt));
+    break;
+  }
   case ISD::RET: {
     SDOperand Chain = Select(N->getOperand(0));     // Token chain.