Fixed node deletion bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20207 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Tanya Lattner 2005-02-16 04:00:59 +00:00
parent 2ee51cbeb8
commit db1680b2be
2 changed files with 13 additions and 6 deletions

View File

@ -112,11 +112,12 @@ void MSchedGraph::addNode(const MachineInstr *MI,
void MSchedGraph::deleteNode(MSchedGraphNode *node) {
//Delete the edge to this node from all predecessors
for(MSchedGraphNode::pred_iterator P = node->pred_begin(), PE = node->pred_end();
P != PE; ++P) {
(*P)->deleteSuccessor(node);
while(node->pred_size() > 0) {
//DEBUG(std::cerr << "Delete edge from: " << **P << " to " << *node << "\n");
MSchedGraphNode *pred = *(node->pred_begin());
pred->deleteSuccessor(node);
}
//Remove this node from the graph
GraphMap.erase(node->getInst());

View File

@ -77,6 +77,8 @@ namespace llvm {
Statistic<> MSLoops("modulosched-schedLoops", "Number of loops successfully modulo-scheduled");
Statistic<> IncreasedII("modulosched-increasedII", "Number of times we had to increase II");
Statistic<> SingleBBLoops("modulosched-singeBBLoops", "Number of single basic block loops");
Statistic<> NoSched("modulosched-noSched", "No schedule");
Statistic<> SameStage("modulosched-sameStage", "Max stage is 0");
template<>
struct DOTGraphTraits<MSchedGraph*> : public DefaultDOTGraphTraits {
@ -252,9 +254,13 @@ bool ModuloSchedulingPass::runOnFunction(Function &F) {
++MSLoops;
Changed = true;
}
else
else {
if(!haveSched)
++NoSched;
else
++SameStage;
DEBUG(std::cerr << "Max stage is 0, so no change in loop or reached cap\n");
}
//Clear out our maps for the next basic block that is processed
nodeToAttributesMap.clear();
partialOrder.clear();