[Bug target/92140] clang vs gcc optimizing with adc/sbb
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Oct 21 09:07:00 GMT 2019
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.
More information about the Gcc-bugs
mailing list