aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-08-21 17:44:09 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-08-21 17:44:09 -0700
commit770a7febdae7861ad605ad8f5e5c004a9c5c5105 (patch)
tree16fd1e4b157f436495deeb7e171e5c98b2d8c34b
parent280db205772451c9025357ba24359ff18b56de70 (diff)
downloadgcc-770a7febdae7861ad605ad8f5e5c004a9c5c5105.zip
gcc-770a7febdae7861ad605ad8f5e5c004a9c5c5105.tar.gz
gcc-770a7febdae7861ad605ad8f5e5c004a9c5c5105.tar.bz2
flow.c (calculate_global_regs_live): Mark frame pointer live everywhere before reload.
* flow.c (calculate_global_regs_live): Mark frame pointer live everywhere before reload. From-SVN: r35862
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/flow.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 384fb53..e25d72f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/flow.c b/gcc/flow.c
index e37512a..ad34039 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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