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?