if (! replace_p)
{
if (known_eq (update_sp_offset, 0))
- offset += (ep->offset - ep->previous_offset);
+ offset += (!first_p
+ ? ep->offset - ep->previous_offset : ep->offset);
if (ep->to_rtx == stack_pointer_rtx)
{
if (first_p)
if (lra_dump_file != NULL)
fprintf (lra_dump_file, " Using elimination %d to %d now\n",
ep1->from, ep1->to);
- lra_assert (known_eq (ep1->previous_offset, 0));
+ lra_assert (known_eq (ep1->previous_offset, -1));
ep1->previous_offset = ep->offset;
}
else
for (ep = reg_eliminate, ep1 = reg_eliminate_1;
ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++, ep1++)
{
- ep->offset = ep->previous_offset = 0;
+ ep->offset = ep->previous_offset = -1;
ep->from = ep1->from;
ep->to = ep1->to;
value_p = (targetm.can_eliminate (ep->from, ep->to)