A couple of places where reused use operands should be marked kill. This is exposed by recent availability fallthrough changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64745 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2009-02-17 06:41:03 +00:00
parent a66878b881
commit bf18939180
3 changed files with 129 additions and 1 deletions
+11
View File
@@ -1599,6 +1599,12 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM,
PotentialDeadStoreSlots.push_back(ReuseSlot);
}
// Assumes this is the last use. IsKill will be unset if reg is reused
// unless it's a two-address operand.
if (ti == -1)
MI.getOperand(i).setIsKill();
continue;
} // CanReuse
@@ -1764,6 +1770,11 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM,
DefMO = NextMII->findRegisterDefOperand(DestReg);
DefMO->setSubReg(SubIdx);
}
// Mark is killed.
MachineOperand *KillOpnd = NextMII->findRegisterUseOperand(InReg);
KillOpnd->setIsKill();
BackTracked = true;
} else {
DOUT << "Removing now-noop copy: " << MI;