]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64.c (aarch64_frame_pointer_required): Check LR_REGNUM.
authorVladimir Makarov <vmakarov@redhat.com>
Tue, 3 Dec 2013 15:34:56 +0000 (15:34 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Tue, 3 Dec 2013 15:34:56 +0000 (15:34 +0000)
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

gcc/ChangeLog
gcc/config/aarch64/aarch64.c

index c773d7d6c23bb4a429d13b46666d1a464f5ee422..96b86cc3e07151a544c1adabbf4df2dcc0c1265a 100644 (file)
@@ -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
index b1b4eef81be79fb2a9c1c516b3c2dd99638c1b6e..1c881c8f7afff58c1043b6b945c325e11d8d507a 100644 (file)
@@ -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;