mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
- Each val# can have multiple kills.
- Fix some minor bugs related to special markers on val# def. ~0U means undefined, ~1U means dead val#. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40916 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -347,7 +347,6 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb,
|
||||
|
||||
// Get the Idx of the defining instructions.
|
||||
unsigned defIndex = getDefIndex(MIIdx);
|
||||
|
||||
unsigned ValNum;
|
||||
unsigned SrcReg, DstReg;
|
||||
if (!tii_->isMoveInstr(*mi, SrcReg, DstReg))
|
||||
@ -378,6 +377,7 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb,
|
||||
LiveRange LR(defIndex, killIdx, ValNum);
|
||||
interval.addRange(LR);
|
||||
DOUT << " +" << LR << "\n";
|
||||
interval.addKillForValNum(ValNum, killIdx);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -412,10 +412,11 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb,
|
||||
// block to the 'use' slot of the killing instruction.
|
||||
for (unsigned i = 0, e = vi.Kills.size(); i != e; ++i) {
|
||||
MachineInstr *Kill = vi.Kills[i];
|
||||
unsigned killIdx = getUseIndex(getInstructionIndex(Kill))+1;
|
||||
LiveRange LR(getMBBStartIdx(Kill->getParent()),
|
||||
getUseIndex(getInstructionIndex(Kill))+1,
|
||||
ValNum);
|
||||
killIdx, ValNum);
|
||||
interval.addRange(LR);
|
||||
interval.addKillForValNum(ValNum, killIdx);
|
||||
DOUT << " +" << LR;
|
||||
}
|
||||
|
||||
@ -450,7 +451,7 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb,
|
||||
interval.setValueNumberInfo(1, interval.getValNumInfo(0));
|
||||
|
||||
// Value#0 is now defined by the 2-addr instruction.
|
||||
interval.setValueNumberInfo(0, LiveInterval::VNInfo(DefIndex, ~0U, 0U));
|
||||
interval.setValueNumberInfo(0, LiveInterval::VNInfo(DefIndex, 0U));
|
||||
|
||||
// Add the new live interval which replaces the range for the input copy.
|
||||
LiveRange LR(DefIndex, RedefIndex, ValNo);
|
||||
|
Reference in New Issue
Block a user