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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |law at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Ah, so the thing is probably that:
(insn 28 27 29 7 (parallel [
            (set (reg:SI 102)
                (udiv:SI (reg:SI 100)
                    (reg:SI 90 [ D.1884 ])))
            (set (reg:SI 101 [ D.1886 ])
                (umod:SI (reg:SI 100)
                    (reg:SI 90 [ D.1884 ])))
            (clobber (reg:CC 17 flags))
        ]) pr64682.c:21 351 {*udivmodsi4}
     (expr_list:REG_DEAD (reg:SI 100)
        (expr_list:REG_DEAD (reg:SI 90 [ D.1884 ])
            (expr_list:REG_UNUSED (reg:SI 102)
                (expr_list:REG_UNUSED (reg:CC 17 flags)
                    (nil))))))
(insn 29 28 30 7 (parallel [
            (set (reg:SI 90 [ D.1884 ])
                (ior:SI (reg:SI 101 [ D.1886 ])
                    (const_int 5 [0x5])))
            (clobber (reg:CC 17 flags))
        ]) pr64682.c:21 398 {*iorsi_1}
     (expr_list:REG_DEAD (reg:SI 101 [ D.1886 ])
        (expr_list:REG_UNUSED (reg:CC 17 flags)
            (nil))))
(insn 30 29 31 7 (set (mem/c:SI (symbol_ref:DI ("b") [flags 0x2] <var_decl
0x7ffff1867cf0 b>) [1 b+0 S4 A32])
        (reg:SI 90 [ D.1884 ])) pr64682.c:21 90 {*movsi_internal}
     (nil))
we combine these 3 into:
(note 28 27 29 7 NOTE_INSN_DELETED)
(insn 29 28 30 7 (set (reg:SI 90 [ D.1884 ])
        (const_int 5 [0x5])) pr64682.c:21 90 {*movsi_internal}
     (nil))
(insn 30 29 31 7 (set (mem/c:SI (symbol_ref:DI ("b") [flags 0x2] <var_decl
0x7ffff1867cf0 b>) [1 b+0 S4 A32])
        (const_int 5 [0x5])) pr64682.c:21 90 {*movsi_internal}
     (nil))
and then try to distribute notes, and as there was a REG_DEAD note for pseudo
90 (correct IMHO) in insn 28, but insn 29 set it again to something else, when
we try to distribute the REG_DEAD note onto the new insn 29 (or 30), we delete
insn 29 as dead.  Giving up, not familiar enough with the dead note
distribution in the combiner.

Reply via email to