aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-10-28 12:30:02 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-10-28 12:30:02 -0700
commitaf05822029866791f4fb4a241ac5f0bc529c09cf (patch)
treeb83ed4b521e7a4fa9b38e5cd033b00687073f073
parentc9fc373cf093aa8e63a225a38a033bd961806d75 (diff)
downloadgcc-af05822029866791f4fb4a241ac5f0bc529c09cf.zip
gcc-af05822029866791f4fb4a241ac5f0bc529c09cf.tar.gz
gcc-af05822029866791f4fb4a241ac5f0bc529c09cf.tar.bz2
resource.c (find_free_register): Don't use the frame pointer if frame_pointer_needed.
* resource.c (find_free_register): Don't use the frame pointer if frame_pointer_needed. From-SVN: r30246
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/resource.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0cee76f..5595acc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Oct 28 12:28:50 1999 Richard Henderson <rth@cygnus.com>
+
+ * resource.c (find_free_register): Don't use the frame pointer
+ if frame_pointer_needed.
+
Thu Oct 28 10:02:00 1999 Jim Wilson <wilson@cygnus.com>
* config/mips/mips.c (mips_va_arg): Delete gen_jump as emit_jump arg.
diff --git a/gcc/resource.c b/gcc/resource.c
index 335b14e..1dc830f 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -1261,6 +1261,10 @@ find_free_register (current_insn, last_insn, class_str, mode, reg_set)
/* And that we don't create an extra save/restore. */
if (! call_used_regs[regno] && ! regs_ever_live[regno])
continue;
+ /* And we don't clobber traceback for noreturn functions. */
+ if ((regno == FRAME_POINTER_REGNUM || regno == HARD_FRAME_POINTER_REGNUM)
+ && (! reload_completed || frame_pointer_needed))
+ continue;
success = 1;
for (j = HARD_REGNO_NREGS (regno, mode) - 1; j >= 0; j--)