mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 16:17:38 +00:00
Avoid adding a duplicate def. This fixes PR4478.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74857 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -369,8 +369,17 @@ bool LiveVariables::HandlePhysRegKill(unsigned Reg, MachineInstr *MI) {
|
||||
for (const unsigned *SubRegs = TRI->getSubRegisters(Reg);
|
||||
unsigned SubReg = *SubRegs; ++SubRegs) {
|
||||
if (PartUses.count(SubReg)) {
|
||||
PhysRegDef[Reg]->addOperand(MachineOperand::CreateReg(SubReg,
|
||||
true, true));
|
||||
bool NeedDef = true;
|
||||
if (PhysRegDef[Reg] == PhysRegDef[SubReg]) {
|
||||
MachineOperand *MO = PhysRegDef[Reg]->findRegisterDefOperand(SubReg);
|
||||
if (MO) {
|
||||
NeedDef = false;
|
||||
assert(!MO->isDead());
|
||||
}
|
||||
}
|
||||
if (NeedDef)
|
||||
PhysRegDef[Reg]->addOperand(MachineOperand::CreateReg(SubReg,
|
||||
true, true));
|
||||
LastRefOrPartRef->addRegisterKilled(SubReg, TRI, true);
|
||||
for (const unsigned *SS = TRI->getSubRegisters(SubReg); *SS; ++SS)
|
||||
PartUses.erase(*SS);
|
||||
|
||||
Reference in New Issue
Block a user