add some tests for memdep phi translation + PRE.
authorChris Lattner <sabre@nondot.org>
Fri, 27 Nov 2009 06:42:42 +0000 (06:42 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 27 Nov 2009 06:42:42 +0000 (06:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89996 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/GVN/pre-load.ll

index de904655670b17ca69e143af51e04e18c82c3643..637a6d26c829d243c9c90b28f86ac721ed446fd4 100644 (file)
@@ -11,8 +11,7 @@ block2:
 ; CHECK-NEXT: load i32* %p
 
 block3:
-  %b = bitcast i32 0 to i32
-  store i32 %b, i32* %p
+  store i32 0, i32* %p
   br label %block4
 
 block4:
@@ -22,3 +21,55 @@ block4:
 ; CHECK-NEXT: phi i32
 ; CHECK-NEXT: ret i32
 }
+
+define i32 @test2(i32* %p, i32* %q, i1 %C) {
+; CHECK: @test2
+block1:
+       br i1 %C, label %block2, label %block3
+
+block2:
+ br label %block4
+; CHECK: block2:
+; CHECK-NEXT: load i32* %q
+
+block3:
+  store i32 0, i32* %p
+  br label %block4
+
+block4:
+  %P2 = phi i32* [%p, %block3], [%q, %block2]
+  %PRE = load i32* %P2
+  ret i32 %PRE
+; CHECK: block4:
+; CHECK-NEXT: phi i32 [
+; CHECK-NOT: load
+; CHECK: ret i32
+}
+
+define i32 @test3(i32* %p, i32* %q, i32** %Hack, i1 %C) {
+; CHECK: @test3
+block1:
+  %B = getelementptr i32* %q, i32 1
+  store i32* %B, i32** %Hack
+       br i1 %C, label %block2, label %block3
+
+block2:
+ br label %block4
+; CHECK: block2:
+; CHECK-NEXT: load i32* %B
+
+block3:
+  %A = getelementptr i32* %p, i32 1
+  store i32 0, i32* %A
+  br label %block4
+
+block4:
+  %P2 = phi i32* [%p, %block3], [%q, %block2]
+  %P3 = getelementptr i32* %P2, i32 1
+  %PRE = load i32* %P3
+  ret i32 %PRE
+; CHECK: block4:
+; CHECK-NEXT: phi i32 [
+; CHECK-NOT: load
+; CHECK: ret i32
+}