patch to fix PR55775
Vladimir Makarov
vmakarov@redhat.com
Fri Dec 21 22:05:00 GMT 2012
On 12-12-21 4:29 PM, David Miller wrote:
> From: Vladimir Makarov <vmakarov@redhat.com>
> Date: Fri, 21 Dec 2012 16:22:15 -0500
>
>> 2012-12-21 Vladimir Makarov <vmakarov@redhat.com>
>>
>> PR middle-end/55775
>> * lra-assigns.c (improve_inheritance): Do nothing after
>> LRA_MAX_INHERITANCE_PASSES pass.
>> * lra-constraints.c (MAX_CONSTRAINT_ITERATION_NUMBER): Rename to
>> LRA_MAX_CONSTRAINT_ITERATION_NUMBER. Move to lra-int.h.
>> (MAX_INHERITANCE_PASSES): Rename to LRA_MAX_INHERITANCE_PASSES.
>> Move to lra-int.h.
>> * lra-int.h (LRA_MAX_CONSTRAINT_ITERATION_NUMBER): Move from
>> lra-constraints.c.
>> (LRA_MAX_INHERITANCE_PASSES): Ditto.
> The changes to lra_inheritabnce() and lra_undo_inheritance() are not
> listed.
It is assumed, David. I should have written "rename everywhere".
> Also, why is it OK to simply ignore the fact that a relaxation
> algorithm is still making changes? Shouldn't we be instead fixing
> whatever prevents proper convergence?
It is very hard to fix according to your proposals. It would require to
insert most of code from lra-constraints.c because code for improving
inheritance should take a lot of details about insn constraints into
account to fix it.
If I go this way, it will be another reload which is trying to do
everything at once. Also after 2 passes the inheritance improve code
(as inheritance code itself) usually does nothing for big majority of
programs. It has no sense to run them all the time. So for stability,
LRA after a few iterations is trying to do only most important and
necessary code for generation of the correct code.
More information about the Gcc-patches
mailing list