aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2013-12-03 15:34:56 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2013-12-03 15:34:56 +0000
commit77436791c9054caff7f2cf1c779c709606bba60d (patch)
tree0876f42a7e3548abad698b411ec4c9d7bbac9367
parente8d8443d220b2d3651b0f14b8c98ac6e13fb923e (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/aarch64/aarch64.c4
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;