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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I'd say the bug is in the way how we try to lower the zero_extract store:
Trying 19, 13, 21 -> 22:
Failed to match this instruction:
(set (zero_extract:DI (mem/j:HI (plus:DI (reg/v/f:DI 60 [ s ])
                (const_int 10 [0xa])) [0 +0 S2 A16])
        (const_int 2 [0x2])
        (const_int 7 [0x7]))
    (const_int -1 [0xffffffffffffffff]))
Successfully matched this instruction:
(set (reg:HI 67)
    (const_int -128 [0xffffffffffffff80]))
Successfully matched this instruction:
(set (mem/j:HI (plus:DI (reg/v/f:DI 60 [ s ])
            (const_int 10 [0xa])) [0 +0 S2 A16])
    (ior:HI (mem/j:HI (plus:DI (reg/v/f:DI 60 [ s ])
                (const_int 10 [0xa])) [0 +0 S2 A16])
        (reg:HI 67)))
I'd say storing a -1 into a zero_extract is fine, at least IMHO we shouldn't
rely on it being zero extended.

Reply via email to