https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92140
--- Comment #30 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Segher Boessenkool from comment #29) > > Does it help the i386 port if we disallow a hard reg dest as well? > RA should be able to handle that just fine as well. I don't know from the top of my head, but the current approach where invalid/unwanted propagation is rejected by ix86_legitimate_combined_insn works well. So, to answer your question, the effects of a proposed patch should be analysed on a case-by-case basis. There are several instructions that use fixed output registers (mostly double-word insns that use rax/rdx pair, e.g. mult and div) which are usually tied to the input operand, but nobody ever analysed how additional RA freedom would affect them. > > This still will not get rid of *all* (non-fixed) hard registers, you > still can get them from explicit register variables, and target code > (or even generic code) can still put some in non-copies, which combine > will happily propagate further. Thanks for this info, so it looks that a safety net in the form of ix86_legitimate_combined_insn (and insn constraints) is still needed.