https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118623
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|tree-optimization |rtl-optimization --- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- What PRE does is OK. In fact this looks like it goes wrong somewhere on RTL (or during expansion). @@ -19,17 +356,18 @@ e_7 = 1 << _1; _9 = g_5(D) & e_7; if (_9 != 0) - goto <bb 3>; [48.89%] + goto <bb 4>; [48.89%] else - goto <bb 4>; [51.11%] + goto <bb 3>; [51.11%] - <bb 3> [local count: 524952376]: + <bb 3> [local count: 548789448]: + _14 = g_5(D) + 5; <bb 4> [local count: 1073741824]: # RANGE [irange] int [0, 0][5, 5] MASK 0x5 VALUE 0x0 - # _10 = PHI <5(2), 0(3)> - _2 = g_5(D) + _10; - _3 = _2 + g_5(D); + # _10 = PHI <5(3), 0(2)> + # prephitmp_15 = PHI <_14(3), g_5(D)(2)> + _3 = g_5(D) + prephitmp_15; # RANGE [irange] int [0, 1] MASK 0x1 VALUE 0x0 _4 = _3 & 1; if (_4 == 0)