The last use in a block that doesn't have successors
(return or unreachable) is a kill.

llvm-svn: 67357
diff --git a/llvm/lib/Analysis/LiveValues.cpp b/llvm/lib/Analysis/LiveValues.cpp
index 2634463..21ddf6b 100644
--- a/llvm/lib/Analysis/LiveValues.cpp
+++ b/llvm/lib/Analysis/LiveValues.cpp
@@ -131,6 +131,11 @@
     // Note the block in which this use occurs.
     M.Used.insert(UseBB);
 
+    // If the use block doesn't have successors, the value can be
+    // considered killed.
+    if (succ_begin(UseBB) == succ_end(UseBB))
+      M.Killed.insert(UseBB);
+
     // Observe whether the value is used outside of the loop in which
     // it is defined. Switch to an enclosing loop if necessary.
     for (; L; L = L->getParentLoop())