This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 2/9] c-decl.c: add [cd]tors to c_struct_parse_info
- From: David Malcolm <dmalcolm at redhat dot com>
- To: tbsaunde+gcc at tbsaunde dot org, gcc-patches at gcc dot gnu dot org
- Date: Wed, 29 Jun 2016 09:21:01 -0400
- Subject: Re: [PATCH 2/9] c-decl.c: add [cd]tors to c_struct_parse_info
- Authentication-results: sourceware.org; auth=none
- References: <1467203216-29569-1-git-send-email-tbsaunde+gcc at tbsaunde dot org> <1467203216-29569-3-git-send-email-tbsaunde+gcc at tbsaunde dot org>
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;
>