> Naming suggestion:  we already use cpp_ as prefix for the C preprocessor.
> Could we please not use it for C++, given that tree is used by so
> many clients for just about anything.   cxx_ is a good alternative.

CXX is fine with me.  I updated by local copy.

Honza
> 
> >   unsigned final : 1;
> > - /* 13 unused bits. */
> > + /* 11 unused bits. */
> >  };
> >
> >  extern tree decl_debug_expr_lookup (tree);
> > @@ -3483,6 +3487,18 @@ extern vec<tree, va_gc> **decl_debug_arg
> >  #define DECL_FUNCTION_VERSIONED(NODE)\
> >     (FUNCTION_DECL_CHECK (NODE)->function_decl.versioned_function)
> >
> > +/* In FUNCTION_DECL, this is set if this function is a C++ constructor.
> > +   Devirtualization machinery uses this knowledge for determing type of the
> > +   object constructed.  Also we assume that constructor address is not
> > +   important.  */
> > +#define DECL_CPP_CONSTRUCTOR_P(NODE)\
> 
> Same here.
> 
> > +   (FUNCTION_DECL_CHECK (NODE)->decl_with_vis.cpp_constructor)
> > +
> > +/* In FUNCTION_DECL, this is set if this function is a C++ destructor.
> > +   Devirtualization machinery uses this to track types in destruction.  */
> > +#define DECL_CPP_DESTRUCTOR_P(NODE)\
> > +   (FUNCTION_DECL_CHECK (NODE)->decl_with_vis.cpp_destructor)
> > +
> 
> Likewise.
> 
> >  /* In FUNCTION_DECL that represent an virtual method this is set when
> >     the method is final.  */
> >  #define DECL_FINAL_P(NODE)\
> > Index: cp/cp-tree.h
> > ===================================================================
> > --- cp/cp-tree.h        (revision 201977)
> > +++ cp/cp-tree.h        (working copy)
> > @@ -2121,9 +2121,10 @@ struct GTY((variable_size)) lang_decl {
> >  #define SET_DECL_LANGUAGE(NODE, LANGUAGE) \
> >    (DECL_LANG_SPECIFIC (NODE)->u.base.language = (LANGUAGE))
> >
> > -/* For FUNCTION_DECLs: nonzero means that this function is a constructor.  
> > */
> > +/* For FUNCTION_DECLs and TEMPLATE_DECLs: nonzero means that this function
> > +   is a constructor.  */
> >  #define DECL_CONSTRUCTOR_P(NODE) \
> > -  (LANG_DECL_FN_CHECK (NODE)->constructor_attr)
> > +  DECL_CPP_CONSTRUCTOR_P (STRIP_TEMPLATE (NODE))
> >
> >  /* Nonzero if NODE (a FUNCTION_DECL) is a constructor for a complete
> >     object.  */
> > @@ -2152,9 +2153,10 @@ struct GTY((variable_size)) lang_decl {
> >  #define DECL_MOVE_CONSTRUCTOR_P(NODE) \
> >    (DECL_CONSTRUCTOR_P (NODE) && move_fn_p (NODE))
> >
> > -/* Nonzero if NODE is a destructor.  */
> > +/* Nonzero if NODE (a FUNCTION_DECL or TEMPLATE_DECL)
> > +   is a destructor.  */
> >  #define DECL_DESTRUCTOR_P(NODE)                                \
> > -  (LANG_DECL_FN_CHECK (NODE)->destructor_attr)
> > +  DECL_CPP_DESTRUCTOR_P (STRIP_TEMPLATE (NODE))
> >
> >  /* Nonzero if NODE (a FUNCTION_DECL) is a destructor, but not the
> >     specialized in-charge constructor, in-charge deleting constructor,

Reply via email to