https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115934
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Target Milestone|--- |15.0 --- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- Yup, one IV instead of two and + _17 = (unsigned int) left_4(D); + _2 = (unsigned int) rite_5(D); + _1 = _2 + _17; + _13 = (unsigned int) rite_15; + _11 = -_13; + _12 = _1 + _11; + left_14 = (int) _12; failing to identify and hoist the invariant part of left_4(D) + rite_5(D) - rite_15. I guess IVOPTs is only able to hoist fully invariants, not invariant parts when rewriting a use.