https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92549
--- Comment #6 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Richard Biener from comment #2) > But it looks like x86 has exactly patterns like this - but in this case > I guess combine won't ever try this because hardregs are invovled > (not sure if it ever tries to "simplify" the three-set into the parallel > two-set variant) combine will use hard registers just fine, although sometimes targetm.class_likely_spilled_p gets in the way, for x86; but you already found out everything still is pseudos here (and xchg doesn't seem like a good thing to do usually, even).