local-alloc.c: (find_free_reg): Make sure we will always be able to eliminate...
authorDoug Evans <dje@gnu.org>
Fri, 24 Sep 1993 19:49:18 +0000 (19:49 +0000)
committerDoug Evans <dje@gnu.org>
Fri, 24 Sep 1993 19:49:18 +0000 (19:49 +0000)
* 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

gcc/local-alloc.c

index 00c06e8..d626fd7 100644 (file)
@@ -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