mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
Reason #3 from 60595 doesn't hold true. If we can fold a PIC load from constpool into a use, the rewrite happens at time of spill (not in VirtRegMap). Later on, if the GlobalBaseReg is spilled, the spiller can see the use uses GlobalBaseReg and do the right thing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60596 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -2059,15 +2059,17 @@ addIntervalsForSpills(const LiveInterval &li,
|
||||
if (isLoadSS || ReMatDefMI->getDesc().canFoldAsLoad())
|
||||
Folded = tryFoldMemoryOperand(MI, vrm, ReMatDefMI, index,
|
||||
Ops, isLoadSS, LdSlot, VReg);
|
||||
unsigned ImpUse = getReMatImplicitUse(li, ReMatDefMI);
|
||||
if (ImpUse) {
|
||||
// Re-matting an instruction with virtual register use. Add the
|
||||
// register as an implicit use on the use MI and update the register
|
||||
// interval's spill weight to HUGE_VALF to prevent it from being
|
||||
// spilled.
|
||||
LiveInterval &ImpLi = getInterval(ImpUse);
|
||||
ImpLi.weight = HUGE_VALF;
|
||||
MI->addOperand(MachineOperand::CreateReg(ImpUse, false, true));
|
||||
if (!Folded) {
|
||||
unsigned ImpUse = getReMatImplicitUse(li, ReMatDefMI);
|
||||
if (ImpUse) {
|
||||
// Re-matting an instruction with virtual register use. Add the
|
||||
// register as an implicit use on the use MI and update the register
|
||||
// interval's spill weight to HUGE_VALF to prevent it from being
|
||||
// spilled.
|
||||
LiveInterval &ImpLi = getInterval(ImpUse);
|
||||
ImpLi.weight = HUGE_VALF;
|
||||
MI->addOperand(MachineOperand::CreateReg(ImpUse, false, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user