mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-18 12:29:21 +00:00
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:
parent
2ee51cbeb8
commit
db1680b2be
@ -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());
|
||||
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user