diff options
| author | Tanya Lattner <tonic@nondot.org> | 2004-10-30 00:39:07 +0000 |
|---|---|---|
| committer | Tanya Lattner <tonic@nondot.org> | 2004-10-30 00:39:07 +0000 |
| commit | ddebd1eeaaa78cf6f6c3b7d2ac550922ba84db71 (patch) | |
| tree | cd75ba8377163582de9ff2e5c0ab9c7b43655a1d /llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h | |
| parent | b56287dfd28408d3a9fe81c1a108f02b115afe88 (diff) | |
| download | bcm5719-llvm-ddebd1eeaaa78cf6f6c3b7d2ac550922ba84db71.tar.gz bcm5719-llvm-ddebd1eeaaa78cf6f6c3b7d2ac550922ba84db71.zip | |
Fixed bug with infinite epilogues.
Fixed issue with generating the partial order. It now adds the nodes not in recurrences in sets for each connected component.
llvm-svn: 17351
Diffstat (limited to 'llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h')
| -rw-r--r-- | llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h b/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h index d1376b702d7..356da2457be 100644 --- a/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h +++ b/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h @@ -49,7 +49,7 @@ namespace llvm { std::set<std::pair<MSchedGraphNode*, unsigned> > edgesToIgnore; //Vector containing the partial order - std::vector<std::vector<MSchedGraphNode*> > partialOrder; + std::vector<std::set<MSchedGraphNode*> > partialOrder; //Vector containing the final node order std::vector<MSchedGraphNode*> FinalNodeOrder; @@ -85,8 +85,8 @@ namespace llvm { bool scheduleNode(MSchedGraphNode *node, int start, int end); - void predIntersect(std::vector<MSchedGraphNode*> &CurrentSet, std::vector<MSchedGraphNode*> &IntersectResult); - void succIntersect(std::vector<MSchedGraphNode*> &CurrentSet, std::vector<MSchedGraphNode*> &IntersectResult); + void predIntersect(std::set<MSchedGraphNode*> &CurrentSet, std::set<MSchedGraphNode*> &IntersectResult); + void succIntersect(std::set<MSchedGraphNode*> &CurrentSet, std::set<MSchedGraphNode*> &IntersectResult); void reconstructLoop(MachineBasicBlock*); @@ -101,6 +101,8 @@ namespace llvm { void removePHIs(const MachineBasicBlock *origBB, std::vector<MachineBasicBlock *> &prologues, std::vector<MachineBasicBlock *> &epilogues, MachineBasicBlock *kernelBB, std::map<Value*, MachineBasicBlock*> &newValLocation); + void connectedComponentSet(MSchedGraphNode *node, std::set<MSchedGraphNode*> &ccSet, std::set<MSchedGraphNode*> &lastNodes); + public: ModuloSchedulingPass(TargetMachine &targ) : target(targ) {} virtual bool runOnFunction(Function &F); |

