mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Also compute MBB live-in lists in the new rewriter pass.
This deduplicates some code from the optimizing register allocators, and it means that it is now possible to change the register allocators' solutions simply by editing the VirtRegMap between the register allocator pass and the rewriter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158249 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -225,41 +225,3 @@ unsigned RegAllocBase::checkPhysRegInterference(LiveInterval &VirtReg,
|
||||
return *AI;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Add newly allocated physical registers to the MBB live in sets.
|
||||
void RegAllocBase::addMBBLiveIns(MachineFunction *MF) {
|
||||
NamedRegionTimer T("MBB Live Ins", TimerGroupName, TimePassesIsEnabled);
|
||||
SlotIndexes *Indexes = LIS->getSlotIndexes();
|
||||
if (MF->size() <= 1)
|
||||
return;
|
||||
|
||||
LiveIntervalUnion::SegmentIter SI;
|
||||
for (unsigned PhysReg = 0, NumRegs = TRI->getNumRegs(); PhysReg != NumRegs;
|
||||
++PhysReg) {
|
||||
LiveIntervalUnion &LiveUnion = PhysReg2LiveUnion[PhysReg];
|
||||
if (LiveUnion.empty())
|
||||
continue;
|
||||
DEBUG(dbgs() << PrintReg(PhysReg, TRI) << " live-in:");
|
||||
MachineFunction::iterator MBB = llvm::next(MF->begin());
|
||||
MachineFunction::iterator MFE = MF->end();
|
||||
SlotIndex Start, Stop;
|
||||
tie(Start, Stop) = Indexes->getMBBRange(MBB);
|
||||
SI.setMap(LiveUnion.getMap());
|
||||
SI.find(Start);
|
||||
while (SI.valid()) {
|
||||
if (SI.start() <= Start) {
|
||||
if (!MBB->isLiveIn(PhysReg))
|
||||
MBB->addLiveIn(PhysReg);
|
||||
DEBUG(dbgs() << "\tBB#" << MBB->getNumber() << ':'
|
||||
<< PrintReg(SI.value()->reg, TRI));
|
||||
} else if (SI.start() > Stop)
|
||||
MBB = Indexes->getMBBFromIndex(SI.start().getPrevIndex());
|
||||
if (++MBB == MFE)
|
||||
break;
|
||||
tie(Start, Stop) = Indexes->getMBBRange(MBB);
|
||||
SI.advanceTo(Start);
|
||||
}
|
||||
DEBUG(dbgs() << '\n');
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user