summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine/shift.ll
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2010-11-23 20:33:57 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2010-11-23 20:33:57 +0000
commitc21a821e9f044004bc504dd7bfdfaecb9d4af16b (patch)
treee01a80c5fdfbe1e0a146ff48666d071091f90c62 /test/Transforms/InstCombine/shift.ll
parentb6133d148312a3ec15beb67c2f49a21e5082b666 (diff)
downloadllvm-c21a821e9f044004bc504dd7bfdfaecb9d4af16b.tar.gz
llvm-c21a821e9f044004bc504dd7bfdfaecb9d4af16b.tar.bz2
llvm-c21a821e9f044004bc504dd7bfdfaecb9d4af16b.tar.xz
The srem -> urem transform is not safe for any divisor that's not a power of two.
E.g. -5 % 5 is 0 with srem and 1 with urem. Also addresses Frits van Bommel's comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120049 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine/shift.ll')
-rw-r--r--test/Transforms/InstCombine/shift.ll6
1 files changed, 3 insertions, 3 deletions
diff --git a/test/Transforms/InstCombine/shift.ll b/test/Transforms/InstCombine/shift.ll
index 6bebca9cc8..8d1c82991f 100644
--- a/test/Transforms/InstCombine/shift.ll
+++ b/test/Transforms/InstCombine/shift.ll
@@ -443,12 +443,12 @@ entry:
}
define i32 @test38(i32 %x) nounwind readnone {
-entry:
%rem = srem i32 %x, 32
%shl = shl i32 1, %rem
ret i32 %shl
; CHECK: @test38
-; CHECK-NOT: srem
-; CHECK: ret i32
+; CHECK-NEXT: and i32 %x, 31
+; CHECK-NEXT: shl i32 1
+; CHECK-NEXT: ret i32
}