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

Reply via email to