Add support for basic blocks, fix a bug in result # computation
authorChris Lattner <sabre@nondot.org>
Sun, 21 Aug 2005 18:49:29 +0000 (18:49 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 21 Aug 2005 18:49:29 +0000 (18:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22948 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/ScheduleDAG.cpp

index 650242ba555f070c94b7703f76a5b87585edcd08..485ef36efa22b95254968198e9b1acb6d1206e2d 100644 (file)
@@ -80,7 +80,7 @@ unsigned SimpleSched::Emit(SDOperand Op) {
     // nodes.  Check that the DAG matches the TD files's expectation of #
     // operands.
     unsigned NumResults = Op.Val->getNumValues();
-    if (NumResults && Op.getOperand(NumResults-1).getValueType() == MVT::Other)
+    if (NumResults && Op.Val->getValueType(NumResults-1) == MVT::Other)
       --NumResults;
 #ifndef _NDEBUG
     unsigned Operands = Op.getNumOperands();
@@ -118,6 +118,9 @@ unsigned SimpleSched::Emit(SDOperand Op) {
       } else if (GlobalAddressSDNode *TGA =
                        dyn_cast<GlobalAddressSDNode>(Op.getOperand(i))) {
         MI->addGlobalAddressOperand(TGA->getGlobal(), false, 0);
+      } else if (BasicBlockSDNode *BB =
+                       dyn_cast<BasicBlockSDNode>(Op.getOperand(i))) {
+        MI->addMachineBasicBlockOperand(BB->getBasicBlock());
       } else {
         unsigned R = Emit(Op.getOperand(i));
         // Add an operand, unless this corresponds to a chain node.
@@ -133,7 +136,9 @@ unsigned SimpleSched::Emit(SDOperand Op) {
     default:
       Op.Val->dump(); 
       assert(0 && "This target-independent node should have been selected!");
-    case ISD::EntryToken: break;
+    case ISD::EntryToken:
+    case ISD::BasicBlock:
+      break;
     case ISD::TokenFactor:
       for (unsigned i = 0, e = Op.getNumOperands(); i != e; ++i)
         Emit(Op.getOperand(i));