On Wed, Oct 5, 2016 at 9:14 AM, Marek Polacek <pola...@redhat.com> wrote: > +/* Return true if we're looking at (init; cond), false otherwise. */ > + > +static bool > +cp_parser_init_statement_p (cp_parser *parser) > +{ > + unsigned paren_depth = 0; > + unsigned brace_depth = 0;
Do we really need another one of these token scanning functions? Can't you write this in terms of cp_parser_skip_to_closing_parenthesis? > + /* Parse the optional init-statement. */ > + tree decl; > + cp_lexer_save_tokens (parser->lexer); > + const bool init_stmt_p = cp_parser_init_statement_p (parser); > + /* Roll back the tokens we skipped. */ > + cp_lexer_rollback_tokens (parser->lexer); The save/rollback should be in the the predicate function, not the caller. Jason