https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89008

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |wschmidt at gcc dot gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Eventually the issue also just became latent.  SLSR does

Replacing: _7 = _12 * 83886080;
With: _7 = _12;

Replacing: _19 = _12 * 2;
With: _19 = _2;

where the latter is bogus replacing 0 with 4.  Eventually SLSR is confused by

  _12 = b_lsm.9_34 * 0;

being present in the IL, not sure.  IL before SLSR:

  _12 = b_lsm.9_34 * 0;
...
  _2 = _12 + 4;
...
  _19 = _12 * 2;
  _6 = -_19;
  g_21 = (long unsigned int) _6;
  a = g_21;

possibly checks some multiple-of which breaks down with zero.

On trunk the * 0 is gone (possibly the "fix").

Reply via email to