[PATCH] Relax one gcc_assert in lra-eliminate for fixed register

Jiong Wang wong.kwongyuan.tools@gmail.com
Mon Nov 17 22:02:00 GMT 2014


2014-11-17 20:36 GMT+00:00 Jeff Law <law@redhat.com>:
> On 11/17/14 02:26, Jiong Wang wrote:
>>
>> as Pinski reported at
>>
>>    https://gcc.gnu.org/ml/gcc-patches/2014-11/msg01967.html
>>
>> the previosu LR free patch on AArch64 cause one gcc_assert in
>> lra-elimination.c
>>
>> one of the problem is that gcc_assert is too strict and overkilled some
>> valid cases.
>>
>> the purpose of that assert is described here
>>
>>    https://gcc.gnu.org/ml/gcc-patches/2013-12/msg00151.html
>>
>> and I checked the code, it's purpose is to prohibit the following
>> scenario:
>>
>>    FP decided to be not required earlier, and then be required later.
>>
>> that assert prohibit above situation, because it will cause bad code
>> generation. FP
>> may be allocated earlier while because later it identified to be
>> required as fixed purpose, then
>> all those pseudo allocated to FP need to be spilled.
>>
>> so, this check will only make sense when that reg is not fixed itself.
>>
>> this patch relax that gcc_assert for fixed registers.
>>
>> the problem reported by Pinski fixed also, because FP of AArch64 is fixed.
>>
>> bootstrap ok on AArch64 and X86-64.
>> no regression on X86-64.
>> Pinskia's testcase passed on AArch64 on his code branch.
>>
>> ok for trunk?
>>
>> gcc/
>>    * lra-eliminations.c (update_reg_eliminate): Relax gcc_assert for
>> fixed registers.
>
> OK for the trunk.  It'd be useful to have a test, but my understanding is
> you need Pinski's modifications to trigger the failure.  Correct?

Jeff,

  thanks for review.

  Yes, this can only be reproduced on pinskia's private branch
"apinski/thunderx-cost".

Regards,
Jiong

>
> Jeff
>



More information about the Gcc-patches mailing list