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.

Reply via email to