* resource.c (find_free_register): Don't use the frame pointer
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Oct 1999 19:30:02 +0000 (19:30 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Oct 1999 19:30:02 +0000 (19:30 +0000)
        if frame_pointer_needed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30246 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/resource.c

index 0cee76f..5595acc 100644 (file)
@@ -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.
index 335b14e..1dc830f 100644 (file)
@@ -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--)