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 | 260652a7af1c1dc910675bc58cbf342dbcf3a9a6 (patch) | |
tree | 06bf885a350867cee14f6565c8aeba826a115f0d /lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h | |
parent | b1883932c7be741160221741828901528f16e525 (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17351 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h')
-rw-r--r-- | lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h b/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h index d1376b702d..356da2457b 100644 --- a/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h +++ b/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); |