https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91351
Marc Glisse <glisse at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC|glisse at gcc dot gnu.org | --- Comment #3 from Marc Glisse <glisse at gcc dot gnu.org> --- Switch lowering produces things like _6 = e_2(D) + 4294967285; if (_6 > 2) for range checking, where _6 has type enum E, and VRP2 later takes advantage of strict enum to assume that _6 cannot be large. It seems like the range check should use a type that is not an enum. (the bisection result makes little sense to me)