> So in the set_* routines it isn't about whether the value is definitely > a base or a definitely an index. It's just about drilling down through > what we've already decided is a base or index to get the inner reg or mem, > and knowing which XEXPs to look at. We could instead have used a > for_each_rtx, or something like that, without any code checks. But I > wanted to be precise about the types of address we allow, so that we can > assert for things we don't understand. In other words, it was "designed" > to require the kind of extension Yvan is adding here.
Does this mean that the design is to require a parallel implementation in the predicates and in the set routines, i.e. each time you add a new case to the predicates, you need to add it (or do something) to the set routines as well? If so, that's a little weird, but OK, feel free to revert the de-duplication part, but add comments saying that the functions must be kept synchronized. -- Eric Botcazou