https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119193
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2025-03-10 Component|tree-optimization |middle-end Status|UNCONFIRMED |NEW --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- On the RTL level we in one spot we have: Trying 16, 14 -> 17: 16: r134:DI=r156:DI<<0x28&0xff0000000000 REG_DEAD r156:DI 14: r132:DI=r155:DI<<0x20&0xff00000000 REG_DEAD r155:DI 17: r135:DI=r132:DI|r134:DI REG_DEAD r134:DI REG_DEAD r132:DI Failed to match this instruction: (set (reg:DI 135 [ _19 ]) (ior:DI (and:DI (ashift:DI (reg:DI 156 [ fD.4585 ]) (const_int 40 [0x28])) (const_int 280375465082880 [0xff0000000000])) (and:DI (ashift:DI (reg:DI 155 [ eD.4584 ]) (const_int 32 [0x20])) (const_int 1095216660480 [0xff00000000])))) This is: ubfiz rt, r156, 40, 8 mov r135, rt bfi r135, r155, 32, 8 But we don't have a pattern for that ... There might be another one or 2 bugs about this too.