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.