This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PING: [PATCH] Add SUBREG_REG_P predicate and change REG_SUBREG_P to be global


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.

2 cents, Thanks,

Olivier





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]