https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87763
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Component|rtl-optimization |target Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot gnu.org --- Comment #75 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think I could add a simple pattern to handle this. Basically this: (set (reg/i:DI 0 x0) (ior:DI (and:DI (reg:DI 107 [ a ]) (const_int -2031617 [0xffffffffffe0ffff])) (const_int 458752 [0x70000]))) Should be able to expand back into: (set (reg 109) (const_int 7 [0x7])) (set (reg/i:DI 0 x0) (ior:DI (and:DI (reg/v:DI 104 [ a ]) (const_int -2031617 [0xffffffffffe0ffff])) (and:DI (ashift:DI (subreg:DI (reg:SI 109 [ t ]) 0) (const_int 16 [0x10])) (const_int 2031616 [0x1f0000]))))