https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103359
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aldyh at gcc dot gnu.org
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the important part is to eliminate the store to 'c' which GCC11 manages to
do
from EVRP while trunk fails at this task. The IL into EVRP is absoultely
identical:
<bb 2> :
goto <bb 8>; [INV]
<bb 8> :
# h_10 = PHI <4(2), h_10(3), h_10(4), 1(7)>
d.2_8 = d;
if (d.2_8 != 0)
goto <bb 3>; [INV]
<bb 3> :
if (h_10 != 0)
goto <bb 4>; [INV]
<bb 4> :
e.0_1 = e;
if (e.0_1 != 0)
goto <bb 5>; [INV]
<bb 5> :
a.1_2 = a;
_3 = (short int) a.1_2;
_14 = a.1_2 & 1;
_4 = (short int) _14;
_5 = _4 | h_10;
_6 = (int) _5;
f.4_21 = (unsigned short) _5;
_23 = f.4_21 * 3;
_24 = (short int) _23;
if (_5 == 0)
goto <bb 6>; [INV]
else
goto <bb 7>; [INV]
<bb 6> :
c = 0;