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