diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/resource.c | 4 |
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--) |
