Move SDNode order propagation to SDNodeOrdering, which also fixes a missed
case of order propagation during isel.

Thanks Owen for the suggestion!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177525 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/SDNodeOrdering.h b/lib/CodeGen/SelectionDAG/SDNodeOrdering.h
index d2269f8..74010a8 100644
--- a/lib/CodeGen/SelectionDAG/SDNodeOrdering.h
+++ b/lib/CodeGen/SelectionDAG/SDNodeOrdering.h
@@ -34,7 +34,9 @@
   SDNodeOrdering() {}
 
   void add(const SDNode *Node, unsigned O) {
-    OrderMap[Node] = O;
+    unsigned OldOrder = getOrder(Node);
+    if (OldOrder == 0 || (OldOrder > 0 && O < OldOrder))
+      OrderMap[Node] = O;
   }
   void remove(const SDNode *Node) {
     DenseMap<const SDNode*, unsigned>::iterator Itr = OrderMap.find(Node);