On Thu, Dec 20, 2018 at 12:43 PM Eric Botcazou <ebotca...@adacore.com> wrote:
>
> Hi,
>
> this is a regression introduced on the SPARC by the somewhat controversial
> combiner change for hard registers: the compiler can no longer apply the leaf
> registers optimization to a small function so a register window is now used.
>
> The combiner change might be an overall win, but my understanding is that it's
> dependent on the target and SPARC seems to be in the wrong basket: almost all
> changes to the gcc.c-torture/compile testsuite at -O2 are pessimizations in
> the form of additional move instructions between registers on function entry.
>
> Clearly that's counter-productive for a LEAF_REGISTERS target like SPARC so
> the proposed fix is to re-enable hard register combining for leaf registers.
>
> Tested on SPARC/Solaris 11, OK for the mainline?

This only affects xtensa besides sparc so unless Segher objects this is OK.

Does this solve most of the pessimizations?

Please add a testcase if it doesn't solve existing FAILs.

Thanks,
Richard.

>
> 2018-12-20  Eric Botcazou  <ebotca...@adacore.com>
>
>         PR rtl-optimization/87727
>         * combine.c (cant_combine_insn_p): On a LEAF_REGISTERS target, combine
>         again moves from leaf hard registers.
>
> --
> Eric Botcazou

Reply via email to