https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114326
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2024-03-13
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
_1 = d1_5(D) ^ d2_6(D);
_2 = _1 & 43981;
_10 = d1_5(D) != d2_6(D);
_11 = _2 == 0;
_12 = _10 | _11;
(d1 != d2) | ((d1 ^ d2) & CST) == 0)
Confirmed.
Obvious if the first part is false then d1 ^ d2 will be 0.
This will work though maybe there is another place where this can be handled
...
(simplify
(bit_ior
(ne@n4 @0 @1)
(cmp
(bit_and
(bit_xor @0 @1)
@2)
@3))
(bit_ior @n4
(cmp { build_zero_cst (TREE_TYPE (@0)); } @3))
)