[Bug rtl-optimization/108516] Useless movzx instruction emitted when loading 8 bits from 24 bit struct

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jan 24 13:18:52 GMT 2023


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |rtl-optimization

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #1)
> Confirmed:
> 
> Trying 16 -> 6:
>    16: r86:QI#0=zero_extract(r87:HI,0x8,0x8)
>       REG_DEAD r87:HI
>     6: r84:SI=zero_extend(r86:QI)
>       REG_DEAD r86:QI
> Failed to match this instruction:
> (set (reg:SI 84 [ s.e2 ])
>     (zero_extract:SI (reg:HI 87)
>         (const_int 8 [0x8])
>         (const_int 8 [0x8])))

Hmm, is this even valid RTL that combine is producing ...
If there was a subreg to SI mode there from the HI mode reg, it would match
correctly.


More information about the Gcc-bugs mailing list