diff options
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h b/llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h index d2269f8accf..74010a8096c 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h +++ b/llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h @@ -34,7 +34,9 @@ public: 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); |

