Fix an infinite loop I caused by making sure to legalize the flag operand
of CALLSEQ_* nodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25582 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 77e721e..e5dd538 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -823,6 +823,13 @@
     Tmp2 = Node->getOperand(0);
     if (Tmp1 != Tmp2)
       Node->setAdjCallChain(Tmp1);
+    
+    // If this has a flag input, do legalize it.
+    if (Node->getOperand(Node->getNumOperands()-1).getValueType() == MVT::Flag){
+      Tmp1 = LegalizeOp(Node->getOperand(Node->getNumOperands()-1));
+      if (Tmp1 != Node->getOperand(Node->getNumOperands()-1))
+        Node->setAdjCallFlag(Tmp1);
+    }
       
     // Note that we do not create new CALLSEQ_DOWN/UP nodes here.  These
     // nodes are treated specially and are mutated in place.  This makes the dag
@@ -1365,7 +1372,8 @@
                              Tmp2,
                              Node->getOperand(3));
       }
-      Node = Result.Val;
+      Result = LegalizeOp(Result);
+      break;
     }
 
     switch (getTypeAction(Node->getOperand(1).getValueType())) {