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