summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h4
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);
OpenPOWER on IntegriCloud