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