https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103690
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2021-12-13 --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (gdb) p debug_gimple_stmt(stmt) _67 = _14 + _66; Before pre had: intD.9 * __trans_tmp_1D.2946; .... # RANGE [1, 9223372036854775807] NONZERO 9223372036854775804 _66 = (long unsigned intD.16) _17; # PT = nonlocal escaped # ALIGN = 4, MISALIGN = 0 _67 = __trans_tmp_1_14 + _66; But after: # RANGE [1, 9223372036854775807] NONZERO 9223372036854775804 _66 = (long unsigned intD.16) _17; # PT = nonlocal escaped # ALIGN = 4, MISALIGN = 0 _67 = _14 + _66; We already removed the definition of _14 too: Removing dead stmt __trans_tmp_1_14 = _24 + 4; So it is the order of the removal which is causing issues.