On Tue, 26 Jan 2021, Jakub Jelinek wrote:

> On Tue, Jan 26, 2021 at 12:16:14PM +0100, Richard Biener wrote:
> > > +      /* Unless this is called during FE folding.  */
> > > +      if (cfun
> > > +   && (cfun->curr_properties & (PROP_trees | PROP_rtl)) == 0
> > 
> > don't you want && (cfun->curr_properties & PROP_trees) != 0?
> 
> No, PROP_trees is misnamed and it actually means GIMPLE.

Doh.  Patch doing s/PROP_trees/PROP_gimple/ pre-approved ;)

> I could use (PROP_gimple_any | PROP_rtl) if that is more readable,
> PROP_trees stands for:
> (PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp)
> but I don't think we ever have any of the latter 3 set when PROP_gimple_any
> is not set.

I think PROP_gimple_any should be removed by the gimple lowering
pass that sets PROP_gimple_lcf since the docs

#define PROP_gimple_any         (1 << 0)        /* entire gimple grammar 
*/
#define PROP_gimple_lcf         (1 << 1)        /* lowered control flow */

suggest that PROP_gimple_any means we can have sub-stmts for example?

But anyway, since we don't seem to have a property for GENERIC
and they are only introduced by gimplification even a
cfun->curr_properties == 0 would work ...

But yes, PROP_trees | PROP_rtl looks good to me as well.

I guess we should document how those properties work ... (and discover
we don't use them consistently).

Richard.

Reply via email to