https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101160
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- x86_64 at least. Before the change, the first function contained (insn 12 3 13 2 (clobber (reg:TI 82 [ <retval> ])) "param3.C":12:1 -1 (expr_list:REG_UNUSED (reg:TI 82 [ <retval> ]) (nil))) (insn 13 12 9 2 (set (reg:TI 82 [ <retval> ]) (const_int 0 [0])) "param3.C":12:1 -1 (nil)) (insn 9 13 10 2 (set (reg/i:TI 0 ax) (reg:TI 82 [ <retval> ])) "param3.C":12:1 73 {*movti_internal} (expr_list:REG_DEAD (reg:TI 82 [ <retval> ]) (nil))) (insn 10 9 0 2 (use (reg/i:TI 0 ax)) "param3.C":12:1 -1 (nil)) in split1, now it has: (insn 11 3 12 2 (clobber (reg:TI 82 [ <retval> ])) "param2.C":12:1 -1 (expr_list:REG_UNUSED (reg:TI 82 [ <retval> ]) (nil))) (insn 12 11 9 2 (set (reg:TI 82 [ <retval> ]) (const_int 0 [0])) "param2.C":12:1 -1 (nil)) (insn 9 12 0 2 (use (reg:TI 82 [ <retval> ])) "param2.C":12:1 -1 (nil)) instead and triggers the 2956 if (bb_index == EXIT_BLOCK) 2957 { 2958 unsigned regno; 2959 bitmap_iterator bi; 2960 EXECUTE_IF_SET_IN_BITMAP (df->exit_block_uses, FIRST_PSEUDO_REGISTER, 2961 regno, bi) 2962 gcc_unreachable (); 2963 } assertion because pseudo 82 is in df->exit_block_uses.