https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86945
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P4 |P2 Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. Likely caused by CFG cleanup convert_single_case_switch which generates a range test which is done in a signed type: <bb 2> : id.8_1 = CHAIN.11->id; _3 = id.8_1 - -2147483648; _4 = (unsigned int) _3; if (_4 <= 2147483647) when forwprop then combines this we fold (unsigned int) _3 <= 2147483647 to _3 >= 2147483647 which then is folded as id.8_1 - -2147483648 >= 2147483647 which is then folded to id.8_1 >= 2147483647 + -2147483648. But something goes wrong end we end up simplifying it as true.