https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78438
--- Comment #5 from Segher Boessenkool <segher at gcc dot gnu.org> --- Why is this wrong? This isn't the same reg 94 (it is reused): Failed to match this instruction: (set (mem/c:QI (symbol_ref:DI ("a") [flags 0x2] <var_decl 0x3fffa1d60cf0 a>) [0 a+0 S1 A8]) (subreg:QI (ashiftrt:SI (reg:SI 93 [ b ]) (const_int 26 [0x1a])) 0)) Successfully matched this instruction: (set (reg:SI 94) (ashiftrt:SI (reg:SI 93 [ b ]) (const_int 26 [0x1a]))) Successfully matched this instruction: (set (mem/c:QI (symbol_ref:DI ("a") [flags 0x2] <var_decl 0x3fffa1d60cf0 a>) [0 a+0 S1 A8]) (subreg:QI (reg:SI 94) 0)) The low 8 bits of r93 a>> 26 are exactly what we need to store afaics?