On Thu, Dec 20, 2018 at 01:23:57PM +0100, Jakub Jelinek wrote:
> On Thu, Dec 20, 2018 at 01:15:53PM +0100, Richard Biener wrote:
> > On Thu, Dec 20, 2018 at 12:43 PM Eric Botcazou <ebotca...@adacore.com> 
> > wrote:
> > > 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.
> 
> Generally it would be better to deal with that in RA, but if Vlad doesn't
> have cycles for it right now, your hack isn't that bad.

It's not a terrible workaround, no.  It looks like it will make some asm
once again fail though?  If argument registers are forwarded to in the asm.


Segher

Reply via email to