Fixed bug where instructions in the kernel were not ordered right to preserve dependencies in a cycle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18314 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Tanya Lattner
2004-11-28 23:36:15 +00:00
parent b2e4cd645a
commit 28e5eabf65
4 changed files with 32 additions and 7 deletions

View File

@ -22,9 +22,9 @@
using namespace llvm;
MSchedGraphNode::MSchedGraphNode(const MachineInstr* inst,
MSchedGraph *graph,
MSchedGraph *graph, unsigned idx,
unsigned late, bool isBranch)
: Inst(inst), Parent(graph), latency(late), isBranchInstr(isBranch) {
: Inst(inst), Parent(graph), index(idx), latency(late), isBranchInstr(isBranch) {
//Add to the graph
graph->addNode(inst, this);
@ -113,7 +113,7 @@ void MSchedGraph::buildNodesAndEdges() {
//Save PHI instructions to deal with later
std::vector<const MachineInstr*> phiInstrs;
unsigned index = 0;
//Loop over instructions in MBB and add nodes and edges
for (MachineBasicBlock::const_iterator MI = BB->begin(), e = BB->end(); MI != e; ++MI) {
//Get each instruction of machine basic block, get the delay
@ -149,7 +149,7 @@ void MSchedGraph::buildNodesAndEdges() {
isBranch = true;
//Node is created and added to the graph automatically
MSchedGraphNode *node = new MSchedGraphNode(MI, this, delay, isBranch);
MSchedGraphNode *node = new MSchedGraphNode(MI, this, index, delay, isBranch);
DEBUG(std::cerr << "Created Node: " << *node << "\n");
@ -211,6 +211,7 @@ void MSchedGraph::buildNodesAndEdges() {
}
}
}
++index;
}
addMemEdges(memInstructions);
addMachRegEdges(regNumtoNodeMap);