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?