OSDN Git Service

r64073 commit message is lost. Here it is:
authorEvan Cheng <evan.cheng@apple.com>
Sun, 8 Feb 2009 08:00:36 +0000 (08:00 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sun, 8 Feb 2009 08:00:36 +0000 (08:00 +0000)
Right now if the coalesced copy def is dead and its src is a kill, and that
there are now other uses within the live range, the coalescer would mark the
def of the source register as dead. But it should also check if there are
other kills which means the value has other uses not in the live range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64075 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SimpleRegisterCoalescing.cpp

index 75389a4..a7d5d00 100644 (file)
@@ -867,11 +867,12 @@ SimpleRegisterCoalescing::ShortenDeadCopySrcLiveRange(LiveInterval &li,
   if (LR->valno->def == RemoveStart) {
     // If the def MI defines the val# and this copy is the only kill of the
     // val#, then propagate the dead marker.
-    if (li.isOnlyKill(LR->valno, RemoveEnd)) {
+    if (!li.isOnlyKill(LR->valno, RemoveEnd))
+      li.removeKill(LR->valno, RemoveEnd);
+    else {
       PropagateDeadness(li, CopyMI, RemoveStart, li_, tri_);
       ++numDeadValNo;
-    } else
-      li.removeKill(LR->valno, RemoveEnd);
+    }
   }
 
   removeRange(li, RemoveStart, LR->end, li_, tri_);