mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 08:17:40 +00:00
mi-sched: update PressureDiffs on-the-fly for liveness.
This removes all expensive pressure tracking logic from the scheduling critical path of node comparison. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189643 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -408,7 +408,13 @@ void ScheduleDAGInstrs::addVRegUseDeps(SUnit *SU, unsigned OperIdx) {
|
||||
unsigned Reg = MI->getOperand(OperIdx).getReg();
|
||||
|
||||
// Record this local VReg use.
|
||||
VRegUses.insert(VReg2SUnit(Reg, SU));
|
||||
VReg2UseMap::iterator UI = VRegUses.find(Reg);
|
||||
for (; UI != VRegUses.end(); ++UI) {
|
||||
if (UI->SU == SU)
|
||||
break;
|
||||
}
|
||||
if (UI == VRegUses.end())
|
||||
VRegUses.insert(VReg2SUnit(Reg, SU));
|
||||
|
||||
// Lookup this operand's reaching definition.
|
||||
assert(LIS && "vreg dependencies requires LiveIntervals");
|
||||
@@ -755,7 +761,7 @@ void ScheduleDAGInstrs::buildSchedGraph(AliasAnalysis *AA,
|
||||
|
||||
if (RPTracker) {
|
||||
PressureDiff *PDiff = PDiffs ? &(*PDiffs)[SU->NodeNum] : 0;
|
||||
RPTracker->recede(PDiff);
|
||||
RPTracker->recede(/*LiveUses=*/0, PDiff);
|
||||
assert(RPTracker->getPos() == prior(MII) && "RPTracker can't find MI");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user