https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91333

--- Comment #17 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
(In reply to Vladimir Makarov from comment #16)
> (In reply to rsand...@gcc.gnu.org from comment #15)
> > (In reply to Jakub Jelinek from comment #14)
> > > I think what matters is whether the new asm for those is the same or 
> > > better
> > > than before.  If the tests hardcode particular RA decisions, they'll
> > > obviously FAIL when something in the RA changes.
> > 
> > The kind of change is from:
> > 
> >         mov     z2.d, x0
> >         movprfx z0, z1
> >         uabd    z0.d, p0/m, z0.d, z2.d
> >         ret
> > 
> > to:
> > 
> >         mov     z0.d, x0
> >         mov     z2.d, z0.d
> >         movprfx z0, z1
> >         uabd    z0.d, p0/m, z0.d, z2.d
> >         ret
> > 
> > so this is a genuine regression.
> 
> Hi, Richard.  Could you write me what options and test (I guess it is
> pr91333.c) you used.

Sorry for the slow reply.  The asm above is from
gcc.target/aarch64/sve/acle/asm/abd_u64.c compiled with:

  ./cc1 -O2 -quiet -DTEST_FULL=1 -isystem include -march=armv8.2-a+sve

Arguably we just got lucky with the old allocation.

That said, the test case does show up a potential problem,
even though it doesn't seem to be relevant to the regression:
one of the pseudos has two conflicting hard register preferences,
meaning that one of the preferences is bound not to be met.
I'm not sure it makes sense to sum the frequencies of each
individual preference in that case, since it means that pseudos
with conflicting preferences can get a higher priority than
registers with a strong single-register preference.

Reply via email to