https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85393
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Looking at cprop2 now, before that we have: (insn 74 73 75 13 (parallel [ (set (reg/f:DI 108) (plus:DI (reg/f:DI 20 frame) (const_int -64 [0xffffffffffffffc0]))) (clobber (reg:CC 17 flags)) ]) "rh1564790.C":15 222 {*adddi_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) (insn 75 74 76 13 (set (reg:DI 5 di) (reg/f:DI 108)) "rh1564790.C":15 85 {*movdi_internal} (expr_list:REG_DEAD (reg/f:DI 108) (expr_list:REG_EQUAL (plus:DI (reg/f:DI 20 frame) (const_int -64 [0xffffffffffffffc0])) (nil)))) before the _ZNSt6vectorIS_IcSaIcEESaIS1_EED1Ev call, but cprop2 replaces it with: rescanning insn with uid = 62. LOCAL COPY-PROP: Replacing reg 107 in insn 62 with reg 123 rescanning insn with uid = 75. LOCAL COPY-PROP: Replacing reg 108 in insn 75 with reg 123 rescanning insn with uid = 118. LOCAL COPY-PROP: Replacing reg 121 in insn 118 with reg 123 reg 123 isn't set in all paths that reach this basic block though (and, isn't local copy-prop something supposed to be local anyway?).