diff options
author | Jeffrey A Law <law@cygnus.com> | 1997-10-26 18:39:57 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-10-26 11:39:57 -0700 |
commit | adb9effb26586361b5dbf9ec28ce68c7b681b10e (patch) | |
tree | 2d0c7c51e1df19e150887c87735c985cfd5b1d7e /gcc/alias.c | |
parent | e85988b5d5d75a13e0a6908abd8e287f1b6264c6 (diff) | |
download | gcc-adb9effb26586361b5dbf9ec28ce68c7b681b10e.zip gcc-adb9effb26586361b5dbf9ec28ce68c7b681b10e.tar.gz gcc-adb9effb26586361b5dbf9ec28ce68c7b681b10e.tar.bz2 |
Take out find_base_value change -- not needed, only the find_base_term
change was needed.
From-SVN: r16185
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index ea62cd5..07f98e6 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -93,13 +93,6 @@ find_base_value (src) case LABEL_REF: return src; - case PRE_INC: - case PRE_DEC: - case POST_INC: - case POST_DEC: - src = XEXP (src, 0); - /* fall through */ - case REG: /* At the start of a function argument registers have known base values which may be lost later. Returning an ADDRESS @@ -107,6 +100,8 @@ find_base_value (src) even when the argument registers are used for other purposes. */ if (REGNO (src) < FIRST_PSEUDO_REGISTER && copying_arguments) return reg_base_value[REGNO (src)]; + if (REG_N_SETS (REGNO (src)) == 1 && reg_base_value[REGNO (src)]) + return reg_base_value[REGNO (src)]; return src; case MEM: @@ -129,7 +124,21 @@ find_base_value (src) case PLUS: case MINUS: { - rtx src_0 = XEXP (src, 0), src_1 = XEXP (src, 1); + rtx temp, src_0 = XEXP (src, 0), src_1 = XEXP (src, 1); + + if (GET_CODE (src_0) == REG) + { + temp = find_base_value (src_0); + if (temp) + src_0 = temp; + } + + if (GET_CODE (src_1) == REG) + { + temp = find_base_value (src_1); + if (temp) + src_1 = temp; + } /* Guess which operand is the base address. @@ -144,6 +153,12 @@ find_base_value (src) || GET_CODE (src_0) == CONST) return find_base_value (src_0); + if (GET_CODE (src_0) == CONST_INT + || GET_CODE (src_1) == SYMBOL_REF + || GET_CODE (src_1) == LABEL_REF + || GET_CODE (src_1) == CONST) + return find_base_value (src_1); + if (GET_CODE (src_0) == REG && REGNO_POINTER_FLAG (REGNO (src_0))) return find_base_value (src_0); |