aarch64.h (FRAME_GROWS_DOWNWARD): Define to 1.
authorChristophe Lyon <christophe.lyon@linaro.org>
Wed, 13 Nov 2013 10:11:00 +0000 (10:11 +0000)
committerChristophe Lyon <clyon@gcc.gnu.org>
Wed, 13 Nov 2013 10:11:00 +0000 (11:11 +0100)
2013-11-13  Christophe Lyon  <christophe.lyon@linaro.org>

* config/aarch64/aarch64.h (FRAME_GROWS_DOWNWARD): Define to 1.
* config/aarch64/aarch64.c (aarch64_initial_elimination_offset):
Update offset calculations.

From-SVN: r204737

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

index 7e7f3ea..52d02b9 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-13  Christophe Lyon  <christophe.lyon@linaro.org>
+
+       * config/aarch64/aarch64.h (FRAME_GROWS_DOWNWARD): Define to 1.
+       * config/aarch64/aarch64.c (aarch64_initial_elimination_offset):
+       Update offset calculations.
+
 2013-11-13  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR ada/35998
index a51bb21..2ddab1b 100644 (file)
@@ -2010,7 +2010,7 @@ aarch64_save_or_restore_callee_save_registers (HOST_WIDE_INT offset,
    Establish the stack frame by decreasing the stack pointer with a
    properly calculated size and, if necessary, create a frame record
    filled with the values of LR and previous frame pointer.  The
-   current FP is also set up is it is in use.  */
+   current FP is also set up if it is in use.  */
 
 void
 aarch64_expand_prologue (void)
@@ -4143,7 +4143,7 @@ aarch64_initial_elimination_offset (unsigned from, unsigned to)
         return offset - crtl->outgoing_args_size;
 
        if (from == FRAME_POINTER_REGNUM)
-        return cfun->machine->frame.saved_regs_size;
+        return cfun->machine->frame.saved_regs_size + get_frame_size ();
      }
 
    if (to == STACK_POINTER_REGNUM)
@@ -4152,6 +4152,7 @@ aarch64_initial_elimination_offset (unsigned from, unsigned to)
          {
            HOST_WIDE_INT elim = crtl->outgoing_args_size
                               + cfun->machine->frame.saved_regs_size
+                              + get_frame_size ()
                               - cfun->machine->frame.fp_lr_offset;
            elim = AARCH64_ROUND_UP (elim, STACK_BOUNDARY / BITS_PER_UNIT);
            return elim;
index 7a80e96..0333069 100644 (file)
@@ -443,7 +443,7 @@ enum reg_class
 #define INDEX_REG_CLASS        CORE_REGS
 #define BASE_REG_CLASS  POINTER_REGS
 
-/* Register pairs used to eliminate unneeded registers that point intoi
+/* Register pairs used to eliminate unneeded registers that point into
    the stack frame.  */
 #define ELIMINABLE_REGS                                                        \
 {                                                                      \
@@ -484,7 +484,7 @@ extern enum aarch64_processor aarch64_tune;
 /* Stack layout; function entry, exit and calling.  */
 #define STACK_GROWS_DOWNWARD   1
 
-#define FRAME_GROWS_DOWNWARD   0
+#define FRAME_GROWS_DOWNWARD   1
 
 #define STARTING_FRAME_OFFSET  0