]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
resource.c (find_free_register): Don't use the frame pointer if frame_pointer_needed.
authorRichard Henderson <rth@cygnus.com>
Thu, 28 Oct 1999 19:30:02 +0000 (12:30 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 28 Oct 1999 19:30:02 +0000 (12:30 -0700)
        * resource.c (find_free_register): Don't use the frame pointer
        if frame_pointer_needed.

From-SVN: r30246

gcc/ChangeLog
gcc/resource.c

index 0cee76fe6e4c602a7fec23c7dde5edf8a9da2d62..5595acc33fb754cbdc19feeeb9a1007882d5bf28 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 335b14e42c91a9e7fcecf628c57c37b5f4e0842b..1dc830f933f4f8907fa91eb1bcef4b2bea7725a5 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--)