[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp
Chris Lattner
lattner at cs.uiuc.edu
Mon Mar 6 21:40:54 PST 2006
Changes in directory llvm/lib/CodeGen/SelectionDAG:
ScheduleDAGList.cpp updated: 1.19 -> 1.20
---
Log message:
Fix some formatting, when looking for hazards, prefer target nodes over
things like copyfromreg.
---
Diffs of the changes: (+15 -7)
ScheduleDAGList.cpp | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.19 llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.20
--- llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.19 Mon Mar 6 11:58:04 2006
+++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp Mon Mar 6 23:40:43 2006
@@ -435,19 +435,27 @@
bool HasNoopHazards = false;
do {
- SUnit *CurrNode = Available.top();
+ SUnit *CurNode = Available.top();
Available.pop();
- HazardRecognizer::HazardType HT =
- HazardRec.getHazardType(CurrNode->Node);
+
+ // Get the node represented by this SUnit.
+ SDNode *N = CurNode->Node;
+ // If this is a pseudo op, like copyfromreg, look to see if there is a
+ // real target node flagged to it. If so, use the target node.
+ for (unsigned i = 0, e = CurNode->FlaggedNodes.size();
+ N->getOpcode() < ISD::BUILTIN_OP_END && i != e; ++i)
+ N = CurNode->FlaggedNodes[i];
+
+ HazardRecognizer::HazardType HT = HazardRec.getHazardType(N);
if (HT == HazardRecognizer::NoHazard) {
- FoundNode = CurrNode;
+ FoundNode = CurNode;
break;
}
// Remember if this is a noop hazard.
HasNoopHazards |= HT == HazardRecognizer::NoopHazard;
- NotReady.push_back(CurrNode);
+ NotReady.push_back(CurNode);
} while (!Available.empty());
// Add the nodes that aren't ready back onto the available list.
@@ -463,14 +471,14 @@
} else if (!HasNoopHazards) {
// Otherwise, we have a pipeline stall, but no other problem, just advance
// the current cycle and try again.
- DEBUG(std::cerr << "*** Advancing cycle, no work to do");
+ DEBUG(std::cerr << "*** Advancing cycle, no work to do\n");
HazardRec.AdvanceCycle();
++NumStalls;
} else {
// Otherwise, we have no instructions to issue and we have instructions
// that will fault if we don't do this right. This is the case for
// processors without pipeline interlocks and other cases.
- DEBUG(std::cerr << "*** Emitting noop");
+ DEBUG(std::cerr << "*** Emitting noop\n");
HazardRec.EmitNoop();
Sequence.push_back(0); // NULL SUnit* -> noop
++NumNoops;
More information about the llvm-commits
mailing list