This is the mail archive of the gcc@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: Use predicates for RTL objects


On Wed, Aug 7, 2019 at 7:34 PM Segher Boessenkool
<segher@kernel.crashing.org> wrote:
>
> On Wed, Aug 07, 2019 at 12:15:29PM -0400, Arvind Sankar wrote:
> > I would also like to get some comments on the following idea to make the
> > code checks more readable: I am thinking of adding
> >       bool rtx_def::is_a (enum rtx_code) const
> > This would allow us to make all the rtx_code comparisons more readable
> > without having to define individual macros for each.
> > i.e.,
> >       REG_P (x)                          => x->is_a (REG)
> >       GET_CODE (x) == PLUS               => x->is_a (PLUS)
> >       GET_CODE (PATTERN (x)) == SEQUENCE => PATTERN (x)->is_a (SEQUENCE)
>
> That makes things much worse.  Not only is it less readable (IMO), but
> the "is_a" idiom is used to check if something is of a certain class,
> which is not the case here.
>
> In "GET_CODE (x) == PLUS" it is clear that what the resulting machine
> code does is cheap.  With "x->is_a (PLUS)", who knows what is happening
> below the covers!
>
> (And "REG_P" and similar are much shorter code to type).

Note also that in other places in GCC we use

  is_a <REG> (x)

instead, see is-a.h.  I don't welcome your member-function style style :/

Richard.

>
> Segher


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