From: Marcus Shawcroft Date: Thu, 5 Jun 2014 12:57:01 +0000 (+0000) Subject: [AArch64] Unify callee save slot allocation for X29 and X30. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2e1cdae5dbcb268dc3fc451fa4179a5c8ee0b0f4;p=gcc.git [AArch64] Unify callee save slot allocation for X29 and X30. Co-Authored-By: Jiong Wang From-SVN: r211273 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 777eb25a910..525ef8ff031 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-06-05 Marcus Shawcroft + Jiong Wang + + * 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 Jiong Wang diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index a58d93ff613..1aa951cddf8 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -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);