diff options
author | Tamar Christina <tamar.christina@arm.com> | 2018-10-01 12:53:34 +0000 |
---|---|---|
committer | Tamar Christina <tnfchris@gcc.gnu.org> | 2018-10-01 12:53:34 +0000 |
commit | db6b62a858e578fdb7f9f754f2c4bf868d951fcb (patch) | |
tree | fe8ea13612b7b4e8b4b760178e53ebe51f82221d | |
parent | cd1bef27d286a40b2709a9ded77fed5a33a461c5 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 5 |
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) |