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> 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 * config/aarch64/aarch64.c (aarch64_expand_prologue): Update stack
layout comment. layout comment.
......
...@@ -2130,9 +2130,9 @@ aarch64_expand_prologue (void) ...@@ -2130,9 +2130,9 @@ aarch64_expand_prologue (void)
rtx insn; rtx insn;
aarch64_layout_frame (); 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;
gcc_assert ((!cfun->machine->saved_varargs_size || cfun->stdarg) gcc_assert ((!cfun->machine->frame.saved_varargs_size || cfun->stdarg)
&& (cfun->stdarg || !cfun->machine->saved_varargs_size)); && (cfun->stdarg || !cfun->machine->frame.saved_varargs_size));
frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_size); + crtl->outgoing_args_size);
offset = frame_size = AARCH64_ROUND_UP (frame_size, offset = frame_size = AARCH64_ROUND_UP (frame_size,
...@@ -2296,7 +2296,7 @@ aarch64_expand_epilogue (bool for_sibcall) ...@@ -2296,7 +2296,7 @@ aarch64_expand_epilogue (bool for_sibcall)
rtx cfa_reg; rtx cfa_reg;
aarch64_layout_frame (); 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 frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_size); + crtl->outgoing_args_size);
offset = frame_size = AARCH64_ROUND_UP (frame_size, offset = frame_size = AARCH64_ROUND_UP (frame_size,
...@@ -2495,7 +2495,7 @@ aarch64_final_eh_return_addr (void) ...@@ -2495,7 +2495,7 @@ aarch64_final_eh_return_addr (void)
{ {
HOST_WIDE_INT original_frame_size, frame_size, offset, fp_offset; HOST_WIDE_INT original_frame_size, frame_size, offset, fp_offset;
aarch64_layout_frame (); 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 frame_size = (original_frame_size + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_size); + crtl->outgoing_args_size);
offset = frame_size = AARCH64_ROUND_UP (frame_size, offset = frame_size = AARCH64_ROUND_UP (frame_size,
...@@ -4258,7 +4258,7 @@ aarch64_initial_elimination_offset (unsigned from, unsigned to) ...@@ -4258,7 +4258,7 @@ aarch64_initial_elimination_offset (unsigned from, unsigned to)
aarch64_layout_frame (); aarch64_layout_frame ();
frame_size = (get_frame_size () + cfun->machine->frame.saved_regs_size frame_size = (get_frame_size () + cfun->machine->frame.saved_regs_size
+ crtl->outgoing_args_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); frame_size = AARCH64_ROUND_UP (frame_size, STACK_BOUNDARY / BITS_PER_UNIT);
offset = frame_size; offset = frame_size;
...@@ -6959,7 +6959,7 @@ aarch64_setup_incoming_varargs (cumulative_args_t cum_v, enum machine_mode mode, ...@@ -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 /* We don't save the size into *PRETEND_SIZE because we want to avoid
any complication of having crtl->args.pretend_args_size changed. */ 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, = (AARCH64_ROUND_UP (gr_saved * UNITS_PER_WORD,
STACK_BOUNDARY / BITS_PER_UNIT) STACK_BOUNDARY / BITS_PER_UNIT)
+ vr_saved * UNITS_PER_VREG); + vr_saved * UNITS_PER_VREG);
......
...@@ -514,6 +514,13 @@ extern enum aarch64_processor aarch64_tune; ...@@ -514,6 +514,13 @@ extern enum aarch64_processor aarch64_tune;
struct GTY (()) aarch64_frame struct GTY (()) aarch64_frame
{ {
HOST_WIDE_INT reg_offset[FIRST_PSEUDO_REGISTER]; 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; HOST_WIDE_INT saved_regs_size;
/* Padding if needed after the all the callee save registers have /* Padding if needed after the all the callee save registers have
been saved. */ been saved. */
...@@ -526,11 +533,6 @@ struct GTY (()) aarch64_frame ...@@ -526,11 +533,6 @@ struct GTY (()) aarch64_frame
typedef struct GTY (()) machine_function typedef struct GTY (()) machine_function
{ {
struct aarch64_frame frame; 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; } machine_function;
#endif #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