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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2026-01-12
     Ever confirmed|0                           |1
           Keywords|                            |needs-bisection,
                   |                            |needs-reduction
          Component|target                      |rtl-optimization

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---

Working:
(insn 18 17 19 3 (set (reg:HI 104 [ iftmp.0_4 ])
        (lshiftrt:HI (subreg:HI (reg/v:SI 108 [ BS_ARG_1D.4962 ]) 0)
            (const_int 8 [0x8]))) "/app/example.cpp":11:14 discrim 1 776
{*lshrhi3_insn}
     (expr_list:REG_DEAD (reg/v:SI 108 [ BS_ARG_1D.4962 ])

vs
not working:
(insn 16 15 17 3 (set (subreg:DI (reg:HI 104 [ iftmp.0_4 ]) 0)
        (zero_extract:DI (subreg:DI (reg/v:SI 108 [ BS_ARG_1D.5099 ]) 0)
            (const_int 15 [0xf])
            (const_int 8 [0x8]))) "/app/example.cpp":11:14 discrim 1 864
{*extzvdi}
     (expr_list:REG_DEAD (reg/v:SI 108 [ BS_ARG_1D.5099 ])
        (nil)))


This happens during combine (it might be a simplify-rtx issue though).
The 15 seems wrong. I think it should be 8.

Confirmed.

Reply via email to