aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2001-05-14 07:56:57 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2001-05-14 07:56:57 +0000
commitb2a8b02619c3d68a0e4b24dbe24d02a28eaeb9c3 (patch)
treee9d214dd905064681b051c7df69f6a9502e74d23
parentce29729adfaf82fa599537c3e085cda1edc4ed2f (diff)
downloadgcc-b2a8b02619c3d68a0e4b24dbe24d02a28eaeb9c3.zip
gcc-b2a8b02619c3d68a0e4b24dbe24d02a28eaeb9c3.tar.gz
gcc-b2a8b02619c3d68a0e4b24dbe24d02a28eaeb9c3.tar.bz2
regrename.c (regrename_optimize): Do not rename registers to leaf registers.
* regrename.c (regrename_optimize): Do not rename registers to leaf registers. From-SVN: r42066
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/regrename.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b5937f0..2ab8703 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-05-14 Mark Mitchell <mark@codesourcery.com>
+
+ * regrename.c (regrename_optimize): Do not rename registers to
+ leaf registers.
+
2001-05-14 Alexandre Oliva <aoliva@redhat.com>
* rtl.texi (CALL_INSN_FUNCTION_USAGE): Note that (and when) it may
diff --git a/gcc/regrename.c b/gcc/regrename.c
index ae25e21..bad6624 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -292,6 +292,12 @@ regrename_optimize ()
/* Can't use regs which aren't saved by the prologue. */
|| (! regs_ever_live[new_reg + i]
&& ! call_used_regs[new_reg + i])
+#ifdef LEAF_REGISTERS
+ /* We can't use a non-leaf register if we're in a
+ leaf function. */
+ || (current_function_is_leaf
+ && !LEAF_REGISTERS[new_reg + i])
+#endif
#ifdef HARD_REGNO_RENAME_OK
|| ! HARD_REGNO_RENAME_OK (reg + i, new_reg + i)
#endif