add another case of undefined behavior without crashing, PR3466.
[oota-llvm.git] / test / Transforms / ScalarRepl / badarray.ll
index f525255b41fb4ec2e6ffa27ced33f5a8a8ca4957..c48848630564bb2e02c7152ee079bceba099b40d 100644 (file)
@@ -1,10 +1,20 @@
-; RUN: llvm-upgrade < %s | llvm-as | opt -scalarrepl -mem2reg | llvm-dis | grep alloca
+; RUN: llvm-as < %s | opt -scalarrepl -instcombine | llvm-dis | not grep alloca
+; PR3466
+
+define i32 @test() {
+       %X = alloca [4 x i32]           ; <[4 x i32]*> [#uses=1]
+        ; Off end of array!
+       %Y = getelementptr [4 x i32]* %X, i64 0, i64 6          ; <i32*> [#uses=2]
+       store i32 0, i32* %Y
+       %Z = load i32* %Y               ; <i32> [#uses=1]
+       ret i32 %Z
+}
 
-int %test() {
-  %X = alloca [ 4 x int ]
-  %Y = getelementptr [4x int]* %X, long 0, long 6 ; Off end of array!
-  store int 0, int* %Y
 
-  %Z = load int* %Y
-  ret int %Z
+define i32 @test2() nounwind {
+entry:
+        %yx2.i = alloca float, align 4          ; <float*> [#uses=1]            
+        %yx26.i = bitcast float* %yx2.i to i64*         ; <i64*> [#uses=1]      
+        %0 = load i64* %yx26.i, align 8         ; <i64> [#uses=0]               
+        unreachable
 }