Segher Boessenkool <seg...@kernel.crashing.org> writes: > Hi! > > On Fri, Dec 20, 2019 at 02:34:05PM +0800, Jiufu Guo wrote: >> Previously, limited unrolling was enabled at O2 for powerpc in r278034. At >> that >> time, -fweb and -frename-registers were not enabled together with >> -funroll-loops >> even for -O3. After that, we notice there are some performance degradation >> on >> SPEC2006fp which caused by without web and rnreg. > > And 2017 was fine on all tests. Annoying :-( > >> This patch enable -fweb >> and -frename-registers for -O3 to align original behavior before r278034. > > Okay. Hopefully we can find a way to determine in what circumstances web > and rnreg help instead of hurt, but until then, the old behaviour is > certainly the safe choice. > >> --- a/gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c >> +++ b/gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c >> @@ -2,6 +2,7 @@ >> /* Originator: Andrew Church <gcczi...@achurch.org> */ >> /* { dg-do run } */ >> /* { dg-require-effective-target untyped_assembly } */ >> +/* { dg-additional-options "-fno-rename-registers" { target { powerpc*-*-* >> } } } */ > > What is this for? What happens without it? The reason of this fail is: -frename-registers does not work well with __builtin_return/__builtin_apply which need to save and restore registers which could not be renamed incorrectly.
When this case runs with -O3, with this patch, -frename-registers is enabled. Originally, -frename-registers is enabled with -funroll-loops instead pure -O3. This change cause this case fail at -O3. > > The rs6000/ parts are okay for trunk. Thanks! > > > Segher