On Sat, May 30, 2020 at 12:18 AM Jan Hubicka <hubi...@ucw.cz> wrote:
>
> >
> > ---
> >  gcc/tree.h | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/gcc/tree.h b/gcc/tree.h
> > index bd0c51b2a18..86a4542f58b 100644
> > --- a/gcc/tree.h
> > +++ b/gcc/tree.h
> > @@ -6156,6 +6156,17 @@ int_bit_position (const_tree field)
> >         + wi::to_offset (DECL_FIELD_BIT_OFFSET (field))).to_shwi ();
> >  }
> >
> > +/* Determine if tree code is a constant */
> > +inline bool
> > +tree_code_is_cst (tree op)
> > +{
> > +  int code = TREE_CODE (op);
> > +  if (code == INTEGER_CST || code == REAL_CST || code == COMPLEX_CST
> > +      || code == VECTOR_CST)
> > +    return true;
> > +  return false;
>
> We have is_gimple_ip_invariant which I think should suit your purpose -
> it return true if tree is a constant, it also accepts things like
> addresses of (global) variables, functions and labels.

And otherwise there's CONSTANT_CLASS_P ().

Richard.

> > +}
> > +
> >  /* Return true if it makes sense to consider alias set for a type T.  */
> >
> >  inline bool
> > --
> > 2.18.1
> >

Reply via email to