OSDN Git Service

Reverse the FlaggedNodes after scanning up for flagged preds or else the order would...
authorEvan Cheng <evan.cheng@apple.com>
Mon, 7 Aug 2006 22:12:12 +0000 (22:12 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 7 Aug 2006 22:12:12 +0000 (22:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29545 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/ScheduleDAG.cpp

index 97eccb2..2d2c343 100644 (file)
@@ -55,11 +55,16 @@ void ScheduleDAG::BuildSchedUnits() {
     
     // Scan up, adding flagged preds to FlaggedNodes.
     SDNode *N = NI;
-    while (N->getNumOperands() &&
-           N->getOperand(N->getNumOperands()-1).getValueType() == MVT::Flag) {
-      N = N->getOperand(N->getNumOperands()-1).Val;
-      NodeSUnit->FlaggedNodes.push_back(N);
-      SUnitMap[N] = NodeSUnit;
+    if (N->getNumOperands() &&
+        N->getOperand(N->getNumOperands()-1).getValueType() == MVT::Flag) {
+      do {
+        N = N->getOperand(N->getNumOperands()-1).Val;
+        NodeSUnit->FlaggedNodes.push_back(N);
+        SUnitMap[N] = NodeSUnit;
+      } while (N->getNumOperands() &&
+               N->getOperand(N->getNumOperands()-1).getValueType()== MVT::Flag);
+      std::reverse(NodeSUnit->FlaggedNodes.begin(),
+                   NodeSUnit->FlaggedNodes.end());
     }
     
     // Scan down, adding this node and any flagged succs to FlaggedNodes if they