https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118103
--- Comment #5 from Li Pan <pan2.li at intel dot com> --- bisect late-combine2 results in some invalid combine here for main function. (insn 40 5 41 2 (set (reg:SI 11 a1 [151]) (reg:SI 69 frm)) "pr118103-simple.c":67:15 2712 {frrmsi} (nil)) (insn 41 40 7 2 (set (reg:SI 69 frm) (const_int 2 [0x2])) "pr118103-simple.c":69:8 2710 {fsrmsi_restore} (nil)) (insn 42 10 11 2 (set (reg:SI 69 frm) (reg:SI 11 a1 [151])) "pr118103-simple.c":70:8 2710 {fsrmsi_restore} (nil)) trying to combine definition of r11 in: 40: a1:SI=frm:SI into: 42: frm:SI=a1:SI instruction becomes a no-op: (set (reg:SI 69 frm) (reg:SI 69 frm)) original cost = 4 + 4 (weighted: 8.000000), replacement cost = 2147483647; keeping replacement rescanning insn with uid = 42. updating insn 42 in-place verify found no changes in insn with uid = 42. deleting insn 40 deleting insn with uid = 40 But when the same code in another function instead of main, we will have trying to combine definition of r12 in: 18: a2:SI=frm:SI into: 20: frm:SI=a2:SI -- cannot satisfy all definitions and uses in insn 20