mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-15 09:33:39 +00:00
Fix a case where debug_value could affect codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94866 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6ecfccfd55
commit
ca1346122f
@ -838,6 +838,18 @@ void RALocal::AllocateBasicBlock(MachineBasicBlock &MBB) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If a DEBUG_VALUE says something is located in a spilled register,
|
||||||
|
// change the DEBUG_VALUE to be undef, which prevents the register
|
||||||
|
// from being reloaded here. Doing that would change the generated
|
||||||
|
// code, unless another use immediately follows this instruction.
|
||||||
|
if (MI->getOpcode()==TargetInstrInfo::DEBUG_VALUE &&
|
||||||
|
MI->getNumOperands()==3 && MI->getOperand(0).isReg()) {
|
||||||
|
unsigned VirtReg = MI->getOperand(0).getReg();
|
||||||
|
if (VirtReg && TargetRegisterInfo::isVirtualRegister(VirtReg) &&
|
||||||
|
!getVirt2PhysRegMapSlot(VirtReg))
|
||||||
|
MI->getOperand(0).setReg(0U);
|
||||||
|
}
|
||||||
|
|
||||||
// Get the used operands into registers. This has the potential to spill
|
// Get the used operands into registers. This has the potential to spill
|
||||||
// incoming values if we are out of registers. Note that we completely
|
// incoming values if we are out of registers. Note that we completely
|
||||||
// ignore physical register uses here. We assume that if an explicit
|
// ignore physical register uses here. We assume that if an explicit
|
||||||
|
Loading…
x
Reference in New Issue
Block a user