From 8b9177aee2671568182e1688e1c53f2459038e46 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Thu, 22 Jul 2010 06:01:28 +0000 Subject: [PATCH] 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 --- .../SelectionDAG/ScheduleDAGRRList.cpp | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index 412980ef9d5..6e822499282 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -1036,7 +1036,7 @@ namespace { std::vector 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 &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;