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.

Reply via email to