Small and carefully crafted testcase showing a miscompilation by GVN
authorChris Lattner <sabre@nondot.org>
Fri, 4 Dec 2009 02:12:12 +0000 (02:12 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 4 Dec 2009 02:12:12 +0000 (02:12 +0000)
that I'm working on.  This is manifesting as a miscompile of 255.vortex
on some targets.  No check lines yet because it fails.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90520 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/GVN/rle.ll

index cdd1f4fa4e89d0036e9094a2173d2646bf89f1ff..ef34a36092a1e228115db79a4ed2fbdce4ff281e 100644 (file)
@@ -280,3 +280,36 @@ Cont:
 }
 
 
+declare i1 @cond() readonly
+declare i1 @cond2() readonly
+
+define i32 @phi_trans2() {
+entry:
+  %P = alloca i32, i32 400
+  br label %F1
+  
+F1:
+  %A = phi i32 [1, %entry], [2, %F]
+  %cond2 = call i1 @cond()
+  br i1 %cond2, label %T1, label %TY
+  
+T1:
+  %P2 = getelementptr i32* %P, i32 %A
+  %x = load i32* %P2
+  %cond = call i1 @cond2()
+  br i1 %cond, label %TX, label %F
+  
+F:
+  %P3 = getelementptr i32* %P, i32 2
+  store i32 17, i32* %P3
+  
+  store i32 42, i32* %P2  ; Provides "P[A]".
+  br label %F1
+
+TX:
+  ret i32 %x  ;; SHOULD NOT BE COMPILED TO 'ret i32 42'.
+TY:
+  ret i32 0
+}
+
+