https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115055
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2024-05-13 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- b_5 = a_3(D) & c_4(D); _1 = a_3(D) == 0; _2 = (int) _1; _6 = b_5 & _2; return _6; I believe reassoc doesn't see that a and (int)(a == 0) are "related" when ranking ops of the AND, so it fails to appropriately order them and thus trigger the simplification. We definitely want to avoid doing n^2 matching combos of all AND operands. So confirmed, but not necessarily confirming the proposed solution.