mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Replace LiveInterval::killedAt with isKilledAtInstr.
Return true for LRGs that end at EarlyClobber or Register slots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189642 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
da6fc15f0f
commit
1362dcb589
@ -287,12 +287,13 @@ namespace llvm {
|
||||
return r != end() && r->start <= index;
|
||||
}
|
||||
|
||||
/// killedAt - Return true if a live range ends at index. Note that the kill
|
||||
/// point is not contained in the half-open live range. It is usually the
|
||||
/// getDefIndex() slot following its last use.
|
||||
bool killedAt(SlotIndex index) const {
|
||||
const_iterator r = find(index.getRegSlot(true));
|
||||
return r != end() && r->end == index;
|
||||
/// Return true if a live range ends at the instruction at this index. Note
|
||||
/// that the kill point is not contained in the half-open live range. It is
|
||||
/// usually the EarlyClobber or Register slot following its last use.
|
||||
bool isKilledAtInstr(SlotIndex index) const {
|
||||
SlotIndex BaseIdx = index.getBaseIndex();
|
||||
const_iterator r = find(BaseIdx);
|
||||
return r != end() && r->end.getBaseIndex() == BaseIdx;
|
||||
}
|
||||
|
||||
/// getLiveRangeContaining - Return the live range that contains the
|
||||
|
@ -278,7 +278,7 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink) {
|
||||
// Always shrink COPY uses that probably come from live range splitting.
|
||||
if (MI->readsVirtualRegister(Reg) &&
|
||||
(MI->isCopy() || MOI->isDef() || MRI.hasOneNonDBGUse(Reg) ||
|
||||
LI.killedAt(Idx)))
|
||||
LI.isKilledAtInstr(Idx)))
|
||||
ToShrink.insert(&LI);
|
||||
|
||||
// Remove defined value.
|
||||
|
@ -496,7 +496,7 @@ bool RegPressureTracker::recede(PressureDiff *PDiff) {
|
||||
// Adjust liveouts if LiveIntervals are available.
|
||||
if (RequireIntervals) {
|
||||
const LiveInterval *LI = getInterval(Reg);
|
||||
if (LI && !LI->killedAt(SlotIdx))
|
||||
if (LI && !LI->isKilledAtInstr(SlotIdx))
|
||||
discoverLiveOut(Reg);
|
||||
}
|
||||
increaseRegPressure(Reg);
|
||||
@ -550,7 +550,7 @@ bool RegPressureTracker::advance() {
|
||||
bool lastUse = false;
|
||||
if (RequireIntervals) {
|
||||
const LiveInterval *LI = getInterval(Reg);
|
||||
lastUse = LI && LI->killedAt(SlotIdx);
|
||||
lastUse = LI && LI->isKilledAtInstr(SlotIdx);
|
||||
}
|
||||
else {
|
||||
// Allocatable physregs are always single-use before register rewriting.
|
||||
@ -886,7 +886,7 @@ void RegPressureTracker::bumpDownwardPressure(const MachineInstr *MI) {
|
||||
// to be bottom-scheduled to avoid searching uses at each query.
|
||||
SlotIndex CurrIdx = getCurrSlot();
|
||||
const LiveInterval *LI = getInterval(Reg);
|
||||
if (LI && LI->killedAt(SlotIdx)
|
||||
if (LI && LI->isKilledAtInstr(SlotIdx)
|
||||
&& !findUseBetween(Reg, CurrIdx, SlotIdx, MRI, LIS)) {
|
||||
decreaseRegPressure(Reg);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user