[AArch64] Unify callee save slot allocation for X29 and X30.

Co-Authored-By: Jiong Wang <jiong.wang@arm.com>

From-SVN: r211273
This commit is contained in:
Marcus Shawcroft 2014-06-05 12:57:01 +00:00 committed by Marcus Shawcroft
parent 5ae98e828d
commit 2e1cdae5db
2 changed files with 11 additions and 14 deletions

View File

@ -1,3 +1,10 @@
2014-06-05 Marcus Shawcroft <marcus.shawcroft@arm.com>
Jiong Wang <jiong.wang@arm.com>
* config/aarch64/aarch64.c (aarch64_layout_frame): Correct
initialization of R30 offset. Update offset. Iterate core
regisers upto X30. Remove X29, X30 specific code.
2014-06-05 Marcus Shawcroft <marcus.shawcroft@arm.com>
Jiong Wang <jiong.wang@arm.com>

View File

@ -1841,13 +1841,15 @@ aarch64_layout_frame (void)
if (frame_pointer_needed)
{
cfun->machine->frame.reg_offset[R30_REGNUM] = 0;
/* FP and LR are placed in the linkage record. */
cfun->machine->frame.reg_offset[R29_REGNUM] = 0;
cfun->machine->frame.reg_offset[R30_REGNUM] = UNITS_PER_WORD;
cfun->machine->frame.hardfp_offset = 2 * UNITS_PER_WORD;
offset += 2 * UNITS_PER_WORD;
}
/* Now assign stack slots for them. */
for (regno = R0_REGNUM; regno <= R28_REGNUM; regno++)
for (regno = R0_REGNUM; regno <= R30_REGNUM; regno++)
if (cfun->machine->frame.reg_offset[regno] == SLOT_REQUIRED)
{
cfun->machine->frame.reg_offset[regno] = offset;
@ -1861,18 +1863,6 @@ aarch64_layout_frame (void)
offset += UNITS_PER_WORD;
}
if (frame_pointer_needed)
{
cfun->machine->frame.reg_offset[R29_REGNUM] = offset;
offset += UNITS_PER_WORD;
}
if (cfun->machine->frame.reg_offset[R30_REGNUM] == SLOT_REQUIRED)
{
cfun->machine->frame.reg_offset[R30_REGNUM] = offset;
offset += UNITS_PER_WORD;
}
cfun->machine->frame.padding0 =
(AARCH64_ROUND_UP (offset, STACK_BOUNDARY / BITS_PER_UNIT) - offset);
offset = AARCH64_ROUND_UP (offset, STACK_BOUNDARY / BITS_PER_UNIT);