[PATCH 2/9] c-decl.c: add [cd]tors to c_struct_parse_info

David Malcolm dmalcolm@redhat.com
Wed Jun 29 13:48:00 GMT 2016


On Wed, 2016-06-29 at 08:26 -0400, tbsaunde+gcc@tbsaunde.org wrote:
> From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
> 
> gcc/c/ChangeLog:

I may be missing my coffee here but you mention adding a constructor in
the ChangeLog here:

> 2016-06-29  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
> 
> 	* c-decl.c (struct c_struct_parse_info): Add constructor and
                                                 ^^^^^^^^^^^^^^^

> > 	change member types from vec to auto_vec.
> 	(start_struct): Adjust.
> 	(finish_struct): Likewise.
> ---
>  gcc/c/c-decl.c | 16 +++++-----------
>  1 file changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
> index 8b966fe..c173796 100644
> --- a/gcc/c/c-decl.c
> +++ b/gcc/c/c-decl.c
> @@ -574,15 +574,15 @@ struct c_struct_parse_info
>  {
>    /* If warn_cxx_compat, a list of types defined within this
>       struct.  */
> -  vec<tree> struct_types;
> +  auto_vec<tree> struct_types;
>    /* If warn_cxx_compat, a list of field names which have bindings,
>       and which are defined in this struct, but which are not defined
>       in any enclosing struct.  This is used to clear the in_struct
>       field of the c_bindings structure.  */
> -  vec<c_binding_ptr> fields;
> +  auto_vec<c_binding_ptr> fields;
>    /* If warn_cxx_compat, a list of typedef names used when defining
>       fields in this struct.  */
> -  vec<tree> typedefs_seen;
> +  auto_vec<tree> typedefs_seen;

...I don't see an explicit constructor here.

>  };
>  
>  /* Information for the struct or union currently being parsed, or
> @@ -7443,10 +7443,7 @@ start_struct (location_t loc, enum tree_code
> code, tree name,
>      TYPE_PACKED (v) = flag_pack_struct;
>  
>    *enclosing_struct_parse_info = struct_parse_info;
> -  struct_parse_info = XNEW (struct c_struct_parse_info);
> -  struct_parse_info->struct_types.create (0);
> -  struct_parse_info->fields.create (0);
> -  struct_parse_info->typedefs_seen.create (0);
> +  struct_parse_info = new c_struct_parse_info ();
>  
>    /* FIXME: This will issue a warning for a use of a type defined
>       within a statement expr used within sizeof, et. al.  This is
> not
> @@ -8088,10 +8085,7 @@ finish_struct (location_t loc, tree t, tree
> fieldlist, tree attributes,
>    if (warn_cxx_compat)
>      warn_cxx_compat_finish_struct (fieldlist, TREE_CODE (t), loc);
>  
> -  struct_parse_info->struct_types.release ();
> -  struct_parse_info->fields.release ();
> -  struct_parse_info->typedefs_seen.release ();
> -  XDELETE (struct_parse_info);
> +  delete struct_parse_info;
>  
>    struct_parse_info = enclosing_struct_parse_info;
>  



More information about the Gcc-patches mailing list