https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110087
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|rtl-optimization |tree-optimization
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Keywords| |missed-optimization
Last reconfirmed| |2023-06-02
CC| |pinskia at gcc dot gnu.org
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
_Bool _1;
<bb 2> :
_1 = foo ();
if (_1 != 0)
goto <bb 3>; [INV]
else
goto <bb 4>; [INV]
<bb 3> :
<bb 4> :
# r_2 = PHI <r_5(D)(2), 1(3)>
return r_2;
I wonder if we should address this in PHI-OPT and transform it to
r_2 = r_5(D) | _1;
there? There's zero_one_valued_p we could use for both the
tested value and the value or-ed into.
We already have
/* ((x & 0x1) == 0) ? y : z <op> y -> (-(typeof(y))(x & 0x1) & z) <op> y */
and
/* ((x & 0x1) == 0) ? z <op> y : y -> (-(typeof(y))(x & 0x1) & z) <op> y */