Add a test for the foldSelectICmpAndOr fix committed in r180779.
[oota-llvm.git] / test / Transforms / InstCombine / 2004-02-23-ShiftShiftOverflow.ll
index 911a73f57c2ae7ce0d91aa0ceeb88fdfeb73e7a1..a08e3a884ceb306e5e651fe9cf249fb718d98b07 100644 (file)
@@ -1,8 +1,15 @@
-; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep 34
+; RUN: opt < %s -instcombine -S | not grep 34
 
-int %test(int %X) {
-       ; Do not fold into shr X, 34, as this uses undefined behavior!
-       %Y = shr int %X, ubyte 17
-       %Z = shr int %Y, ubyte 17
-       ret int %Z
+define i32 @test(i32 %X) {
+        ; Do not fold into shr X, 34, as this uses undefined behavior!
+        %Y = ashr i32 %X, 17            ; <i32> [#uses=1]
+        %Z = ashr i32 %Y, 17            ; <i32> [#uses=1]
+        ret i32 %Z
+}
+
+define i32 @test2(i32 %X) {
+        ; Do not fold into shl X, 34, as this uses undefined behavior!
+        %Y = shl i32 %X, 17             ; <i32> [#uses=1]
+        %Z = shl i32 %Y, 17             ; <i32> [#uses=1]
+        ret i32 %Z
 }