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.