aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/aarch64/aarch64.c10
2 files changed, 7 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2fc7db4..949f3cb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-11-03 Wilco Dijkstra <wdijkstr@arm.com>
+
+ PR target/82786
+ * config/aarch64/aarch64.c (aarch64_layout_frame):
+ Undo forcing of LR at bottom of frame.
+
2017-11-03 Jeff Law <law@redhat.com>
* cfganal.c (single_pred_edge_ignoring_loop_edges): New function
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 1e12645..12f247d 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -2908,8 +2908,7 @@ aarch64_frame_pointer_required (void)
/* Mark the registers that need to be saved by the callee and calculate
the size of the callee-saved registers area and frame record (both FP
- and LR may be omitted). If the function is not a leaf, ensure LR is
- saved at the bottom of the callee-save area. */
+ and LR may be omitted). */
static void
aarch64_layout_frame (void)
{
@@ -2966,13 +2965,6 @@ aarch64_layout_frame (void)
cfun->machine->frame.wb_candidate2 = R30_REGNUM;
offset = 2 * UNITS_PER_WORD;
}
- else if (!crtl->is_leaf)
- {
- /* Ensure LR is saved at the bottom of the callee-saves. */
- cfun->machine->frame.reg_offset[R30_REGNUM] = 0;
- cfun->machine->frame.wb_candidate1 = R30_REGNUM;
- offset = UNITS_PER_WORD;
- }
/* Now assign stack slots for them. */
for (regno = R0_REGNUM; regno <= R30_REGNUM; regno++)