re PR rtl-optimization/78127 (AArch64 internal compiler error: in lra_eliminate, at lra-eliminations.c:1440)

2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/78127
	* lra.c (lra): Call lra_eliminate before finish the loop after
	lra_constraint.

From-SVN: r245514
This commit is contained in:
Vladimir Makarov 2017-02-16 19:47:15 +00:00 committed by Vladimir Makarov
parent 68be8f7367
commit 0a045a1fd8
2 changed files with 24 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2017-02-16 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/78127
* lra.c (lra): Call lra_eliminate before finish the loop after
lra_constraint.
2017-02-16 Richard Biener <rguenther@suse.de>
* graphite.h: Do not include isl/isl_val_gmp.h, instead include

View File

@ -2389,14 +2389,7 @@ lra (FILE *f)
{
for (;;)
{
/* We should try to assign hard registers to scratches even
if there were no RTL transformations in lra_constraints.
Also we should check IRA assignments on the first
iteration as they can be wrong because of early clobbers
operands which are ignored in IRA. */
if (! lra_constraints (lra_constraint_iter == 0)
&& lra_constraint_iter > 1)
break;
bool reloads_p = lra_constraints (lra_constraint_iter == 0);
/* Constraint transformations may result in that eliminable
hard regs become uneliminable and pseudos which use them
should be spilled. It is better to do it before pseudo
@ -2406,6 +2399,23 @@ lra (FILE *f)
RS6000_PIC_OFFSET_TABLE_REGNUM uneliminable if we started
to use a constant pool. */
lra_eliminate (false, false);
/* We should try to assign hard registers to scratches even
if there were no RTL transformations in lra_constraints.
Also we should check IRA assignments on the first
iteration as they can be wrong because of early clobbers
operands which are ignored in IRA. */
if (! reloads_p && lra_constraint_iter > 1)
{
/* Stack is not empty here only when there are changes
during the elimination sub-pass. */
if (bitmap_empty_p (lra_constraint_insn_stack_bitmap))
break;
else
/* If there are no reloads but changing due
elimination, restart the constraint sub-pass
first. */
continue;
}
/* Do inheritance only for regular algorithms. */
if (! lra_simple_p)
{