hmm, I don't see clearly where we loose the XEXP (x, n) information when calling must_be_base_p(*inner) and/or must_be_index_p(*inner) in set_address_base and set_address_index.
BTW, the validation on ARM (AARch32 and AARch64) is clean. Thanks, Yvan On 24 September 2013 18:36, Richard Sandiford <rdsandif...@googlemail.com> wrote: > Eric Botcazou <ebotca...@adacore.com> writes: >>> Sorry, I'm not sure I understand well, it means that you prefer the >>> shift_and _rotate_code_p notation, right ? >> >> Let's do the following in addition to the lsb_bitfield_op_p thing: >> 1. Replace the LO_SUM test in set_address_base by a call to must_be_base_p, >> 2. Replace the MULT || ASHIFT test in set_address_index by a call to >> must_be_index_p, >> 3. Add the new cases to must_be_index_p directly, with a comment saying >> that >> there are e.g. for the ARM. > > FWIW, I'd prefer to keep it as-is, since must_be_base_p (x) and > must_be_index_p (x) don't imply that we should look specifically at > XEXP (x, 0) (rather than just X, or XEXP (x, 1), etc.). I think it's > better to keep the code tests and the associated XEXPs together. > > Thanks, > Richard