https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114589
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement Component|middle-end |tree-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2024-04-04 Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. Why didn't sink1 push _10, _13, _12, and _11 past the conditional here ... If it did that I think it might have optimized correctly. <bb 2> [local count: 118111600]: _11 = &o_3(D)->val; _5 = o_3(D)->has_val; _12 = (sizetype) _5; _13 = _12 << 2; _10 = _11 + _13; if (_5 != 0) goto <bb 5>; [89.00%] else goto <bb 9>; [11.00%] <bb 5> [local count: 105119324]: