https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68086
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|rtl-optimization |tree-optimization --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So we start with: <bb 3> : _1 = (long unsigned int) i_13; _2 = _1 * 4; _3 = -_2; rebased_15 = data_14(D) + _3; goto <bb 5>; [INV] <bb 4> : _4 = (long unsigned int) i_10; _5 = _4 * 4; _6 = rebased_15 + _5; _7 = *_6; And then forwprop turns it into: _4 = (long unsigned intD.16) i_10; _5 = _4 * 4; _11 = _4 - _1; _21 = _11 * 4; _6 = data_14(D) + _21; # VUSE <.MEM_16(D)> _7 = *_6; Except then IVOPT does not know how to handle this correctly.