aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2000-12-07 11:29:24 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-12-07 11:29:24 -0800
commitf846e0de9b4d71d063dd1e40e15e1493f449e22a (patch)
treecc4ec45ec1dee3c48375ac480cc97d74cf044ea9 /gcc
parent83c4781c639708b9b1671c736ffcbb2c58584479 (diff)
downloadgcc-f846e0de9b4d71d063dd1e40e15e1493f449e22a.zip
gcc-f846e0de9b4d71d063dd1e40e15e1493f449e22a.tar.gz
gcc-f846e0de9b4d71d063dd1e40e15e1493f449e22a.tar.bz2
flow.c (calculate_global_regs_live): Force the stack pointer live after reload as well.
* flow.c (calculate_global_regs_live): Force the stack pointer live after reload as well. From-SVN: r38114
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/flow.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0587e1a..a82ff39 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-12-07 Richard Henderson <rth@redhat.com>
+
+ * flow.c (calculate_global_regs_live): Force the stack pointer live
+ after reload as well.
+
2000-12-07 Bruce Korb <bkorb@gnu.org>
* fixinc/Makefile.*(exeext): the variables are exeext, the
diff --git a/gcc/flow.c b/gcc/flow.c
index 1e51d20..92b5002 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -3368,14 +3368,14 @@ calculate_global_regs_live (blocks_in, blocks_out, flags)
IOR_REG_SET (new_live_at_end, sb->global_live_at_start);
}
+ /* The all-important stack pointer must always be live. */
+ SET_REGNO_REG_SET (new_live_at_end, STACK_POINTER_REGNUM);
+
/* Before reload, there are a few registers that must be forced
live everywhere -- which might not already be the case for
blocks within infinite loops. */
if (! reload_completed)
{
- /* The all-important stack pointer. */
- SET_REGNO_REG_SET (new_live_at_end, STACK_POINTER_REGNUM);
-
/* Any reference to any pseudo before reload is a potential
reference of the frame pointer. */
SET_REGNO_REG_SET (new_live_at_end, FRAME_POINTER_REGNUM);