Add support for cross block dse.
This patch enables dead stroe elimination across basicblocks.
Example:
define void @test_02(i32 %N) {
%1 = alloca i32
store i32 %N, i32* %1
store i32 10, i32* @x
%2 = load i32, i32* %1
%3 = icmp ne i32 %2, 0
br i1 %3, label %4, label %5
; <label>:4
store i32 5, i32* @x
br label %7
; <label>:5
%6 = load i32, i32* @x
store i32 %6, i32* @y
br label %7
; <label>:7
store i32 15, i32* @x
ret void
}
In the above example dead store "store i32 5, i32* @x" is now eliminated.
Differential Revision: http://reviews.llvm.org/D11143
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245025
91177308-0d34-0410-b5e6-
96231b3b80d8