Commit 8799637a by Marcus Shawcroft Committed by Marcus Shawcroft

[AArch64] Relocate saved_varargs_size.

From-SVN: r211270
parent 34834420
2014-06-05 Marcus Shawcroft <marcus.shawcroft@arm.com>
* config/aarch64/aarch64.h (machine_function): Move
saved_varargs_size from here...
(aarch64_frameGTY): ... to here.
* config/aarch64/aarch64.c (aarch64_expand_prologue)
(aarch64_expand_epilogue, aarch64_final_eh_return_addr)
(aarch64_initial_elimination_offset)
(aarch64_setup_incoming_varargs): Adjust location of
saved_varargs_size.
2014-06-05 Marcus Shawcroft <marcus.shawcroft@arm.com>
* config/aarch64/aarch64.c (aarch64_expand_prologue): Update stack
layout comment.
......
......@@ -2130,9 +2130,9 @@ aarch64_expand_prologue (void)
rtx insn;
aarch64_layout_frame ();
original_frame_size = get_frame_size () + cfun->machine->saved_varargs_size;
gcc_assert ((!cfun->machine->saved_varargs_size || cfun->stdarg)
&& (cfun->stdarg || !cfun->machine->saved_varargs_size));
original_frame_size = get_frame_size () + cfun->machine->frame.saved_varargs_size;
gcc_assert ((!cfun->machine->frame.saved_varargs_size || cfun->stdarg)
&& (cfun->stdarg || !cfun->machine->frame.saved_varargs_size));
frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_size);
offset = frame_size = AARCH64_ROUND_UP (frame_size,
......@@ -2296,7 +2296,7 @@ aarch64_expand_epilogue (bool for_sibcall)
rtx cfa_reg;
aarch64_layout_frame ();
original_frame_size = get_frame_size () + cfun->machine->saved_varargs_size;
original_frame_size = get_frame_size () + cfun->machine->frame.saved_varargs_size;
frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_size);
offset = frame_size = AARCH64_ROUND_UP (frame_size,
......@@ -2495,7 +2495,7 @@ aarch64_final_eh_return_addr (void)
{
HOST_WIDE_INT original_frame_size, frame_size, offset, fp_offset;
aarch64_layout_frame ();
original_frame_size = get_frame_size () + cfun->machine->saved_varargs_size;
original_frame_size = get_frame_size () + cfun->machine->frame.saved_varargs_size;
frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_size);
offset = frame_size = AARCH64_ROUND_UP (frame_size,
......@@ -4258,7 +4258,7 @@ aarch64_initial_elimination_offset (unsigned from, unsigned to)
aarch64_layout_frame ();
frame_size = (get_frame_size () + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_size
+ cfun->machine->saved_varargs_size);
+ cfun->machine->frame.saved_varargs_size);
frame_size = AARCH64_ROUND_UP (frame_size, STACK_BOUNDARY / BITS_PER_UNIT);
offset = frame_size;
......@@ -6959,7 +6959,7 @@ aarch64_setup_incoming_varargs (cumulative_args_t cum_v, enum machine_mode mode,
/* We don't save the size into *PRETEND_SIZE because we want to avoid
any complication of having crtl->args.pretend_args_size changed. */
cfun->machine->saved_varargs_size
cfun->machine->frame.saved_varargs_size
= (AARCH64_ROUND_UP (gr_saved * UNITS_PER_WORD,
STACK_BOUNDARY / BITS_PER_UNIT)
+ vr_saved * UNITS_PER_VREG);
......
......@@ -514,6 +514,13 @@ extern enum aarch64_processor aarch64_tune;
struct GTY (()) aarch64_frame
{
HOST_WIDE_INT reg_offset[FIRST_PSEUDO_REGISTER];
/* The number of extra stack bytes taken up by register varargs.
This area is allocated by the callee at the very top of the
frame. This value is rounded up to a multiple of
STACK_BOUNDARY. */
HOST_WIDE_INT saved_varargs_size;
HOST_WIDE_INT saved_regs_size;
/* Padding if needed after the all the callee save registers have
been saved. */
......@@ -526,11 +533,6 @@ struct GTY (()) aarch64_frame
typedef struct GTY (()) machine_function
{
struct aarch64_frame frame;
/* The number of extra stack bytes taken up by register varargs.
This area is allocated by the callee at the very top of the frame. */
HOST_WIDE_INT saved_varargs_size;
} machine_function;
#endif
......
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