diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2013-12-03 15:34:56 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2013-12-03 15:34:56 +0000 |
commit | 77436791c9054caff7f2cf1c779c709606bba60d (patch) | |
tree | 0876f42a7e3548abad698b411ec4c9d7bbac9367 | |
parent | e8d8443d220b2d3651b0f14b8c98ac6e13fb923e (diff) | |
download | gcc-77436791c9054caff7f2cf1c779c709606bba60d.zip gcc-77436791c9054caff7f2cf1c779c709606bba60d.tar.gz gcc-77436791c9054caff7f2cf1c779c709606bba60d.tar.bz2 |
aarch64.c (aarch64_frame_pointer_required): Check LR_REGNUM.
2013-12-03 Vladimir Makarov <vmakarov@redhat.com>
* config/aarch64/aarch64.c (aarch64_frame_pointer_required): Check
LR_REGNUM.
(aarch64_can_eliminate): Don't check elimination source when
frame_pointer_required is false.
From-SVN: r205637
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c773d7d..96b86cc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-03 Vladimir Makarov <vmakarov@redhat.com> + + * config/aarch64/aarch64.c (aarch64_frame_pointer_required): Check + LR_REGNUM. + (aarch64_can_eliminate): Don't check elimination source when + frame_pointer_required is false. + 2013-12-03 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> * config/avr/avr.c (avr_option_override): Warn if asked to generate diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index b1b4eef..1c881c8 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -1703,7 +1703,7 @@ aarch64_frame_pointer_required (void) if (flag_omit_frame_pointer && !faked_omit_frame_pointer) return false; else if (flag_omit_leaf_frame_pointer) - return !crtl->is_leaf; + return !crtl->is_leaf || df_regs_ever_live_p (LR_REGNUM); return true; } @@ -4126,7 +4126,7 @@ aarch64_can_eliminate (const int from, const int to) of faked_omit_frame_pointer here (which is true when we always wish to keep non-leaf frame pointers but only wish to keep leaf frame pointers when LR is clobbered). */ - if (from == FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM + if (to == STACK_POINTER_REGNUM && df_regs_ever_live_p (LR_REGNUM) && faked_omit_frame_pointer) return false; |