https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102795
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Last reconfirmed| |2021-10-16 Ever confirmed|0 |1 Status|UNCONFIRMED |ASSIGNED Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot gnu.org Severity|normal |enhancement --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Mine. For p2: if (_1 == 0) goto <bb 3>; [34.00%] else goto <bb 4>; [66.00%] <bb 3> [local count: 365072224]: _8 = x_6(D) - _10; goto <bb 5>; [100.00%] <bb 4> [local count: 708669601]: _11 = x_6(D) + 18446744073709551615; _7 = _11 - _10; <bb 5> [local count: 1073741824]: # _5 = PHI <_8(3), _7(4)> this could be transformed to (which is almost p3): if (_1 == 0) goto <bb 5>; [34.00%] else goto <bb 4>; [66.00%] <bb 4> [local count: 708669601]: _11 = x_6(D) + 18446744073709551615; <bb 5> [local count: 1073741824]: # _n = PHI <x_6(D)(2), _11(4)> _5 = _n - _10 And then transfomed to: if (_1 == 0) goto <bb 5>; [34.00%] else goto <bb 4>; [66.00%] <bb 4> [local count: 708669601]: <bb 5> [local count: 1073741824]: # _n = PHI <0(2), -1(4)> _n0 = x_6(D) + _n _5 = _n0 - _10