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)) )