https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83544
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- In one case we optimize super early to int t = 1 / (int) x <= 0 ? 1 / 0 : 1; which prevents the VRP optimization from the other case. We almost recover in isolate-paths, except that Jeff insisted on using __builtin_trap() instead of __builtin_unreachable(), so we don't. We could still simplify _2 = 1 / x.1_1; if (_2 != 1) a bit to avoid actually performing the division, I think that's already tracked in one of your earlier PRs.