diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-10-14 20:28:40 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-10-14 20:28:40 +0000 |
commit | dad2103801e58b559bf14164d1aebdf7f444da5b (patch) | |
tree | a009b90f69dd507d4bba464c231f5f53dc6f01e0 /clang | |
parent | c694e693b098ca624a65815f2481be3223385107 (diff) | |
download | bcm5719-llvm-dad2103801e58b559bf14164d1aebdf7f444da5b.tar.gz bcm5719-llvm-dad2103801e58b559bf14164d1aebdf7f444da5b.zip |
InstCombine: Don't miscompile X % ((Pow2 << A) >>u B)
We assumed that A must be greater than B because the right hand side of
a remainder operator must be nonzero.
However, it is possible for A to be less than B if Pow2 is a power of
two greater than 1.
Take for example:
i32 %A = 0
i32 %B = 31
i32 Pow2 = 2147483648
((Pow2 << 0) >>u 31) is non-zero but A is less than B.
This fixes PR21274.
llvm-svn: 219713
Diffstat (limited to 'clang')
0 files changed, 0 insertions, 0 deletions