forked from OSchip/llvm-project
Remove LIS::isAllocatable() and isReserved() helpers.
All callers can simply use the corresponding MRI functions. llvm-svn: 165985
This commit is contained in:
parent
6b7bdf88c9
commit
cea596acf7
|
@ -65,12 +65,6 @@ namespace llvm {
|
||||||
/// Live interval pointers for all the virtual registers.
|
/// Live interval pointers for all the virtual registers.
|
||||||
IndexedMap<LiveInterval*, VirtReg2IndexFunctor> VirtRegIntervals;
|
IndexedMap<LiveInterval*, VirtReg2IndexFunctor> VirtRegIntervals;
|
||||||
|
|
||||||
/// AllocatableRegs - A bit vector of allocatable registers.
|
|
||||||
BitVector AllocatableRegs;
|
|
||||||
|
|
||||||
/// ReservedRegs - A bit vector of reserved registers.
|
|
||||||
BitVector ReservedRegs;
|
|
||||||
|
|
||||||
/// RegMaskSlots - Sorted list of instructions with register mask operands.
|
/// RegMaskSlots - Sorted list of instructions with register mask operands.
|
||||||
/// Always use the 'r' slot, RegMasks are normal clobbers, not early
|
/// Always use the 'r' slot, RegMasks are normal clobbers, not early
|
||||||
/// clobbers.
|
/// clobbers.
|
||||||
|
@ -123,18 +117,6 @@ namespace llvm {
|
||||||
return VirtRegIntervals.inBounds(Reg) && VirtRegIntervals[Reg];
|
return VirtRegIntervals.inBounds(Reg) && VirtRegIntervals[Reg];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// isAllocatable - is the physical register reg allocatable in the current
|
|
||||||
/// function?
|
|
||||||
bool isAllocatable(unsigned reg) const {
|
|
||||||
return AllocatableRegs.test(reg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// isReserved - is the physical register reg reserved in the current
|
|
||||||
/// function
|
|
||||||
bool isReserved(unsigned reg) const {
|
|
||||||
return ReservedRegs.test(reg);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Interval creation.
|
// Interval creation.
|
||||||
LiveInterval &getOrCreateInterval(unsigned Reg) {
|
LiveInterval &getOrCreateInterval(unsigned Reg) {
|
||||||
if (!hasInterval(Reg)) {
|
if (!hasInterval(Reg)) {
|
||||||
|
|
|
@ -164,7 +164,7 @@ void VirtRegAuxInfo::CalculateWeightAndHint(LiveInterval &li) {
|
||||||
continue;
|
continue;
|
||||||
float hweight = Hint[hint] += weight;
|
float hweight = Hint[hint] += weight;
|
||||||
if (TargetRegisterInfo::isPhysicalRegister(hint)) {
|
if (TargetRegisterInfo::isPhysicalRegister(hint)) {
|
||||||
if (hweight > bestPhys && LIS.isAllocatable(hint))
|
if (hweight > bestPhys && mri.isAllocatable(hint))
|
||||||
bestPhys = hweight, hintPhys = hint;
|
bestPhys = hweight, hintPhys = hint;
|
||||||
} else {
|
} else {
|
||||||
if (hweight > bestVirt)
|
if (hweight > bestVirt)
|
||||||
|
|
|
@ -110,8 +110,6 @@ bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
|
||||||
DomTree = &getAnalysis<MachineDominatorTree>();
|
DomTree = &getAnalysis<MachineDominatorTree>();
|
||||||
if (!LRCalc)
|
if (!LRCalc)
|
||||||
LRCalc = new LiveRangeCalc();
|
LRCalc = new LiveRangeCalc();
|
||||||
AllocatableRegs = TRI->getAllocatableSet(fn);
|
|
||||||
ReservedRegs = TRI->getReservedRegs(fn);
|
|
||||||
|
|
||||||
// Allocate space for all virtual registers.
|
// Allocate space for all virtual registers.
|
||||||
VirtRegIntervals.resize(MRI->getNumVirtRegs());
|
VirtRegIntervals.resize(MRI->getNumVirtRegs());
|
||||||
|
@ -542,11 +540,11 @@ void LiveIntervals::computeRegUnitInterval(LiveInterval *LI) {
|
||||||
// Ignore uses of reserved registers. We only track defs of those.
|
// Ignore uses of reserved registers. We only track defs of those.
|
||||||
for (MCRegUnitRootIterator Roots(Unit, TRI); Roots.isValid(); ++Roots) {
|
for (MCRegUnitRootIterator Roots(Unit, TRI); Roots.isValid(); ++Roots) {
|
||||||
unsigned Root = *Roots;
|
unsigned Root = *Roots;
|
||||||
if (!isReserved(Root) && !MRI->reg_empty(Root))
|
if (!MRI->isReserved(Root) && !MRI->reg_empty(Root))
|
||||||
LRCalc->extendToUses(LI, Root);
|
LRCalc->extendToUses(LI, Root);
|
||||||
for (MCSuperRegIterator Supers(Root, TRI); Supers.isValid(); ++Supers) {
|
for (MCSuperRegIterator Supers(Root, TRI); Supers.isValid(); ++Supers) {
|
||||||
unsigned Reg = *Supers;
|
unsigned Reg = *Supers;
|
||||||
if (!isReserved(Reg) && !MRI->reg_empty(Reg))
|
if (!MRI->isReserved(Reg) && !MRI->reg_empty(Reg))
|
||||||
LRCalc->extendToUses(LI, Reg);
|
LRCalc->extendToUses(LI, Reg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,7 +249,7 @@ void LiveRangeEdit::eliminateDeadDefs(SmallVectorImpl<MachineInstr*> &Dead,
|
||||||
unsigned Reg = MOI->getReg();
|
unsigned Reg = MOI->getReg();
|
||||||
if (!TargetRegisterInfo::isVirtualRegister(Reg)) {
|
if (!TargetRegisterInfo::isVirtualRegister(Reg)) {
|
||||||
// Check if MI reads any unreserved physregs.
|
// Check if MI reads any unreserved physregs.
|
||||||
if (Reg && MOI->readsReg() && !LIS.isReserved(Reg))
|
if (Reg && MOI->readsReg() && !MRI.isReserved(Reg))
|
||||||
ReadsPhysRegs = true;
|
ReadsPhysRegs = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,7 +355,7 @@ std::auto_ptr<PBQPRAProblem> PBQPBuilderWithCoalescing::build(
|
||||||
loopInfo->getLoopDepth(mbb));
|
loopInfo->getLoopDepth(mbb));
|
||||||
|
|
||||||
if (cp.isPhys()) {
|
if (cp.isPhys()) {
|
||||||
if (!lis->isAllocatable(dst)) {
|
if (!mf->getRegInfo().isAllocatable(dst)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue