flow.c (calculate_global_regs_live): Mark frame pointer live everywhere before reload.
authorRichard Henderson <rth@cygnus.com>
Tue, 22 Aug 2000 00:44:09 +0000 (17:44 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 22 Aug 2000 00:44:09 +0000 (17:44 -0700)
        * flow.c (calculate_global_regs_live): Mark frame pointer live
        everywhere before reload.

From-SVN: r35862

gcc/ChangeLog
gcc/flow.c

index 384fb53063d22feb67be5cb36cda407b422c7373..e25d72f3b5c1082a6b6e97b900409dc742a5d5ff 100644 (file)
@@ -1,3 +1,8 @@
+2000-08-21  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (calculate_global_regs_live): Mark frame pointer live
+       everywhere before reload.
+
 2000-08-21  Jim Wilson  <wilson@cygnus.com>
 
        * real.c (ereal_from_int, ereal_from_uint, significand_size): Handle
index e37512acc42da268180815fde9eb89b543b199e3..ad3403974a653308edfffe7eac9f1f8506d05c09 100644 (file)
@@ -3191,6 +3191,12 @@ calculate_global_regs_live (blocks_in, blocks_out, flags)
         the case for blocks within infinite loops.  */
       SET_REGNO_REG_SET (new_live_at_end, STACK_POINTER_REGNUM);
 
+      /* Similarly for the frame pointer before reload.  Any reference
+        to any pseudo before reload is a potential reference of the
+        frame pointer.  */
+      if (! reload_completed)
+       SET_REGNO_REG_SET (new_live_at_end, FRAME_POINTER_REGNUM);
+
       /* Regs used in phi nodes are not included in
         global_live_at_start, since they are live only along a
         particular edge.  Set those regs that are live because of a