mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-11 09:29:20 +00:00
Set weight of zero length intervals to infinite to prevent them from being
spilled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28220 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5d02eafaf2
commit
993141402f
@ -80,6 +80,15 @@ void LiveIntervals::releaseMemory()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool isZeroLengthInterval(LiveInterval *li) {
|
||||||
|
for (LiveInterval::Ranges::const_iterator
|
||||||
|
i = li->ranges.begin(), e = li->ranges.end(); i != e; ++i)
|
||||||
|
if (i->end - i->start > LiveIntervals::InstrSlots::NUM)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// runOnMachineFunction - Register allocate the whole function
|
/// runOnMachineFunction - Register allocate the whole function
|
||||||
///
|
///
|
||||||
bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
|
bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
|
||||||
@ -199,6 +208,16 @@ bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (iterator I = begin(), E = end(); I != E; ++I) {
|
||||||
|
LiveInterval &li = I->second;
|
||||||
|
if (MRegisterInfo::isVirtualRegister(li.reg))
|
||||||
|
// If the live interval legnth is essentially zero, i.e. in every live
|
||||||
|
// range the use follows def immediately, it doesn't make sense to spill
|
||||||
|
// it and hope it will be easier to allocate for this li.
|
||||||
|
if (isZeroLengthInterval(&li))
|
||||||
|
li.weight = float(HUGE_VAL);
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG(dump());
|
DEBUG(dump());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user