+2018-09-13 Vlad Lazar <vlad.lazar@arm.com>
+
+ * config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define.
+ * config/aarch64/aarch64.c (aarch64_expand_prologue): Remove
+ aarch64_layout_frame call.
+ (aarch64_expand_epilogue): Likewise.
+ (aarch64_initial_elimination_offset): Likewise.
+ (aarch64_get_separate_components): Likewise.
+ (aarch64_use_return_insn_p): Likewise.
+ (aarch64_layout_frame): Remove unneeded check.
+
2018-09-13 Jakub Jelinek <jakub@redhat.com>
* configure.ac: Only append
HOST_WIDE_INT offset = 0;
int regno, last_fp_reg = INVALID_REGNUM;
- if (reload_completed && cfun->machine->frame.laid_out)
- return;
-
cfun->machine->frame.emit_frame_chain = aarch64_needs_frame_chain ();
#define SLOT_NOT_REQUIRED (-2)
static sbitmap
aarch64_get_separate_components (void)
{
- aarch64_layout_frame ();
-
sbitmap components = sbitmap_alloc (LAST_SAVED_REGNUM + 1);
bitmap_clear (components);
unsigned reg1 = cfun->machine->frame.wb_candidate1;
unsigned reg2 = cfun->machine->frame.wb_candidate2;
- /* If aarch64_layout_frame has chosen registers to store/restore with
+ /* If registers have been chosen to be stored/restored with
writeback don't interfere with them to avoid having to output explicit
stack adjustment instructions. */
if (reg2 != INVALID_REGNUM)
void
aarch64_expand_prologue (void)
{
- aarch64_layout_frame ();
-
poly_int64 frame_size = cfun->machine->frame.frame_size;
poly_int64 initial_adjust = cfun->machine->frame.initial_adjust;
HOST_WIDE_INT callee_adjust = cfun->machine->frame.callee_adjust;
if (crtl->profile)
return false;
- aarch64_layout_frame ();
-
return known_eq (cfun->machine->frame.frame_size, 0);
}
void
aarch64_expand_epilogue (bool for_sibcall)
{
- aarch64_layout_frame ();
-
poly_int64 initial_adjust = cfun->machine->frame.initial_adjust;
HOST_WIDE_INT callee_adjust = cfun->machine->frame.callee_adjust;
poly_int64 final_adjust = cfun->machine->frame.final_adjust;
poly_int64
aarch64_initial_elimination_offset (unsigned from, unsigned to)
{
- aarch64_layout_frame ();
-
if (to == HARD_FRAME_POINTER_REGNUM)
{
if (from == ARG_POINTER_REGNUM)