mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Handle more cases in LiveRangeEdit::eliminateDeadDefs.
Live intervals for dead physregs may be created during coalescing. We need to update these in the event that their instruction goes away. crash.ll is the unit test that catches it when MI sched is enabled on X86. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184572 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f1f99f394f
commit
03dca5e4b6
@ -58,10 +58,6 @@ class MachineRegisterInfo {
|
||||
/// physical registers.
|
||||
MachineOperand **PhysRegUseDefLists;
|
||||
|
||||
const TargetRegisterInfo *getTargetRegisterInfo() const {
|
||||
return TM.getRegisterInfo();
|
||||
}
|
||||
|
||||
/// getRegUseDefListHead - Return the head pointer for the register use/def
|
||||
/// list for the specified virtual or physical register.
|
||||
MachineOperand *&getRegUseDefListHead(unsigned RegNo) {
|
||||
@ -116,6 +112,10 @@ public:
|
||||
explicit MachineRegisterInfo(const TargetMachine &TM);
|
||||
~MachineRegisterInfo();
|
||||
|
||||
const TargetRegisterInfo *getTargetRegisterInfo() const {
|
||||
return TM.getRegisterInfo();
|
||||
}
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
// Function State
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
@ -249,6 +249,15 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink) {
|
||||
// Check if MI reads any unreserved physregs.
|
||||
if (Reg && MOI->readsReg() && !MRI.isReserved(Reg))
|
||||
ReadsPhysRegs = true;
|
||||
else if (MOI->isDef()) {
|
||||
for (MCRegUnitIterator Units(Reg, MRI.getTargetRegisterInfo());
|
||||
Units.isValid(); ++Units) {
|
||||
if (LiveInterval *LI = LIS.getCachedRegUnit(*Units)) {
|
||||
if (VNInfo *VNI = LI->getVNInfoAt(Idx))
|
||||
LI->removeValNo(VNI);
|
||||
}
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
LiveInterval &LI = LIS.getInterval(Reg);
|
||||
|
Loading…
x
Reference in New Issue
Block a user