Commit b3b6c9b3 by Doug Evans

rtlanal.c: (rtx_unstable_p): HARD_FRAME_POINTER_REGNUM is not an unstable register.

* 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
parent b07ff75d
......@@ -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));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment