+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
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)
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)
{
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;
#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 \
{ \
/* 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