https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119594
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Note, with the PR115910 patch this is latent again, the difference is one extra (expr_list:REG_EQUAL (const_int 4294967295 [0xffffffff]) note. (insn 28 27 29 (set (reg:DI 105) (const_int 4294967295 [0xffffffff])) "pr119594.c":12:3 -1 (nil)) (insn 29 28 30 (set (reg:DI 5 di) (reg:DI 105)) "pr119594.c":12:3 -1 (nil)) vs. (insn 28 27 29 (set (reg:DI 105) (const_int 4294967295 [0xffffffff])) "pr119594.c":12:3 -1 (nil)) (insn 29 28 30 (set (reg:DI 5 di) (reg:DI 105)) "pr119594.c":12:3 -1 (expr_list:REG_EQUAL (const_int 4294967295 [0xffffffff]) (nil))) from expansion and with many further changes during fwprop1, starting with -original cost = 1, replacement cost = 5; rejecting replacement -change not profitable Setting REG_EQUAL note +original cost = 4, replacement cost = 4; keeping replacement +rescanning insn with uid = 26. +updating insn 26 in-place +verify found no changes in insn with uid = 26. propagating insn 26 into insn 27, replacing: (set (reg/v:DI 101 [ g ]) (reg:DI 104 [ g ])) -successfully matched this instruction to *zero_extendsidi2: +successfully matched this instruction to *movdi_internal: (set (reg/v:DI 101 [ g ]) - (zero_extend:DI (subreg:SI (reg/v:DI 101 [ g ]) 0))) -original cost = 4, replacement cost = 1; keeping replacement + (const_int 4294967295 [0xffffffff])) +original cost = 4, replacement cost = 4; keeping replacement rescanning insn with uid = 27. updating insn 27 in-place verify found no changes in insn with uid = 27.