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