aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2018-10-01 12:53:34 +0000
committerTamar Christina <tnfchris@gcc.gnu.org>2018-10-01 12:53:34 +0000
commitdb6b62a858e578fdb7f9f754f2c4bf868d951fcb (patch)
treefe8ea13612b7b4e8b4b760178e53ebe51f82221d
parentcd1bef27d286a40b2709a9ded77fed5a33a461c5 (diff)
downloadgcc-db6b62a858e578fdb7f9f754f2c4bf868d951fcb.zip
gcc-db6b62a858e578fdb7f9f754f2c4bf868d951fcb.tar.gz
gcc-db6b62a858e578fdb7f9f754f2c4bf868d951fcb.tar.bz2
stack-clash: Add LR assert to layout_frame.
Since stack clash depends on the LR being saved for non-leaf functions this patch adds an assert such that if this changes we would notice this. gcc/ PR target/86486 * config/aarch64/aarch64.c (aarch64_layout_frame): Add assert. From-SVN: r264748
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 332f6dc..0d02631 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-10-01 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/86486
+ * config/aarch64/aarch64.c (aarch64_layout_frame): Add assert.
+
2018-10-01 Jeff Law <law@redhat.com>
Richard Sandiford <richard.sandiford@linaro.org>
Tamar Christina <tamar.christina@arm.com>
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 9fd5cb2..9507608 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -4094,6 +4094,11 @@ aarch64_layout_frame (void)
offset = 2 * UNITS_PER_WORD;
}
+ /* With stack-clash, LR must be saved in non-leaf functions. */
+ gcc_assert (crtl->is_leaf
+ || (cfun->machine->frame.reg_offset[R30_REGNUM]
+ != SLOT_NOT_REQUIRED));
+
/* Now assign stack slots for them. */
for (regno = R0_REGNUM; regno <= R30_REGNUM; regno++)
if (cfun->machine->frame.reg_offset[regno] == SLOT_REQUIRED)