https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54571
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot
gnu.org
Status|NEW |ASSIGNED
Depends on| |103216
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This is fixed mostly by the patch which fixes PR 103216.
We still have stuff like:
_1 = x_3(D) & 1;
_7 = _1 != 0;
_8 = (int) _7;
_9 = y_4(D) | _8;
and:
_1 = x_3(D) & 2;
_7 = _1 != 0;
_8 = (int) _7;
_9 = y_4(D) | _8;
and
_1 = x_3(D) & 2;
_7 = _1 != 0;
_8 = (int) _7;
_9 = _8 << 1;
_10 = y_4(D) | _9;
Which we produce things like:
xorl %eax, %eax
andl $2, %edi
sete %al
orl %esi, %eax
Where the sete/xor could be reproduced with shift for an example.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103216
[Bug 103216] missed optimization, phiopt/vrp?