The srem -> urem transform is not safe for any divisor that's not a power of two.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 23 Nov 2010 20:33:57 +0000 (20:33 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 23 Nov 2010 20:33:57 +0000 (20:33 +0000)
commitc21a821e9f044004bc504dd7bfdfaecb9d4af16b
treee01a80c5fdfbe1e0a146ff48666d071091f90c62
parentb6133d148312a3ec15beb67c2f49a21e5082b666
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
lib/Target/README.txt
lib/Transforms/InstCombine/InstCombineShifts.cpp
test/Transforms/InstCombine/shift.ll