summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h
diff options
context:
space:
mode:
authorJustin Holewinski <jholewinski@nvidia.com>2013-03-20 14:51:01 +0000
committerJustin Holewinski <jholewinski@nvidia.com>2013-03-20 14:51:01 +0000
commitc2d2c8939c276f7ae0cf4d1f8cc9dea7509f5033 (patch)
treea2164fb999638fb56ad61df13496e83f4beadf9d /llvm/lib/CodeGen/SelectionDAG/SDNodeOrdering.h
parent66dc2ec30b11a111ec9b95b3e0739b7b7b84857a (diff)
downloadbcm5719-llvm-c2d2c8939c276f7ae0cf4d1f8cc9dea7509f5033.tar.gz
bcm5719-llvm-c2d2c8939c276f7ae0cf4d1f8cc9dea7509f5033.zip
Move SDNode order propagation to SDNodeOrdering, which also fixes a missed
case of order propagation during isel. Thanks Owen for the suggestion! llvm-svn: 177525
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