diff options
author | Owen Anderson <resistor@mac.com> | 2010-07-22 06:01:28 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2010-07-22 06:01:28 +0000 |
commit | 8b9177aee2671568182e1688e1c53f2459038e46 (patch) | |
tree | e8d1601a7dbf507f645a0433c91e408848ac4ae4 /lib/CodeGen | |
parent | 214e46eac77bcea2b57d0d454a2dda1d97e979fb (diff) | |
download | external_llvm-8b9177aee2671568182e1688e1c53f2459038e46.zip external_llvm-8b9177aee2671568182e1688e1c53f2459038e46.tar.gz external_llvm-8b9177aee2671568182e1688e1c53f2459038e46.tar.bz2 |
Revert r109079, which broke a lot of CodeGen tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109082 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index 412980e..6e82249 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -1036,7 +1036,7 @@ namespace { std::vector<SUnit*> Queue; SF Picker; unsigned CurQueueId; - bool TracksRegPressure; + bool isBottomUp; protected: // SUnits - The SUnits for the current graph. @@ -1061,22 +1061,20 @@ namespace { public: RegReductionPriorityQueue(MachineFunction &mf, - bool tracksrp, + bool isbottomup, const TargetInstrInfo *tii, const TargetRegisterInfo *tri, const TargetLowering *tli) - : Picker(this), CurQueueId(0), TracksRegPressure(tracksrp), + : Picker(this), CurQueueId(0), isBottomUp(isbottomup), MF(mf), TII(tii), TRI(tri), TLI(tli), scheduleDAG(NULL) { - if (TracksRegPressure) { - unsigned NumRC = TRI->getNumRegClasses(); - RegLimit.resize(NumRC); - RegPressure.resize(NumRC); - std::fill(RegLimit.begin(), RegLimit.end(), 0); - std::fill(RegPressure.begin(), RegPressure.end(), 0); - for (TargetRegisterInfo::regclass_iterator I = TRI->regclass_begin(), - E = TRI->regclass_end(); I != E; ++I) - RegLimit[(*I)->getID()] = tri->getAllocatableSet(MF, *I).count() - 1; - } + unsigned NumRC = TRI->getNumRegClasses(); + RegLimit.resize(NumRC); + RegPressure.resize(NumRC); + std::fill(RegLimit.begin(), RegLimit.end(), 0); + std::fill(RegPressure.begin(), RegPressure.end(), 0); + for (TargetRegisterInfo::regclass_iterator I = TRI->regclass_begin(), + E = TRI->regclass_end(); I != E; ++I) + RegLimit[(*I)->getID()] = tri->getAllocatableSet(MF, *I).count() - 1; } void initNodes(std::vector<SUnit> &sunits) { @@ -1209,10 +1207,7 @@ namespace { return false; } - void ScheduledNode(SUnit *SU) { - if (!TracksRegPressure) - return; - + void OpenPredLives(SUnit *SU) { const SDNode *N = SU->getNode(); if (!N->isMachineOpcode()) return; @@ -1265,14 +1260,9 @@ namespace { else RegPressure[RCId] -= TLI->getRepRegClassCostFor(VT); } - - dumpRegPressure(); } - void UnscheduledNode(SUnit *SU) { - if (!TracksRegPressure) - return; - + void ClosePredLives(SUnit *SU) { const SDNode *N = SU->getNode(); if (!N->isMachineOpcode()) return; @@ -1327,7 +1317,19 @@ namespace { unsigned RCId = TLI->getRepRegClassFor(VT)->getID(); RegPressure[RCId] += TLI->getRepRegClassCostFor(VT); } + } + void ScheduledNode(SUnit *SU) { + if (!TLI || !isBottomUp) + return; + OpenPredLives(SU); + dumpRegPressure(); + } + + void UnscheduledNode(SUnit *SU) { + if (!TLI || !isBottomUp) + return; + ClosePredLives(SU); dumpRegPressure(); } @@ -1849,7 +1851,7 @@ llvm::createBURRListDAGScheduler(SelectionDAGISel *IS, CodeGenOpt::Level) { const TargetRegisterInfo *TRI = TM.getRegisterInfo(); BURegReductionPriorityQueue *PQ = - new BURegReductionPriorityQueue(*IS->MF, false, TII, TRI, 0); + new BURegReductionPriorityQueue(*IS->MF, true, TII, TRI, 0); ScheduleDAGRRList *SD = new ScheduleDAGRRList(*IS->MF, true, false, PQ); PQ->setScheduleDAG(SD); return SD; @@ -1875,7 +1877,7 @@ llvm::createSourceListDAGScheduler(SelectionDAGISel *IS, CodeGenOpt::Level) { const TargetRegisterInfo *TRI = TM.getRegisterInfo(); SrcRegReductionPriorityQueue *PQ = - new SrcRegReductionPriorityQueue(*IS->MF, false, TII, TRI, 0); + new SrcRegReductionPriorityQueue(*IS->MF, true, TII, TRI, 0); ScheduleDAGRRList *SD = new ScheduleDAGRRList(*IS->MF, true, false, PQ); PQ->setScheduleDAG(SD); return SD; |