aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1993-09-24 19:45:44 +0000
committerDoug Evans <dje@gnu.org>1993-09-24 19:45:44 +0000
commit7b0957a710e21a7213256dbfb8509d42ef601680 (patch)
treebd200bf5c5b2f40feafa39f68240a19a23842814
parente408ec359112b9478da4886ca47bceb65dadc6d2 (diff)
downloadgcc-7b0957a710e21a7213256dbfb8509d42ef601680.zip
gcc-7b0957a710e21a7213256dbfb8509d42ef601680.tar.gz
gcc-7b0957a710e21a7213256dbfb8509d42ef601680.tar.bz2
global.c: (global_alloc): Make sure that it is always possible to eliminate...
* global.c: (global_alloc): Make sure that it is always possible to eliminate FRAME_POINTER_REGNUM into HARD_FRAME_POINTER_REGNUM. From-SVN: r5458
-rw-r--r--gcc/global.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/global.c b/gcc/global.c
index 967526e..1a9158a 100644
--- a/gcc/global.c
+++ b/gcc/global.c
@@ -302,10 +302,14 @@ global_alloc (file)
SET_HARD_REG_BIT (eliminable_regset, eliminables[i].from);
if (! CAN_ELIMINATE (eliminables[i].from, eliminables[i].to)
- || (eliminables[i].from == FRAME_POINTER_REGNUM
+ || (eliminables[i].from == HARD_FRAME_POINTER_REGNUM
&& (! flag_omit_frame_pointer || FRAME_POINTER_REQUIRED)))
SET_HARD_REG_BIT (no_global_alloc_regs, eliminables[i].from);
}
+#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+ if (!flag_omit_frame_pointer || FRAME_POINTER_REQUIRED)
+ SET_HARD_REG_BIT (no_global_alloc_regs, HARD_FRAME_POINTER_REGNUM);
+#endif
#else
SET_HARD_REG_BIT (eliminable_regset, FRAME_POINTER_REGNUM);