diff options
author | Doug Evans <dje@gnu.org> | 1993-09-24 19:49:18 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1993-09-24 19:49:18 +0000 |
commit | c2618f0522459c99f2cbf8a300e3c8f5ded6f12f (patch) | |
tree | 3346de9647b6304a4f481f16f26e18600b133ba7 | |
parent | cbe23927aa20c785b9c3339c025fcf7726fb91d6 (diff) | |
download | gcc-c2618f0522459c99f2cbf8a300e3c8f5ded6f12f.zip gcc-c2618f0522459c99f2cbf8a300e3c8f5ded6f12f.tar.gz gcc-c2618f0522459c99f2cbf8a300e3c8f5ded6f12f.tar.bz2 |
local-alloc.c: (find_free_reg): Make sure we will always be able to eliminate...
* local-alloc.c: (find_free_reg): Make sure we will always be able
to eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM.
From-SVN: r5460
-rw-r--r-- | gcc/local-alloc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 00c06e8..d626fd7 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -1945,6 +1945,11 @@ find_free_reg (class, mode, qty, accept_call_clobbered, just_try_suggested, #ifdef ELIMINABLE_REGS for (i = 0; i < sizeof eliminables / sizeof eliminables[0]; i++) SET_HARD_REG_BIT (used, eliminables[i].from); +#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM + /* If FRAME_POINTER_REGNUM is not a real register, then protect the one + that it might be eliminated into. */ + SET_HARD_REG_BIT (used, HARD_FRAME_POINTER_REGNUM); +#endif #else SET_HARD_REG_BIT (used, FRAME_POINTER_REGNUM); #endif |