]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[AArch64] Relocate saved_varargs_size.
authorMarcus Shawcroft <marcus.shawcroft@arm.com>
Thu, 5 Jun 2014 11:59:05 +0000 (11:59 +0000)
committerMarcus Shawcroft <mshawcroft@gcc.gnu.org>
Thu, 5 Jun 2014 11:59:05 +0000 (11:59 +0000)
From-SVN: r211270

gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.h

index e2b856287d2afe9813383439314cf41c75941bed..dccab5e62d3c50031bd303ddc8c2369b1760e480 100644 (file)
@@ -1,3 +1,15 @@
+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
index 7c59e8bcac32c376566806cfd4daaafeda70cc93..80530c603ceb2f5eaf2d4aa753f7d72da37e5df6 100644 (file)
@@ -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);
index ced5a5e92521a5791188269169c81b23788c8c1c..392d095cdfe9200c5895dbc8309e1b36008e2877 100644 (file)
@@ -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