Commit bf4fa671 by Trevor Saunders Committed by Trevor Saunders

c-decl.c: add [cd]tors to c_struct_parse_info

gcc/c/ChangeLog:

2016-07-12  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* c-decl.c (struct c_struct_parse_info): Change member types
	from vec to auto_vec.
	(start_struct): Adjust.
	(finish_struct): Likewise.

From-SVN: r238279
parent 74ea4cd5
2016-07-12 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* c-decl.c (struct c_struct_parse_info): Change member types
from vec to auto_vec.
(start_struct): Adjust.
(finish_struct): Likewise.
2016-07-02 Jakub Jelinek <jakub@redhat.com> 2016-07-02 Jakub Jelinek <jakub@redhat.com>
PR c/71719 PR c/71719
......
...@@ -574,15 +574,15 @@ struct c_struct_parse_info ...@@ -574,15 +574,15 @@ struct c_struct_parse_info
{ {
/* If warn_cxx_compat, a list of types defined within this /* If warn_cxx_compat, a list of types defined within this
struct. */ struct. */
vec<tree> struct_types; auto_vec<tree> struct_types;
/* If warn_cxx_compat, a list of field names which have bindings, /* If warn_cxx_compat, a list of field names which have bindings,
and which are defined in this struct, but which are not defined and which are defined in this struct, but which are not defined
in any enclosing struct. This is used to clear the in_struct in any enclosing struct. This is used to clear the in_struct
field of the c_bindings structure. */ 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 /* If warn_cxx_compat, a list of typedef names used when defining
fields in this struct. */ fields in this struct. */
vec<tree> typedefs_seen; auto_vec<tree> typedefs_seen;
}; };
/* Information for the struct or union currently being parsed, or /* 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, ...@@ -7443,10 +7443,7 @@ start_struct (location_t loc, enum tree_code code, tree name,
TYPE_PACKED (v) = flag_pack_struct; TYPE_PACKED (v) = flag_pack_struct;
*enclosing_struct_parse_info = struct_parse_info; *enclosing_struct_parse_info = struct_parse_info;
struct_parse_info = XNEW (struct c_struct_parse_info); struct_parse_info = new c_struct_parse_info ();
struct_parse_info->struct_types.create (0);
struct_parse_info->fields.create (0);
struct_parse_info->typedefs_seen.create (0);
/* FIXME: This will issue a warning for a use of a type defined /* 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 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, ...@@ -8088,10 +8085,7 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes,
if (warn_cxx_compat) if (warn_cxx_compat)
warn_cxx_compat_finish_struct (fieldlist, TREE_CODE (t), loc); warn_cxx_compat_finish_struct (fieldlist, TREE_CODE (t), loc);
struct_parse_info->struct_types.release (); delete struct_parse_info;
struct_parse_info->fields.release ();
struct_parse_info->typedefs_seen.release ();
XDELETE (struct_parse_info);
struct_parse_info = enclosing_struct_parse_info; struct_parse_info = enclosing_struct_parse_info;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment