PING: [PATCH] Add SUBREG_REG_P predicate and change REG_SUBREG_P to be global
Richard Guenther
rguenther@suse.de
Tue Jun 23 09:45:00 GMT 2009
On Tue, 23 Jun 2009, Olivier Hainque wrote:
> Hello,
>
> Eventhough I'm not maintainer of the involved area, I'd like to
> voice an opinion here:
>
> +/* Predicate yielding nonzero iff X is a subreg of a register. */
> +#define SUBREG_REG_P(X) \
> + (GET_CODE (X) == SUBREG && REG_P (SUBREG_REG (X)))
> +
> +/* Predicate yielding nonzero iff X is a register or subreg of a register. */
> +#define REG_SUBREG_P(X) \
> + (REG_P (X) || SUBREG_REG_P(X))
>
> > * caller-save.c: Use REG_SUBREG_P and SUBREG_REG_P where applicable.
>
> In general, I think the introduction of predicates for common patterns
> is a good thing, so I like the idea/intent of the suggested patch.
>
> Now, IMVHO, having two different predicates with so similar names is a
> potential source of confusion and mistakes, for both code readers and
> code writers.
>
> If we're going the extra predicate way as suggested, could we please
> take the opportunity to introduce slightly more descriptive names, for
> example SUBREG_OF_REG_P and REG_OR_SUBREG_OF_REG_P ?
>
> I think the disambiguation-hence-mistake-avoidance is well worth
> having slightly longer names to type and read. In this particular
> case, I'd actually rather not have a second predicate instead of
> one with so similar a name.
I think that in this case the code is way easier to read if you not
have to grok all these new predicates. What is so hard about
SUBREG_P (reg)
&& REG_P (SUBREG_REG (reg))
?
The two names are indeed somewhat confusing.
Richard.
More information about the Gcc-patches
mailing list