aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1993-09-24 19:54:09 +0000
committerDoug Evans <dje@gnu.org>1993-09-24 19:54:09 +0000
commitb3b6c9b3f3dab2f1ae27beeb9ebe5b732411c695 (patch)
tree89b9f096511906dc07d728540ee7a59a37f47d53 /gcc
parentb07ff75d63e1bfb4560d2843554629c2eaf6ae19 (diff)
downloadgcc-b3b6c9b3f3dab2f1ae27beeb9ebe5b732411c695.zip
gcc-b3b6c9b3f3dab2f1ae27beeb9ebe5b732411c695.tar.gz
gcc-b3b6c9b3f3dab2f1ae27beeb9ebe5b732411c695.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rtlanal.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 82ac3af..2ef3d43 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -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));