summaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>1993-09-24 19:54:09 +0000
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>1993-09-24 19:54:09 +0000
commit6f7c45ae28e4d79e6f23fb6bffd4d9127d0c9919 (patch)
tree89b9f096511906dc07d728540ee7a59a37f47d53 /gcc/rtlanal.c
parentdb78f40cbd2f35fd14c82c1c13ecd9ad17e0186c (diff)
downloadgcc-6f7c45ae28e4d79e6f23fb6bffd4d9127d0c9919.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5465 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 82ac3afd3df..2ef3d43cfe6 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));