[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