https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78200
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
if-combine is combining parts of
if( (red_cost < 0 && arc->ident == 1)
|| (red_cost > 0 && arc->ident == 2) )
{
to
if (red_cost_86 < 0)
goto <bb 17>;
else
goto <bb 18>;
<bb 17>:
if (_23 == 1)
goto <bb 19>;
else
goto <bb 20>;
<bb 18>:
_340 = _23 == 2;
_341 = red_cost_86 > 0;
_338 = _340 & _341;
if (_338 != 0)
goto <bb 19>;
else
goto <bb 20>;
the guard could be written as
red_cost != 0 && arc->ident == 1 + (red_cost > 0)
before if-combine we see
red_cost_86 = _27 + _29;
if (red_cost_86 < 0)
goto <bb 17>;
else
goto <bb 18>;
<bb 17>:
if (_23 == 1)
goto <bb 20>;
else
goto <bb 21>;
<bb 18>:
if (red_cost_86 > 0)
goto <bb 19>;
else
goto <bb 21>;
<bb 19>:
if (_23 == 2)
goto <bb 20>;
else
goto <bb 21>;