https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69030

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |vmakarov at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Note, I need also -march=x86-64 to reproduce.
Seems in remove_pseudos for pseudo 93 we don't have pseudo_slots initialized.
This pseudo is initialized in bb3, then used there and the last use in that bb
is in a debug_insn, this bb then conditionally jumps to another bb where there
is
(insn 121 140 42 6 (set (reg/v:SI 93 [ h ])
        (if_then_else:SI (eq (reg:CCZ 17 flags)
                (const_int 0 [0]))
            (reg/v:SI 93 [ h ])
            (reg:SI 135))) pr69030.c:12 969 {*movsicc_noc}
     (expr_list:REG_DEAD (reg:SI 135)
        (expr_list:REG_DEAD (reg:CCZ 17 flags)
            (expr_list:REG_UNUSED (reg/v:SI 93 [ h ])
                (expr_list:REG_EQUAL (if_then_else:SI (eq (reg:CCZ 17 flags)
                            (const_int 0 [0]))
                        (reg/v:SI 93 [ h ])
                        (const_int 0 [0]))
                    (nil))))))
followed by a debug_insn that uses the SI 93 pseudo, but nothing else
afterwards uses it.  And it seems (at least from *.reload dump without -g) that
LRA decides to remove the dead insn, thus shortening the live range of the
pseudo 93, but doesn't adjust the debug insns mentioning it, thus the pseudo 93
doesn't live in a register nor in memory.

Reply via email to