https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563

--- Comment #15 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Marc Glisse from comment #12)
> > Canonical example would be if (int_arg + 32U <= 64U) __builtin_unreachable
> > (),
> 
> We don't quite seem to put a range on int_arg with this. We have one
> temporarily, and deduce ranges for things computed based on int_arg, but I
> don't see one on int_arg itself after the pass.

I certainly do see that.
Try -O2 -fdump-tree-all-alias:
int
foo (int int_arg)
{
  if (int_arg + 32U <= 64U) __builtin_unreachable ();
  return int_arg;
}
Already in the evrp pass there is:
  # RANGE ~[-32, 32]
  int int_arg_3(D) = int_arg;

Reply via email to