; This testcase ensures that redundant loads are preserved when they are not ; allowed to be eliminated. ; RUN: llvm-as < %s | opt -load-vn -gcse | llvm-dis | grep sub ; define i32 @test1(i32* %P) { %A = load i32* %P ; [#uses=1] store i32 1, i32* %P %B = load i32* %P ; [#uses=1] %C = sub i32 %A, %B ; [#uses=1] ret i32 %C } define i32 @test2(i32* %P) { %A = load i32* %P ; [#uses=1] br label %BB2 BB2: ; preds = %0 store i32 5, i32* %P br label %BB3 BB3: ; preds = %BB2 %B = load i32* %P ; [#uses=1] %C = sub i32 %A, %B ; [#uses=1] ret i32 %C }