https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85730
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |segher at gcc dot gnu.org
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
The GIMPLE IL is now using BIT_INSERT_EXPRs consistently for all cases and
combine does
Trying 8 -> 11:
8: {r90:SI=r89:SI<<0x1;clobber flags:CC;}
REG_DEAD r89:SI
REG_UNUSED flags:CC
11: strict_low_part(r92:V4QI#0)=r90:SI#0
REG_DEAD r90:SI
Failed to match this instruction:
(set (strict_low_part (subreg:QI (reg:V4QI 92 [ v ]) 0))
(ashift:QI (subreg:QI (reg:SI 89 [ v ]) 0)
(const_int 1 [0x1])))
where it fails to try (add:QI (subreg...) (subreg...)) instead of the shift by
1.
Not sure whether targets should have a special-case pattern here or whether
that's for combine to un-canonicalize it?