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;