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.

Reply via email to