From 76402b9a3da351a54b33431db275ac5c54874fb2 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Fri, 20 Mar 2009 01:28:21 +0000 Subject: The last use in a block that doesn't have successors (return or unreachable) is a kill. llvm-svn: 67357 --- llvm/lib/Analysis/LiveValues.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'llvm/lib/Analysis/LiveValues.cpp') diff --git a/llvm/lib/Analysis/LiveValues.cpp b/llvm/lib/Analysis/LiveValues.cpp index 2634463df20..21ddf6bc363 100644 --- a/llvm/lib/Analysis/LiveValues.cpp +++ b/llvm/lib/Analysis/LiveValues.cpp @@ -131,6 +131,11 @@ LiveValues::Memo &LiveValues::compute(const Value *V) { // 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()) -- cgit v1.2.3