https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108783
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |needs-bisection Ever confirmed|0 |1 CC| |rguenth at gcc dot gnu.org Target Milestone|--- |13.0 Status|UNCONFIRMED |NEW Last reconfirmed| |2023-02-14 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- reassoc1 does <bb 3> [local count: 966367643]: # a_4(ab) = PHI <x_9(D)(2), a_5(ab)(4)> + _14 = a_4(ab) != 0; foo (x_9(D), y_12(D)); goto <bb 5>; [99.96%] @@ -36,8 +59,7 @@ <bb 5> [local count: 1073312329]: _1 = y_12(D) != 0; _2 = a_4(ab) != 0; - _3 = _1 & _2; - _10 = _2 & _3; + _10 = _14 & _1; _15 = (int) _10; return _15; Confirmed. It also inserts a new use of a_4(ab) which we try to generally avoid (but in this specific case it shouldn't be a problem). Not sure why reassoc expands _2 and re-emits the _14 definition here.