... finishing testing the below. Thanks, Paolo.
///////////////////
2014-03-05 Paolo Carlini <paolo.carl...@oracle.com> * parser.c (cp_lexer_set_source_position): New. (cp_parser_mem_initializer): Use it. (cp_parser_postfix_open_square_expression): Likewise. (cp_parser_parenthesized_expression_list): Likewise. (cp_parser_new_initializer): Likewise. (cp_parser_jump_statement): Likewise. (cp_parser_initializer): Likewise. (cp_parser_functional_cast): Likewise.
Index: parser.c =================================================================== --- parser.c (revision 208351) +++ parser.c (working copy) @@ -844,6 +844,14 @@ cp_lexer_set_source_position_from_token (cp_token } } +/* Update the globals input_location and the input file stack from LEXER. */ +static inline void +cp_lexer_set_source_position (cp_lexer *lexer) +{ + cp_token *token = cp_lexer_peek_token (lexer); + cp_lexer_set_source_position_from_token (token); +} + /* Return a pointer to the next token in the token stream, but do not consume it. */ @@ -6359,8 +6367,7 @@ cp_parser_postfix_open_square_expression (cp_parse if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { bool expr_nonconst_p; - cp_token *token = cp_lexer_peek_token (parser->lexer); - cp_lexer_set_source_position_from_token (token); + cp_lexer_set_source_position (parser->lexer); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); index = cp_parser_braced_list (parser, &expr_nonconst_p); if (flag_cilkplus @@ -6673,8 +6680,7 @@ cp_parser_parenthesized_expression_list (cp_parser if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { /* A braced-init-list. */ - cp_token *token = cp_lexer_peek_token (parser->lexer); - cp_lexer_set_source_position_from_token (token); + cp_lexer_set_source_position (parser->lexer); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expr = cp_parser_braced_list (parser, &expr_non_constant_p); if (non_constant_p && expr_non_constant_p) @@ -7523,8 +7529,7 @@ cp_parser_new_initializer (cp_parser* parser) { tree t; bool expr_non_constant_p; - cp_token *token = cp_lexer_peek_token (parser->lexer); - cp_lexer_set_source_position_from_token (token); + cp_lexer_set_source_position (parser->lexer); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); t = cp_parser_braced_list (parser, &expr_non_constant_p); CONSTRUCTOR_IS_DIRECT_INIT (t) = 1; @@ -10681,8 +10686,7 @@ cp_parser_jump_statement (cp_parser* parser) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { - cp_token *token = cp_lexer_peek_token (parser->lexer); - cp_lexer_set_source_position_from_token (token); + cp_lexer_set_source_position (parser->lexer); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expr = cp_parser_braced_list (parser, &expr_non_constant_p); } @@ -12361,8 +12365,7 @@ cp_parser_mem_initializer (cp_parser* parser) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { bool expr_non_constant_p; - cp_token *token = cp_lexer_peek_token (parser->lexer); - cp_lexer_set_source_position_from_token (token); + cp_lexer_set_source_position (parser->lexer); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expression_list = cp_parser_braced_list (parser, &expr_non_constant_p); CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1; @@ -18816,8 +18819,7 @@ cp_parser_initializer (cp_parser* parser, bool* is } else if (token->type == CPP_OPEN_BRACE) { - cp_token *token = cp_lexer_peek_token (parser->lexer); - cp_lexer_set_source_position_from_token (token); + cp_lexer_set_source_position (parser->lexer); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); init = cp_parser_braced_list (parser, non_constant_p); CONSTRUCTOR_IS_DIRECT_INIT (init) = 1; @@ -23253,8 +23255,7 @@ cp_parser_functional_cast (cp_parser* parser, tree if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { - cp_token *token = cp_lexer_peek_token (parser->lexer); - cp_lexer_set_source_position_from_token (token); + cp_lexer_set_source_position (parser->lexer); maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); expression_list = cp_parser_braced_list (parser, &nonconst_p); CONSTRUCTOR_IS_DIRECT_INIT (expression_list) = 1;