Hi all,


On 23 July 2014 11:26, Kyrill Tkachov <kyrylo.tkac...@arm.com> wrote:
>
> On 22/07/14 17:29, Ramana Radhakrishnan wrote:
>>
>> On Mon, Jul 14, 2014 at 11:11 AM, Jiong Wang <jiong.w...@arm.com> wrote:
>>>
>>> currently the following testcases are disabled for arm target,
>>>
>>> gcc.dg/ira-shrinkwrap-prep-1.c
>>> gcc.dg/ira-shrinkwrap-prep-2.c
>>> gcc.dg/pr10474.c
>>>
>>> the reason is on arm target, register r3 is caller-saved.  Normally it
>>> does
>>> not need to be saved on entry by the prologue.  However if we choose to
>>> save
>>> it for padding then we may confuse the compiler into thinking a prologue
>>> sequence
>>> is required when in fact it is not.  This will occur when shrink-wrapping
>>> if
>>> r3
>>> is used as a scratch register and there are no other callee-saved writes.
>>>
>>> This situation can be avoided when other callee-saved registers are
>>> available
>>> and r3 is not mandatory if we choose a callee-saved register for padding.
>>>
>>>
>>> Dejagnu improvements
>>> ===
>>> -UNSUPPORTED: gcc.dg/ira-shrinkwrap-prep-1.c
>>> -UNSUPPORTED: gcc.dg/ira-shrinkwrap-prep-2.c
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-1.c (test for excess errors)
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-1.c scan-rtl-dump ira "Will split live
>>> ranges of parameters"
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-1.c scan-rtl-dump ira "Split live-range
>>> of
>>> register"
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-1.c scan-rtl-dump pro_and_epilogue
>>> "Performing shrink-wrapping"
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-2.c (test for excess errors)
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-2.c scan-rtl-dump ira "Will split live
>>> ranges of parameters"
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-2.c scan-rtl-dump ira "Split live-range
>>> of
>>> register"
>>> +PASS: gcc.dg/ira-shrinkwrap-prep-2.c scan-rtl-dump pro_and_epilogue
>>> "Performing shrink-wrapping"
>>> -UNSUPPORTED: gcc.dg/pr10474.c
>>> +PASS: gcc.dg/pr10474.c (test for excess errors)
>>> +PASS: gcc.dg/pr10474.c scan-rtl-dump pro_and_epilogue "Performing
>>> shrink-wrapping"
>>>
>>> ok for trunk ?
>>
>> This is OK
>>
>> Ramana
>
>
> Hi all,
>
> I've committed this on Jiongs' behalf as r212927 with some minor ChangeLog
> modifications to make it fit into the 80 character column limit:
>
> 2014-07-23  Jiong Wang  <jiong.w...@arm.com>
>
>
>     * config/arm/arm.c (arm_get_frame_offsets): If both r3 and other
>     callee-saved registers are available for padding purpose
>     and r3 is not mandatory, then prefer use those callee-saved
>     instead of r3.
>
> 2014-07-23  Jiong Wang  <jiong.w...@arm.com>
>
>     * gcc.dg/ira-shrinkwrap-prep-1.c (target): Add arm_nothumb.
>     * gcc.dg/ira-shrinkwrap-prep-2.c (target): Likewise.
>     * gcc.dg/pr10474.c (target): Likewise.
>
>
> Kyrill
>

Since this commit, I've noticed a few regressions:

  gcc.target/arm/pr43920-2.c object-size text <= 54
  gcc.target/arm/pr45701-1.c scan-assembler push\t{r3
  gcc.target/arm/pr45701-1.c scan-assembler-not r8
  gcc.target/arm/pr45701-2.c scan-assembler push\t{r3
  gcc.target/arm/pr45701-2.c scan-assembler-not r8

(targets arm-none-linux-gnueabi, arm-none-linux-gnueabihf).

Note that these tests still PASS if one forces -marm or -march=arm-v5t
in the multilib flags, or if the compiler is configured
--with-cpu=cortex-a57 --with-arch=armv8.

Christophe.


>>> thanks.
>>>
>>> -- Jiong
>>>
>>> gcc/
>>>    * config/arm/arm.c (arm_get_frame_offsets): If both r3 and other
>>> callee-saved
>>>      registers are available for padding purpose, and r3 is not
>>> mandatory,
>>> then
>>>      prefer use those callee-saved instead of r3.
>>>
>>> gcc/testsuite/
>>>    * gcc.dg/ira-shrinkwrap-prep-1.c (target): Add arm_nothumb
>>>    * gcc.dg/ira-shrinkwrap-prep-2.c (target): Add arm_nothumb
>>>    * gcc.dg/pr10474.c (target): Add arm_nothumb
>
>
>

Reply via email to