> Tested on x86_64. OK for trunk? Looks OK, with some very minor comments and questions below.
> static void > -consume_until_semi (bool immediate) > +consume_until_eos (void) > { > - if (immediate && token () != ';') > - require (';'); > for (;;) > switch (token ()) > { > case ';': > advance (); > return; > - default: > - advance (); > - break; > + > + case '{': > + consume_balanced ('{', '}'); > + return; > > case '(': > consume_balanced ('(', ')'); > break; > + > case '[': > consume_balanced ('[', ']'); > break; > - case '{': > - consume_balanced ('{', '}'); > - break; case '{' moved around without any changes? Likewise for consume_until_comma_or_eos. > diff --git a/gcc/gengtype.c b/gcc/gengtype.c > index 2135676..b9fbd96 100644 > --- a/gcc/gengtype.c > +++ b/gcc/gengtype.c > @@ -497,10 +497,10 @@ struct type scalar_char = { > > /* Lists of various things. */ > > -pair_p typedefs; > -type_p structures; > -type_p param_structs; > -pair_p variables; > +pair_p typedefs = NULL; > +type_p structures = NULL; > +type_p param_structs = NULL; > +pair_p variables = NULL; > > static type_p find_param_structure (type_p t, type_p param[NUM_PARAM]); > static type_p adjust_field_tree_exp (type_p t, options_p opt); This change... > @@ -676,8 +677,7 @@ new_structure (const char *name, enum typekind kind, > struct fileloc *pos, > structures = s; > } > > - if (s->u.s.line.file != NULL > - || (s->u.s.lang_struct && (s->u.s.lang_struct->u.s.bitmap & bitmap))) > + if (s->u.s.lang_struct && (s->u.s.lang_struct->u.s.bitmap & bitmap)) > { > error_at_line (pos, "duplicate definition of '%s %s'", > isunion ? "union" : "struct", s->u.s.tag); ..and this are missing from the ChangeLog. Also, what is the motivation behind the latter? Have you compared the before and after gtype state files for the current GCC sources that there are no unexpected differences? -- Laurynas