Fix PR24563 (LiveDebugVariables unconditionally propagates all DBG_VALUEs)
authorAdrian Prantl <aprantl@apple.com>
Mon, 21 Dec 2015 20:03:00 +0000 (20:03 +0000)
committerAdrian Prantl <aprantl@apple.com>
Mon, 21 Dec 2015 20:03:00 +0000 (20:03 +0000)
commit9e02fe5b4a2d21e864f582f54a95a488e041e2e7
treeb24bc5cd6ffc4fbfeb72bd4827f3800dbe922b20
parent6932e6dcc158994103530bd636ab5ff7634fbd45
Fix PR24563 (LiveDebugVariables unconditionally propagates all DBG_VALUEs)

LiveDebugVariables unconditionally propagates all DBG_VALUE down the
dominator tree, which happens to work fine if there already is another
DBG_VALUE or the DBG_VALUE happends to describe a single-assignment vreg
but is otherwise wrong if the DBG_VALUE is coming from only one of the
predecessors.

In r255759 we introduced a proper data flow analysis scheduled after
LiveDebugVariables that correctly propagates DBG_VALUEs across basic block
boundaries. With the new pass in place, the incorrect propagation in
LiveDebugVariables can be retired witout loosing any of the benefits
where LiveDebugVariables happened to do the right thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256188 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/LiveDebugVariables.cpp
test/DebugInfo/X86/bbjoin.ll [new file with mode: 0644]
test/DebugInfo/X86/live-debug-values.ll