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

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

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

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The bug seems to be introduced during cse_local, before that we have:
(insn 28 26 31 2 (parallel [
            (set (reg:CCZ 17 flags)
                (compare:CCZ (reg:SI 188)
                    (const_int 0 [0])))
            (set (reg:SI 93 [ _13 ])
                (ctz:SI (reg:SI 188)))
        ]) "pr85376.c":12 735 {*bsfsi_1}
     (expr_list:REG_DEAD (reg:SI 188)
        (expr_list:REG_UNUSED (reg:SI 93 [ _13 ])
            (expr_list:REG_UNUSED (reg:CCZ 17 flags)
                (nil)))))
...
(insn 55 54 56 2 (set (reg:SI 194 [ o ])
        (const_int 32 [0x20])) "pr85376.c":14 86 {*movsi_internal}
     (expr_list:REG_DEAD (reg/v:HI 91 [ o ])
        (nil)))
(insn 56 55 57 2 (set (reg:QI 108 [ _26+1 ])
        (const_int 0 [0])) "pr85376.c":14 88 {*movqi_internal}
     (nil))
(insn 57 56 58 2 (parallel [
            (set (reg:CC 17 flags)
                (compare:CC (subreg:QI (reg:SI 194 [ o ]) 0)
                    (subreg:QI (reg:SI 104 [ _23 ]) 0)))
            (set (reg:QI 195)
                (minus:QI (subreg:QI (reg:SI 194 [ o ]) 0)
                    (subreg:QI (reg:SI 104 [ _23 ]) 0)))
        ]) "pr85376.c":14 294 {*subqi_3}
     (expr_list:REG_DEAD (reg:SI 194 [ o ])
        (expr_list:REG_DEAD (reg:SI 104 [ _23 ])
            (nil))))

But cse_local changes that to:
(insn 56 54 57 2 (set (reg:QI 108 [ _26+1 ])
        (const_int 0 [0])) "pr85376.c":14 88 {*movqi_internal}
     (nil))
(insn 57 56 58 2 (parallel [
            (set (reg:CC 17 flags)
                (compare:CC (subreg:QI (reg:SI 93 [ _13 ]) 0)
                    (subreg:QI (reg:SI 104 [ _23 ]) 0)))
            (set (reg:QI 195)
                (minus:QI (subreg:QI (reg:SI 93 [ _13 ]) 0)
                    (subreg:QI (reg:SI 104 [ _23 ]) 0)))
        ]) "pr85376.c":14 294 {*subqi_3}
     (expr_list:REG_DEAD (reg:SI 194 [ o ])
        (expr_list:REG_DEAD (reg:SI 104 [ _23 ])
            (nil))))
but pseudo 93 certainly isn't known to contain (const_int 32).  I don't think
cse pass uses cselib though.

Reply via email to