Remove the ISD::CALL and ISD::TAILCALL nodes
authorChris Lattner <sabre@nondot.org>
Sat, 28 Jan 2006 00:18:58 +0000 (00:18 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 28 Jan 2006 00:18:58 +0000 (00:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25721 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index 73109004d10796f808bd14977a4794208ab857c1..48231adc8c1a7d3fb366cb25fb9202adb8730c11 100644 (file)
@@ -903,34 +903,6 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
     AddLegalizedOperand(SDOperand(Node, 0), Result);
     AddLegalizedOperand(SDOperand(Node, 1), Result.getValue(1));
     return Result.getValue(Op.ResNo);
-  case ISD::TAILCALL:
-  case ISD::CALL: {
-    Tmp1 = LegalizeOp(Node->getOperand(0));  // Legalize the chain.
-    Tmp2 = LegalizeOp(Node->getOperand(1));  // Legalize the callee.
-
-    bool Changed = false;
-    std::vector<SDOperand> Ops;
-    for (unsigned i = 2, e = Node->getNumOperands(); i != e; ++i) {
-      Ops.push_back(LegalizeOp(Node->getOperand(i)));
-      Changed |= Ops.back() != Node->getOperand(i);
-    }
-
-    if (Tmp1 != Node->getOperand(0) || Tmp2 != Node->getOperand(1) || Changed) {
-      std::vector<MVT::ValueType> RetTyVTs;
-      RetTyVTs.reserve(Node->getNumValues());
-      for (unsigned i = 0, e = Node->getNumValues(); i != e; ++i)
-        RetTyVTs.push_back(Node->getValueType(i));
-      Result = SDOperand(DAG.getCall(RetTyVTs, Tmp1, Tmp2, Ops,
-                                     Node->getOpcode() == ISD::TAILCALL), 0);
-    } else {
-      Result = Result.getValue(0);
-    }
-    // Since calls produce multiple values, make sure to remember that we
-    // legalized all of them.
-    for (unsigned i = 0, e = Node->getNumValues(); i != e; ++i)
-      AddLegalizedOperand(SDOperand(Node, i), Result.getValue(i));
-    return Result.getValue(Op.ResNo);
-  }
   case ISD::BR:
     Tmp1 = LegalizeOp(Node->getOperand(0));  // Legalize the chain.
     if (Tmp1 != Node->getOperand(0))
@@ -3278,29 +3250,6 @@ SDOperand SelectionDAGLegalize::PromoteOp(SDOperand Op) {
                          Node->getOperand(1), Tmp2, Tmp3,
                          Node->getOperand(4));
     break;
-  case ISD::TAILCALL:
-  case ISD::CALL: {
-    Tmp1 = LegalizeOp(Node->getOperand(0));  // Legalize the chain.
-    Tmp2 = LegalizeOp(Node->getOperand(1));  // Legalize the callee.
-
-    std::vector<SDOperand> Ops;
-    for (unsigned i = 2, e = Node->getNumOperands(); i != e; ++i)
-      Ops.push_back(LegalizeOp(Node->getOperand(i)));
-
-    assert(Node->getNumValues() == 2 && Op.ResNo == 0 &&
-           "Can only promote single result calls");
-    std::vector<MVT::ValueType> RetTyVTs;
-    RetTyVTs.reserve(2);
-    RetTyVTs.push_back(NVT);
-    RetTyVTs.push_back(MVT::Other);
-    SDNode *NC = DAG.getCall(RetTyVTs, Tmp1, Tmp2, Ops,
-                             Node->getOpcode() == ISD::TAILCALL);
-    Result = SDOperand(NC, 0);
-
-    // Insert the new chain mapping.
-    AddLegalizedOperand(Op.getValue(1), Result.getValue(1));
-    break;
-  }
   case ISD::BSWAP:
     Tmp1 = Node->getOperand(0);
     Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, NVT, Tmp1);
@@ -4079,35 +4028,6 @@ void SelectionDAGLegalize::ExpandOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi){
     }
     break;
   }
-  case ISD::TAILCALL:
-  case ISD::CALL: {
-    SDOperand Chain  = LegalizeOp(Node->getOperand(0));  // Legalize the chain.
-    SDOperand Callee = LegalizeOp(Node->getOperand(1));  // Legalize the callee.
-
-    bool Changed = false;
-    std::vector<SDOperand> Ops;
-    for (unsigned i = 2, e = Node->getNumOperands(); i != e; ++i) {
-      Ops.push_back(LegalizeOp(Node->getOperand(i)));
-      Changed |= Ops.back() != Node->getOperand(i);
-    }
-
-    assert(Node->getNumValues() == 2 && Op.ResNo == 0 &&
-           "Can only expand a call once so far, not i64 -> i16!");
-
-    std::vector<MVT::ValueType> RetTyVTs;
-    RetTyVTs.reserve(3);
-    RetTyVTs.push_back(NVT);
-    RetTyVTs.push_back(NVT);
-    RetTyVTs.push_back(MVT::Other);
-    SDNode *NC = DAG.getCall(RetTyVTs, Chain, Callee, Ops,
-                             Node->getOpcode() == ISD::TAILCALL);
-    Lo = SDOperand(NC, 0);
-    Hi = SDOperand(NC, 1);
-
-    // Insert the new chain mapping.
-    AddLegalizedOperand(Op.getValue(1), Hi.getValue(2));
-    break;
-  }
   case ISD::AND:
   case ISD::OR:
   case ISD::XOR: {   // Simple logical operators -> two trivial pieces.
index 60f062847fc356999fad1ca8475bcb4c9c11f40b..53fbb0573656314da3ef61aefa4230e24d2d2bfc 100644 (file)
@@ -374,7 +374,7 @@ void SelectionDAG::RemoveNodeFromCSEMaps(SDNode *N) {
   // flag result (which cannot be CSE'd) or is one of the special cases that are
   // not subject to CSE.
   if (!Erased && N->getValueType(N->getNumValues()-1) != MVT::Flag &&
-      N->getOpcode() != ISD::CALL && N->getOpcode() != ISD::CALLSEQ_START &&
+      N->getOpcode() != ISD::CALLSEQ_START &&
       N->getOpcode() != ISD::CALLSEQ_END && !N->isTargetOpcode()) {
     
     N->dump();
@@ -2096,8 +2096,6 @@ const char *SDNode::getOperationName(const SelectionDAG *G) const {
   case ISD::BR_CC:  return "br_cc";
   case ISD::BRTWOWAY_CC:  return "brtwoway_cc";
   case ISD::RET:     return "ret";
-  case ISD::CALL:    return "call";
-  case ISD::TAILCALL:return "tailcall";
   case ISD::CALLSEQ_START:  return "callseq_start";
   case ISD::CALLSEQ_END:    return "callseq_end";