Fix logic error optimizing "icmp pred (urem X, Y), Y" where pred is signed.
[oota-llvm.git] / test / Transforms / InstSimplify / compare.ll
index 82d56028c37a617ddeacda0c5c277dd9ec43d40e..a0a9c8540ab5515908909cc897f18c72a67ee6f6 100644 (file)
@@ -480,7 +480,7 @@ define i1 @urem5(i16 %X, i32 %Y) {
   %B = urem i32 %A, %Y
   %C = icmp slt i32 %B, %Y
   ret i1 %C
-; CHECK: ret i1 true
+; CHECK-NOT: ret i1 true
 }
 
 define i1 @urem6(i32 %X, i32 %Y) {
@@ -491,6 +491,14 @@ define i1 @urem6(i32 %X, i32 %Y) {
 ; CHECK: ret i1 true
 }
 
+define i1 @urem7(i32 %X) {
+; CHECK: @urem7
+  %A = urem i32 1, %X
+  %B = icmp sgt i32 %A, %X
+  ret i1 %B
+; CHECK-NOT: ret i1 false
+}
+
 define i1 @srem1(i32 %X) {
 ; CHECK: @srem1
   %A = srem i32 %X, -5