diff options
author | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-09-24 19:54:09 +0000 |
---|---|---|
committer | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-09-24 19:54:09 +0000 |
commit | 6f7c45ae28e4d79e6f23fb6bffd4d9127d0c9919 (patch) | |
tree | 89b9f096511906dc07d728540ee7a59a37f47d53 /gcc/rtlanal.c | |
parent | db78f40cbd2f35fd14c82c1c13ecd9ad17e0186c (diff) | |
download | gcc-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.c | 8 |
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)); |