summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2013-04-13 06:07:36 +0000
committerAndrew Trick <atrick@apple.com>2013-04-13 06:07:36 +0000
commit52b8387fd1755ab578daa7185199e8979d525fae (patch)
treeb00ef999662022e411c96bd11ad85a95c98075fb
parentfd3834f7a1cc06f3843a83080c65eadb613927f4 (diff)
downloadbcm5719-llvm-52b8387fd1755ab578daa7185199e8979d525fae.tar.gz
bcm5719-llvm-52b8387fd1755ab578daa7185199e8979d525fae.zip
Catch another case where SD fails to propagate node order.
I need to handle this for the test case in my following scheduler commit. Work is already under way to redesign the mechanism for node order propagation because this case by case approach is unmaintainable. llvm-svn: 179448
-rw-r--r--llvm/lib/Target/X86/X86ISelDAGToDAG.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index 6041669f818..c5f0fb74acc 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -1720,7 +1720,7 @@ SDNode *X86DAGToDAGISel::SelectAtomicLoadArith(SDNode *Node, EVT NVT) {
Op = ADD;
break;
}
-
+
Val = getAtomicLoadArithTargetConstant(CurDAG, dl, Op, NVT, Val);
bool isUnOp = !Val.getNode();
bool isCN = Val.getNode() && (Val.getOpcode() == ISD::TargetConstant);
@@ -2343,6 +2343,9 @@ SDNode *X86DAGToDAGISel::Select(SDNode *Node) {
DEBUG(dbgs() << "=> "; ResHi.getNode()->dump(CurDAG); dbgs() << '\n');
}
+ // Propagate ordering to the last node, for now.
+ CurDAG->AssignOrdering(InFlag.getNode(), CurDAG->GetOrdering(Node));
+
return NULL;
}
OpenPOWER on IntegriCloud