Reuse extends the liveness of a register. Transfer the kill to the operand that reuse it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34536 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/VirtRegMap.cpp b/lib/CodeGen/VirtRegMap.cpp
index c1d6ee7..4f1230c 100644
--- a/lib/CodeGen/VirtRegMap.cpp
+++ b/lib/CodeGen/VirtRegMap.cpp
@@ -665,8 +665,13 @@
           // Extend the live range of the MI that last kill the register if
           // necessary.
           MachineOperand *MOK = SSMI->findRegisterUseOperand(PhysReg, true);
-          if (MOK)
+          if (MOK) {
             MOK->unsetIsKill();
+            if (ti == -1)
+              // Unless it's the use of a two-address code, transfer the kill
+              // of the reused register to this use.
+              MI.getOperand(i).setIsKill();
+          }
 
           // The only technical detail we have is that we don't know that
           // PhysReg won't be clobbered by a reloaded stack slot that occurs