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.

Reply via email to