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").