rtlanal.c: (rtx_unstable_p): HARD_FRAME_POINTER_REGNUM is not an unstable register.
authorDoug Evans <dje@gnu.org>
Fri, 24 Sep 1993 19:54:09 +0000 (19:54 +0000)
committerDoug Evans <dje@gnu.org>
Fri, 24 Sep 1993 19:54:09 +0000 (19:54 +0000)
* rtlanal.c: (rtx_unstable_p): HARD_FRAME_POINTER_REGNUM is not
an unstable register.
(rtx_varies_p, case REG): hard_frame_pointer_rtx is invariant.
(rtx_addr_can_trap_p, case REG): hard_frame_pointer_rtx won't trap.

From-SVN: r5465

gcc/rtlanal.c

index 82ac3afd3dfdb23b8f19ae8497a111a1d9025e75..2ef3d43cfe64fcc7e3c64b0d6932148c25547320 100644 (file)
@@ -54,6 +54,7 @@ rtx_unstable_p (x)
 
   if (code == REG)
     return ! (REGNO (x) == FRAME_POINTER_REGNUM
+             || REGNO (x) == HARD_FRAME_POINTER_REGNUM
              || REGNO (x) == ARG_POINTER_REGNUM
              || RTX_UNCHANGING_P (x));
 
@@ -96,7 +97,8 @@ rtx_varies_p (x)
         and arg pointers and not just the register number in case we have
         eliminated the frame and/or arg pointer and are using it
         for pseudos.  */
-      return ! (x == frame_pointer_rtx || x == arg_pointer_rtx);
+      return ! (x == frame_pointer_rtx || x == hard_frame_pointer_rtx
+               || x == arg_pointer_rtx);
 
     case LO_SUM:
       /* The operand 0 of a LO_SUM is considered constant
@@ -132,8 +134,8 @@ rtx_addr_can_trap_p (x)
 
     case REG:
       /* As in rtx_varies_p, we have to use the actual rtx, not reg number.  */
-      return ! (x == frame_pointer_rtx || x == stack_pointer_rtx
-               || x == arg_pointer_rtx);
+      return ! (x == frame_pointer_rtx || x == hard_frame_pointer_rtx
+               || x == stack_pointer_rtx || x == arg_pointer_rtx);
 
     case CONST:
       return rtx_addr_can_trap_p (XEXP (x, 0));