On Fri, Aug 15, 2014 at 5:45 PM, Robert Suchanek wrote:
> gcc/
>         * rtlanal.c (get_base_term): Accept HIGH as the base term.
>
>
> diff --git gcc/rtlanal.c gcc/rtlanal.c
> index 82cfc1bf..2bea2ca 100644
> --- gcc/rtlanal.c
> +++ gcc/rtlanal.c
> @@ -5624,6 +5624,7 @@ get_base_term (rtx *inner)
>      inner = strip_address_mutations (&XEXP (*inner, 0));
>    if (REG_P (*inner)
>        || MEM_P (*inner)
> +      || GET_CODE (*inner) == HIGH
>        || GET_CODE (*inner) == SUBREG)
>      return inner;
>    return 0;

This is not correct, BASE is a *variable* expression, HIGH is a
*constant* expression.

It's hard to say what the correct fix should be, but it sounds like
the address you get after the substitutions should be simplified
(folded).

B.R.,
Steven

Reply via email to