https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78904
--- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Uroš Bizjak from comment #2) > No, unfortunately the above is not a valid x86 insn. x86 has two-operand > instructions, so output has to match one of the operands. But these are pseudos. > It looks that combine prefers: > > (subreg:SI (plus:QI > and > (subreg:QI (zero_extract:SI (... op ...) > > while - according to the existing x86 patterns - in the past the patterns > were seemingly combined into: > > (plus:SI > and > (zero_extract:SI (... op ...) So when did this change? Combine in general prefers smaller modes.