[AARch64,COMMITTED] Move saved_varargs_size.
diff mbox

Message ID 53905B70.4090908@arm.com
State New
Headers show

Commit Message

Marcus Shawcroft June 5, 2014, 11:58 a.m. UTC
I've just committed the attached to co-locate saved_varargs_size with 
the other target specific frame related state...

/Marcus

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.

Patch
diff mbox

diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 3348cf2..c67bac4 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -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;
@@ -6943,7 +6943,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);
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index ced5a5e..392d095 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -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
 
-- 
1.7.9.5