forked from OSchip/llvm-project
[regalloc] Fix assertion error when LiveInterval is empty
When evicting interference, it causes an asseertion error since LiveIntervals::intervalIsInOneMBB assumes that input is not empty. This patch fixed bug mentioned in D118020. Reviewed By: MatzeB Differential Revision: https://reviews.llvm.org/D118124
This commit is contained in:
parent
d606e23305
commit
8597458278
|
@ -827,6 +827,8 @@ CancelKill:
|
|||
|
||||
MachineBasicBlock*
|
||||
LiveIntervals::intervalIsInOneMBB(const LiveInterval &LI) const {
|
||||
assert(!LI.empty() && "LiveInterval is empty.");
|
||||
|
||||
// A local live range must be fully contained inside the block, meaning it is
|
||||
// defined and killed at instructions, not at block boundaries. It is not
|
||||
// live in or out of any block.
|
||||
|
|
|
@ -497,7 +497,7 @@ bool DefaultEvictionAdvisor::canEvictInterferenceBasedOnCost(
|
|||
if (Matrix->checkInterference(VirtReg, PhysReg) > LiveRegMatrix::IK_VirtReg)
|
||||
return false;
|
||||
|
||||
bool IsLocal = LIS->intervalIsInOneMBB(VirtReg);
|
||||
bool IsLocal = VirtReg.empty() || LIS->intervalIsInOneMBB(VirtReg);
|
||||
|
||||
// Find VirtReg's cascade number. This will be unassigned if VirtReg was never
|
||||
// involved in an eviction before. If a cascade number was assigned, deny
|
||||
|
|
Loading…
Reference in New Issue