https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110410
--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
You can reproduce this still on the trunk but with `-O2 -fno-tree-vrp`.
# RANGE [irange] unsigned int [0, 0]
iftmp.0_22 = (unsigned int) _7;
The range of _7 is because of:
# RANGE [irange] int [0, 65535] MASK 0xffff VALUE 0x0
_7 = _3 >> _6;
iftmp.1_20 = _7 <= 0;
if (iftmp.1_20 != 0)
I tried a simplified testcase and DOM was able to figure out it was 0 that way
and do the prop:
```
unsigned f(int a, unsigned b)
{
a &= 0xffff;
a = a >> b;
bool t = a <= 0;
if (t)
{
a &= 0xf;
return a;
}
return b;
}
```
So I don't understand what is missing the one in comment #3.