Commit 0a045a1f by Vladimir Makarov Committed by Vladimir Makarov

re PR rtl-optimization/78127 (AArch64 internal compiler error: in lra_eliminate,…

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
parent 68be8f73
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> 2017-02-16 Richard Biener <rguenther@suse.de>
* graphite.h: Do not include isl/isl_val_gmp.h, instead include * graphite.h: Do not include isl/isl_val_gmp.h, instead include
......
...@@ -2389,14 +2389,7 @@ lra (FILE *f) ...@@ -2389,14 +2389,7 @@ lra (FILE *f)
{ {
for (;;) for (;;)
{ {
/* We should try to assign hard registers to scratches even bool reloads_p = lra_constraints (lra_constraint_iter == 0);
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;
/* Constraint transformations may result in that eliminable /* Constraint transformations may result in that eliminable
hard regs become uneliminable and pseudos which use them hard regs become uneliminable and pseudos which use them
should be spilled. It is better to do it before pseudo should be spilled. It is better to do it before pseudo
...@@ -2406,6 +2399,23 @@ lra (FILE *f) ...@@ -2406,6 +2399,23 @@ lra (FILE *f)
RS6000_PIC_OFFSET_TABLE_REGNUM uneliminable if we started RS6000_PIC_OFFSET_TABLE_REGNUM uneliminable if we started
to use a constant pool. */ to use a constant pool. */
lra_eliminate (false, false); 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. */ /* Do inheritance only for regular algorithms. */
if (! lra_simple_p) if (! lra_simple_p)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment