Lines Matching refs:parser

190   cp_parser *parser;  variable
193 type_id_in_expr_sentinel (cp_parser *parser, bool set = true)
194 : parser (parser), in parser() function
195 saved (parser->in_type_id_in_expr_p) in parser()
196 { parser->in_type_id_in_expr_p = set; } in parser()
198 { parser->in_type_id_in_expr_p = saved; } in ~type_id_in_expr_sentinel()
489 cp_debug_parser_tokens (FILE *file, cp_parser *parser, int window_size) in cp_debug_parser_tokens() argument
496 next_token = parser->lexer->next_token; in cp_debug_parser_tokens()
497 first_token = parser->lexer->buffer->address (); in cp_debug_parser_tokens()
501 cp_lexer_dump_tokens (file, parser->lexer->buffer, start_token, window_size, in cp_debug_parser_tokens()
510 cp_debug_parser (FILE *file, cp_parser *parser) in cp_debug_parser() argument
521 vec_safe_length (parser->lexer->buffer)); in cp_debug_parser()
522 cp_debug_print_tree_if_set (file, "Lookup scope", parser->scope); in cp_debug_parser()
524 parser->object_scope); in cp_debug_parser()
526 parser->qualifying_scope); in cp_debug_parser()
527 cp_debug_print_context_stack (file, parser->context); in cp_debug_parser()
529 parser->allow_gnu_extensions_p); in cp_debug_parser()
531 parser->greater_than_is_operator_p); in cp_debug_parser()
533 "parameter list", parser->default_arg_ok_p); in cp_debug_parser()
535 parser->integral_constant_expression_p); in cp_debug_parser()
538 parser->allow_non_integral_constant_expression_p); in cp_debug_parser()
540 parser->non_integral_constant_expression_p); in cp_debug_parser()
542 (parser->local_variables_forbidden_p in cp_debug_parser()
545 (parser->local_variables_forbidden_p in cp_debug_parser()
548 parser->in_unbraced_linkage_specification_p); in cp_debug_parser()
550 parser->in_declarator_p); in cp_debug_parser()
552 parser->in_template_argument_list_p); in cp_debug_parser()
554 parser->in_statement & IN_ITERATION_STMT); in cp_debug_parser()
556 parser->in_statement & IN_SWITCH_STMT); in cp_debug_parser()
558 parser->in_statement & IN_OMP_BLOCK); in cp_debug_parser()
560 parser->in_statement & IN_OMP_FOR); in cp_debug_parser()
562 parser->in_statement & IN_IF_STMT); in cp_debug_parser()
564 "context", parser->in_type_id_in_expr_p); in cp_debug_parser()
567 parser->translate_strings_p); in cp_debug_parser()
569 "local class", parser->in_function_body); in cp_debug_parser()
571 parser->colon_corrects_to_scope_p); in cp_debug_parser()
573 parser->colon_doesnt_start_class_def_p); in cp_debug_parser()
575 parser->objective_c_message_context_p); in cp_debug_parser()
576 if (parser->type_definition_forbidden_message) in cp_debug_parser()
578 parser->type_definition_forbidden_message, in cp_debug_parser()
579 parser->type_definition_forbidden_message_arg in cp_debug_parser()
580 ? parser->type_definition_forbidden_message_arg : "<none>"); in cp_debug_parser()
581 cp_debug_print_unparsed_queues (file, parser->unparsed_queues); in cp_debug_parser()
583 parser->num_classes_being_defined); in cp_debug_parser()
585 "declaration: %u\n", parser->num_template_parameter_lists); in cp_debug_parser()
586 cp_debug_parser_tokens (file, parser, window_size); in cp_debug_parser()
587 token = parser->lexer->next_token; in cp_debug_parser()
1361 cp_ensure_no_omp_declare_simd (cp_parser *parser) in cp_ensure_no_omp_declare_simd() argument
1363 if (parser->omp_declare_simd && !parser->omp_declare_simd->error_seen) in cp_ensure_no_omp_declare_simd()
1367 parser->omp_declare_simd->variant_p ? "variant" : "simd"); in cp_ensure_no_omp_declare_simd()
1368 parser->omp_declare_simd = NULL; in cp_ensure_no_omp_declare_simd()
1376 cp_finalize_omp_declare_simd (cp_parser *parser, tree fndecl) in cp_finalize_omp_declare_simd() argument
1378 if (__builtin_expect (parser->omp_declare_simd != NULL, 0)) in cp_finalize_omp_declare_simd()
1382 parser->omp_declare_simd = NULL; in cp_finalize_omp_declare_simd()
1387 cp_ensure_no_omp_declare_simd (parser); in cp_finalize_omp_declare_simd()
1397 cp_ensure_no_oacc_routine (cp_parser *parser) in cp_ensure_no_oacc_routine() argument
1399 if (parser->oacc_routine && !parser->oacc_routine->error_seen) in cp_ensure_no_oacc_routine()
1401 error_at (parser->oacc_routine->loc, in cp_ensure_no_oacc_routine()
1404 parser->oacc_routine = NULL; in cp_ensure_no_oacc_routine()
1995 parser->unparsed_queues->last ().funs_with_default_args
1997 parser->unparsed_queues->last ().funs_with_definitions
1999 parser->unparsed_queues->last ().nsdmis
2001 parser->unparsed_queues->last ().noexcepts
2004 push_unparsed_function_queues (cp_parser *parser) in push_unparsed_function_queues() argument
2007 vec_safe_push (parser->unparsed_queues, e); in push_unparsed_function_queues()
2011 pop_unparsed_function_queues (cp_parser *parser) in pop_unparsed_function_queues() argument
2014 parser->unparsed_queues->pop (); in pop_unparsed_function_queues()
2195 (cp_parser* parser);
2312 (cp_parser* parser);
2624 (cp_parser *parser, bool nsdmi);
2717 cp_parser_parsing_tentatively (cp_parser* parser) in cp_parser_parsing_tentatively() argument
2719 return parser->context->next != NULL; in cp_parser_parsing_tentatively()
2879 cp_parser_error_1 (cp_parser* parser, const char* gmsgid, in cp_parser_error_1() argument
2883 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_error_1()
2892 cp_parser_skip_to_pragma_eol (parser, token); in cp_parser_error_1()
2902 if (cp_lexer_peek_conflict_marker (parser->lexer, token->type, &loc)) in cp_parser_error_1()
2909 cp_lexer_consume_token (parser->lexer); in cp_parser_error_1()
2910 cp_token *next = cp_lexer_peek_token (parser->lexer); in cp_parser_error_1()
2938 = cp_lexer_previous_token (parser->lexer)->location; in cp_parser_error_1()
2975 cp_parser_error (cp_parser* parser, const char* gmsgid) in cp_parser_error() argument
2977 if (!cp_parser_simulate_error (parser)) in cp_parser_error()
2978 cp_parser_error_1 (parser, gmsgid, RT_NONE, UNKNOWN_LOCATION); in cp_parser_error()
2987 cp_parser_name_lookup_error (cp_parser* parser, in cp_parser_name_lookup_error() argument
2997 if (parser->scope && parser->scope != global_namespace) in cp_parser_name_lookup_error()
2999 parser->scope, name); in cp_parser_name_lookup_error()
3000 else if (parser->scope == global_namespace) in cp_parser_name_lookup_error()
3002 else if (parser->object_scope in cp_parser_name_lookup_error()
3003 && !CLASS_TYPE_P (parser->object_scope)) in cp_parser_name_lookup_error()
3005 name, parser->object_scope); in cp_parser_name_lookup_error()
3006 else if (parser->object_scope) in cp_parser_name_lookup_error()
3008 parser->object_scope, name); in cp_parser_name_lookup_error()
3012 else if (parser->scope && parser->scope != global_namespace) in cp_parser_name_lookup_error()
3018 parser->scope, name); in cp_parser_name_lookup_error()
3022 parser->scope, name); in cp_parser_name_lookup_error()
3027 parser->scope, name); in cp_parser_name_lookup_error()
3034 else if (parser->scope == global_namespace) in cp_parser_name_lookup_error()
3078 cp_parser_simulate_error (cp_parser* parser) in cp_parser_simulate_error() argument
3080 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_simulate_error()
3082 parser->context->status = CP_PARSER_STATUS_KIND_ERROR; in cp_parser_simulate_error()
3093 cp_parser_check_type_definition (cp_parser* parser) in cp_parser_check_type_definition() argument
3096 if (parser->type_definition_forbidden_message) in cp_parser_check_type_definition()
3100 error (parser->type_definition_forbidden_message, in cp_parser_check_type_definition()
3101 parser->type_definition_forbidden_message_arg); in cp_parser_check_type_definition()
3143 cp_parser_check_for_invalid_template_id (cp_parser* parser, in cp_parser_check_for_invalid_template_id() argument
3150 if (cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_check_for_invalid_template_id()
3166 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_check_for_invalid_template_id()
3167 start = cp_lexer_token_position (parser->lexer, true); in cp_parser_check_for_invalid_template_id()
3169 cp_lexer_consume_token (parser->lexer); in cp_parser_check_for_invalid_template_id()
3171 cp_parser_enclosed_template_argument_list (parser); in cp_parser_check_for_invalid_template_id()
3175 cp_lexer_purge_tokens_after (parser->lexer, start); in cp_parser_check_for_invalid_template_id()
3185 cp_parser_non_integral_constant_expression (cp_parser *parser, in cp_parser_non_integral_constant_expression() argument
3188 parser->non_integral_constant_expression_p = true; in cp_parser_non_integral_constant_expression()
3189 if (parser->integral_constant_expression_p) in cp_parser_non_integral_constant_expression()
3191 if (!parser->allow_non_integral_constant_expression_p) in cp_parser_non_integral_constant_expression()
3309 cp_parser_diagnose_invalid_type_name (cp_parser *parser, tree id, in cp_parser_diagnose_invalid_type_name() argument
3313 cp_parser_commit_to_tentative_parse (parser); in cp_parser_diagnose_invalid_type_name()
3315 decl = cp_parser_lookup_name (parser, id, none_type, in cp_parser_diagnose_invalid_type_name()
3342 else if (!parser->scope) in cp_parser_diagnose_invalid_type_name()
3423 else if (parser->scope != error_mark_node) in cp_parser_diagnose_invalid_type_name()
3425 if (TREE_CODE (parser->scope) == NAMESPACE_DECL) in cp_parser_diagnose_invalid_type_name()
3431 parser->scope); in cp_parser_diagnose_invalid_type_name()
3436 if (cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_diagnose_invalid_type_name()
3442 id, parser->scope, suggestion); in cp_parser_diagnose_invalid_type_name()
3446 id, parser->scope); in cp_parser_diagnose_invalid_type_name()
3454 TREE_OPERAND (id, 0), parser->scope, suggestion); in cp_parser_diagnose_invalid_type_name()
3459 TREE_OPERAND (id, 0), parser->scope); in cp_parser_diagnose_invalid_type_name()
3467 id, parser->scope, suggestion); in cp_parser_diagnose_invalid_type_name()
3471 id, parser->scope); in cp_parser_diagnose_invalid_type_name()
3476 else if (CLASS_TYPE_P (parser->scope) in cp_parser_diagnose_invalid_type_name()
3477 && constructor_name_p (id, parser->scope)) in cp_parser_diagnose_invalid_type_name()
3482 " the type", parser->scope, id); in cp_parser_diagnose_invalid_type_name()
3483 if (cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_diagnose_invalid_type_name()
3485 parser->scope); in cp_parser_diagnose_invalid_type_name()
3487 else if (TYPE_P (parser->scope) in cp_parser_diagnose_invalid_type_name()
3488 && dependent_scope_p (parser->scope)) in cp_parser_diagnose_invalid_type_name()
3492 if (TREE_CODE (parser->scope) == TYPENAME_TYPE) in cp_parser_diagnose_invalid_type_name()
3496 TYPE_CONTEXT (parser->scope), in cp_parser_diagnose_invalid_type_name()
3497 TYPENAME_TYPE_FULLNAME (parser->scope), in cp_parser_diagnose_invalid_type_name()
3499 TYPE_CONTEXT (parser->scope), in cp_parser_diagnose_invalid_type_name()
3500 TYPENAME_TYPE_FULLNAME (parser->scope)); in cp_parser_diagnose_invalid_type_name()
3504 parser->scope, id, parser->scope); in cp_parser_diagnose_invalid_type_name()
3506 else if (TYPE_P (parser->scope)) in cp_parser_diagnose_invalid_type_name()
3509 if (!COMPLETE_TYPE_P (parser->scope)) in cp_parser_diagnose_invalid_type_name()
3511 parser->scope); in cp_parser_diagnose_invalid_type_name()
3512 else if (cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_diagnose_invalid_type_name()
3515 id, parser->scope); in cp_parser_diagnose_invalid_type_name()
3519 TREE_OPERAND (id, 0), parser->scope); in cp_parser_diagnose_invalid_type_name()
3523 id, parser->scope); in cp_parser_diagnose_invalid_type_name()
3543 cp_parser_parse_and_diagnose_invalid_type_name (cp_parser *parser) in cp_parser_parse_and_diagnose_invalid_type_name() argument
3546 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_parse_and_diagnose_invalid_type_name()
3551 cp_token *next = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_parse_and_diagnose_invalid_type_name()
3556 cp_parser_parse_tentatively (parser); in cp_parser_parse_and_diagnose_invalid_type_name()
3557 id = cp_parser_id_expression (parser, in cp_parser_parse_and_diagnose_invalid_type_name()
3565 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN) in cp_parser_parse_and_diagnose_invalid_type_name()
3568 cp_parser_abort_tentative_parse (parser); in cp_parser_parse_and_diagnose_invalid_type_name()
3571 if (!cp_parser_parse_definitely (parser)) in cp_parser_parse_and_diagnose_invalid_type_name()
3575 cp_parser_diagnose_invalid_type_name (parser, id, token->location); in cp_parser_parse_and_diagnose_invalid_type_name()
3580 if (!parser->in_declarator_p) in cp_parser_parse_and_diagnose_invalid_type_name()
3581 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_parse_and_diagnose_invalid_type_name()
3591 cp_parser_skip_to_closing_parenthesis_1 (cp_parser *parser, in cp_parser_skip_to_closing_parenthesis_1() argument
3602 && cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_skip_to_closing_parenthesis_1()
3607 cp_token * token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_closing_parenthesis_1()
3617 if (!parser->lexer->in_pragma) in cp_parser_skip_to_closing_parenthesis_1()
3656 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_parenthesis_1()
3676 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_parenthesis_1()
3686 cp_parser_skip_to_closing_parenthesis (cp_parser *parser, in cp_parser_skip_to_closing_parenthesis() argument
3692 return cp_parser_skip_to_closing_parenthesis_1 (parser, recovering, in cp_parser_skip_to_closing_parenthesis()
3701 cp_parser_skip_to_end_of_statement (cp_parser* parser) in cp_parser_skip_to_end_of_statement() argument
3706 if (parser->fully_implicit_function_template_p) in cp_parser_skip_to_end_of_statement()
3707 abort_fully_implicit_template (parser); in cp_parser_skip_to_end_of_statement()
3711 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_end_of_statement()
3716 if (!parser->lexer->in_pragma) in cp_parser_skip_to_end_of_statement()
3753 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_statement()
3767 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_statement()
3776 cp_parser_consume_semicolon_at_end_of_statement (cp_parser *parser) in cp_parser_consume_semicolon_at_end_of_statement() argument
3779 if (!cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON)) in cp_parser_consume_semicolon_at_end_of_statement()
3783 cp_parser_skip_to_end_of_statement (parser); in cp_parser_consume_semicolon_at_end_of_statement()
3785 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_consume_semicolon_at_end_of_statement()
3786 cp_lexer_consume_token (parser->lexer); in cp_parser_consume_semicolon_at_end_of_statement()
3794 cp_parser_skip_to_end_of_block_or_statement (cp_parser* parser) in cp_parser_skip_to_end_of_block_or_statement() argument
3799 if (parser->fully_implicit_function_template_p) in cp_parser_skip_to_end_of_block_or_statement()
3800 abort_fully_implicit_template (parser); in cp_parser_skip_to_end_of_block_or_statement()
3804 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_end_of_block_or_statement()
3809 if (!parser->lexer->in_pragma) in cp_parser_skip_to_end_of_block_or_statement()
3842 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_block_or_statement()
3851 cp_parser_skip_to_closing_brace (cp_parser *parser) in cp_parser_skip_to_closing_brace() argument
3857 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_closing_brace()
3862 if (!parser->lexer->in_pragma) in cp_parser_skip_to_closing_brace()
3887 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_brace()
3896 cp_parser_skip_to_pragma_eol (cp_parser* parser, cp_token *pragma_tok) in cp_parser_skip_to_pragma_eol() argument
3900 parser->lexer->in_pragma = false; in cp_parser_skip_to_pragma_eol()
3903 token = cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_pragma_eol()
3907 cp_lexer_purge_tokens_after (parser->lexer, pragma_tok); in cp_parser_skip_to_pragma_eol()
3914 cp_parser_require_pragma_eol (cp_parser *parser, cp_token *pragma_tok) in cp_parser_require_pragma_eol() argument
3916 parser->lexer->in_pragma = false; in cp_parser_require_pragma_eol()
3917 if (!cp_parser_require (parser, CPP_PRAGMA_EOL, RT_PRAGMA_EOL)) in cp_parser_require_pragma_eol()
3918 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_require_pragma_eol()
3926 cp_parser_make_typename_type (cp_parser *parser, tree id, in cp_parser_make_typename_type() argument
3932 result = make_typename_type (parser->scope, id, typename_type, in cp_parser_make_typename_type()
3935 cp_parser_diagnose_invalid_type_name (parser, id, id_location); in cp_parser_make_typename_type()
3938 return make_typename_type (parser->scope, id, typename_type, tf_error); in cp_parser_make_typename_type()
3977 cp_parser *parser; in cp_parser_new() local
3990 parser = ggc_cleared_alloc<cp_parser> (); in cp_parser_new()
3991 parser->lexer = lexer; in cp_parser_new()
3992 parser->context = cp_parser_context_new (NULL); in cp_parser_new()
3995 parser->allow_gnu_extensions_p = 1; in cp_parser_new()
3999 parser->greater_than_is_operator_p = true; in cp_parser_new()
4001 parser->default_arg_ok_p = true; in cp_parser_new()
4004 parser->integral_constant_expression_p = false; in cp_parser_new()
4005 parser->allow_non_integral_constant_expression_p = false; in cp_parser_new()
4006 parser->non_integral_constant_expression_p = false; in cp_parser_new()
4009 parser->local_variables_forbidden_p = 0; in cp_parser_new()
4012 parser->in_unbraced_linkage_specification_p = false; in cp_parser_new()
4015 parser->in_declarator_p = false; in cp_parser_new()
4018 parser->in_template_argument_list_p = false; in cp_parser_new()
4021 parser->in_statement = 0; in cp_parser_new()
4024 parser->in_switch_statement_p = false; in cp_parser_new()
4027 parser->in_type_id_in_expr_p = false; in cp_parser_new()
4030 parser->translate_strings_p = true; in cp_parser_new()
4033 parser->in_function_body = false; in cp_parser_new()
4036 parser->colon_corrects_to_scope_p = true; in cp_parser_new()
4039 push_unparsed_function_queues (parser); in cp_parser_new()
4042 parser->num_classes_being_defined = 0; in cp_parser_new()
4045 parser->num_template_parameter_lists = 0; in cp_parser_new()
4048 parser->omp_declare_simd = NULL; in cp_parser_new()
4049 parser->oacc_routine = NULL; in cp_parser_new()
4052 parser->auto_is_implicit_function_template_parm_p = false; in cp_parser_new()
4053 parser->fully_implicit_function_template_p = false; in cp_parser_new()
4054 parser->implicit_template_parms = 0; in cp_parser_new()
4055 parser->implicit_template_scope = 0; in cp_parser_new()
4058 parser->prevent_constrained_type_specifiers = 0; in cp_parser_new()
4061 parser->innermost_linkage_specification_location = UNKNOWN_LOCATION; in cp_parser_new()
4063 return parser; in cp_parser_new()
4071 cp_parser_push_lexer_for_tokens (cp_parser *parser, cp_token_cache *cache) in cp_parser_push_lexer_for_tokens() argument
4074 lexer->next = parser->lexer; in cp_parser_push_lexer_for_tokens()
4075 parser->lexer = lexer; in cp_parser_push_lexer_for_tokens()
4085 cp_parser_pop_lexer (cp_parser *parser) in cp_parser_pop_lexer() argument
4087 cp_lexer *lexer = parser->lexer; in cp_parser_pop_lexer()
4088 parser->lexer = lexer->next; in cp_parser_pop_lexer()
4093 cp_lexer_set_source_position_from_token (parser->lexer->next_token); in cp_parser_pop_lexer()
4102 cp_parser_identifier (cp_parser* parser) in cp_parser_identifier() argument
4107 token = cp_parser_require (parser, CPP_NAME, RT_NAME); in cp_parser_identifier()
4130 cp_parser_string_literal (cp_parser *parser, bool translate, bool wide_ok,
4145 tok = cp_lexer_peek_token (parser->lexer);
4148 cp_parser_error (parser, "expected string-literal");
4170 (cp_lexer_peek_nth_token (parser->lexer, 2)))
4172 cp_lexer_consume_token (parser->lexer);
4198 cp_lexer_consume_token (parser->lexer);
4243 tok = cp_lexer_peek_token (parser->lexer);
4269 cp_parser_error (parser, "a wide string is invalid in this context");
4384 cp_parser_userdef_char_literal (cp_parser *parser) in cp_parser_userdef_char_literal() argument
4386 cp_token *token = cp_lexer_consume_token (parser->lexer); in cp_parser_userdef_char_literal()
4481 cp_parser_userdef_numeric_literal (cp_parser *parser) in cp_parser_userdef_numeric_literal() argument
4483 cp_token *token = cp_lexer_consume_token (parser->lexer); in cp_parser_userdef_numeric_literal()
4619 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_userdef_numeric_literal()
4692 cp_parser_translation_unit (cp_parser* parser) in cp_parser_translation_unit() argument
4710 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_translation_unit()
4715 != cp_lexer_peek_token (parser->lexer)->implicit_extern_c) in cp_parser_translation_unit()
4729 cp_parser_error (parser, "expected declaration"); in cp_parser_translation_unit()
4730 cp_lexer_consume_token (parser->lexer); in cp_parser_translation_unit()
4732 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_translation_unit()
4733 cp_lexer_consume_token (parser->lexer); in cp_parser_translation_unit()
4736 cp_parser_toplevel_declaration (parser); in cp_parser_translation_unit()
4740 cp_lexer_destroy (parser->lexer); in cp_parser_translation_unit()
4741 parser->lexer = NULL; in cp_parser_translation_unit()
4768 cp_parser_start_tentative_firewall (cp_parser *parser) in cp_parser_start_tentative_firewall() argument
4770 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_start_tentative_firewall()
4773 cp_parser_parse_tentatively (parser); in cp_parser_start_tentative_firewall()
4774 cp_parser_commit_to_topmost_tentative_parse (parser); in cp_parser_start_tentative_firewall()
4775 return cp_lexer_token_position (parser->lexer, false); in cp_parser_start_tentative_firewall()
4782 cp_parser_end_tentative_firewall (cp_parser *parser, cp_token_position start, in cp_parser_end_tentative_firewall() argument
4789 cp_parser_parse_definitely (parser); in cp_parser_end_tentative_firewall()
4791 cp_token *token = cp_lexer_token_at (parser->lexer, start); in cp_parser_end_tentative_firewall()
4795 cp_lexer_purge_tokens_after (parser->lexer, start); in cp_parser_end_tentative_firewall()
4805 cp_parser *parser; member
4808 tentative_firewall (cp_parser *p): parser(p) in tentative_firewall()
4812 if ((set = cp_parser_uncommitted_to_tentative_parse_p (parser))) in tentative_firewall()
4814 cp_parser_parse_tentatively (parser); in tentative_firewall()
4815 cp_parser_commit_to_topmost_tentative_parse (parser); in tentative_firewall()
4816 cp_parser_parse_tentatively (parser); in tentative_firewall()
4826 bool err = cp_parser_error_occurred (parser); in ~tentative_firewall()
4827 cp_parser_parse_definitely (parser); in ~tentative_firewall()
4828 cp_parser_parse_definitely (parser); in ~tentative_firewall()
4830 cp_parser_simulate_error (parser); in ~tentative_firewall()
4854 bool require_open (cp_parser *parser) in require_open() argument
4856 m_open_loc = cp_lexer_peek_token (parser->lexer)->location; in require_open()
4857 return cp_parser_require (parser, traits_t::open_token_type, in require_open()
4864 cp_token * consume_open (cp_parser *parser) in consume_open() argument
4866 cp_token *tok = cp_lexer_consume_token (parser->lexer); in consume_open()
4877 cp_token *require_close (cp_parser *parser) const in require_close() argument
4879 return cp_parser_require (parser, traits_t::close_token_type, in require_close()
4925 cp_parser_statement_expr (cp_parser *parser) in cp_parser_statement_expr() argument
4927 cp_token_position start = cp_parser_start_tentative_firewall (parser); in cp_parser_statement_expr()
4930 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_statement_expr()
4932 parens.consume_open (parser); in cp_parser_statement_expr()
4936 cp_parser_compound_statement (parser, expr, BCS_NORMAL, false); in cp_parser_statement_expr()
4940 location_t finish_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_statement_expr()
4941 if (!parens.require_close (parser)) in cp_parser_statement_expr()
4942 cp_parser_skip_to_end_of_statement (parser); in cp_parser_statement_expr()
4944 cp_parser_end_tentative_firewall (parser, start, expr); in cp_parser_statement_expr()
5058 cp_parser_fold_operator (cp_parser *parser) in cp_parser_fold_operator() argument
5060 cp_token* token = cp_lexer_peek_token (parser->lexer); in cp_parser_fold_operator()
5063 cp_lexer_consume_token (parser->lexer); in cp_parser_fold_operator()
5077 cp_parser_fold_expression (cp_parser *parser, tree expr1) in cp_parser_fold_expression() argument
5082 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_fold_expression()
5084 cp_lexer_consume_token (parser->lexer); in cp_parser_fold_expression()
5085 int op = cp_parser_fold_operator (parser); in cp_parser_fold_expression()
5088 cp_parser_error (parser, "expected binary operator"); in cp_parser_fold_expression()
5092 tree expr = cp_parser_cast_expression (parser, false, false, in cp_parser_fold_expression()
5099 const cp_token* token = cp_lexer_peek_token (parser->lexer); in cp_parser_fold_expression()
5100 int op = cp_parser_fold_operator (parser); in cp_parser_fold_expression()
5103 cp_parser_error (parser, "expected binary operator"); in cp_parser_fold_expression()
5107 if (cp_lexer_next_token_is_not (parser->lexer, CPP_ELLIPSIS)) in cp_parser_fold_expression()
5109 cp_parser_error (parser, "expected ..."); in cp_parser_fold_expression()
5112 cp_lexer_consume_token (parser->lexer); in cp_parser_fold_expression()
5129 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_fold_expression()
5132 if (cp_lexer_next_token_is_not (parser->lexer, token->type)) in cp_parser_fold_expression()
5134 cp_parser_error (parser, "mismatched operator in fold-expression"); in cp_parser_fold_expression()
5137 cp_lexer_consume_token (parser->lexer); in cp_parser_fold_expression()
5140 tree expr2 = cp_parser_cast_expression (parser, false, false, false, &pidk); in cp_parser_fold_expression()
5201 cp_parser_primary_expression (cp_parser *parser, in cp_parser_primary_expression() argument
5214 token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
5233 return cp_parser_userdef_numeric_literal (parser); in cp_parser_primary_expression()
5234 token = cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5245 && parser->integral_constant_expression_p in cp_parser_primary_expression()
5255 next_token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
5269 || parser->greater_than_is_operator_p) in cp_parser_primary_expression()
5274 || parser->greater_than_is_operator_p)) in cp_parser_primary_expression()
5283 cp_parser_non_integral_constant_expression (parser, NIC_FLOAT); in cp_parser_primary_expression()
5293 return cp_parser_userdef_char_literal (parser); in cp_parser_primary_expression()
5308 return (cp_parser_string_literal (parser, in cp_parser_primary_expression()
5309 parser->translate_strings_p, in cp_parser_primary_expression()
5316 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_primary_expression()
5317 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_BRACE)) in cp_parser_primary_expression()
5329 if (!parser->in_function_body in cp_parser_primary_expression()
5330 || parser->in_template_argument_list_p) in cp_parser_primary_expression()
5335 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_primary_expression()
5336 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_primary_expression()
5337 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5341 return cp_parser_statement_expr (parser); in cp_parser_primary_expression()
5352 parens.consume_open (parser); in cp_parser_primary_expression()
5356 = parser->greater_than_is_operator_p; in cp_parser_primary_expression()
5357 parser->greater_than_is_operator_p = true; in cp_parser_primary_expression()
5359 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_primary_expression()
5364 expr = cp_parser_expression (parser, idk, cast_p, decltype_p); in cp_parser_primary_expression()
5366 token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
5369 expr = cp_parser_fold_expression (parser, expr); in cp_parser_primary_expression()
5392 parser->greater_than_is_operator_p in cp_parser_primary_expression()
5396 token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
5399 if (!parens.require_close (parser) in cp_parser_primary_expression()
5400 && !cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_primary_expression()
5401 cp_parser_skip_to_end_of_statement (parser); in cp_parser_primary_expression()
5411 cp_parser_parse_tentatively (parser); in cp_parser_primary_expression()
5412 tree msg = cp_parser_objc_message_expression (parser); in cp_parser_primary_expression()
5414 if (cp_parser_parse_definitely (parser)) in cp_parser_primary_expression()
5418 cp_expr lam = cp_parser_lambda_expression (parser); in cp_parser_primary_expression()
5420 if (cp_parser_error_occurred (parser)) in cp_parser_primary_expression()
5429 return cp_parser_objc_expression (parser); in cp_parser_primary_expression()
5430 cp_parser_error (parser, "expected primary-expression"); in cp_parser_primary_expression()
5438 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5441 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5446 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5451 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5456 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5457 if (parser->local_variables_forbidden_p & THIS_FORBIDDEN) in cp_parser_primary_expression()
5464 if (cp_parser_non_integral_constant_expression (parser, NIC_THIS)) in cp_parser_primary_expression()
5486 token = cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5503 if (cp_parser_non_integral_constant_expression (parser, name)) in cp_parser_primary_expression()
5516 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_primary_expression()
5519 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5522 parens.require_open (parser); in cp_parser_primary_expression()
5524 expression = cp_parser_assignment_expression (parser); in cp_parser_primary_expression()
5526 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_primary_expression()
5527 type_location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_primary_expression()
5530 type_id_in_expr_sentinel s (parser); in cp_parser_primary_expression()
5531 type = cp_parser_type_id (parser); in cp_parser_primary_expression()
5535 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_primary_expression()
5536 parens.require_close (parser); in cp_parser_primary_expression()
5539 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_primary_expression()
5553 return cp_parser_builtin_offsetof (parser); in cp_parser_primary_expression()
5583 return cp_parser_trait_expr (parser, token->keyword); in cp_parser_primary_expression()
5587 return cp_parser_requires_expression (parser); in cp_parser_primary_expression()
5593 return cp_parser_objc_expression (parser); in cp_parser_primary_expression()
5596 if (parser->in_function_body in cp_parser_primary_expression()
5597 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_primary_expression()
5602 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_primary_expression()
5607 cp_parser_error (parser, "expected primary-expression"); in cp_parser_primary_expression()
5629 = cp_parser_id_expression (parser, in cp_parser_primary_expression()
5638 token = cp_lexer_peek_token (parser->lexer); in cp_parser_primary_expression()
5662 cp_parser_simulate_error (parser); in cp_parser_primary_expression()
5666 decl = cp_parser_lookup_name (parser, id_expression, in cp_parser_primary_expression()
5681 && cp_lexer_peek_token (parser->lexer)->type == CPP_DOT in cp_parser_primary_expression()
5686 cp_lexer_consume_token (parser->lexer); in cp_parser_primary_expression()
5687 component = cp_parser_identifier (parser); in cp_parser_primary_expression()
5740 if ((parser->local_variables_forbidden_p & LOCAL_VARS_FORBIDDEN) in cp_parser_primary_expression()
5751 (id_expression, decl, parser->scope, in cp_parser_primary_expression()
5753 parser->integral_constant_expression_p, in cp_parser_primary_expression()
5754 parser->allow_non_integral_constant_expression_p, in cp_parser_primary_expression()
5755 &parser->non_integral_constant_expression_p, in cp_parser_primary_expression()
5761 cp_parser_error (parser, error_msg); in cp_parser_primary_expression()
5782 cp_parser_error (parser, "expected primary-expression"); in cp_parser_primary_expression()
5788 cp_parser_primary_expression (cp_parser *parser, in cp_parser_primary_expression() argument
5794 return cp_parser_primary_expression (parser, address_p, cast_p, template_arg_p, in cp_parser_primary_expression()
5833 cp_parser_id_expression (cp_parser *parser, in cp_parser_id_expression() argument
5850 && (cp_parser_global_scope_opt (parser, in cp_parser_id_expression()
5856 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_id_expression()
5877 *template_p = cp_parser_optional_template_keyword (parser); in cp_parser_id_expression()
5880 saved_scope = parser->scope; in cp_parser_id_expression()
5881 saved_object_scope = parser->object_scope; in cp_parser_id_expression()
5882 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_id_expression()
5884 unqualified_id = cp_parser_unqualified_id (parser, *template_p, in cp_parser_id_expression()
5889 parser->scope = saved_scope; in cp_parser_id_expression()
5890 parser->object_scope = saved_object_scope; in cp_parser_id_expression()
5891 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_id_expression()
5903 token = cp_lexer_peek_token (parser->lexer); in cp_parser_id_expression()
5910 (parser, 2)) in cp_parser_id_expression()
5911 return cp_parser_identifier (parser); in cp_parser_id_expression()
5913 cp_parser_parse_tentatively (parser); in cp_parser_id_expression()
5915 id = cp_parser_template_id_expr (parser, in cp_parser_id_expression()
5920 if (cp_parser_parse_definitely (parser)) in cp_parser_id_expression()
5925 token = cp_lexer_peek_token (parser->lexer); in cp_parser_id_expression()
5930 return cp_parser_identifier (parser); in cp_parser_id_expression()
5934 return cp_parser_operator_function_id (parser); in cp_parser_id_expression()
5938 cp_parser_error (parser, "expected id-expression"); in cp_parser_id_expression()
5943 return cp_parser_unqualified_id (parser, template_keyword_p, in cp_parser_id_expression()
5972 cp_parser_unqualified_id (cp_parser* parser, in cp_parser_unqualified_id() argument
5981 token = cp_lexer_peek_token (parser->lexer); in cp_parser_unqualified_id()
5991 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
5993 id = cp_parser_template_id_expr (parser, template_keyword_p, in cp_parser_unqualified_id()
5997 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
6000 return cp_parser_identifier (parser); in cp_parser_unqualified_id()
6004 return cp_parser_template_id_expr (parser, template_keyword_p, in cp_parser_unqualified_id()
6018 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
6054 scope = parser->scope; in cp_parser_unqualified_id()
6055 object_scope = parser->object_scope; in cp_parser_unqualified_id()
6056 qualifying_scope = parser->qualifying_scope; in cp_parser_unqualified_id()
6061 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_unqualified_id()
6062 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
6067 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
6071 cp_parser_simulate_error (parser); in cp_parser_unqualified_id()
6072 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_unqualified_id()
6073 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
6078 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
6081 cp_parser_simulate_error (parser); in cp_parser_unqualified_id()
6087 token = cp_lexer_peek_token (parser->lexer); in cp_parser_unqualified_id()
6101 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_unqualified_id()
6107 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
6118 cp_lexer_consume_token (parser->lexer); in cp_parser_unqualified_id()
6132 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
6133 type_decl = cp_parser_class_name (parser, in cp_parser_unqualified_id()
6140 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
6146 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
6147 parser->scope = qualifying_scope; in cp_parser_unqualified_id()
6148 parser->object_scope = NULL_TREE; in cp_parser_unqualified_id()
6149 parser->qualifying_scope = NULL_TREE; in cp_parser_unqualified_id()
6151 = cp_parser_class_name (parser, in cp_parser_unqualified_id()
6158 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
6164 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
6165 parser->scope = object_scope; in cp_parser_unqualified_id()
6166 parser->object_scope = NULL_TREE; in cp_parser_unqualified_id()
6167 parser->qualifying_scope = NULL_TREE; in cp_parser_unqualified_id()
6169 = cp_parser_class_name (parser, in cp_parser_unqualified_id()
6176 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
6182 parser->scope = NULL_TREE; in cp_parser_unqualified_id()
6183 parser->object_scope = NULL_TREE; in cp_parser_unqualified_id()
6184 parser->qualifying_scope = NULL_TREE; in cp_parser_unqualified_id()
6186 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
6188 = cp_parser_class_name (parser, in cp_parser_unqualified_id()
6196 && ! cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
6200 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
6202 cp_parser_simulate_error (parser); in cp_parser_unqualified_id()
6207 type_decl = cp_parser_identifier (parser); in cp_parser_unqualified_id()
6225 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
6229 cp_parser_simulate_error (parser); in cp_parser_unqualified_id()
6240 && !cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_unqualified_id()
6254 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
6256 id = cp_parser_template_id_expr (parser, template_keyword_p, in cp_parser_unqualified_id()
6260 if (cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
6264 cp_parser_parse_tentatively (parser); in cp_parser_unqualified_id()
6266 id = cp_parser_operator_function_id (parser); in cp_parser_unqualified_id()
6268 if (!cp_parser_parse_definitely (parser)) in cp_parser_unqualified_id()
6269 id = cp_parser_conversion_function_id (parser); in cp_parser_unqualified_id()
6278 cp_parser_error (parser, "expected unqualified-id"); in cp_parser_unqualified_id()
6335 cp_parser_nested_name_specifier_opt (cp_parser *parser, in cp_parser_nested_name_specifier_opt() argument
6347 if (cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_nested_name_specifier_opt()
6348 && cp_lexer_next_token_is_not (parser->lexer, CPP_NESTED_NAME_SPECIFIER)) in cp_parser_nested_name_specifier_opt()
6350 start = cp_lexer_token_position (parser->lexer, false); in cp_parser_nested_name_specifier_opt()
6362 token = cp_lexer_peek_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6369 cp_parser_pre_parsed_nested_name_specifier (parser); in cp_parser_nested_name_specifier_opt()
6374 && TREE_CODE (parser->scope) == TYPENAME_TYPE) in cp_parser_nested_name_specifier_opt()
6376 new_scope = resolve_typename_type (parser->scope, in cp_parser_nested_name_specifier_opt()
6379 parser->scope = new_scope; in cp_parser_nested_name_specifier_opt()
6405 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_nested_name_specifier_opt()
6408 && parser->colon_corrects_to_scope_p in cp_parser_nested_name_specifier_opt()
6409 && cp_lexer_peek_nth_token (parser->lexer, 3)->type == CPP_NAME in cp_parser_nested_name_specifier_opt()
6411 && !parser->objective_c_message_context_p) in cp_parser_nested_name_specifier_opt()
6423 (parser, 2)) in cp_parser_nested_name_specifier_opt()
6429 cp_parser_parse_tentatively (parser); in cp_parser_nested_name_specifier_opt()
6435 template_keyword_p = cp_parser_optional_template_keyword (parser); in cp_parser_nested_name_specifier_opt()
6442 && cp_parser_nth_token_starts_template_argument_list_p (parser, 2)) in cp_parser_nested_name_specifier_opt()
6448 old_scope = parser->scope; in cp_parser_nested_name_specifier_opt()
6449 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_nested_name_specifier_opt()
6456 && parser->scope in cp_parser_nested_name_specifier_opt()
6457 && TREE_CODE (parser->scope) == TYPENAME_TYPE) in cp_parser_nested_name_specifier_opt()
6458 parser->scope = resolve_typename_type (parser->scope, in cp_parser_nested_name_specifier_opt()
6462 = cp_parser_qualifying_entity (parser, in cp_parser_nested_name_specifier_opt()
6469 cp_parser_require (parser, CPP_SCOPE, RT_SCOPE); in cp_parser_nested_name_specifier_opt()
6473 if (!cp_parser_parse_definitely (parser)) in cp_parser_nested_name_specifier_opt()
6480 parser->scope = old_scope; in cp_parser_nested_name_specifier_opt()
6481 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_nested_name_specifier_opt()
6489 if (cp_lexer_next_token_is (parser->lexer, CPP_DECLTYPE) in cp_parser_nested_name_specifier_opt()
6490 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_nested_name_specifier_opt()
6493 token = cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6499 parser->scope = error_mark_node; in cp_parser_nested_name_specifier_opt()
6503 cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6506 if (cp_lexer_next_token_is (parser->lexer, CPP_TEMPLATE_ID) in cp_parser_nested_name_specifier_opt()
6507 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_SCOPE)) in cp_parser_nested_name_specifier_opt()
6511 token = cp_lexer_peek_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6548 parser->scope = error_mark_node; in cp_parser_nested_name_specifier_opt()
6552 cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6553 cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6557 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_nested_name_specifier_opt()
6562 while (cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_nested_name_specifier_opt()
6563 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_nested_name_specifier_opt()
6565 && (cp_lexer_peek_nth_token (parser->lexer, 3)->type in cp_parser_nested_name_specifier_opt()
6568 token = cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6576 decl = cp_parser_lookup_name (parser, token->u.value, in cp_parser_nested_name_specifier_opt()
6592 (parser)) in cp_parser_nested_name_specifier_opt()
6605 (parser, token->u.value, decl, NLE_NOT_CXX98, in cp_parser_nested_name_specifier_opt()
6609 (parser, token->u.value, decl, NLE_CXX98, in cp_parser_nested_name_specifier_opt()
6613 parser->scope = error_mark_node; in cp_parser_nested_name_specifier_opt()
6625 cp_lexer_consume_token (parser->lexer); in cp_parser_nested_name_specifier_opt()
6656 parser->scope = new_scope; in cp_parser_nested_name_specifier_opt()
6668 token = cp_lexer_token_at (parser->lexer, start); in cp_parser_nested_name_specifier_opt()
6675 token->u.tree_check_value->value = parser->scope; in cp_parser_nested_name_specifier_opt()
6678 parser->qualifying_scope; in cp_parser_nested_name_specifier_opt()
6682 cp_lexer_purge_tokens_after (parser->lexer, start); in cp_parser_nested_name_specifier_opt()
6688 return success ? parser->scope : NULL_TREE; in cp_parser_nested_name_specifier_opt()
6697 cp_parser_nested_name_specifier (cp_parser *parser, in cp_parser_nested_name_specifier() argument
6706 scope = cp_parser_nested_name_specifier_opt (parser, in cp_parser_nested_name_specifier()
6714 cp_parser_error (parser, "expected nested-name-specifier"); in cp_parser_nested_name_specifier()
6715 parser->scope = NULL_TREE; in cp_parser_nested_name_specifier()
6739 cp_parser_qualifying_entity (cp_parser *parser, in cp_parser_qualifying_entity() argument
6754 if (cp_lexer_next_token_is_decltype (parser->lexer)) in cp_parser_qualifying_entity()
6756 scope = cp_parser_decltype (parser); in cp_parser_qualifying_entity()
6760 cp_parser_simulate_error (parser); in cp_parser_qualifying_entity()
6771 saved_scope = parser->scope; in cp_parser_qualifying_entity()
6772 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_qualifying_entity()
6773 saved_object_scope = parser->object_scope; in cp_parser_qualifying_entity()
6779 cp_parser_parse_tentatively (parser); in cp_parser_qualifying_entity()
6780 scope = cp_parser_class_name (parser, in cp_parser_qualifying_entity()
6788 successful_parse_p = only_class_p || cp_parser_parse_definitely (parser); in cp_parser_qualifying_entity()
6793 parser->scope = saved_scope; in cp_parser_qualifying_entity()
6794 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_qualifying_entity()
6795 parser->object_scope = saved_object_scope; in cp_parser_qualifying_entity()
6800 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME) in cp_parser_qualifying_entity()
6801 || cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_SCOPE) in cp_parser_qualifying_entity()
6803 scope = cp_parser_namespace_name (parser); in cp_parser_qualifying_entity()
6812 cp_parser_compound_literal_p (cp_parser *parser) in cp_parser_compound_literal_p() argument
6814 cp_lexer_save_tokens (parser->lexer); in cp_parser_compound_literal_p()
6820 = (cp_parser_skip_to_closing_parenthesis (parser, false, false, in cp_parser_compound_literal_p()
6822 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)); in cp_parser_compound_literal_p()
6825 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_compound_literal_p()
6883 cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, in cp_parser_postfix_expression() argument
6895 token = cp_lexer_peek_token (parser->lexer); in cp_parser_postfix_expression()
6916 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
6919 saved_message = parser->type_definition_forbidden_message; in cp_parser_postfix_expression()
6920 parser->type_definition_forbidden_message in cp_parser_postfix_expression()
6924 cp_parser_require (parser, CPP_LESS, RT_LESS); in cp_parser_postfix_expression()
6926 saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_postfix_expression()
6927 parser->in_type_id_in_expr_p = true; in cp_parser_postfix_expression()
6928 type = cp_parser_type_id (parser, CP_PARSER_FLAGS_TYPENAME_OPTIONAL, in cp_parser_postfix_expression()
6930 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_postfix_expression()
6932 cp_parser_require (parser, CPP_GREATER, RT_GREATER); in cp_parser_postfix_expression()
6934 parser->type_definition_forbidden_message = saved_message; in cp_parser_postfix_expression()
6937 = parser->greater_than_is_operator_p; in cp_parser_postfix_expression()
6938 parser->greater_than_is_operator_p = true; in cp_parser_postfix_expression()
6942 parens.require_open (parser); in cp_parser_postfix_expression()
6943 expression = cp_parser_expression (parser, & idk, /*cast_p=*/true); in cp_parser_postfix_expression()
6944 cp_token *close_paren = cp_parser_require (parser, CPP_CLOSE_PAREN, in cp_parser_postfix_expression()
6949 parser->greater_than_is_operator_p in cp_parser_postfix_expression()
6955 && cp_parser_non_integral_constant_expression (parser, NIC_CAST)) in cp_parser_postfix_expression()
7003 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
7006 parens.require_open (parser); in cp_parser_postfix_expression()
7008 saved_message = parser->type_definition_forbidden_message; in cp_parser_postfix_expression()
7009 parser->type_definition_forbidden_message in cp_parser_postfix_expression()
7013 cp_parser_parse_tentatively (parser); in cp_parser_postfix_expression()
7015 saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_postfix_expression()
7016 parser->in_type_id_in_expr_p = true; in cp_parser_postfix_expression()
7017 type = cp_parser_type_id (parser); in cp_parser_postfix_expression()
7018 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_postfix_expression()
7022 cp_token *close_paren = parens.require_close (parser); in cp_parser_postfix_expression()
7024 if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_expression()
7032 expression = cp_parser_expression (parser, & idk); in cp_parser_postfix_expression()
7036 close_paren = parens.require_close (parser); in cp_parser_postfix_expression()
7039 parser->type_definition_forbidden_message = saved_message; in cp_parser_postfix_expression()
7041 if (cp_parser_non_integral_constant_expression (parser, NIC_TYPEID)) in cp_parser_postfix_expression()
7064 ++parser->prevent_constrained_type_specifiers; in cp_parser_postfix_expression()
7065 type = cp_parser_elaborated_type_specifier (parser, in cp_parser_postfix_expression()
7068 --parser->prevent_constrained_type_specifiers; in cp_parser_postfix_expression()
7069 postfix_expression = cp_parser_functional_cast (parser, type); in cp_parser_postfix_expression()
7081 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
7082 vec = cp_parser_parenthesized_expression_list (parser, non_attr, in cp_parser_postfix_expression()
7148 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
7151 parens.require_open (parser); in cp_parser_postfix_expression()
7153 expression = cp_parser_assignment_expression (parser); in cp_parser_postfix_expression()
7155 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_postfix_expression()
7157 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_postfix_expression()
7160 type_id_in_expr_sentinel s (parser); in cp_parser_postfix_expression()
7161 type = cp_parser_type_id (parser); in cp_parser_postfix_expression()
7164 parens.require_close (parser); in cp_parser_postfix_expression()
7179 cp_parser_parse_tentatively (parser); in cp_parser_postfix_expression()
7181 ++parser->prevent_constrained_type_specifiers; in cp_parser_postfix_expression()
7182 type = cp_parser_simple_type_specifier (parser, in cp_parser_postfix_expression()
7185 --parser->prevent_constrained_type_specifiers; in cp_parser_postfix_expression()
7187 if (!cp_parser_error_occurred (parser)) in cp_parser_postfix_expression()
7189 = cp_parser_functional_cast (parser, type); in cp_parser_postfix_expression()
7191 if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_expression()
7196 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_postfix_expression()
7197 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_postfix_expression()
7201 cp_parser_parse_tentatively (parser); in cp_parser_postfix_expression()
7204 parens.consume_open (parser); in cp_parser_postfix_expression()
7208 if (!cp_parser_compound_literal_p (parser)) in cp_parser_postfix_expression()
7209 cp_parser_simulate_error (parser); in cp_parser_postfix_expression()
7213 bool saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_postfix_expression()
7214 parser->in_type_id_in_expr_p = true; in cp_parser_postfix_expression()
7215 type = cp_parser_type_id (parser); in cp_parser_postfix_expression()
7216 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_postfix_expression()
7217 parens.require_close (parser); in cp_parser_postfix_expression()
7222 if (!cp_parser_error_occurred (parser)) in cp_parser_postfix_expression()
7226 initializer = cp_parser_braced_list (parser, in cp_parser_postfix_expression()
7231 if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_expression()
7246 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_postfix_expression()
7263 = cp_parser_primary_expression (parser, address_p, cast_p, in cp_parser_postfix_expression()
7281 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_postfix_expression()
7287 token = cp_lexer_peek_token (parser->lexer); in cp_parser_postfix_expression()
7292 if (cp_next_tokens_can_be_std_attribute_p (parser)) in cp_parser_postfix_expression()
7294 cp_parser_error (parser, in cp_parser_postfix_expression()
7300 = cp_parser_postfix_open_square_expression (parser, in cp_parser_postfix_expression()
7333 = parser->integral_constant_expression_p; in cp_parser_postfix_expression()
7335 = parser->non_integral_constant_expression_p; in cp_parser_postfix_expression()
7336 parser->integral_constant_expression_p = false; in cp_parser_postfix_expression()
7339 (parser, non_attr, in cp_parser_postfix_expression()
7346 parser->integral_constant_expression_p in cp_parser_postfix_expression()
7348 parser->non_integral_constant_expression_p in cp_parser_postfix_expression()
7361 && cp_parser_non_integral_constant_expression (parser, in cp_parser_postfix_expression()
7499 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
7502 = cp_parser_postfix_dot_deref_expression (parser, token->type, in cp_parser_postfix_expression()
7512 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
7518 if (cp_parser_non_integral_constant_expression (parser, NIC_INC)) in cp_parser_postfix_expression()
7527 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_expression()
7533 if (cp_parser_non_integral_constant_expression (parser, NIC_DEC)) in cp_parser_postfix_expression()
7566 cp_parser_postfix_open_square_expression (cp_parser *parser, in cp_parser_postfix_open_square_expression() argument
7572 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_postfix_open_square_expression()
7576 cp_lexer_consume_token (parser->lexer); in cp_parser_postfix_open_square_expression()
7578 saved_greater_than_is_operator_p = parser->greater_than_is_operator_p; in cp_parser_postfix_open_square_expression()
7579 parser->greater_than_is_operator_p = true; in cp_parser_postfix_open_square_expression()
7590 index = cp_parser_constant_expression (parser); in cp_parser_postfix_open_square_expression()
7593 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_postfix_open_square_expression()
7596 cp_lexer_set_source_position (parser->lexer); in cp_parser_postfix_open_square_expression()
7598 index = cp_parser_braced_list (parser, &expr_nonconst_p); in cp_parser_postfix_open_square_expression()
7601 index = cp_parser_expression (parser, NULL, /*cast_p=*/false, in cp_parser_postfix_open_square_expression()
7606 parser->greater_than_is_operator_p = saved_greater_than_is_operator_p; in cp_parser_postfix_open_square_expression()
7609 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_postfix_open_square_expression()
7618 && (cp_parser_non_integral_constant_expression (parser, NIC_ARRAY_REF))) in cp_parser_postfix_open_square_expression()
7692 cp_parser_postfix_dot_deref_expression (cp_parser *parser, in cp_parser_postfix_dot_deref_expression() argument
7712 parser->scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
7713 parser->qualifying_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
7714 parser->object_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
7748 parser->context->object_type = scope; in cp_parser_postfix_dot_deref_expression()
7765 parser->context->object_type = unknown_type_node; in cp_parser_postfix_dot_deref_expression()
7779 cp_parser_parse_tentatively (parser); in cp_parser_postfix_dot_deref_expression()
7782 cp_parser_pseudo_destructor_name (parser, postfix_expression, in cp_parser_postfix_dot_deref_expression()
7785 && (cp_parser_error_occurred (parser) in cp_parser_postfix_dot_deref_expression()
7787 cp_parser_abort_tentative_parse (parser); in cp_parser_postfix_dot_deref_expression()
7788 else if (cp_parser_parse_definitely (parser)) in cp_parser_postfix_dot_deref_expression()
7803 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_postfix_dot_deref_expression()
7806 (parser, in cp_parser_postfix_dot_deref_expression()
7807 cp_parser_optional_template_keyword (parser), in cp_parser_postfix_dot_deref_expression()
7824 if (parser->scope) in cp_parser_postfix_dot_deref_expression()
7836 if (name != error_mark_node && !BASELINK_P (name) && parser->scope) in cp_parser_postfix_dot_deref_expression()
7838 if (TREE_CODE (parser->scope) == NAMESPACE_DECL) in cp_parser_postfix_dot_deref_expression()
7841 parser->scope, name); in cp_parser_postfix_dot_deref_expression()
7846 parser->scope, in cp_parser_postfix_dot_deref_expression()
7849 parser->scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
7850 parser->qualifying_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
7851 parser->object_scope = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
7853 if (parser->scope && name && BASELINK_P (name)) in cp_parser_postfix_dot_deref_expression()
7855 (name, parser->scope, scope); in cp_parser_postfix_dot_deref_expression()
7866 = make_location (input_location, start_loc, parser->lexer); in cp_parser_postfix_dot_deref_expression()
7873 parser->context->object_type = NULL_TREE; in cp_parser_postfix_dot_deref_expression()
7879 (parser, token_type == CPP_DEREF ? NIC_ARROW : NIC_POINT))) in cp_parser_postfix_dot_deref_expression()
7919 cp_parser_parenthesized_expression_list (cp_parser* parser, in cp_parser_parenthesized_expression_list() argument
7937 if (!parens.require_open (parser)) in cp_parser_parenthesized_expression_list()
7945 = parser->greater_than_is_operator_p; in cp_parser_parenthesized_expression_list()
7946 parser->greater_than_is_operator_p = true; in cp_parser_parenthesized_expression_list()
7951 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_parenthesized_expression_list()
7957 && cp_lexer_peek_token (parser->lexer)->type == CPP_NAME) in cp_parser_parenthesized_expression_list()
7962 token = cp_lexer_consume_token (parser->lexer); in cp_parser_parenthesized_expression_list()
7971 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_parenthesized_expression_list()
7974 cp_lexer_set_source_position (parser->lexer); in cp_parser_parenthesized_expression_list()
7976 expr = cp_parser_braced_list (parser, &expr_non_constant_p); in cp_parser_parenthesized_expression_list()
7983 (parser, /*allow_non_constant_p=*/true, in cp_parser_parenthesized_expression_list()
7989 expr = cp_parser_assignment_expression (parser, /*pidk=*/NULL, in cp_parser_parenthesized_expression_list()
7998 && cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_parenthesized_expression_list()
8001 cp_lexer_consume_token (parser->lexer); in cp_parser_parenthesized_expression_list()
8026 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_parenthesized_expression_list()
8030 cp_lexer_consume_token (parser->lexer); in cp_parser_parenthesized_expression_list()
8034 *close_paren_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_parenthesized_expression_list()
8036 if (!parens.require_close (parser)) in cp_parser_parenthesized_expression_list()
8043 ending = cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_parenthesized_expression_list()
8051 parser->greater_than_is_operator_p in cp_parser_parenthesized_expression_list()
8057 parser->greater_than_is_operator_p in cp_parser_parenthesized_expression_list()
8079 cp_parser_pseudo_destructor_name (cp_parser* parser, in cp_parser_pseudo_destructor_name() argument
8087 if (cp_lexer_next_token_is (parser->lexer, CPP_COMPL) in cp_parser_pseudo_destructor_name()
8088 && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_AUTO) in cp_parser_pseudo_destructor_name()
8095 cp_lexer_consume_token (parser->lexer); in cp_parser_pseudo_destructor_name()
8096 cp_lexer_consume_token (parser->lexer); in cp_parser_pseudo_destructor_name()
8106 cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/true); in cp_parser_pseudo_destructor_name()
8109 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_pseudo_destructor_name()
8118 && cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_pseudo_destructor_name()
8121 cp_lexer_consume_token (parser->lexer); in cp_parser_pseudo_destructor_name()
8123 cp_parser_template_id (parser, in cp_parser_pseudo_destructor_name()
8129 cp_parser_require (parser, CPP_SCOPE, RT_SCOPE); in cp_parser_pseudo_destructor_name()
8133 else if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMPL)) in cp_parser_pseudo_destructor_name()
8141 if (cp_lexer_peek_token (parser->lexer)->type != CPP_NAME in cp_parser_pseudo_destructor_name()
8142 || cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_SCOPE in cp_parser_pseudo_destructor_name()
8143 || cp_lexer_peek_nth_token (parser->lexer, 3)->type != CPP_COMPL) in cp_parser_pseudo_destructor_name()
8145 cp_parser_error (parser, "non-scalar type"); in cp_parser_pseudo_destructor_name()
8150 *scope = TREE_TYPE (cp_parser_nonclass_name (parser)); in cp_parser_pseudo_destructor_name()
8155 cp_parser_require (parser, CPP_SCOPE, RT_SCOPE); in cp_parser_pseudo_destructor_name()
8161 cp_parser_require (parser, CPP_COMPL, RT_COMPL); in cp_parser_pseudo_destructor_name()
8164 if (!processing_template_decl && !cp_parser_error_occurred (parser)) in cp_parser_pseudo_destructor_name()
8165 cp_parser_commit_to_topmost_tentative_parse (parser); in cp_parser_pseudo_destructor_name()
8169 *type = TREE_TYPE (cp_parser_nonclass_name (parser)); in cp_parser_pseudo_destructor_name()
8207 cp_parser_unary_expression (cp_parser *parser, cp_id_kind * pidk, in cp_parser_unary_expression() argument
8214 token = cp_lexer_peek_token (parser->lexer); in cp_parser_unary_expression()
8233 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
8235 operand = cp_parser_sizeof_operand (parser, keyword); in cp_parser_unary_expression()
8243 = make_location (start_loc, start_loc, parser->lexer); in cp_parser_unary_expression()
8288 return cp_parser_has_attribute_expression (parser); in cp_parser_unary_expression()
8291 return cp_parser_new_expression (parser); in cp_parser_unary_expression()
8294 return cp_parser_delete_expression (parser); in cp_parser_unary_expression()
8303 cp_parser_extension_opt (parser, &saved_pedantic); in cp_parser_unary_expression()
8305 expr = cp_parser_simple_cast_expression (parser); in cp_parser_unary_expression()
8318 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
8320 expression = cp_parser_simple_cast_expression (parser); in cp_parser_unary_expression()
8332 return cp_parser_transaction_expression (parser, keyword); in cp_parser_unary_expression()
8344 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
8346 parens.require_open (parser); in cp_parser_unary_expression()
8348 saved_message = parser->type_definition_forbidden_message; in cp_parser_unary_expression()
8349 parser->type_definition_forbidden_message in cp_parser_unary_expression()
8353 = parser->integral_constant_expression_p; in cp_parser_unary_expression()
8355 = parser->non_integral_constant_expression_p; in cp_parser_unary_expression()
8356 parser->integral_constant_expression_p = false; in cp_parser_unary_expression()
8359 = parser->greater_than_is_operator_p; in cp_parser_unary_expression()
8360 parser->greater_than_is_operator_p = true; in cp_parser_unary_expression()
8365 expr = cp_parser_expression (parser); in cp_parser_unary_expression()
8370 parser->greater_than_is_operator_p in cp_parser_unary_expression()
8373 parser->integral_constant_expression_p in cp_parser_unary_expression()
8375 parser->non_integral_constant_expression_p in cp_parser_unary_expression()
8378 parser->type_definition_forbidden_message = saved_message; in cp_parser_unary_expression()
8380 parens.require_close (parser); in cp_parser_unary_expression()
8387 = make_location (start_loc, start_loc, parser->lexer); in cp_parser_unary_expression()
8399 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
8401 expr = cp_parser_simple_cast_expression (parser); in cp_parser_unary_expression()
8418 if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_unary_expression()
8424 keyword = cp_lexer_peek_nth_token (parser->lexer, 2)->keyword; in cp_parser_unary_expression()
8427 return cp_parser_new_expression (parser); in cp_parser_unary_expression()
8430 return cp_parser_delete_expression (parser); in cp_parser_unary_expression()
8444 else if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_unary_expression()
8452 cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
8454 identifier = cp_parser_identifier (parser); in cp_parser_unary_expression()
8460 = make_location (start_loc, start_loc, parser->lexer); in cp_parser_unary_expression()
8463 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_unary_expression()
8478 token = cp_lexer_consume_token (parser->lexer); in cp_parser_unary_expression()
8479 enum cpp_ttype op_ttype = cp_lexer_peek_token (parser->lexer)->type; in cp_parser_unary_expression()
8483 = cp_parser_cast_expression (parser, in cp_parser_unary_expression()
8559 && cp_parser_non_integral_constant_expression (parser, in cp_parser_unary_expression()
8566 return cp_parser_postfix_expression (parser, address_p, cast_p, in cp_parser_unary_expression()
8607 cp_parser_has_attribute_expression (cp_parser *parser) in cp_parser_has_attribute_expression() argument
8609 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_has_attribute_expression()
8612 cp_lexer_consume_token (parser->lexer); in cp_parser_has_attribute_expression()
8615 if (!parens.require_open (parser)) in cp_parser_has_attribute_expression()
8620 const char *saved_message = parser->type_definition_forbidden_message; in cp_parser_has_attribute_expression()
8622 = parser->type_definition_forbidden_message_arg; in cp_parser_has_attribute_expression()
8623 parser->type_definition_forbidden_message in cp_parser_has_attribute_expression()
8625 parser->type_definition_forbidden_message_arg in cp_parser_has_attribute_expression()
8631 = parser->integral_constant_expression_p; in cp_parser_has_attribute_expression()
8633 = parser->non_integral_constant_expression_p; in cp_parser_has_attribute_expression()
8634 parser->integral_constant_expression_p = false; in cp_parser_has_attribute_expression()
8644 cp_parser_parse_tentatively (parser); in cp_parser_has_attribute_expression()
8646 bool saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_has_attribute_expression()
8647 parser->in_type_id_in_expr_p = true; in cp_parser_has_attribute_expression()
8649 oper = cp_parser_type_id (parser); in cp_parser_has_attribute_expression()
8650 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_has_attribute_expression()
8652 cp_parser_parse_definitely (parser); in cp_parser_has_attribute_expression()
8657 oper = cp_parser_assignment_expression (parser); in cp_parser_has_attribute_expression()
8666 parser->type_definition_forbidden_message = saved_message; in cp_parser_has_attribute_expression()
8667 parser->type_definition_forbidden_message_arg = saved_message_arg; in cp_parser_has_attribute_expression()
8668 parser->integral_constant_expression_p in cp_parser_has_attribute_expression()
8670 parser->non_integral_constant_expression_p in cp_parser_has_attribute_expression()
8674 if (!cp_parser_require (parser, CPP_COMMA, RT_COMMA)) in cp_parser_has_attribute_expression()
8676 cp_parser_skip_to_closing_parenthesis (parser, false, false, in cp_parser_has_attribute_expression()
8683 location_t atloc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_has_attribute_expression()
8684 if (tree attr = cp_parser_gnu_attribute_list (parser, /*exactly_one=*/true)) in cp_parser_has_attribute_expression()
8700 parens.require_close (parser); in cp_parser_has_attribute_expression()
8705 cp_parser_skip_to_closing_parenthesis (parser, true, false, true); in cp_parser_has_attribute_expression()
8714 = make_location (start_loc, start_loc, parser->lexer); in cp_parser_has_attribute_expression()
8731 cp_parser_new_expression (cp_parser* parser) in cp_parser_new_expression() argument
8740 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_new_expression()
8744 = (cp_parser_global_scope_opt (parser, in cp_parser_new_expression()
8748 cp_parser_require_keyword (parser, RID_NEW, RT_NEW); in cp_parser_new_expression()
8751 cp_parser_parse_tentatively (parser); in cp_parser_new_expression()
8753 placement = cp_parser_new_placement (parser); in cp_parser_new_expression()
8755 if (!cp_parser_parse_definitely (parser)) in cp_parser_new_expression()
8764 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_new_expression()
8767 const char *saved_message = parser->type_definition_forbidden_message; in cp_parser_new_expression()
8771 parens.consume_open (parser); in cp_parser_new_expression()
8774 parser->type_definition_forbidden_message in cp_parser_new_expression()
8777 type_id_in_expr_sentinel s (parser); in cp_parser_new_expression()
8778 type = cp_parser_type_id (parser); in cp_parser_new_expression()
8780 parser->type_definition_forbidden_message = saved_message; in cp_parser_new_expression()
8783 parens.require_close (parser); in cp_parser_new_expression()
8784 token = cp_lexer_peek_token (parser->lexer); in cp_parser_new_expression()
8788 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_new_expression()
8794 cp_parser_direct_new_declarator (parser); in cp_parser_new_expression()
8799 type = cp_parser_new_type_id (parser, &nelts); in cp_parser_new_expression()
8802 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_new_expression()
8805 initializer = cp_parser_new_initializer (parser); in cp_parser_new_expression()
8811 if (cp_parser_non_integral_constant_expression (parser, NIC_NEW)) in cp_parser_new_expression()
8837 parser->lexer); in cp_parser_new_expression()
8859 cp_parser_new_placement (cp_parser* parser) in cp_parser_new_placement() argument
8865 (parser, non_attr, /*cast_p=*/false, in cp_parser_new_placement()
8885 cp_parser_new_type_id (cp_parser* parser, tree *nelts) in cp_parser_new_type_id() argument
8897 saved_message = parser->type_definition_forbidden_message; in cp_parser_new_type_id()
8898 parser->type_definition_forbidden_message in cp_parser_new_type_id()
8901 cp_parser_type_specifier_seq (parser, CP_PARSER_FLAGS_TYPENAME_OPTIONAL, in cp_parser_new_type_id()
8906 parser->type_definition_forbidden_message = saved_message; in cp_parser_new_type_id()
8912 new_declarator = cp_parser_new_declarator_opt (parser); in cp_parser_new_type_id()
8959 cp_parser_new_declarator_opt (cp_parser* parser) in cp_parser_new_declarator_opt() argument
8966 cp_parser_parse_tentatively (parser); in cp_parser_new_declarator_opt()
8968 code = cp_parser_ptr_operator (parser, &type, &cv_quals, &std_attributes); in cp_parser_new_declarator_opt()
8970 if (cp_parser_parse_definitely (parser)) in cp_parser_new_declarator_opt()
8975 declarator = cp_parser_new_declarator_opt (parser); in cp_parser_new_declarator_opt()
8984 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_new_declarator_opt()
8985 return cp_parser_direct_new_declarator (parser); in cp_parser_new_declarator_opt()
8999 cp_parser_direct_new_declarator (cp_parser* parser) in cp_parser_direct_new_declarator() argument
9009 cp_parser_require (parser, CPP_OPEN_SQUARE, RT_OPEN_SQUARE); in cp_parser_direct_new_declarator()
9011 token = cp_lexer_peek_token (parser->lexer); in cp_parser_direct_new_declarator()
9012 expression = cp_parser_expression (parser); in cp_parser_direct_new_declarator()
9035 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_direct_new_declarator()
9042 if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_direct_new_declarator()
9058 cp_parser_new_initializer (cp_parser* parser) in cp_parser_new_initializer() argument
9062 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_new_initializer()
9066 cp_lexer_set_source_position (parser->lexer); in cp_parser_new_initializer()
9068 t = cp_parser_braced_list (parser, &expr_non_constant_p); in cp_parser_new_initializer()
9074 (parser, non_attr, /*cast_p=*/false, in cp_parser_new_initializer()
9090 cp_parser_delete_expression (cp_parser* parser) in cp_parser_delete_expression() argument
9095 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_delete_expression()
9099 = (cp_parser_global_scope_opt (parser, in cp_parser_delete_expression()
9103 cp_parser_require_keyword (parser, RID_DELETE, RT_DELETE); in cp_parser_delete_expression()
9105 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_delete_expression()
9108 cp_lexer_consume_token (parser->lexer); in cp_parser_delete_expression()
9110 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_delete_expression()
9118 expression = cp_parser_simple_cast_expression (parser); in cp_parser_delete_expression()
9122 if (cp_parser_non_integral_constant_expression (parser, NIC_DEL)) in cp_parser_delete_expression()
9131 parser->lexer); in cp_parser_delete_expression()
9143 cp_parser_tokens_start_cast_expression (cp_parser *parser) in cp_parser_tokens_start_cast_expression() argument
9145 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_tokens_start_cast_expression()
9191 return cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_tokens_start_cast_expression()
9312 cp_parser_cast_expression (cp_parser *parser, bool address_p, bool cast_p, in cp_parser_cast_expression() argument
9316 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_cast_expression()
9326 cp_parser_parse_tentatively (parser); in cp_parser_cast_expression()
9328 saved_message = parser->type_definition_forbidden_message; in cp_parser_cast_expression()
9329 parser->type_definition_forbidden_message in cp_parser_cast_expression()
9333 cp_token *open_paren = parens.consume_open (parser); in cp_parser_cast_expression()
9377 cp_lexer_save_tokens (parser->lexer); in cp_parser_cast_expression()
9380 if (cp_parser_skip_to_closing_parenthesis (parser, false, false, in cp_parser_cast_expression()
9383 = cp_parser_tokens_start_cast_expression (parser); in cp_parser_cast_expression()
9386 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_cast_expression()
9390 cp_parser_simulate_error (parser); in cp_parser_cast_expression()
9393 bool saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_cast_expression()
9394 parser->in_type_id_in_expr_p = true; in cp_parser_cast_expression()
9396 type = cp_parser_type_id (parser); in cp_parser_cast_expression()
9398 cp_token *close_paren = parens.require_close (parser); in cp_parser_cast_expression()
9401 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_cast_expression()
9405 parser->type_definition_forbidden_message = saved_message; in cp_parser_cast_expression()
9410 if (!cp_parser_error_occurred (parser)) in cp_parser_cast_expression()
9415 cp_parser_commit_to_topmost_tentative_parse (parser); in cp_parser_cast_expression()
9417 expr = cp_parser_cast_expression (parser, in cp_parser_cast_expression()
9423 if (cp_parser_parse_definitely (parser)) in cp_parser_cast_expression()
9441 && cp_parser_non_integral_constant_expression (parser, in cp_parser_cast_expression()
9459 cp_parser_abort_tentative_parse (parser); in cp_parser_cast_expression()
9464 return cp_parser_unary_expression (parser, pidk, address_p, in cp_parser_cast_expression()
9543 && !parser->greater_than_is_operator_p) \
9548 cp_parser_binary_expression (cp_parser* parser, bool cast_p, in cp_parser_binary_expression() argument
9565 current.lhs_type = (cp_lexer_next_token_is (parser->lexer, CPP_NOT) in cp_parser_binary_expression()
9567 current.lhs = cp_parser_cast_expression (parser, /*address_p=*/false, in cp_parser_binary_expression()
9571 if (cp_parser_error_occurred (parser)) in cp_parser_binary_expression()
9577 token = cp_lexer_peek_token (parser->lexer); in cp_parser_binary_expression()
9581 && !parser->greater_than_is_operator_p) in cp_parser_binary_expression()
9592 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_ELLIPSIS)) in cp_parser_binary_expression()
9616 cp_lexer_consume_token (parser->lexer); in cp_parser_binary_expression()
9631 rhs_type = (cp_lexer_next_token_is (parser->lexer, CPP_NOT) in cp_parser_binary_expression()
9633 rhs = cp_parser_simple_cast_expression (parser); in cp_parser_binary_expression()
9638 token = cp_lexer_peek_token (parser->lexer); in cp_parser_binary_expression()
9641 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_ELLIPSIS)) in cp_parser_binary_expression()
9752 && cp_parser_non_integral_constant_expression (parser, in cp_parser_binary_expression()
9761 cp_parser_binary_expression (cp_parser* parser, bool cast_p, in cp_parser_binary_expression() argument
9766 return cp_parser_binary_expression (parser, cast_p, no_toplevel_fold_p, in cp_parser_binary_expression()
9784 cp_parser_question_colon_clause (cp_parser* parser, cp_expr logical_or_expr) in cp_parser_question_colon_clause() argument
9789 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_question_colon_clause()
9792 cp_lexer_consume_token (parser->lexer); in cp_parser_question_colon_clause()
9793 token = cp_lexer_peek_token (parser->lexer); in cp_parser_question_colon_clause()
9794 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_question_colon_clause()
9807 bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_question_colon_clause()
9808 parser->colon_corrects_to_scope_p = false; in cp_parser_question_colon_clause()
9812 expr = cp_parser_expression (parser); in cp_parser_question_colon_clause()
9816 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_question_colon_clause()
9820 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_question_colon_clause()
9822 assignment_expr = cp_parser_assignment_expression (parser); in cp_parser_question_colon_clause()
9856 cp_parser_assignment_expression (cp_parser* parser, cp_id_kind * pidk, in cp_parser_assignment_expression() argument
9863 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_THROW)) in cp_parser_assignment_expression()
9864 expr = cp_parser_throw_expression (parser); in cp_parser_assignment_expression()
9867 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_CO_YIELD)) in cp_parser_assignment_expression()
9868 expr = cp_parser_yield_expression (parser); in cp_parser_assignment_expression()
9874 expr = cp_parser_binary_expression (parser, cast_p, false, in cp_parser_assignment_expression()
9879 if (cp_lexer_next_token_is (parser->lexer, CPP_QUERY)) in cp_parser_assignment_expression()
9880 return cp_parser_question_colon_clause (parser, expr); in cp_parser_assignment_expression()
9883 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_assignment_expression()
9888 = cp_parser_assignment_operator_opt (parser); in cp_parser_assignment_expression()
9894 cp_expr rhs = cp_parser_initializer_clause (parser, in cp_parser_assignment_expression()
9902 if (cp_parser_non_integral_constant_expression (parser, in cp_parser_assignment_expression()
9947 cp_parser_assignment_operator_opt (cp_parser* parser) in cp_parser_assignment_operator_opt() argument
9953 token = cp_lexer_peek_token (parser->lexer); in cp_parser_assignment_operator_opt()
10008 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_ELLIPSIS)) in cp_parser_assignment_operator_opt()
10013 cp_lexer_consume_token (parser->lexer); in cp_parser_assignment_operator_opt()
10032 cp_parser_expression (cp_parser* parser, cp_id_kind * pidk, in cp_parser_expression() argument
10044 = cp_parser_assignment_expression (parser, pidk, cast_p, decltype_p); in cp_parser_expression()
10052 && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_expression()
10075 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA) in cp_parser_expression()
10076 || cp_lexer_nth_token_is (parser->lexer, 2, CPP_ELLIPSIS)) in cp_parser_expression()
10079 loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_expression()
10091 cp_lexer_consume_token (parser->lexer); in cp_parser_expression()
10093 if (cp_parser_non_integral_constant_expression (parser, NIC_COMMA)) in cp_parser_expression()
10113 cp_parser_constant_expression (cp_parser* parser, in cp_parser_constant_expression() argument
10141 saved_integral_constant_expression_p = parser->integral_constant_expression_p; in cp_parser_constant_expression()
10143 = parser->allow_non_integral_constant_expression_p; in cp_parser_constant_expression()
10144 saved_non_integral_constant_expression_p = parser->non_integral_constant_expression_p; in cp_parser_constant_expression()
10146 parser->integral_constant_expression_p = true; in cp_parser_constant_expression()
10147 parser->allow_non_integral_constant_expression_p in cp_parser_constant_expression()
10149 parser->non_integral_constant_expression_p = false; in cp_parser_constant_expression()
10162 expression = cp_parser_binary_expression (parser, false, false, false, in cp_parser_constant_expression()
10166 if (cp_lexer_next_token_is (parser->lexer, CPP_QUERY)) in cp_parser_constant_expression()
10167 expression = cp_parser_question_colon_clause (parser, expression); in cp_parser_constant_expression()
10170 expression = cp_parser_assignment_expression (parser); in cp_parser_constant_expression()
10172 parser->integral_constant_expression_p in cp_parser_constant_expression()
10174 parser->allow_non_integral_constant_expression_p in cp_parser_constant_expression()
10186 parser->non_integral_constant_expression_p = !is_const; in cp_parser_constant_expression()
10191 *non_constant_p = parser->non_integral_constant_expression_p; in cp_parser_constant_expression()
10192 parser->non_integral_constant_expression_p in cp_parser_constant_expression()
10210 cp_parser_builtin_offsetof (cp_parser *parser) in cp_parser_builtin_offsetof() argument
10222 save_ice_p = parser->integral_constant_expression_p; in cp_parser_builtin_offsetof()
10223 save_non_ice_p = parser->non_integral_constant_expression_p; in cp_parser_builtin_offsetof()
10225 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_builtin_offsetof()
10228 cp_lexer_consume_token (parser->lexer); in cp_parser_builtin_offsetof()
10231 parens.require_open (parser); in cp_parser_builtin_offsetof()
10233 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_builtin_offsetof()
10235 const char *saved_message = parser->type_definition_forbidden_message; in cp_parser_builtin_offsetof()
10236 parser->type_definition_forbidden_message in cp_parser_builtin_offsetof()
10238 type = cp_parser_type_id (parser); in cp_parser_builtin_offsetof()
10239 parser->type_definition_forbidden_message = saved_message; in cp_parser_builtin_offsetof()
10242 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_builtin_offsetof()
10243 token = cp_lexer_peek_token (parser->lexer); in cp_parser_builtin_offsetof()
10251 expr = cp_parser_postfix_dot_deref_expression (parser, CPP_DEREF, object_ptr, in cp_parser_builtin_offsetof()
10255 token = cp_lexer_peek_token (parser->lexer); in cp_parser_builtin_offsetof()
10260 expr = cp_parser_postfix_open_square_expression (parser, expr, in cp_parser_builtin_offsetof()
10272 cp_lexer_consume_token (parser->lexer); in cp_parser_builtin_offsetof()
10273 expr = cp_parser_postfix_dot_deref_expression (parser, CPP_DOT, in cp_parser_builtin_offsetof()
10280 finish_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_builtin_offsetof()
10281 cp_lexer_consume_token (parser->lexer); in cp_parser_builtin_offsetof()
10287 parens.require_close (parser); in cp_parser_builtin_offsetof()
10288 cp_parser_skip_to_closing_parenthesis (parser, true, false, true); in cp_parser_builtin_offsetof()
10306 parser->integral_constant_expression_p = save_ice_p; in cp_parser_builtin_offsetof()
10307 parser->non_integral_constant_expression_p = save_non_ice_p; in cp_parser_builtin_offsetof()
10319 cp_parser_trait_expr (cp_parser* parser, enum rid keyword) in cp_parser_trait_expr() argument
10432 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_trait_expr()
10435 cp_lexer_consume_token (parser->lexer); in cp_parser_trait_expr()
10438 parens.require_open (parser); in cp_parser_trait_expr()
10441 type_id_in_expr_sentinel s (parser); in cp_parser_trait_expr()
10442 type1 = cp_parser_type_id (parser); in cp_parser_trait_expr()
10450 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_trait_expr()
10453 type_id_in_expr_sentinel s (parser); in cp_parser_trait_expr()
10454 type2 = cp_parser_type_id (parser); in cp_parser_trait_expr()
10462 while (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_trait_expr()
10464 cp_lexer_consume_token (parser->lexer); in cp_parser_trait_expr()
10465 tree elt = cp_parser_type_id (parser); in cp_parser_trait_expr()
10466 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_trait_expr()
10468 cp_lexer_consume_token (parser->lexer); in cp_parser_trait_expr()
10477 location_t finish_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_trait_expr()
10478 parens.require_close (parser); in cp_parser_trait_expr()
10509 cp_parser_lambda_expression (cp_parser* parser) in cp_parser_lambda_expression() argument
10514 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_lambda_expression()
10532 else if (parser->in_template_argument_list_p || processing_template_parmlist) in cp_parser_lambda_expression()
10547 cp_parser_lambda_introducer (parser, lambda_expr); in cp_parser_lambda_expression()
10548 if (cp_parser_error_occurred (parser)) in cp_parser_lambda_expression()
10567 = parser->num_template_parameter_lists; in cp_parser_lambda_expression()
10568 unsigned char in_statement = parser->in_statement; in cp_parser_lambda_expression()
10569 bool in_switch_statement_p = parser->in_switch_statement_p; in cp_parser_lambda_expression()
10571 = parser->fully_implicit_function_template_p; in cp_parser_lambda_expression()
10572 tree implicit_template_parms = parser->implicit_template_parms; in cp_parser_lambda_expression()
10573 cp_binding_level* implicit_template_scope = parser->implicit_template_scope; in cp_parser_lambda_expression()
10575 = parser->auto_is_implicit_function_template_parm_p; in cp_parser_lambda_expression()
10577 parser->num_template_parameter_lists = 0; in cp_parser_lambda_expression()
10578 parser->in_statement = 0; in cp_parser_lambda_expression()
10579 parser->in_switch_statement_p = false; in cp_parser_lambda_expression()
10580 parser->fully_implicit_function_template_p = false; in cp_parser_lambda_expression()
10581 parser->implicit_template_parms = 0; in cp_parser_lambda_expression()
10582 parser->implicit_template_scope = 0; in cp_parser_lambda_expression()
10583 parser->auto_is_implicit_function_template_parm_p = false; in cp_parser_lambda_expression()
10592 if (cp_parser_start_tentative_firewall (parser)) in cp_parser_lambda_expression()
10595 ok &= cp_parser_lambda_declarator_opt (parser, lambda_expr); in cp_parser_lambda_expression()
10597 if (ok && cp_parser_error_occurred (parser)) in cp_parser_lambda_expression()
10602 cp_parser_lambda_body (parser, lambda_expr); in cp_parser_lambda_expression()
10604 else if (cp_parser_require (parser, CPP_OPEN_BRACE, RT_OPEN_BRACE)) in cp_parser_lambda_expression()
10606 if (cp_parser_skip_to_closing_brace (parser)) in cp_parser_lambda_expression()
10607 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_expression()
10621 parser->num_template_parameter_lists = saved_num_template_parameter_lists; in cp_parser_lambda_expression()
10622 parser->in_statement = in_statement; in cp_parser_lambda_expression()
10623 parser->in_switch_statement_p = in_switch_statement_p; in cp_parser_lambda_expression()
10624 parser->fully_implicit_function_template_p in cp_parser_lambda_expression()
10626 parser->implicit_template_parms = implicit_template_parms; in cp_parser_lambda_expression()
10627 parser->implicit_template_scope = implicit_template_scope; in cp_parser_lambda_expression()
10628 parser->auto_is_implicit_function_template_parm_p in cp_parser_lambda_expression()
10643 parser->lexer); in cp_parser_lambda_expression()
10650 cp_parser_end_tentative_firewall (parser, start, lambda_expr); in cp_parser_lambda_expression()
10665 cp_parser_lambda_introducer (cp_parser* parser, tree lambda_expr) in cp_parser_lambda_introducer() argument
10671 cp_parser_require (parser, CPP_OPEN_SQUARE, RT_OPEN_SQUARE); in cp_parser_lambda_introducer()
10674 if (cp_lexer_next_token_is (parser->lexer, CPP_AND) in cp_parser_lambda_introducer()
10675 && !cp_lexer_nth_token_is (parser->lexer, 2, CPP_ELLIPSIS) in cp_parser_lambda_introducer()
10676 && !cp_lexer_nth_token_is (parser->lexer, 2, CPP_NAME) in cp_parser_lambda_introducer()
10677 && !cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_THIS)) in cp_parser_lambda_introducer()
10679 else if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_lambda_introducer()
10684 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10693 while (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_SQUARE)) in cp_parser_lambda_introducer()
10708 if (cp_lexer_next_token_is (parser->lexer, CPP_EOF)) in cp_parser_lambda_introducer()
10717 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_lambda_introducer()
10720 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_THIS)) in cp_parser_lambda_introducer()
10722 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_lambda_introducer()
10727 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10740 if (cp_lexer_next_token_is (parser->lexer, CPP_MULT) in cp_parser_lambda_introducer()
10741 && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_THIS)) in cp_parser_lambda_introducer()
10743 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_lambda_introducer()
10747 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10748 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10761 if (cp_lexer_next_token_is (parser->lexer, CPP_AND) in cp_parser_lambda_introducer()
10762 && cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_THIS)) in cp_parser_lambda_introducer()
10764 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_lambda_introducer()
10766 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10767 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10772 if (cp_lexer_next_token_is (parser->lexer, CPP_AND)) in cp_parser_lambda_introducer()
10775 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10780 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_lambda_introducer()
10782 ellipsis_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_lambda_introducer()
10786 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10792 && cp_lexer_next_token_is (parser->lexer, CPP_AND)) in cp_parser_lambda_introducer()
10794 pedwarn (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_lambda_introducer()
10797 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10801 capture_token = cp_lexer_peek_token (parser->lexer); in cp_parser_lambda_introducer()
10802 capture_id = cp_parser_identifier (parser); in cp_parser_lambda_introducer()
10810 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_lambda_introducer()
10818 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ) in cp_parser_lambda_introducer()
10819 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN) in cp_parser_lambda_introducer()
10820 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_lambda_introducer()
10828 capture_init_expr = cp_parser_initializer (parser, &direct, in cp_parser_lambda_introducer()
10845 = cp_parser_lookup_name_simple (parser, capture_id, in cp_parser_lambda_introducer()
10879 parser->scope, in cp_parser_lambda_introducer()
10891 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_lambda_introducer()
10893 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_lambda_introducer()
10894 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_introducer()
10901 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ) in cp_parser_lambda_introducer()
10902 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN) in cp_parser_lambda_introducer()
10903 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_lambda_introducer()
10951 parser->scope = NULL_TREE; in cp_parser_lambda_introducer()
10952 parser->qualifying_scope = NULL_TREE; in cp_parser_lambda_introducer()
10953 parser->object_scope = NULL_TREE; in cp_parser_lambda_introducer()
10956 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_lambda_introducer()
10974 cp_parser_lambda_declarator_opt (cp_parser* parser, tree lambda_expr) in cp_parser_lambda_declarator_opt() argument
10996 if (cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_lambda_declarator_opt()
10999 pedwarn (parser->lexer->next_token->location, 0, in cp_parser_lambda_declarator_opt()
11003 pedwarn (parser->lexer->next_token->location, OPT_Wpedantic, in cp_parser_lambda_declarator_opt()
11007 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_declarator_opt()
11009 template_param_list = cp_parser_template_parameter_list (parser); in cp_parser_lambda_declarator_opt()
11010 cp_parser_skip_to_end_of_template_parameter_list (parser); in cp_parser_lambda_declarator_opt()
11015 tree dreqs = cp_parser_requires_clause_opt (parser, true); in cp_parser_lambda_declarator_opt()
11025 ++parser->num_template_parameter_lists; in cp_parser_lambda_declarator_opt()
11029 lambda_specs.attributes = cp_parser_attributes_opt (parser); in cp_parser_lambda_declarator_opt()
11034 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_lambda_declarator_opt()
11041 for (size_t n = cp_parser_skip_balanced_tokens (parser, 1); in cp_parser_lambda_declarator_opt()
11042 cp_lexer_nth_token_is (parser->lexer, n, CPP_KEYWORD); n++) in cp_parser_lambda_declarator_opt()
11044 if (cp_lexer_peek_nth_token (parser->lexer, n)->keyword in cp_parser_lambda_declarator_opt()
11054 parens.consume_open (parser); in cp_parser_lambda_declarator_opt()
11064 (parser, CP_PARSER_FLAGS_TYPENAME_OPTIONAL); in cp_parser_lambda_declarator_opt()
11074 parens.require_close (parser); in cp_parser_lambda_declarator_opt()
11079 if (cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer) in cp_parser_lambda_declarator_opt()
11080 && !cp_next_tokens_can_be_gnu_attribute_p (parser)) in cp_parser_lambda_declarator_opt()
11081 cp_parser_decl_specifier_seq (parser, in cp_parser_lambda_declarator_opt()
11093 tx_qual = cp_parser_tx_qualifier_opt (parser); in cp_parser_lambda_declarator_opt()
11097 = cp_parser_exception_specification_opt (parser, CP_PARSER_FLAGS_NONE, in cp_parser_lambda_declarator_opt()
11102 if (cp_next_tokens_can_be_gnu_attribute_p (parser)) in cp_parser_lambda_declarator_opt()
11103 gnu_attrs = cp_parser_gnu_attributes_opt (parser); in cp_parser_lambda_declarator_opt()
11105 std_attrs = cp_parser_std_attribute_spec_seq (parser); in cp_parser_lambda_declarator_opt()
11108 if (cp_lexer_next_token_is (parser->lexer, CPP_DEREF)) in cp_parser_lambda_declarator_opt()
11110 cp_lexer_consume_token (parser->lexer); in cp_parser_lambda_declarator_opt()
11111 return_type = cp_parser_trailing_type_id (parser); in cp_parser_lambda_declarator_opt()
11116 if (cp_next_tokens_can_be_gnu_attribute_p (parser)) in cp_parser_lambda_declarator_opt()
11117 gnu_attrs = chainon (gnu_attrs, cp_parser_gnu_attributes_opt (parser)); in cp_parser_lambda_declarator_opt()
11120 trailing_requires_clause = cp_parser_requires_clause_opt (parser, false); in cp_parser_lambda_declarator_opt()
11127 cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN); in cp_parser_lambda_declarator_opt()
11186 --parser->num_template_parameter_lists; in cp_parser_lambda_declarator_opt()
11188 else if (parser->fully_implicit_function_template_p) in cp_parser_lambda_declarator_opt()
11189 fco = finish_fully_implicit_template (parser, fco); in cp_parser_lambda_declarator_opt()
11207 cp_parser_lambda_body (cp_parser* parser, tree lambda_expr) in cp_parser_lambda_body() argument
11211 = parser->local_variables_forbidden_p; in cp_parser_lambda_body()
11212 bool in_function_body = parser->in_function_body; in cp_parser_lambda_body()
11228 parser->local_variables_forbidden_p = 0; in cp_parser_lambda_body()
11229 parser->in_function_body = true; in cp_parser_lambda_body()
11239 cp_parser_function_body (parser, false); in cp_parser_lambda_body()
11245 parser->local_variables_forbidden_p = local_variables_forbidden_p; in cp_parser_lambda_body()
11246 parser->in_function_body = in_function_body; in cp_parser_lambda_body()
11314 cp_parser_statement (cp_parser* parser, tree in_statement_expr, in cp_parser_statement() argument
11328 saved_token_sentinel saved_tokens (parser->lexer); in cp_parser_statement()
11329 attrs_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_statement()
11334 cp_parser_parse_tentatively (parser); in cp_parser_statement()
11335 std_attrs = cp_parser_std_attribute_spec_seq (parser); in cp_parser_statement()
11337 attrs_loc = make_location (attrs_loc, attrs_loc, parser->lexer); in cp_parser_statement()
11340 if (!cp_parser_parse_definitely (parser)) in cp_parser_statement()
11345 token = cp_lexer_peek_token (parser->lexer); in cp_parser_statement()
11363 cp_parser_label_for_labeled_statement (parser, std_attrs); in cp_parser_statement()
11370 statement = cp_parser_selection_statement (parser, if_p, chain); in cp_parser_statement()
11377 statement = cp_parser_iteration_statement (parser, if_p, false, 0); in cp_parser_statement()
11386 statement = cp_parser_jump_statement (parser); in cp_parser_statement()
11396 statement = cp_parser_objc_statement (parser); in cp_parser_statement()
11401 statement = cp_parser_try_block (parser); in cp_parser_statement()
11413 cp_parser_declaration_statement (parser); in cp_parser_statement()
11422 statement = cp_parser_transaction (parser, token); in cp_parser_statement()
11426 statement = cp_parser_transaction_cancel (parser); in cp_parser_statement()
11439 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_statement()
11446 cp_parser_label_for_labeled_statement (parser, std_attrs); in cp_parser_statement()
11455 statement = cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); in cp_parser_statement()
11467 cp_parser_pragma (parser, pragma_compound, if_p); in cp_parser_statement()
11468 else if (!cp_parser_pragma (parser, pragma_stmt, if_p)) in cp_parser_statement()
11474 cp_parser_error (parser, "expected statement"); in cp_parser_statement()
11484 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_statement()
11491 cp_parser_parse_tentatively (parser); in cp_parser_statement()
11493 cp_parser_declaration_statement (parser); in cp_parser_statement()
11495 if (cp_parser_parse_definitely (parser)) in cp_parser_statement()
11499 cp_lexer_set_token_position (parser->lexer, statement_token); in cp_parser_statement()
11508 statement = cp_parser_expression_statement (parser, in_statement_expr); in cp_parser_statement()
11566 cp_parser_label_for_labeled_statement (cp_parser* parser, tree attributes) in cp_parser_label_for_labeled_statement() argument
11570 bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_label_for_labeled_statement()
11573 token = cp_lexer_peek_token (parser->lexer); in cp_parser_label_for_labeled_statement()
11577 cp_parser_error (parser, "expected labeled-statement"); in cp_parser_label_for_labeled_statement()
11585 parser->colon_corrects_to_scope_p = false; in cp_parser_label_for_labeled_statement()
11594 cp_lexer_consume_token (parser->lexer); in cp_parser_label_for_labeled_statement()
11596 expr = cp_parser_constant_expression (parser); in cp_parser_label_for_labeled_statement()
11600 ellipsis = cp_lexer_peek_token (parser->lexer); in cp_parser_label_for_labeled_statement()
11604 cp_lexer_consume_token (parser->lexer); in cp_parser_label_for_labeled_statement()
11605 expr_hi = cp_parser_constant_expression (parser); in cp_parser_label_for_labeled_statement()
11615 if (parser->in_switch_statement_p) in cp_parser_label_for_labeled_statement()
11633 cp_lexer_consume_token (parser->lexer); in cp_parser_label_for_labeled_statement()
11635 if (parser->in_switch_statement_p) in cp_parser_label_for_labeled_statement()
11650 label = finish_label_stmt (cp_parser_identifier (parser)); in cp_parser_label_for_labeled_statement()
11657 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_label_for_labeled_statement()
11666 && cp_next_tokens_can_be_gnu_attribute_p (parser)) in cp_parser_label_for_labeled_statement()
11669 cp_parser_parse_tentatively (parser); in cp_parser_label_for_labeled_statement()
11670 attrs = cp_parser_gnu_attributes_opt (parser); in cp_parser_label_for_labeled_statement()
11674 || cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_label_for_labeled_statement()
11675 cp_parser_abort_tentative_parse (parser); in cp_parser_label_for_labeled_statement()
11676 else if (!cp_parser_parse_definitely (parser)) in cp_parser_label_for_labeled_statement()
11685 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_label_for_labeled_statement()
11699 cp_parser_expression_statement (cp_parser* parser, tree in_statement_expr) in cp_parser_expression_statement() argument
11702 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_expression_statement()
11706 tree attr = cp_parser_gnu_attributes_opt (parser); in cp_parser_expression_statement()
11710 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_expression_statement()
11712 statement = cp_parser_expression (parser); in cp_parser_expression_statement()
11714 && !cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_expression_statement()
11716 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_expression_statement()
11741 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON) in cp_parser_expression_statement()
11742 && !cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_expression_statement()
11760 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_expression_statement()
11763 && cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_expression_statement()
11790 cp_parser_compound_statement (cp_parser *parser, tree in_statement_expr, in cp_parser_compound_statement() argument
11797 if (!braces.require_open (parser)) in cp_parser_compound_statement()
11806 while (cp_lexer_next_token_is_keyword (parser->lexer, RID_LABEL)) in cp_parser_compound_statement()
11807 cp_parser_label_declaration (parser); in cp_parser_compound_statement()
11809 cp_parser_statement_seq_opt (parser, in_statement_expr); in cp_parser_compound_statement()
11817 braces.require_close (parser); in cp_parser_compound_statement()
11829 cp_parser_statement_seq_opt (cp_parser* parser, tree in_statement_expr) in cp_parser_statement_seq_opt() argument
11834 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_statement_seq_opt()
11849 if (parser->in_statement & IN_IF_STMT) in cp_parser_statement_seq_opt()
11853 token = cp_lexer_consume_token (parser->lexer); in cp_parser_statement_seq_opt()
11859 cp_parser_statement (parser, in_statement_expr, true, NULL); in cp_parser_statement_seq_opt()
11867 cp_parser_range_based_for_with_init_p (cp_parser *parser) in cp_parser_range_based_for_with_init_p() argument
11872 cp_lexer_save_tokens (parser->lexer); in cp_parser_range_based_for_with_init_p()
11875 if (cp_parser_skip_to_closing_parenthesis_1 (parser, in cp_parser_range_based_for_with_init_p()
11882 cp_lexer_consume_token (parser->lexer); in cp_parser_range_based_for_with_init_p()
11885 r = (cp_parser_skip_to_closing_parenthesis_1 (parser, in cp_parser_range_based_for_with_init_p()
11892 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_range_based_for_with_init_p()
11900 cp_parser_init_statement_p (cp_parser *parser) in cp_parser_init_statement_p() argument
11903 cp_lexer_save_tokens (parser->lexer); in cp_parser_init_statement_p()
11906 int ret = cp_parser_skip_to_closing_parenthesis_1 (parser, in cp_parser_init_statement_p()
11912 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_init_statement_p()
11935 cp_parser_selection_statement (cp_parser* parser, bool *if_p, in cp_parser_selection_statement() argument
11946 token = cp_parser_require (parser, CPP_KEYWORD, RT_SELECT); in cp_parser_selection_statement()
11961 && cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_selection_statement()
11965 cp_token *tok = cp_lexer_consume_token (parser->lexer); in cp_parser_selection_statement()
11973 if (!parens.require_open (parser)) in cp_parser_selection_statement()
11975 cp_parser_skip_to_end_of_statement (parser); in cp_parser_selection_statement()
11989 if (cp_parser_init_statement_p (parser)) in cp_parser_selection_statement()
11993 pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0, in cp_parser_selection_statement()
11996 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_selection_statement()
12003 cp_parser_init_statement (parser, &decl); in cp_parser_selection_statement()
12007 condition = cp_parser_condition (parser); in cp_parser_selection_statement()
12009 if (!parens.require_close (parser)) in cp_parser_selection_statement()
12010 cp_parser_skip_to_closing_parenthesis (parser, true, false, in cp_parser_selection_statement()
12026 in_statement = parser->in_statement; in cp_parser_selection_statement()
12027 parser->in_statement |= IN_IF_STMT; in cp_parser_selection_statement()
12040 cp_parser_implicitly_scoped_statement (parser, &nested_if, in cp_parser_selection_statement()
12043 parser->in_statement = in_statement; in cp_parser_selection_statement()
12055 if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_selection_statement()
12067 = get_token_indent_info (cp_lexer_peek_token (parser->lexer)); in cp_parser_selection_statement()
12069 cp_lexer_consume_token (parser->lexer); in cp_parser_selection_statement()
12072 if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_selection_statement()
12091 else if (!cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_selection_statement()
12103 cp_parser_implicitly_scoped_statement (parser, NULL, in cp_parser_selection_statement()
12153 in_switch_statement_p = parser->in_switch_statement_p; in cp_parser_selection_statement()
12154 in_statement = parser->in_statement; in cp_parser_selection_statement()
12155 parser->in_switch_statement_p = true; in cp_parser_selection_statement()
12156 parser->in_statement |= IN_SWITCH_STMT; in cp_parser_selection_statement()
12157 cp_parser_implicitly_scoped_statement (parser, if_p, in cp_parser_selection_statement()
12159 parser->in_switch_statement_p = in_switch_statement_p; in cp_parser_selection_statement()
12160 parser->in_statement = in_statement; in cp_parser_selection_statement()
12171 cp_parser_error (parser, "expected selection-statement"); in cp_parser_selection_statement()
12183 cp_parser_maybe_commit_to_declaration (cp_parser* parser, in cp_parser_maybe_commit_to_declaration() argument
12187 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN) in cp_parser_maybe_commit_to_declaration()
12188 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE) in cp_parser_maybe_commit_to_declaration()
12189 && !cp_parser_error_occurred (parser) in cp_parser_maybe_commit_to_declaration()
12193 cp_parser_commit_to_tentative_parse (parser); in cp_parser_maybe_commit_to_declaration()
12201 cp_parser_check_condition_declarator (cp_parser* parser, in cp_parser_check_condition_declarator() argument
12215 if (parser->fully_implicit_function_template_p) in cp_parser_check_condition_declarator()
12216 abort_fully_implicit_template (parser); in cp_parser_check_condition_declarator()
12217 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_check_condition_declarator()
12242 cp_parser_condition (cp_parser* parser) in cp_parser_condition() argument
12249 cp_parser_parse_tentatively (parser); in cp_parser_condition()
12252 saved_message = parser->type_definition_forbidden_message; in cp_parser_condition()
12253 parser->type_definition_forbidden_message in cp_parser_condition()
12256 cp_parser_decl_specifier_seq (parser, in cp_parser_condition()
12261 parser->type_definition_forbidden_message = saved_message; in cp_parser_condition()
12267 cp_parser_maybe_commit_to_declaration (parser, &type_specifiers); in cp_parser_condition()
12270 if (!cp_parser_error_occurred (parser)) in cp_parser_condition()
12277 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_condition()
12280 declarator = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_condition()
12288 attributes = cp_parser_attributes_opt (parser); in cp_parser_condition()
12290 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_condition()
12298 if (cp_lexer_next_token_is_not (parser->lexer, CPP_EQ) in cp_parser_condition()
12299 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_condition()
12300 cp_parser_simulate_error (parser); in cp_parser_condition()
12304 if (cp_parser_parse_definitely (parser)) in cp_parser_condition()
12310 if (!cp_parser_check_condition_declarator (parser, declarator, loc)) in cp_parser_condition()
12320 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_condition()
12322 initializer = cp_parser_braced_list (parser, &non_constant_p); in cp_parser_condition()
12326 else if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_condition()
12329 cp_lexer_consume_token (parser->lexer); in cp_parser_condition()
12330 initializer = cp_parser_initializer_clause (parser, in cp_parser_condition()
12335 cp_parser_error (parser, "expected initializer"); in cp_parser_condition()
12356 cp_parser_abort_tentative_parse (parser); in cp_parser_condition()
12359 return cp_parser_expression (parser); in cp_parser_condition()
12366 cp_parser_for (cp_parser *parser, bool ivdep, unsigned short unroll) in cp_parser_for() argument
12375 is_range_for = cp_parser_init_statement (parser, &decl); in cp_parser_for()
12378 return cp_parser_range_for (parser, scope, init, decl, ivdep, unroll, in cp_parser_for()
12381 return cp_parser_c_for (parser, scope, init, ivdep, unroll); in cp_parser_for()
12385 cp_parser_c_for (cp_parser *parser, tree scope, tree init, bool ivdep, in cp_parser_c_for() argument
12399 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_c_for()
12400 condition = cp_parser_condition (parser); in cp_parser_c_for()
12403 cp_parser_error (parser, "missing loop condition in loop with " in cp_parser_c_for()
12409 cp_parser_error (parser, "missing loop condition in loop with " in cp_parser_c_for()
12415 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_c_for()
12418 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_c_for()
12419 expression = cp_parser_expression (parser); in cp_parser_c_for()
12436 cp_parser_range_for (cp_parser *parser, tree scope, tree init, tree range_decl, in cp_parser_range_for() argument
12481 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_range_for()
12484 range_expr = cp_parser_braced_list (parser, &expr_non_constant_p); in cp_parser_range_for()
12487 range_expr = cp_parser_expression (parser); in cp_parser_range_for()
12842 cp_parser_iteration_statement (cp_parser* parser, bool *if_p, bool ivdep, in cp_parser_iteration_statement() argument
12852 token = cp_parser_require (parser, CPP_KEYWORD, RT_ITERATION); in cp_parser_iteration_statement()
12860 in_statement = parser->in_statement; in cp_parser_iteration_statement()
12874 parens.require_open (parser); in cp_parser_iteration_statement()
12876 condition = cp_parser_condition (parser); in cp_parser_iteration_statement()
12879 parens.require_close (parser); in cp_parser_iteration_statement()
12881 parser->in_statement = IN_ITERATION_STMT; in cp_parser_iteration_statement()
12883 cp_parser_already_scoped_statement (parser, if_p, guard_tinfo); in cp_parser_iteration_statement()
12885 parser->in_statement = in_statement; in cp_parser_iteration_statement()
12898 parser->in_statement = IN_ITERATION_STMT; in cp_parser_iteration_statement()
12900 cp_parser_implicitly_scoped_statement (parser, NULL, guard_tinfo); in cp_parser_iteration_statement()
12902 parser->in_statement = in_statement; in cp_parser_iteration_statement()
12905 cp_parser_require_keyword (parser, RID_WHILE, RT_WHILE); in cp_parser_iteration_statement()
12908 parens.require_open (parser); in cp_parser_iteration_statement()
12910 expression = cp_parser_expression (parser); in cp_parser_iteration_statement()
12914 parens.require_close (parser); in cp_parser_iteration_statement()
12916 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_iteration_statement()
12924 parens.require_open (parser); in cp_parser_iteration_statement()
12926 statement = cp_parser_for (parser, ivdep, unroll); in cp_parser_iteration_statement()
12929 parens.require_close (parser); in cp_parser_iteration_statement()
12932 parser->in_statement = IN_ITERATION_STMT; in cp_parser_iteration_statement()
12934 cp_parser_already_scoped_statement (parser, if_p, guard_tinfo); in cp_parser_iteration_statement()
12936 parser->in_statement = in_statement; in cp_parser_iteration_statement()
12944 cp_parser_error (parser, "expected iteration-statement"); in cp_parser_iteration_statement()
12960 cp_parser_init_statement (cp_parser *parser, tree *decl) in cp_parser_init_statement() argument
12968 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_init_statement()
12971 bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_init_statement()
12974 if (cp_parser_range_based_for_with_init_p (parser)) in cp_parser_init_statement()
12977 cp_parser_parse_tentatively (parser); in cp_parser_init_statement()
12979 cp_parser_simple_declaration (parser, in cp_parser_init_statement()
12982 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_init_statement()
12983 if (!cp_parser_parse_definitely (parser)) in cp_parser_init_statement()
12985 cp_parser_expression_statement (parser, NULL_TREE); in cp_parser_init_statement()
12989 pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0, in cp_parser_init_statement()
12997 parser->colon_corrects_to_scope_p = false; in cp_parser_init_statement()
13001 cp_parser_parse_tentatively (parser); in cp_parser_init_statement()
13003 cp_parser_simple_declaration (parser, in cp_parser_init_statement()
13006 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_init_statement()
13007 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_init_statement()
13010 cp_lexer_consume_token (parser->lexer); in cp_parser_init_statement()
13013 pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0, in cp_parser_init_statement()
13020 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_init_statement()
13022 if (cp_parser_parse_definitely (parser)) in cp_parser_init_statement()
13028 cp_parser_expression_statement (parser, NULL_TREE); in cp_parser_init_statement()
13050 cp_parser_jump_statement (cp_parser* parser) in cp_parser_jump_statement() argument
13058 token = cp_parser_require (parser, CPP_KEYWORD, RT_JUMP); in cp_parser_jump_statement()
13067 in_statement = parser->in_statement & ~IN_IF_STMT; in cp_parser_jump_statement()
13087 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_jump_statement()
13091 switch (parser->in_statement & ~(IN_SWITCH_STMT | IN_IF_STMT)) in cp_parser_jump_statement()
13107 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_jump_statement()
13116 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_jump_statement()
13118 cp_lexer_set_source_position (parser->lexer); in cp_parser_jump_statement()
13120 expr = cp_parser_braced_list (parser, &expr_non_constant_p); in cp_parser_jump_statement()
13122 else if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_jump_statement()
13123 expr = cp_parser_expression (parser); in cp_parser_jump_statement()
13137 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_jump_statement()
13142 if (parser->in_function_body in cp_parser_jump_statement()
13150 if (cp_lexer_next_token_is (parser->lexer, CPP_MULT)) in cp_parser_jump_statement()
13155 cp_lexer_consume_token (parser->lexer); in cp_parser_jump_statement()
13157 finish_goto_stmt (cp_parser_expression (parser)); in cp_parser_jump_statement()
13160 finish_goto_stmt (cp_parser_identifier (parser)); in cp_parser_jump_statement()
13162 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_jump_statement()
13166 cp_parser_error (parser, "expected jump-statement"); in cp_parser_jump_statement()
13179 cp_parser_declaration_statement (cp_parser* parser) in cp_parser_declaration_statement() argument
13187 cp_parser_block_declaration (parser, /*statement_p=*/true); in cp_parser_declaration_statement()
13213 cp_parser_implicitly_scoped_statement (cp_parser* parser, bool *if_p, in cp_parser_implicitly_scoped_statement() argument
13218 location_t body_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_implicitly_scoped_statement()
13221 = get_token_indent_info (cp_lexer_peek_token (parser->lexer)); in cp_parser_implicitly_scoped_statement()
13227 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_implicitly_scoped_statement()
13229 cp_lexer_consume_token (parser->lexer); in cp_parser_implicitly_scoped_statement()
13233 && !cp_lexer_next_token_is_keyword (parser->lexer, RID_ELSE)) in cp_parser_implicitly_scoped_statement()
13241 else if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_implicitly_scoped_statement()
13242 statement = cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); in cp_parser_implicitly_scoped_statement()
13249 cp_parser_statement (parser, NULL_TREE, false, if_p, chain, in cp_parser_implicitly_scoped_statement()
13256 = get_token_indent_info (cp_lexer_peek_token (parser->lexer)); in cp_parser_implicitly_scoped_statement()
13274 cp_parser_already_scoped_statement (cp_parser* parser, bool *if_p, in cp_parser_already_scoped_statement() argument
13278 if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_already_scoped_statement()
13281 = get_token_indent_info (cp_lexer_peek_token (parser->lexer)); in cp_parser_already_scoped_statement()
13284 cp_parser_statement (parser, NULL_TREE, false, if_p, NULL, in cp_parser_already_scoped_statement()
13287 = get_token_indent_info (cp_lexer_peek_token (parser->lexer)); in cp_parser_already_scoped_statement()
13301 braces.require_open (parser); in cp_parser_already_scoped_statement()
13303 while (cp_lexer_next_token_is_keyword (parser->lexer, RID_LABEL)) in cp_parser_already_scoped_statement()
13304 cp_parser_label_declaration (parser); in cp_parser_already_scoped_statement()
13306 cp_parser_statement_seq_opt (parser, NULL_TREE); in cp_parser_already_scoped_statement()
13307 braces.require_close (parser); in cp_parser_already_scoped_statement()
13320 cp_parser_declaration_seq_opt (cp_parser* parser) in cp_parser_declaration_seq_opt() argument
13324 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_declaration_seq_opt()
13330 cp_parser_toplevel_declaration (parser); in cp_parser_declaration_seq_opt()
13354 cp_parser_declaration (cp_parser* parser) in cp_parser_declaration() argument
13363 if (cp_parser_extension_opt (parser, &saved_pedantic)) in cp_parser_declaration()
13366 cp_parser_declaration (parser); in cp_parser_declaration()
13374 token1 = *cp_lexer_peek_token (parser->lexer); in cp_parser_declaration()
13377 token2 = *cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_declaration()
13391 cp_parser_linkage_specification (parser); in cp_parser_declaration()
13399 && cp_lexer_peek_nth_token (parser->lexer, 3)->type == CPP_GREATER) in cp_parser_declaration()
13400 cp_parser_explicit_specialization (parser); in cp_parser_declaration()
13403 cp_parser_template_declaration (parser, /*member_p=*/false); in cp_parser_declaration()
13406 cp_parser_explicit_instantiation (parser); in cp_parser_declaration()
13411 cp_parser_template_declaration (parser, /*member_p=*/false); in cp_parser_declaration()
13415 else if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_declaration()
13420 cp_parser_explicit_instantiation (parser); in cp_parser_declaration()
13426 && (cp_lexer_peek_nth_token (parser->lexer, 3)->type in cp_parser_declaration()
13429 && cp_lexer_peek_nth_token (parser->lexer, 3)->type in cp_parser_declaration()
13434 cp_parser_namespace_definition (parser); in cp_parser_declaration()
13438 cp_parser_namespace_definition (parser); in cp_parser_declaration()
13441 cp_parser_objc_declaration (parser, NULL_TREE); in cp_parser_declaration()
13444 && cp_parser_objc_valid_prefix_attributes (parser, &attributes)) in cp_parser_declaration()
13445 cp_parser_objc_declaration (parser, attributes); in cp_parser_declaration()
13449 && cp_parser_template_declaration_after_export (parser, in cp_parser_declaration()
13454 cp_parser_block_declaration (parser, /*statement_p=*/false); in cp_parser_declaration()
13463 cp_parser_toplevel_declaration (cp_parser* parser) in cp_parser_toplevel_declaration() argument
13465 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_toplevel_declaration()
13472 cp_parser_pragma (parser, pragma_external, NULL); in cp_parser_toplevel_declaration()
13477 cp_lexer_consume_token (parser->lexer); in cp_parser_toplevel_declaration()
13482 cp_parser_declaration (parser); in cp_parser_toplevel_declaration()
13508 cp_parser_block_declaration (cp_parser *parser, in cp_parser_block_declaration() argument
13515 if (cp_parser_extension_opt (parser, &saved_pedantic)) in cp_parser_block_declaration()
13518 cp_parser_block_declaration (parser, statement_p); in cp_parser_block_declaration()
13527 token1 = cp_lexer_peek_token (parser->lexer); in cp_parser_block_declaration()
13533 cp_parser_commit_to_tentative_parse (parser); in cp_parser_block_declaration()
13534 cp_parser_asm_definition (parser); in cp_parser_block_declaration()
13539 cp_parser_namespace_alias_definition (parser); in cp_parser_block_declaration()
13547 cp_parser_commit_to_tentative_parse (parser); in cp_parser_block_declaration()
13550 token2 = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_block_declaration()
13552 cp_parser_using_directive (parser); in cp_parser_block_declaration()
13557 && ((cp_lexer_peek_nth_token (parser->lexer, 3)->type == CPP_EQ) in cp_parser_block_declaration()
13558 || (cp_nth_tokens_can_be_attribute_p (parser, 3)))) in cp_parser_block_declaration()
13559 cp_parser_alias_declaration (parser); in cp_parser_block_declaration()
13562 cp_parser_using_declaration (parser, in cp_parser_block_declaration()
13569 cp_lexer_consume_token (parser->lexer); in cp_parser_block_declaration()
13571 cp_parser_skip_to_end_of_statement (parser); in cp_parser_block_declaration()
13573 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_block_declaration()
13574 cp_lexer_consume_token (parser->lexer); in cp_parser_block_declaration()
13578 cp_parser_static_assert (parser, /*member_p=*/false); in cp_parser_block_declaration()
13581 cp_parser_simple_declaration (parser, !statement_p, in cp_parser_block_declaration()
13605 cp_parser_simple_declaration (cp_parser* parser, in cp_parser_simple_declaration() argument
13634 cp_parser_decl_specifier_seq (parser, in cp_parser_simple_declaration()
13647 cp_parser_error (parser, "expected declaration"); in cp_parser_simple_declaration()
13658 && cp_parser_parse_and_diagnose_invalid_type_name (parser)) in cp_parser_simple_declaration()
13662 cp_parser_commit_to_tentative_parse (parser); in cp_parser_simple_declaration()
13667 cp_parser_maybe_commit_to_declaration (parser, &decl_specifiers); in cp_parser_simple_declaration()
13671 if (cp_lexer_nth_token_is (parser->lexer, n, CPP_AND) in cp_parser_simple_declaration()
13672 || cp_lexer_nth_token_is (parser->lexer, n, CPP_AND_AND)) in cp_parser_simple_declaration()
13674 else if (cp_lexer_nth_token_is (parser->lexer, n, CPP_OPEN_SQUARE) in cp_parser_simple_declaration()
13675 && !cp_lexer_nth_token_is (parser->lexer, n + 1, CPP_OPEN_SQUARE) in cp_parser_simple_declaration()
13679 = cp_parser_decomposition_declaration (parser, &decl_specifiers, in cp_parser_simple_declaration()
13684 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_declaration()
13701 || cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_simple_declaration()
13702 cp_parser_error (parser, "expected %<;%>"); in cp_parser_simple_declaration()
13704 cp_parser_skip_to_end_of_statement (parser); in cp_parser_simple_declaration()
13706 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_simple_declaration()
13707 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_declaration()
13730 while (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_simple_declaration()
13741 token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_declaration()
13743 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_declaration()
13755 decl = cp_parser_init_declarator (parser, in cp_parser_simple_declaration()
13770 if (cp_parser_error_occurred (parser)) in cp_parser_simple_declaration()
13822 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_simple_declaration()
13824 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_declaration()
13839 token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_declaration()
13860 || cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_simple_declaration()
13861 cp_parser_error (parser, "expected %<,%> or %<;%>"); in cp_parser_simple_declaration()
13863 cp_parser_skip_to_end_of_statement (parser); in cp_parser_simple_declaration()
13865 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_simple_declaration()
13866 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_declaration()
13883 if (cp_parser_declares_only_class_p (parser)) in cp_parser_simple_declaration()
13901 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_simple_declaration()
13902 else if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_simple_declaration()
13920 cp_parser_decomposition_declaration (cp_parser *parser, in cp_parser_decomposition_declaration() argument
13925 cp_ref_qualifier ref_qual = cp_parser_ref_qualifier_opt (parser); in cp_parser_decomposition_declaration()
13926 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_decomposition_declaration()
13927 cp_parser_require (parser, CPP_OPEN_SQUARE, RT_OPEN_SQUARE); in cp_parser_decomposition_declaration()
13931 if (!cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_SQUARE)) in cp_parser_decomposition_declaration()
13934 cp_expr e = cp_parser_identifier (parser); in cp_parser_decomposition_declaration()
13938 if (!cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_decomposition_declaration()
13940 cp_lexer_consume_token (parser->lexer); in cp_parser_decomposition_declaration()
13943 location_t end_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_decomposition_declaration()
13944 if (!cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE)) in cp_parser_decomposition_declaration()
13947 cp_parser_skip_to_closing_parenthesis_1 (parser, true, CPP_CLOSE_SQUARE, in cp_parser_decomposition_declaration()
13949 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_SQUARE)) in cp_parser_decomposition_declaration()
13950 cp_lexer_consume_token (parser->lexer); in cp_parser_decomposition_declaration()
13953 cp_parser_skip_to_end_of_statement (parser); in cp_parser_decomposition_declaration()
14016 || cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_decomposition_declaration()
14019 *init_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_decomposition_declaration()
14020 tree initializer = cp_parser_initializer (parser, &is_direct_init, in cp_parser_decomposition_declaration()
14103 cp_parser_decl_specifier_seq (cp_parser* parser, in cp_parser_decl_specifier_seq() argument
14108 bool constructor_possible_p = !parser->in_declarator_p; in cp_parser_decl_specifier_seq()
14127 token = cp_lexer_peek_token (parser->lexer); in cp_parser_decl_specifier_seq()
14135 && cp_next_tokens_can_be_attribute_p (parser)) in cp_parser_decl_specifier_seq()
14138 tree attrs = cp_parser_attributes_opt (parser); in cp_parser_decl_specifier_seq()
14202 cp_lexer_purge_token (parser->lexer); in cp_parser_decl_specifier_seq()
14208 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14214 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14219 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14224 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14229 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14238 cp_token *next = cp_lexer_peek_token (parser->lexer); in cp_parser_decl_specifier_seq()
14250 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_decl_specifier_seq()
14251 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_EQ) in cp_parser_decl_specifier_seq()
14267 cp_parser_function_specifier_opt (parser, decl_specs); in cp_parser_decl_specifier_seq()
14275 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14284 cp_parser_commit_to_tentative_parse (parser); in cp_parser_decl_specifier_seq()
14303 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14314 cp_parser_set_storage_class (parser, decl_specs, RID_AUTO, in cp_parser_decl_specifier_seq()
14327 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14328 cp_parser_set_storage_class (parser, decl_specs, token->keyword, in cp_parser_decl_specifier_seq()
14334 cp_lexer_consume_token (parser->lexer); in cp_parser_decl_specifier_seq()
14365 (parser, flags, decl_spec_seq_has_spec_p (decl_specs, in cp_parser_decl_specifier_seq()
14380 = cp_parser_type_specifier (parser, flags, in cp_parser_decl_specifier_seq()
14473 cp_parser_storage_class_specifier_opt (cp_parser* parser) in cp_parser_storage_class_specifier_opt() argument
14475 switch (cp_lexer_peek_token (parser->lexer)->keyword) in cp_parser_storage_class_specifier_opt()
14489 return cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_storage_class_specifier_opt()
14510 cp_parser_function_specifier_opt (cp_parser* parser, in cp_parser_function_specifier_opt() argument
14513 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_function_specifier_opt()
14533 tree id = cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_function_specifier_opt()
14536 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_function_specifier_opt()
14539 parens.consume_open (parser); in cp_parser_function_specifier_opt()
14543 = parser->type_definition_forbidden_message; in cp_parser_function_specifier_opt()
14544 parser->type_definition_forbidden_message in cp_parser_function_specifier_opt()
14553 expr = cp_parser_constant_expression (parser); in cp_parser_function_specifier_opt()
14556 parser->type_definition_forbidden_message = saved_message; in cp_parser_function_specifier_opt()
14557 parens.require_close (parser); in cp_parser_function_specifier_opt()
14585 return cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_function_specifier_opt()
14595 cp_parser_linkage_specification (cp_parser* parser) in cp_parser_linkage_specification() argument
14601 = cp_parser_require_keyword (parser, RID_EXTERN, RT_EXTERN); in cp_parser_linkage_specification()
14604 cp_token *string_token = cp_lexer_peek_token (parser->lexer); in cp_parser_linkage_specification()
14605 linkage = cp_parser_string_literal (parser, false, false); in cp_parser_linkage_specification()
14613 cp_parser_error (parser, "invalid linkage-specification"); in cp_parser_linkage_specification()
14626 = parser->innermost_linkage_specification_location; in cp_parser_linkage_specification()
14632 parser->innermost_linkage_specification_location in cp_parser_linkage_specification()
14639 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_linkage_specification()
14641 cp_ensure_no_omp_declare_simd (parser); in cp_parser_linkage_specification()
14642 cp_ensure_no_oacc_routine (parser); in cp_parser_linkage_specification()
14646 braces.consume_open (parser); in cp_parser_linkage_specification()
14648 cp_parser_declaration_seq_opt (parser); in cp_parser_linkage_specification()
14650 braces.require_close (parser); in cp_parser_linkage_specification()
14658 = parser->in_unbraced_linkage_specification_p; in cp_parser_linkage_specification()
14659 parser->in_unbraced_linkage_specification_p = true; in cp_parser_linkage_specification()
14660 cp_parser_declaration (parser); in cp_parser_linkage_specification()
14661 parser->in_unbraced_linkage_specification_p in cp_parser_linkage_specification()
14669 parser->innermost_linkage_specification_location = saved_location; in cp_parser_linkage_specification()
14681 cp_parser_static_assert(cp_parser *parser, bool member_p) in cp_parser_static_assert() argument
14690 token_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_static_assert()
14693 if (!cp_parser_require_keyword (parser, RID_STATIC_ASSERT, in cp_parser_static_assert()
14699 if (cp_parser_parsing_tentatively (parser)) in cp_parser_static_assert()
14700 cp_parser_commit_to_tentative_parse (parser); in cp_parser_static_assert()
14704 parens.require_open (parser); in cp_parser_static_assert()
14709 cp_parser_constant_expression (parser, in cp_parser_static_assert()
14713 if (cp_lexer_peek_token (parser->lexer)->type == CPP_CLOSE_PAREN) in cp_parser_static_assert()
14720 cp_lexer_consume_token (parser->lexer); in cp_parser_static_assert()
14728 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_static_assert()
14731 message = cp_parser_string_literal (parser, in cp_parser_static_assert()
14736 if (!parens.require_close (parser)) in cp_parser_static_assert()
14737 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_static_assert()
14744 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_static_assert()
14761 cp_parser_decltype_expr (cp_parser *parser, in cp_parser_decltype_expr() argument
14768 id_expr_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_decltype_expr()
14769 cp_parser_parse_tentatively (parser); in cp_parser_decltype_expr()
14770 expr = cp_parser_id_expression (parser, in cp_parser_decltype_expr()
14777 if (!cp_parser_error_occurred (parser) && expr != error_mark_node) in cp_parser_decltype_expr()
14786 expr = cp_parser_lookup_name_simple (parser, expr, in cp_parser_decltype_expr()
14798 && cp_lexer_peek_token (parser->lexer)->type == CPP_CLOSE_PAREN) in cp_parser_decltype_expr()
14802 (id_expression, expr, parser->scope, &idk, in cp_parser_decltype_expr()
14824 && cp_lexer_peek_token (parser->lexer)->type == CPP_CLOSE_PAREN) in cp_parser_decltype_expr()
14832 cp_parser_abort_tentative_parse (parser); in cp_parser_decltype_expr()
14835 cp_parser_parse_tentatively (parser); in cp_parser_decltype_expr()
14838 expr = cp_parser_postfix_expression (parser, /*address_p=*/false, in cp_parser_decltype_expr()
14844 && cp_lexer_peek_token (parser->lexer)->type == CPP_CLOSE_PAREN) in cp_parser_decltype_expr()
14851 cp_parser_parse_definitely (parser); in cp_parser_decltype_expr()
14856 cp_parser_abort_tentative_parse (parser); in cp_parser_decltype_expr()
14859 expr = cp_parser_expression (parser, /*pidk=*/NULL, /*cast_p=*/false, in cp_parser_decltype_expr()
14874 cp_parser_decltype (cp_parser *parser) in cp_parser_decltype() argument
14877 cp_token *start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_decltype()
14882 cp_lexer_consume_token (parser->lexer); in cp_parser_decltype()
14887 if (!cp_parser_require_keyword (parser, RID_DECLTYPE, RT_DECLTYPE)) in cp_parser_decltype()
14892 if (!parens.require_open (parser)) in cp_parser_decltype()
14898 tentative_firewall firewall (parser); in cp_parser_decltype()
14902 if (cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_decltype()
14903 && !parser->in_declarator_p) in cp_parser_decltype()
14904 cp_parser_commit_to_topmost_tentative_parse (parser); in cp_parser_decltype()
14911 && cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO)) in cp_parser_decltype()
14913 cp_lexer_consume_token (parser->lexer); in cp_parser_decltype()
14920 const char *saved_message = parser->type_definition_forbidden_message; in cp_parser_decltype()
14921 parser->type_definition_forbidden_message in cp_parser_decltype()
14927 = parser->integral_constant_expression_p; in cp_parser_decltype()
14929 = parser->non_integral_constant_expression_p; in cp_parser_decltype()
14930 parser->integral_constant_expression_p = false; in cp_parser_decltype()
14935 = parser->greater_than_is_operator_p; in cp_parser_decltype()
14936 parser->greater_than_is_operator_p = true; in cp_parser_decltype()
14944 expr = cp_parser_decltype_expr (parser, id_expression_or_member_access_p); in cp_parser_decltype()
14953 parser->greater_than_is_operator_p in cp_parser_decltype()
14958 parser->type_definition_forbidden_message = saved_message; in cp_parser_decltype()
14959 parser->integral_constant_expression_p in cp_parser_decltype()
14961 parser->non_integral_constant_expression_p in cp_parser_decltype()
14966 if (expr == error_mark_node || !parens.require_close (parser)) in cp_parser_decltype()
14968 cp_parser_skip_to_closing_parenthesis (parser, true, false, in cp_parser_decltype()
14974 if (cp_parser_error_occurred (parser)) in cp_parser_decltype()
14997 loc = make_location (loc, loc, parser->lexer); in cp_parser_decltype()
15000 cp_lexer_purge_tokens_after (parser->lexer, start_token); in cp_parser_decltype()
15017 cp_parser_conversion_function_id (cp_parser* parser) in cp_parser_conversion_function_id() argument
15026 if (!cp_parser_require_keyword (parser, RID_OPERATOR, RT_OPERATOR)) in cp_parser_conversion_function_id()
15031 saved_scope = parser->scope; in cp_parser_conversion_function_id()
15032 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_conversion_function_id()
15033 saved_object_scope = parser->object_scope; in cp_parser_conversion_function_id()
15050 type = cp_parser_conversion_type_id (parser); in cp_parser_conversion_function_id()
15055 parser->scope = saved_scope; in cp_parser_conversion_function_id()
15056 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_conversion_function_id()
15057 parser->object_scope = saved_object_scope; in cp_parser_conversion_function_id()
15072 cp_parser_conversion_type_id (cp_parser* parser) in cp_parser_conversion_type_id() argument
15081 attributes = cp_parser_attributes_opt (parser); in cp_parser_conversion_type_id()
15083 saved_message = parser->type_definition_forbidden_message; in cp_parser_conversion_type_id()
15084 parser->type_definition_forbidden_message in cp_parser_conversion_type_id()
15089 cp_parser_type_specifier_seq (parser, CP_PARSER_FLAGS_TYPENAME_OPTIONAL, in cp_parser_conversion_type_id()
15094 parser->type_definition_forbidden_message = saved_message; in cp_parser_conversion_type_id()
15100 declarator = cp_parser_conversion_declarator_opt (parser); in cp_parser_conversion_type_id()
15109 if (! cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_conversion_type_id()
15133 cp_parser_conversion_declarator_opt (cp_parser* parser) in cp_parser_conversion_declarator_opt() argument
15140 cp_parser_parse_tentatively (parser); in cp_parser_conversion_declarator_opt()
15142 code = cp_parser_ptr_operator (parser, &class_type, &cv_quals, in cp_parser_conversion_declarator_opt()
15145 if (cp_parser_parse_definitely (parser)) in cp_parser_conversion_declarator_opt()
15150 declarator = cp_parser_conversion_declarator_opt (parser); in cp_parser_conversion_declarator_opt()
15167 cp_parser_ctor_initializer_opt (cp_parser* parser) in cp_parser_ctor_initializer_opt() argument
15171 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_ctor_initializer_opt()
15180 cp_lexer_consume_token (parser->lexer); in cp_parser_ctor_initializer_opt()
15182 cp_parser_mem_initializer_list (parser); in cp_parser_ctor_initializer_opt()
15192 cp_parser_mem_initializer_list (cp_parser* parser) in cp_parser_mem_initializer_list() argument
15196 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_mem_initializer_list()
15209 token = cp_lexer_peek_token (parser->lexer); in cp_parser_mem_initializer_list()
15211 mem_initializer = cp_parser_mem_initializer (parser); in cp_parser_mem_initializer_list()
15213 bool ellipsis = cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS); in cp_parser_mem_initializer_list()
15221 cp_lexer_consume_token (parser->lexer); in cp_parser_mem_initializer_list()
15266 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_mem_initializer_list()
15269 cp_lexer_consume_token (parser->lexer); in cp_parser_mem_initializer_list()
15294 cp_parser_mem_initializer (cp_parser* parser) in cp_parser_mem_initializer() argument
15299 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_mem_initializer()
15302 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_mem_initializer()
15310 mem_initializer_id = cp_parser_mem_initializer_id (parser); in cp_parser_mem_initializer()
15318 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_mem_initializer()
15321 cp_lexer_set_source_position (parser->lexer); in cp_parser_mem_initializer()
15323 expression_list = cp_parser_braced_list (parser, &expr_non_constant_p); in cp_parser_mem_initializer()
15330 vec = cp_parser_parenthesized_expression_list (parser, non_attr, in cp_parser_mem_initializer()
15364 cp_parser_mem_initializer_id (cp_parser* parser) in cp_parser_mem_initializer_id() argument
15371 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_mem_initializer_id()
15374 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TYPENAME)) in cp_parser_mem_initializer_id()
15379 cp_lexer_consume_token (parser->lexer); in cp_parser_mem_initializer_id()
15383 = (cp_parser_global_scope_opt (parser, in cp_parser_mem_initializer_id()
15399 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_mem_initializer_id()
15406 template_p = cp_parser_optional_template_keyword (parser); in cp_parser_mem_initializer_id()
15410 return cp_parser_class_name (parser, in cp_parser_mem_initializer_id()
15418 cp_parser_parse_tentatively (parser); in cp_parser_mem_initializer_id()
15419 if (cp_lexer_next_token_is_decltype (parser->lexer)) in cp_parser_mem_initializer_id()
15421 id = cp_parser_decltype (parser); in cp_parser_mem_initializer_id()
15424 id = cp_parser_class_name (parser, in cp_parser_mem_initializer_id()
15432 if (cp_parser_parse_definitely (parser)) in cp_parser_mem_initializer_id()
15435 return cp_parser_identifier (parser); in cp_parser_mem_initializer_id()
15449 cp_parser_operator_function_id (cp_parser* parser) in cp_parser_operator_function_id() argument
15451 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_operator_function_id()
15453 if (!cp_parser_require_keyword (parser, RID_OPERATOR, RT_OPERATOR)) in cp_parser_operator_function_id()
15456 return cp_parser_operator (parser, start_loc); in cp_parser_operator_function_id()
15491 cp_parser_operator (cp_parser* parser, location_t start_loc) in cp_parser_operator() argument
15498 token = cp_lexer_peek_token (parser->lexer); in cp_parser_operator()
15521 end_loc = cp_lexer_consume_token (parser->lexer)->location; in cp_parser_operator()
15524 token = cp_lexer_peek_token (parser->lexer); in cp_parser_operator()
15531 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
15534 = cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE)) in cp_parser_operator()
15704 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
15706 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_operator()
15714 parens.consume_open (parser); in cp_parser_operator()
15716 token = parens.require_close (parser); in cp_parser_operator()
15726 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
15728 token = cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_operator()
15756 str = cp_parser_string_literal (parser, /*translate=*/true, in cp_parser_operator()
15770 token = cp_lexer_peek_token (parser->lexer); in cp_parser_operator()
15773 id = cp_parser_identifier (parser); in cp_parser_operator()
15813 = make_location (start_loc, start_loc, parser->lexer); in cp_parser_operator()
15828 cp_lexer_consume_token (parser->lexer); in cp_parser_operator()
15833 cp_parser_error (parser, "expected operator"); in cp_parser_operator()
15871 cp_parser_template_declaration (cp_parser* parser, bool member_p) in cp_parser_template_declaration() argument
15874 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_EXPORT)) in cp_parser_template_declaration()
15877 cp_lexer_consume_token (parser->lexer); in cp_parser_template_declaration()
15882 cp_parser_template_declaration_after_export (parser, member_p); in cp_parser_template_declaration()
15895 cp_parser_template_parameter_list (cp_parser* parser) in cp_parser_template_parameter_list() argument
15920 parm_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_template_parameter_list()
15921 parameter = cp_parser_template_parameter (parser, in cp_parser_template_parameter_list()
15938 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_template_parameter_list()
15941 cp_lexer_consume_token (parser->lexer); in cp_parser_template_parameter_list()
15962 cp_parser_introduction_list (cp_parser *parser) in cp_parser_introduction_list() argument
15968 bool is_pack = cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS); in cp_parser_introduction_list()
15970 cp_lexer_consume_token (parser->lexer); in cp_parser_introduction_list()
15972 tree identifier = cp_parser_identifier (parser); in cp_parser_introduction_list()
15979 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_introduction_list()
15985 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_introduction_list()
15988 cp_lexer_consume_token (parser->lexer); in cp_parser_introduction_list()
16050 cp_parser_check_constrained_type_parm (cp_parser *parser, in cp_parser_check_constrained_type_parm() argument
16058 cp_parser_error (parser, "invalid constrained type parameter"); in cp_parser_check_constrained_type_parm()
16066 cp_parser_error (parser, "cv-qualified type parameter"); in cp_parser_check_constrained_type_parm()
16077 cp_parser_constrained_type_template_parm (cp_parser *parser, in cp_parser_constrained_type_template_parm() argument
16081 if (cp_parser_check_constrained_type_parm (parser, parmdecl)) in cp_parser_constrained_type_template_parm()
16107 cp_parser_constrained_template_template_parm (cp_parser *parser, in cp_parser_constrained_template_template_parm() argument
16112 if (!cp_parser_check_constrained_type_parm (parser, parmdecl)) in cp_parser_constrained_template_template_parm()
16137 finish_constrained_parameter (cp_parser *parser, in finish_constrained_parameter() argument
16149 parm = cp_parser_constrained_type_template_parm (parser, id, parmdecl); in finish_constrained_parameter()
16151 parm = cp_parser_constrained_template_template_parm (parser, proto, id, in finish_constrained_parameter()
16190 cp_parser_default_type_template_argument (cp_parser *parser) in cp_parser_default_type_template_argument() argument
16192 gcc_assert (cp_lexer_next_token_is (parser->lexer, CPP_EQ)); in cp_parser_default_type_template_argument()
16195 cp_lexer_consume_token (parser->lexer); in cp_parser_default_type_template_argument()
16197 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_default_type_template_argument()
16201 tree default_argument = cp_parser_type_id (parser, in cp_parser_default_type_template_argument()
16219 cp_parser_default_template_template_argument (cp_parser *parser) in cp_parser_default_template_template_argument() argument
16221 gcc_assert (cp_lexer_next_token_is (parser->lexer, CPP_EQ)); in cp_parser_default_template_template_argument()
16226 cp_lexer_consume_token (parser->lexer); in cp_parser_default_template_template_argument()
16231 const cp_token* token = cp_lexer_peek_token (parser->lexer); in cp_parser_default_template_template_argument()
16233 = cp_parser_id_expression (parser, in cp_parser_default_template_template_argument()
16247 = cp_parser_lookup_name (parser, default_argument, in cp_parser_default_template_template_argument()
16273 cp_parser_template_parameter (cp_parser* parser, bool *is_non_type, in cp_parser_template_parameter() argument
16285 token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_parameter()
16288 return cp_parser_type_parameter (parser, is_parameter_pack); in cp_parser_template_parameter()
16305 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_template_parameter()
16309 return cp_parser_type_parameter (parser, is_parameter_pack); in cp_parser_template_parameter()
16312 token = cp_lexer_peek_nth_token (parser->lexer, 3); in cp_parser_template_parameter()
16318 return cp_parser_type_parameter (parser, is_parameter_pack); in cp_parser_template_parameter()
16330 = cp_parser_parameter_declaration (parser, in cp_parser_template_parameter()
16346 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_template_parameter()
16348 cp_lexer_consume_token (parser->lexer); in cp_parser_template_parameter()
16353 return finish_constrained_parameter (parser, in cp_parser_template_parameter()
16394 cp_parser_type_parameter (cp_parser* parser, bool *is_parameter_pack) in cp_parser_type_parameter() argument
16400 token = cp_parser_require (parser, CPP_KEYWORD, RT_CLASS_TYPENAME_TEMPLATE); in cp_parser_type_parameter()
16414 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_type_parameter()
16417 cp_lexer_consume_token (parser->lexer); in cp_parser_type_parameter()
16425 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_type_parameter()
16426 identifier = cp_parser_identifier (parser); in cp_parser_type_parameter()
16434 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_type_parameter()
16437 = cp_parser_default_type_template_argument (parser); in cp_parser_type_parameter()
16471 cp_parser_require (parser, CPP_LESS, RT_LESS); in cp_parser_type_parameter()
16473 cp_parser_template_parameter_list (parser); in cp_parser_type_parameter()
16475 cp_parser_require (parser, CPP_GREATER, RT_GREATER); in cp_parser_type_parameter()
16481 if (tree dreqs = cp_parser_requires_clause_opt (parser, false)) in cp_parser_type_parameter()
16487 cp_parser_type_parameter_key (parser); in cp_parser_type_parameter()
16490 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_type_parameter()
16493 cp_lexer_consume_token (parser->lexer); in cp_parser_type_parameter()
16502 if (cp_lexer_next_token_is_not (parser->lexer, CPP_EQ) in cp_parser_type_parameter()
16503 && cp_lexer_next_token_is_not (parser->lexer, CPP_GREATER) in cp_parser_type_parameter()
16504 && cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_type_parameter()
16506 identifier = cp_parser_identifier (parser); in cp_parser_type_parameter()
16520 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_type_parameter()
16523 = cp_parser_default_template_template_argument (parser); in cp_parser_type_parameter()
16572 cp_parser_template_id (cp_parser *parser, in cp_parser_template_id() argument
16587 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_id()
16591 cp_lexer_consume_token (parser->lexer); in cp_parser_template_id()
16600 (parser, 2))) in cp_parser_template_id()
16602 cp_parser_error (parser, "expected template-id"); in cp_parser_template_id()
16607 if (cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_template_id()
16608 start_of_id = cp_lexer_token_position (parser->lexer, false); in cp_parser_template_id()
16614 templ = cp_parser_template_name (parser, template_keyword_p, in cp_parser_template_id()
16629 tentative_firewall firewall (parser); in cp_parser_template_id()
16635 if (((next_token = cp_lexer_peek_token (parser->lexer))->type in cp_parser_template_id()
16638 && ((next_token_2 = cp_lexer_peek_nth_token (parser->lexer, 2))->type in cp_parser_template_id()
16642 cp_parser_parse_tentatively (parser); in cp_parser_template_id()
16647 cp_lexer_consume_token (parser->lexer); in cp_parser_template_id()
16650 arguments = cp_parser_enclosed_template_argument_list (parser); in cp_parser_template_id()
16651 if (!cp_parser_parse_definitely (parser)) in cp_parser_template_id()
16657 cp_parser_error (parser, "expected %<<%>"); in cp_parser_template_id()
16682 if (!cp_parser_require (parser, CPP_LESS, RT_LESS)) in cp_parser_template_id()
16688 arguments = cp_parser_enclosed_template_argument_list (parser); in cp_parser_template_id()
16693 && (cp_parser_error_occurred (parser) in cp_parser_template_id()
16694 || cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN))) in cp_parser_template_id()
16700 if (cp_parser_error_occurred (parser)) in cp_parser_template_id()
16709 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_template_id()
16713 cp_lexer_purge_tokens_after (parser->lexer, start_of_id); in cp_parser_template_id()
16716 cp_parser_simulate_error (parser); in cp_parser_template_id()
16728 = make_location (token->location, token->location, parser->lexer); in cp_parser_template_id()
16753 && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)); in cp_parser_template_id()
16790 && !(cp_parser_error_occurred (parser) in cp_parser_template_id()
16791 && cp_parser_parsing_tentatively (parser) in cp_parser_template_id()
16792 && parser->in_declarator_p)) in cp_parser_template_id()
16807 cp_lexer_purge_tokens_after (parser->lexer, start_of_id); in cp_parser_template_id()
16813 if (cp_parser_error_occurred (parser) && template_id != error_mark_node) in cp_parser_template_id()
16824 cp_parser_template_id_expr (cp_parser *parser, in cp_parser_template_id_expr() argument
16829 tree x = cp_parser_template_id (parser, template_keyword_p, check_dependency_p, in cp_parser_template_id_expr()
16876 cp_parser_template_name (cp_parser* parser, in cp_parser_template_name() argument
16885 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_name()
16889 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_OPERATOR)) in cp_parser_template_name()
16893 cp_parser_parse_tentatively (parser); in cp_parser_template_name()
16895 identifier = cp_parser_operator_function_id (parser); in cp_parser_template_name()
16897 if (!cp_parser_parse_definitely (parser)) in cp_parser_template_name()
16899 cp_parser_error (parser, "expected template-name"); in cp_parser_template_name()
16905 identifier = cp_parser_identifier (parser); in cp_parser_template_name()
16924 && cp_parser_nth_token_starts_template_argument_list_p (parser, 1)) in cp_parser_template_name()
16935 && parser->scope && TYPE_P (parser->scope) in cp_parser_template_name()
16937 && dependent_scope_p (parser->scope) in cp_parser_template_name()
16940 && !constructor_name_p (identifier, parser->scope)) in cp_parser_template_name()
16948 parser->scope, identifier); in cp_parser_template_name()
16950 if (cp_parser_simulate_error (parser)) in cp_parser_template_name()
16951 start = cp_lexer_token_position (parser->lexer, true); in cp_parser_template_name()
16954 cp_lexer_consume_token (parser->lexer); in cp_parser_template_name()
16955 cp_parser_enclosed_template_argument_list (parser); in cp_parser_template_name()
16958 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_template_name()
16967 cp_lexer_purge_tokens_after (parser->lexer, start); in cp_parser_template_name()
16970 parser->context->object_type = NULL_TREE; in cp_parser_template_name()
16980 tree scope = (parser->scope ? parser->scope in cp_parser_template_name()
16981 : parser->context->object_type); in cp_parser_template_name()
16988 parser->context->object_type = NULL_TREE; in cp_parser_template_name()
16995 const bool scoped_p = ((parser->scope ? parser->scope in cp_parser_template_name()
16996 : parser->context->object_type) != NULL_TREE); in cp_parser_template_name()
16999 decl = cp_parser_lookup_name (parser, identifier, in cp_parser_template_name()
17043 && cp_lexer_next_token_is (parser->lexer, CPP_LESS) in cp_parser_template_name()
17065 cp_parser_error (parser, "expected template-name"); in cp_parser_template_name()
17082 cp_parser_template_argument_list (cp_parser* parser) in cp_parser_template_argument_list() argument
17096 saved_in_template_argument_list_p = parser->in_template_argument_list_p; in cp_parser_template_argument_list()
17097 parser->in_template_argument_list_p = true; in cp_parser_template_argument_list()
17101 saved_ice_p = parser->integral_constant_expression_p; in cp_parser_template_argument_list()
17102 parser->integral_constant_expression_p = false; in cp_parser_template_argument_list()
17103 saved_non_ice_p = parser->non_integral_constant_expression_p; in cp_parser_template_argument_list()
17104 parser->non_integral_constant_expression_p = false; in cp_parser_template_argument_list()
17113 cp_lexer_consume_token (parser->lexer); in cp_parser_template_argument_list()
17116 argument = cp_parser_template_argument (parser); in cp_parser_template_argument_list()
17120 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_template_argument_list()
17124 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_argument_list()
17129 cp_lexer_consume_token (parser->lexer); in cp_parser_template_argument_list()
17150 while (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)); in cp_parser_template_argument_list()
17159 parser->non_integral_constant_expression_p = saved_non_ice_p; in cp_parser_template_argument_list()
17160 parser->integral_constant_expression_p = saved_ice_p; in cp_parser_template_argument_list()
17161 parser->in_template_argument_list_p = saved_in_template_argument_list_p; in cp_parser_template_argument_list()
17184 cp_parser_template_argument (cp_parser* parser) in cp_parser_template_argument() argument
17204 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
17205 argument = cp_parser_template_type_arg (parser); in cp_parser_template_argument()
17222 if (!cp_parser_error_occurred (parser) in cp_parser_template_argument()
17224 && cp_lexer_next_token_is (parser->lexer, CPP_RSHIFT)) in cp_parser_template_argument()
17227 cp_parser_abort_tentative_parse (parser); in cp_parser_template_argument()
17234 if (!cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
17235 cp_parser_error (parser, "expected template-argument"); in cp_parser_template_argument()
17237 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
17241 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
17243 argument_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_argument()
17244 argument = cp_parser_id_expression (parser, in cp_parser_template_argument()
17252 if (!cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
17253 cp_parser_error (parser, "expected template-argument"); in cp_parser_template_argument()
17254 if (!cp_parser_error_occurred (parser)) in cp_parser_template_argument()
17261 argument = cp_parser_lookup_name (parser, argument, in cp_parser_template_argument()
17270 cp_parser_error (parser, "expected template-name"); in cp_parser_template_argument()
17272 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
17296 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_template_argument()
17298 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
17299 argument = cp_parser_primary_expression (parser, in cp_parser_template_argument()
17305 || !cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
17306 cp_parser_simulate_error (parser); in cp_parser_template_argument()
17307 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
17313 address_p = cp_lexer_next_token_is (parser->lexer, CPP_AND); in cp_parser_template_argument()
17316 loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_template_argument()
17317 cp_lexer_consume_token (parser->lexer); in cp_parser_template_argument()
17320 token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_argument()
17327 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
17328 argument = cp_parser_primary_expression (parser, in cp_parser_template_argument()
17333 if (cp_parser_error_occurred (parser) in cp_parser_template_argument()
17334 || !cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
17335 cp_parser_abort_tentative_parse (parser); in cp_parser_template_argument()
17359 cp_parser_simulate_error (parser); in cp_parser_template_argument()
17374 cp_parser_simulate_error (parser); in cp_parser_template_argument()
17376 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
17391 cp_parser_error (parser, "invalid non-type template argument"); in cp_parser_template_argument()
17401 cp_parser_parse_tentatively (parser); in cp_parser_template_argument()
17404 argument = cp_parser_constant_expression (parser); in cp_parser_template_argument()
17409 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_template_argument()
17412 return cp_parser_braced_list (parser, &expr_non_constant_p); in cp_parser_template_argument()
17417 argument = cp_parser_assignment_expression (parser); in cp_parser_template_argument()
17423 if (!cp_parser_next_token_ends_template_argument_p (parser)) in cp_parser_template_argument()
17424 cp_parser_error (parser, "expected template-argument"); in cp_parser_template_argument()
17425 if (cp_parser_parse_definitely (parser)) in cp_parser_template_argument()
17431 return cp_parser_template_type_arg (parser); in cp_parser_template_argument()
17457 cp_parser_explicit_instantiation (cp_parser* parser) in cp_parser_explicit_instantiation() argument
17467 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_explicit_instantiation()
17470 = cp_parser_storage_class_specifier_opt (parser); in cp_parser_explicit_instantiation()
17473 = cp_parser_function_specifier_opt (parser, in cp_parser_explicit_instantiation()
17478 cp_parser_require_keyword (parser, RID_TEMPLATE, RT_TEMPLATE); in cp_parser_explicit_instantiation()
17486 cp_parser_decl_specifier_seq (parser, in cp_parser_explicit_instantiation()
17493 if (declares_class_or_enum && cp_parser_declares_only_class_p (parser)) in cp_parser_explicit_instantiation()
17513 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_explicit_instantiation()
17551 cp_parser_skip_to_end_of_statement (parser); in cp_parser_explicit_instantiation()
17557 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_explicit_instantiation()
17576 cp_parser_explicit_specialization (cp_parser* parser) in cp_parser_explicit_specialization() argument
17579 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_explicit_specialization()
17582 cp_parser_require_keyword (parser, RID_TEMPLATE, RT_TEMPLATE); in cp_parser_explicit_specialization()
17584 cp_parser_require (parser, CPP_LESS, RT_LESS); in cp_parser_explicit_specialization()
17586 cp_parser_require (parser, CPP_GREATER, RT_GREATER); in cp_parser_explicit_specialization()
17588 ++parser->num_template_parameter_lists; in cp_parser_explicit_specialization()
17613 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_explicit_specialization()
17615 if (cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_LESS in cp_parser_explicit_specialization()
17616 && cp_lexer_peek_nth_token (parser->lexer, 3)->type != CPP_GREATER) in cp_parser_explicit_specialization()
17617 cp_parser_template_declaration_after_export (parser, in cp_parser_explicit_specialization()
17620 cp_parser_explicit_specialization (parser); in cp_parser_explicit_specialization()
17624 cp_parser_single_declaration (parser, in cp_parser_explicit_specialization()
17636 --parser->num_template_parameter_lists; in cp_parser_explicit_specialization()
17678 cp_parser_type_specifier (cp_parser* parser, in cp_parser_type_specifier() argument
17697 token = cp_lexer_peek_token (parser->lexer); in cp_parser_type_specifier()
17709 type_spec = cp_parser_enum_specifier (parser); in cp_parser_type_specifier()
17735 cp_parser_parse_tentatively (parser); in cp_parser_type_specifier()
17739 type_spec = cp_parser_class_specifier (parser); in cp_parser_type_specifier()
17744 if (cp_parser_parse_definitely (parser)) in cp_parser_type_specifier()
17767 (parser, in cp_parser_type_specifier()
17812 return cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_type_specifier()
17817 type_spec = cp_parser_simple_type_specifier (parser, in cp_parser_type_specifier()
17825 cp_parser_error (parser, "expected type specifier"); in cp_parser_type_specifier()
17879 cp_parser_simple_type_specifier (cp_parser* parser, in cp_parser_simple_type_specifier() argument
17888 token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_type_specifier()
17967 if (parser->auto_is_implicit_function_template_parm_p) in cp_parser_simple_type_specifier()
17973 cp_parser_parse_tentatively (parser); in cp_parser_simple_type_specifier()
17974 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_type_specifier()
17975 while (cp_lexer_next_token_is_not (parser->lexer, CPP_EQ) in cp_parser_simple_type_specifier()
17976 && cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA) in cp_parser_simple_type_specifier()
17977 && cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN) in cp_parser_simple_type_specifier()
17978 && cp_lexer_next_token_is_not (parser->lexer, CPP_EOF)) in cp_parser_simple_type_specifier()
17980 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_simple_type_specifier()
17982 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_type_specifier()
17983 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_simple_type_specifier()
17990 if (cp_lexer_next_token_is (parser->lexer, CPP_DEREF)) in cp_parser_simple_type_specifier()
17996 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_type_specifier()
17998 cp_parser_abort_tentative_parse (parser); in cp_parser_simple_type_specifier()
18008 type = synthesize_implicit_template_parm (parser, NULL_TREE); in cp_parser_simple_type_specifier()
18041 cp_parser_decltype (parser); in cp_parser_simple_type_specifier()
18042 cp_lexer_set_token_position (parser->lexer, token); in cp_parser_simple_type_specifier()
18047 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_type_specifier()
18049 type = cp_parser_sizeof_operand (parser, RID_TYPEOF); in cp_parser_simple_type_specifier()
18062 type = cp_parser_trait_expr (parser, RID_UNDERLYING_TYPE); in cp_parser_simple_type_specifier()
18072 type = cp_parser_trait_expr (parser, token->keyword); in cp_parser_simple_type_specifier()
18085 && cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_SCOPE) in cp_parser_simple_type_specifier()
18098 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_type_specifier()
18119 cp_lexer_consume_token (parser->lexer); in cp_parser_simple_type_specifier()
18127 cp_parser_check_for_invalid_template_id (parser, type, none_type, in cp_parser_simple_type_specifier()
18144 cp_parser_parse_tentatively (parser); in cp_parser_simple_type_specifier()
18148 bool tent = cp_parser_parsing_tentatively (parser); in cp_parser_simple_type_specifier()
18150 token = cp_lexer_peek_token (parser->lexer); in cp_parser_simple_type_specifier()
18154 = (cp_parser_global_scope_opt (parser, in cp_parser_simple_type_specifier()
18159 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_simple_type_specifier()
18167 if (parser->scope in cp_parser_simple_type_specifier()
18168 && cp_parser_optional_template_keyword (parser)) in cp_parser_simple_type_specifier()
18171 type = cp_parser_template_id (parser, in cp_parser_simple_type_specifier()
18182 type = cp_parser_make_typename_type (parser, type, in cp_parser_simple_type_specifier()
18186 cp_parser_error (parser, "expected template-id for type"); in cp_parser_simple_type_specifier()
18194 else if (parser->scope in cp_parser_simple_type_specifier()
18197 && cp_lexer_next_token_is (parser->lexer, CPP_TEMPLATE_ID)) in cp_parser_simple_type_specifier()
18199 cp_parser_parse_tentatively (parser); in cp_parser_simple_type_specifier()
18201 type = cp_parser_template_id (parser, in cp_parser_simple_type_specifier()
18208 cp_parser_simulate_error (parser); in cp_parser_simple_type_specifier()
18210 if (!cp_parser_parse_definitely (parser)) in cp_parser_simple_type_specifier()
18213 type = make_typename_type (parser->scope, type, typename_type, in cp_parser_simple_type_specifier()
18223 cp_parser_parse_tentatively (parser); in cp_parser_simple_type_specifier()
18225 type = cp_parser_type_name (parser, (qualified_p && typename_p)); in cp_parser_simple_type_specifier()
18227 if (cxx_dialect >= cxx17 && !cp_parser_parse_definitely (parser)) in cp_parser_simple_type_specifier()
18236 cp_parser_parse_tentatively (parser); in cp_parser_simple_type_specifier()
18238 type = cp_parser_template_id (parser, in cp_parser_simple_type_specifier()
18246 type = cp_parser_placeholder_type_specifier (parser, loc, in cp_parser_simple_type_specifier()
18250 cp_parser_simulate_error (parser); in cp_parser_simple_type_specifier()
18253 cp_parser_simulate_error (parser); in cp_parser_simple_type_specifier()
18255 if (!cp_parser_parse_definitely (parser)) in cp_parser_simple_type_specifier()
18263 tree name = cp_parser_identifier (parser); in cp_parser_simple_type_specifier()
18265 && parser->scope != error_mark_node) in cp_parser_simple_type_specifier()
18268 = cp_lexer_previous_token (parser->lexer)->location; in cp_parser_simple_type_specifier()
18269 tree tmpl = cp_parser_lookup_name (parser, name, in cp_parser_simple_type_specifier()
18280 type = cp_parser_placeholder_type_specifier (parser, loc, in cp_parser_simple_type_specifier()
18285 if (!cp_parser_simulate_error (parser)) in cp_parser_simple_type_specifier()
18286 cp_parser_name_lookup_error (parser, name, tmpl, in cp_parser_simple_type_specifier()
18296 && !cp_parser_parse_definitely (parser)) in cp_parser_simple_type_specifier()
18316 cp_parser_error (parser, "expected type-name"); in cp_parser_simple_type_specifier()
18328 if (c_dialect_objc () && !parser->scope in cp_parser_simple_type_specifier()
18331 tree protos = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_simple_type_specifier()
18345 cp_parser_check_for_invalid_template_id (parser, type, in cp_parser_simple_type_specifier()
18373 cp_parser_placeholder_type_specifier (cp_parser *parser, location_t loc, in cp_parser_placeholder_type_specifier() argument
18406 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO)) in cp_parser_placeholder_type_specifier()
18407 placeholder = cp_lexer_consume_token (parser->lexer); in cp_parser_placeholder_type_specifier()
18408 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_DECLTYPE)) in cp_parser_placeholder_type_specifier()
18410 placeholder = cp_lexer_consume_token (parser->lexer); in cp_parser_placeholder_type_specifier()
18412 parens.require_open (parser); in cp_parser_placeholder_type_specifier()
18413 cp_parser_require_keyword (parser, RID_AUTO, RT_AUTO); in cp_parser_placeholder_type_specifier()
18414 close_paren = parens.require_close (parser); in cp_parser_placeholder_type_specifier()
18439 && !parser->in_result_type_constraint_p in cp_parser_placeholder_type_specifier()
18452 else if (parser->in_result_type_constraint_p && placeholder) in cp_parser_placeholder_type_specifier()
18461 if (parser->auto_is_implicit_function_template_parm_p) in cp_parser_placeholder_type_specifier()
18472 return synthesize_implicit_template_parm (parser, parm); in cp_parser_placeholder_type_specifier()
18480 : parser->in_result_type_constraint_p; in cp_parser_placeholder_type_specifier()
18515 cp_parser_type_name (cp_parser* parser, bool typename_keyword_p) in cp_parser_type_name() argument
18520 cp_parser_parse_tentatively (parser); in cp_parser_type_name()
18522 type_decl = cp_parser_class_name (parser, in cp_parser_type_name()
18530 if (!cp_parser_parse_definitely (parser)) in cp_parser_type_name()
18534 return cp_parser_nonclass_name (parser); in cp_parser_type_name()
18536 cp_parser_parse_tentatively (parser); in cp_parser_type_name()
18539 type_decl = cp_parser_template_id (parser, in cp_parser_type_name()
18562 cp_parser_simulate_error (parser); in cp_parser_type_name()
18564 if (!cp_parser_parse_definitely (parser)) in cp_parser_type_name()
18566 return cp_parser_nonclass_name (parser); in cp_parser_type_name()
18587 cp_parser_nonclass_name (cp_parser* parser) in cp_parser_nonclass_name() argument
18592 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_nonclass_name()
18593 identifier = cp_parser_identifier (parser); in cp_parser_nonclass_name()
18598 type_decl = cp_parser_lookup_name_simple (parser, identifier, token->location); in cp_parser_nonclass_name()
18606 tree protos = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_nonclass_name()
18621 && cp_lexer_peek_token (parser->lexer)->type == CPP_DOT)) in cp_parser_nonclass_name()
18623 if (!cp_parser_simulate_error (parser)) in cp_parser_nonclass_name()
18624 cp_parser_name_lookup_error (parser, identifier, type_decl, in cp_parser_nonclass_name()
18633 && !parser->scope) in cp_parser_nonclass_name()
18666 cp_parser_elaborated_type_specifier (cp_parser* parser, in cp_parser_elaborated_type_specifier() argument
18678 location_t key_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_elaborated_type_specifier()
18683 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_ENUM)) in cp_parser_elaborated_type_specifier()
18686 cp_lexer_consume_token (parser->lexer); in cp_parser_elaborated_type_specifier()
18691 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_elaborated_type_specifier()
18703 cp_lexer_consume_token (parser->lexer); in cp_parser_elaborated_type_specifier()
18711 attributes = cp_parser_attributes_opt (parser); in cp_parser_elaborated_type_specifier()
18714 else if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_elaborated_type_specifier()
18718 cp_lexer_consume_token (parser->lexer); in cp_parser_elaborated_type_specifier()
18725 key_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_elaborated_type_specifier()
18726 tag_type = cp_parser_class_key (parser); in cp_parser_elaborated_type_specifier()
18730 attributes = cp_parser_attributes_opt (parser); in cp_parser_elaborated_type_specifier()
18734 globalscope = cp_parser_global_scope_opt (parser, in cp_parser_elaborated_type_specifier()
18741 = cp_parser_nested_name_specifier (parser, in cp_parser_elaborated_type_specifier()
18754 = cp_parser_nested_name_specifier_opt (parser, in cp_parser_elaborated_type_specifier()
18767 template_p = cp_parser_optional_template_keyword (parser); in cp_parser_elaborated_type_specifier()
18771 cp_parser_parse_tentatively (parser); in cp_parser_elaborated_type_specifier()
18775 cp_parser_error (parser, "%<template%> must follow a nested-" in cp_parser_elaborated_type_specifier()
18781 token = cp_lexer_peek_token (parser->lexer); in cp_parser_elaborated_type_specifier()
18782 decl = cp_parser_template_id (parser, template_p, in cp_parser_elaborated_type_specifier()
18788 if (!template_p && !cp_parser_parse_definitely (parser)) in cp_parser_elaborated_type_specifier()
18798 cp_parser_diagnose_invalid_type_name (parser, decl, token->location); in cp_parser_elaborated_type_specifier()
18806 type = make_typename_type (parser->scope, decl, in cp_parser_elaborated_type_specifier()
18823 && cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_elaborated_type_specifier()
18832 token = cp_lexer_peek_token (parser->lexer); in cp_parser_elaborated_type_specifier()
18833 identifier = cp_parser_identifier (parser); in cp_parser_elaborated_type_specifier()
18837 parser->scope = NULL_TREE; in cp_parser_elaborated_type_specifier()
18843 && TREE_CODE (parser->scope) != NAMESPACE_DECL) in cp_parser_elaborated_type_specifier()
18844 return cp_parser_make_typename_type (parser, identifier, in cp_parser_elaborated_type_specifier()
18850 = parser->num_template_parameter_lists; in cp_parser_elaborated_type_specifier()
18859 if (parser->scope) in cp_parser_elaborated_type_specifier()
18864 decl = cp_parser_lookup_name (parser, identifier, in cp_parser_elaborated_type_specifier()
18904 cp_parser_diagnose_invalid_type_name (parser, in cp_parser_elaborated_type_specifier()
18934 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON) in cp_parser_elaborated_type_specifier()
18992 && cp_lexer_next_token_is (parser->lexer, in cp_parser_elaborated_type_specifier()
19001 && (cp_parser_next_token_starts_class_definition_p (parser) in cp_parser_elaborated_type_specifier()
19002 || cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON))); in cp_parser_elaborated_type_specifier()
19006 && !cp_parser_check_template_parameters (parser, in cp_parser_elaborated_type_specifier()
19031 else if (is_declaration && cp_parser_declares_only_class_p (parser)) in cp_parser_elaborated_type_specifier()
19039 cp_parser_maybe_warn_enum_key (parser, key_loc, type, scoped_key); in cp_parser_elaborated_type_specifier()
19045 && cp_parser_declares_only_class_p (parser)); in cp_parser_elaborated_type_specifier()
19046 cp_parser_check_class_key (parser, key_loc, tag_type, type, false, in cp_parser_elaborated_type_specifier()
19057 cp_parser_check_for_invalid_template_id (parser, type, tag_type, in cp_parser_elaborated_type_specifier()
19094 cp_parser_enum_specifier (cp_parser* parser) in cp_parser_enum_specifier() argument
19109 temp_override<bool> cleanup (parser->colon_corrects_to_scope_p, false); in cp_parser_enum_specifier()
19113 cp_parser_parse_tentatively (parser); in cp_parser_enum_specifier()
19119 cp_lexer_consume_token (parser->lexer); in cp_parser_enum_specifier()
19123 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_CLASS) in cp_parser_enum_specifier()
19124 || cp_lexer_next_token_is_keyword (parser->lexer, RID_STRUCT)) in cp_parser_enum_specifier()
19130 cp_lexer_consume_token (parser->lexer); in cp_parser_enum_specifier()
19135 attributes = cp_parser_attributes_opt (parser); in cp_parser_enum_specifier()
19138 parser->scope = NULL_TREE; in cp_parser_enum_specifier()
19139 parser->qualifying_scope = NULL_TREE; in cp_parser_enum_specifier()
19140 parser->object_scope = NULL_TREE; in cp_parser_enum_specifier()
19145 type_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_enum_specifier()
19149 = cp_parser_nested_name_specifier_opt (parser, in cp_parser_enum_specifier()
19159 identifier = cp_parser_identifier (parser); in cp_parser_enum_specifier()
19160 name = cp_parser_lookup_name (parser, identifier, in cp_parser_enum_specifier()
19193 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_enum_specifier()
19194 identifier = cp_parser_identifier (parser); in cp_parser_enum_specifier()
19208 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_enum_specifier()
19213 cp_lexer_consume_token (parser->lexer); in cp_parser_enum_specifier()
19216 cp_parser_type_specifier_seq (parser, CP_PARSER_FLAGS_NONE, in cp_parser_enum_specifier()
19222 if (!cp_parser_parse_definitely (parser)) in cp_parser_enum_specifier()
19242 if (!cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_enum_specifier()
19247 cp_parser_commit_to_tentative_parse (parser); in cp_parser_enum_specifier()
19248 cp_parser_error (parser, "expected %<{%>"); in cp_parser_enum_specifier()
19254 && cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_enum_specifier()
19257 cp_parser_commit_to_tentative_parse (parser); in cp_parser_enum_specifier()
19258 cp_parser_error (parser, "expected %<;%> or %<{%>"); in cp_parser_enum_specifier()
19264 if (!has_underlying_type && !cp_parser_parse_definitely (parser)) in cp_parser_enum_specifier()
19280 if (!cp_parser_check_type_definition (parser)) in cp_parser_enum_specifier()
19291 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_enum_specifier()
19355 braces.consume_open (parser); in cp_parser_enum_specifier()
19376 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_enum_specifier()
19378 else if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_enum_specifier()
19388 cp_parser_commit_to_tentative_parse (parser); in cp_parser_enum_specifier()
19389 cp_parser_enumerator_list (parser, type); in cp_parser_enum_specifier()
19393 braces.require_close (parser); in cp_parser_enum_specifier()
19403 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_enum_specifier()
19416 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_enum_specifier()
19418 tree trailing_attr = cp_parser_gnu_attributes_opt (parser); in cp_parser_enum_specifier()
19454 cp_parser_enumerator_list (cp_parser* parser, tree type) in cp_parser_enumerator_list() argument
19459 cp_parser_enumerator_definition (parser, type); in cp_parser_enumerator_list()
19463 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_enumerator_list()
19466 cp_lexer_consume_token (parser->lexer); in cp_parser_enumerator_list()
19468 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_enumerator_list()
19495 cp_parser_enumerator_definition (cp_parser* parser, tree type) in cp_parser_enumerator_definition() argument
19503 loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_enumerator_definition()
19506 identifier = cp_parser_identifier (parser); in cp_parser_enumerator_definition()
19511 tree attrs = cp_parser_attributes_opt (parser); in cp_parser_enumerator_definition()
19514 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_enumerator_definition()
19517 cp_lexer_consume_token (parser->lexer); in cp_parser_enumerator_definition()
19519 value = cp_parser_constant_expression (parser); in cp_parser_enumerator_definition()
19542 cp_parser_namespace_name (cp_parser* parser) in cp_parser_namespace_name() argument
19547 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_namespace_name()
19550 identifier = cp_parser_identifier (parser); in cp_parser_namespace_name()
19572 namespace_decl = cp_parser_lookup_name (parser, identifier, in cp_parser_namespace_name()
19583 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_namespace_name()
19588 && parser->scope && TREE_CODE (parser->scope) == NAMESPACE_DECL) in cp_parser_namespace_name()
19591 parser->scope); in cp_parser_namespace_name()
19605 cp_parser_error (parser, "expected namespace-name"); in cp_parser_namespace_name()
19632 cp_parser_namespace_definition (cp_parser* parser) in cp_parser_namespace_definition() argument
19637 cp_ensure_no_omp_declare_simd (parser); in cp_parser_namespace_definition()
19638 cp_ensure_no_oacc_routine (parser); in cp_parser_namespace_definition()
19640 bool is_inline = cp_lexer_next_token_is_keyword (parser->lexer, RID_INLINE); in cp_parser_namespace_definition()
19646 cp_lexer_consume_token (parser->lexer); in cp_parser_namespace_definition()
19651 = cp_parser_require_keyword (parser, RID_NAMESPACE, RT_NAMESPACE); in cp_parser_namespace_definition()
19654 tree attribs = cp_parser_attributes_opt (parser); in cp_parser_namespace_definition()
19660 bool nested_inline_p = cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_namespace_definition()
19665 pedwarn (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_namespace_definition()
19668 cp_lexer_consume_token (parser->lexer); in cp_parser_namespace_definition()
19671 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_namespace_definition()
19673 identifier = cp_parser_identifier (parser); in cp_parser_namespace_definition()
19675 if (cp_next_tokens_can_be_std_attribute_p (parser)) in cp_parser_namespace_definition()
19681 attribs = attr_chainon (attribs, cp_parser_attributes_opt (parser)); in cp_parser_namespace_definition()
19684 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SCOPE)) in cp_parser_namespace_definition()
19706 cp_parser_error (parser, "nested namespace name required"); in cp_parser_namespace_definition()
19707 cp_lexer_consume_token (parser->lexer); in cp_parser_namespace_definition()
19711 cp_parser_error (parser, "namespace name required"); in cp_parser_namespace_definition()
19729 if (braces.require_open (parser)) in cp_parser_namespace_definition()
19732 cp_parser_namespace_body (parser); in cp_parser_namespace_definition()
19735 braces.require_close (parser); in cp_parser_namespace_definition()
19752 cp_parser_namespace_body (cp_parser* parser) in cp_parser_namespace_body() argument
19754 cp_parser_declaration_seq_opt (parser); in cp_parser_namespace_body()
19763 cp_parser_namespace_alias_definition (cp_parser* parser) in cp_parser_namespace_alias_definition() argument
19768 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_namespace_alias_definition()
19771 cp_parser_require_keyword (parser, RID_NAMESPACE, RT_NAMESPACE); in cp_parser_namespace_alias_definition()
19773 identifier = cp_parser_identifier (parser); in cp_parser_namespace_alias_definition()
19777 if (!cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_namespace_alias_definition()
19778 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_namespace_alias_definition()
19782 cp_lexer_consume_token (parser->lexer); in cp_parser_namespace_alias_definition()
19783 if (cp_parser_skip_to_closing_brace (parser)) in cp_parser_namespace_alias_definition()
19784 cp_lexer_consume_token (parser->lexer); in cp_parser_namespace_alias_definition()
19787 cp_parser_require (parser, CPP_EQ, RT_EQ); in cp_parser_namespace_alias_definition()
19790 = cp_parser_qualified_namespace_specifier (parser); in cp_parser_namespace_alias_definition()
19793 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_namespace_alias_definition()
19808 cp_parser_qualified_namespace_specifier (cp_parser* parser) in cp_parser_qualified_namespace_specifier() argument
19811 cp_parser_global_scope_opt (parser, in cp_parser_qualified_namespace_specifier()
19815 cp_parser_nested_name_specifier_opt (parser, in cp_parser_qualified_namespace_specifier()
19821 return cp_parser_namespace_name (parser); in cp_parser_qualified_namespace_specifier()
19837 cp_parser_using_declaration (cp_parser* parser, in cp_parser_using_declaration() argument
19851 diag_token = cp_lexer_peek_token (parser->lexer); in cp_parser_using_declaration()
19852 cp_parser_parse_tentatively (parser); in cp_parser_using_declaration()
19857 cp_parser_require_keyword (parser, RID_USING, RT_USING); in cp_parser_using_declaration()
19861 token = cp_lexer_peek_token (parser->lexer); in cp_parser_using_declaration()
19868 cp_lexer_consume_token (parser->lexer); in cp_parser_using_declaration()
19874 = (cp_parser_global_scope_opt (parser, in cp_parser_using_declaration()
19882 qscope = cp_parser_nested_name_specifier (parser, typename_p, in cp_parser_using_declaration()
19886 if (!qscope && !cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_using_declaration()
19888 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_using_declaration()
19895 qscope = cp_parser_nested_name_specifier_opt (parser, in cp_parser_using_declaration()
19908 if (access_declaration_p && cp_parser_error_occurred (parser)) in cp_parser_using_declaration()
19912 return cp_parser_parse_definitely (parser); in cp_parser_using_declaration()
19914 token = cp_lexer_peek_token (parser->lexer); in cp_parser_using_declaration()
19916 identifier = cp_parser_unqualified_id (parser, in cp_parser_using_declaration()
19924 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_using_declaration()
19925 cp_parser_simulate_error (parser); in cp_parser_using_declaration()
19926 if (!cp_parser_parse_definitely (parser)) in cp_parser_using_declaration()
19929 else if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_using_declaration()
19931 cp_token *ell = cp_lexer_consume_token (parser->lexer); in cp_parser_using_declaration()
19962 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_using_declaration()
19974 && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_using_declaration()
19976 cp_token *comma = cp_lexer_consume_token (parser->lexer); in cp_parser_using_declaration()
19985 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_using_declaration()
20002 cp_parser_alias_declaration (cp_parser* parser) in cp_parser_alias_declaration() argument
20013 = cp_parser_require_keyword (parser, RID_USING, RT_USING); in cp_parser_alias_declaration()
20017 id_location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_alias_declaration()
20018 id = cp_parser_identifier (parser); in cp_parser_alias_declaration()
20022 cp_token *attrs_token = cp_lexer_peek_token (parser->lexer); in cp_parser_alias_declaration()
20023 attributes = cp_parser_attributes_opt (parser); in cp_parser_alias_declaration()
20027 cp_parser_require (parser, CPP_EQ, RT_EQ); in cp_parser_alias_declaration()
20029 if (cp_parser_error_occurred (parser)) in cp_parser_alias_declaration()
20032 cp_parser_commit_to_tentative_parse (parser); in cp_parser_alias_declaration()
20050 if (parser->num_template_parameter_lists) in cp_parser_alias_declaration()
20052 saved_message = parser->type_definition_forbidden_message; in cp_parser_alias_declaration()
20053 parser->type_definition_forbidden_message = in cp_parser_alias_declaration()
20057 type = cp_parser_type_id (parser, CP_PARSER_FLAGS_TYPENAME_OPTIONAL, in cp_parser_alias_declaration()
20061 if (parser->num_template_parameter_lists) in cp_parser_alias_declaration()
20062 parser->type_definition_forbidden_message = saved_message; in cp_parser_alias_declaration()
20065 || !cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON)) in cp_parser_alias_declaration()
20067 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_alias_declaration()
20094 if (parser->num_template_parameter_lists in cp_parser_alias_declaration()
20095 && !cp_parser_check_template_parameters (parser, in cp_parser_alias_declaration()
20140 cp_parser_using_directive (cp_parser* parser) in cp_parser_using_directive() argument
20146 cp_parser_require_keyword (parser, RID_USING, RT_USING); in cp_parser_using_directive()
20148 cp_parser_require_keyword (parser, RID_NAMESPACE, RT_NAMESPACE); in cp_parser_using_directive()
20150 cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false); in cp_parser_using_directive()
20152 cp_parser_nested_name_specifier_opt (parser, in cp_parser_using_directive()
20158 namespace_decl = cp_parser_namespace_name (parser); in cp_parser_using_directive()
20161 attribs = cp_parser_attributes_opt (parser); in cp_parser_using_directive()
20167 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_using_directive()
20203 cp_parser_asm_definition (cp_parser* parser) in cp_parser_asm_definition() argument
20215 location_t asm_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_asm_definition()
20218 cp_parser_require_keyword (parser, RID_ASM, RT_ASM); in cp_parser_asm_definition()
20222 if (parser->in_function_body in cp_parser_asm_definition()
20234 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_asm_definition()
20237 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_asm_definition()
20239 switch (cp_lexer_peek_token (parser->lexer)->keyword) in cp_parser_asm_definition()
20250 if (!parser->in_function_body) in cp_parser_asm_definition()
20255 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20269 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20283 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20289 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20302 if (!parser->in_function_body && (inline_p || goto_p)) in cp_parser_asm_definition()
20309 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_asm_definition()
20312 string = cp_parser_string_literal (parser, false, false); in cp_parser_asm_definition()
20315 cp_parser_skip_to_closing_parenthesis (parser, true, false, in cp_parser_asm_definition()
20325 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_asm_definition()
20326 && parser->in_function_body in cp_parser_asm_definition()
20327 && (cp_lexer_next_token_is (parser->lexer, CPP_COLON) in cp_parser_asm_definition()
20328 || cp_lexer_next_token_is (parser->lexer, CPP_SCOPE))) in cp_parser_asm_definition()
20338 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_asm_definition()
20341 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20343 if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20345 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20347 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20351 outputs = cp_parser_asm_operand_list (parser); in cp_parser_asm_definition()
20358 else if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_asm_definition()
20364 || cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_asm_definition()
20367 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20369 if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20371 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20373 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20376 inputs = cp_parser_asm_operand_list (parser); in cp_parser_asm_definition()
20381 else if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_asm_definition()
20387 || cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_asm_definition()
20391 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20393 if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20395 && cp_lexer_next_token_is_not (parser->lexer, in cp_parser_asm_definition()
20397 clobbers = cp_parser_asm_clobber_list (parser); in cp_parser_asm_definition()
20399 else if (goto_p && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_asm_definition()
20405 || (goto_p && cp_lexer_next_token_is (parser->lexer, CPP_COLON))) in cp_parser_asm_definition()
20409 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_definition()
20411 labels = cp_parser_asm_label_list (parser); in cp_parser_asm_definition()
20421 if (!cp_parser_require (parser, missing ? CPP_COLON : CPP_CLOSE_PAREN, in cp_parser_asm_definition()
20423 cp_parser_skip_to_closing_parenthesis (parser, true, false, in cp_parser_asm_definition()
20425 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_asm_definition()
20430 if (parser->in_function_body) in cp_parser_asm_definition()
20534 cp_parser_init_declarator (cp_parser* parser, in cp_parser_init_declarator() argument
20566 bool saved_default_arg_ok_p = parser->default_arg_ok_p; in cp_parser_init_declarator()
20583 parser->default_arg_ok_p = false; in cp_parser_init_declarator()
20590 token = cp_lexer_peek_token (parser->lexer); in cp_parser_init_declarator()
20594 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_init_declarator()
20601 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_init_declarator()
20609 if (!cp_parser_check_declarator_template_parameters (parser, declarator, in cp_parser_init_declarator()
20630 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_init_declarator()
20633 asm_spec_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_init_declarator()
20634 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_init_declarator()
20640 attributes_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_init_declarator()
20641 attributes = cp_parser_attributes_opt (parser); in cp_parser_init_declarator()
20644 token = cp_lexer_peek_token (parser->lexer); in cp_parser_init_declarator()
20658 parser->scope = id->u.id.qualifying_scope; in cp_parser_init_declarator()
20659 tree tmpl = cp_parser_lookup_name_simple (parser, name, id->id_loc); in cp_parser_init_declarator()
20678 cp_parser_error (parser, in cp_parser_init_declarator()
20684 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_init_declarator()
20701 decl = cp_parser_save_member_function_body (parser, in cp_parser_init_declarator()
20708 (parser, decl_specifiers, prefix_attributes, declarator)); in cp_parser_init_declarator()
20720 else if (parser->fully_implicit_function_template_p) in cp_parser_init_declarator()
20731 finish_fully_implicit_template (parser, NULL_TREE); in cp_parser_init_declarator()
20744 cp_parser_error (parser, in cp_parser_init_declarator()
20765 cp_token *t2 = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_init_declarator()
20784 cp_parser_error (parser, "expected initializer"); in cp_parser_init_declarator()
20795 cp_parser_commit_to_tentative_parse (parser); in cp_parser_init_declarator()
20802 if (parser->in_unbraced_linkage_specification_p) in cp_parser_init_declarator()
20807 cp_finalize_omp_declare_simd (parser, decl); in cp_parser_init_declarator()
20808 cp_finalize_oacc_routine (parser, decl, false); in cp_parser_init_declarator()
20858 initializer = cp_parser_pure_specifier (parser); in cp_parser_init_declarator()
20866 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_init_declarator()
20889 initializer = cp_parser_initializer (parser, in cp_parser_init_declarator()
20895 cp_parser_skip_to_end_of_statement (parser); in cp_parser_init_declarator()
20903 if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_init_declarator()
20905 && cp_parser_attributes_opt (parser) in cp_parser_init_declarator()
20937 cp_parser_save_default_args (parser, decl); in cp_parser_init_declarator()
20938 cp_finalize_omp_declare_simd (parser, decl); in cp_parser_init_declarator()
20939 cp_finalize_oacc_routine (parser, decl, false); in cp_parser_init_declarator()
20970 && parser->fully_implicit_function_template_p) in cp_parser_init_declarator()
20973 decl = finish_fully_implicit_template (parser, decl); in cp_parser_init_declarator()
20975 finish_fully_implicit_template (parser, /*member_decl_opt=*/0); in cp_parser_init_declarator()
21031 cp_parser_declarator (cp_parser* parser, in cp_parser_declarator() argument
21049 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_declarator()
21050 gnu_attributes = cp_parser_gnu_attributes_opt (parser); in cp_parser_declarator()
21053 cp_parser_parse_tentatively (parser); in cp_parser_declarator()
21055 code = cp_parser_ptr_operator (parser, in cp_parser_declarator()
21061 if (cp_parser_parse_definitely (parser)) in cp_parser_declarator()
21070 cp_parser_parse_tentatively (parser); in cp_parser_declarator()
21073 declarator = cp_parser_declarator (parser, dcl_kind, in cp_parser_declarator()
21083 && !cp_parser_parse_definitely (parser)) in cp_parser_declarator()
21093 *parenthesized_p = cp_lexer_next_token_is (parser->lexer, in cp_parser_declarator()
21095 declarator = cp_parser_direct_declarator (parser, dcl_kind, in cp_parser_declarator()
21137 cp_parser_direct_declarator (cp_parser* parser, in cp_parser_direct_declarator() argument
21146 bool saved_default_arg_ok_p = parser->default_arg_ok_p; in cp_parser_direct_declarator()
21147 bool saved_in_declarator_p = parser->in_declarator_p; in cp_parser_direct_declarator()
21155 token = cp_lexer_peek_token (parser->lexer); in cp_parser_direct_declarator()
21210 cp_parser_parse_tentatively (parser); in cp_parser_direct_declarator()
21214 parens.consume_open (parser); in cp_parser_direct_declarator()
21219 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
21220 parser->in_declarator_p = true; in cp_parser_direct_declarator()
21231 = cp_parser_parameter_declaration_clause (parser, flags); in cp_parser_direct_declarator()
21234 parens.require_close (parser); in cp_parser_direct_declarator()
21238 if (member_p || cp_parser_parse_definitely (parser)) in cp_parser_direct_declarator()
21249 = parser->local_variables_forbidden_p; in cp_parser_direct_declarator()
21252 parser->local_variables_forbidden_p |= THIS_FORBIDDEN; in cp_parser_direct_declarator()
21261 cv_quals = cp_parser_cv_qualifier_seq_opt (parser); in cp_parser_direct_declarator()
21263 ref_qual = cp_parser_ref_qualifier_opt (parser); in cp_parser_direct_declarator()
21265 tree tx_qual = cp_parser_tx_qualifier_opt (parser); in cp_parser_direct_declarator()
21274 = cp_parser_exception_specification_opt (parser, in cp_parser_direct_declarator()
21278 attrs = cp_parser_std_attribute_spec_seq (parser); in cp_parser_direct_declarator()
21286 (parser, declarator, requires_clause, in cp_parser_direct_declarator()
21290 virt_specifiers = cp_parser_virt_specifier_seq_opt (parser); in cp_parser_direct_declarator()
21307 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
21310 parser->local_variables_forbidden_p in cp_parser_direct_declarator()
21328 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_direct_declarator()
21329 parser->in_declarator_p = saved_in_declarator_p; in cp_parser_direct_declarator()
21334 parens.consume_open (parser); in cp_parser_direct_declarator()
21336 saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_direct_declarator()
21337 parser->in_type_id_in_expr_p = true; in cp_parser_direct_declarator()
21339 = cp_parser_declarator (parser, dcl_kind, flags, in cp_parser_direct_declarator()
21344 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_direct_declarator()
21347 close_paren = cp_lexer_peek_token (parser->lexer); in cp_parser_direct_declarator()
21348 if (!parens.require_close (parser)) in cp_parser_direct_declarator()
21361 && !cp_next_tokens_can_be_attribute_p (parser)) in cp_parser_direct_declarator()
21371 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
21372 parser->in_declarator_p = true; in cp_parser_direct_declarator()
21374 cp_lexer_consume_token (parser->lexer); in cp_parser_direct_declarator()
21376 token = cp_lexer_peek_token (parser->lexer); in cp_parser_direct_declarator()
21383 = cp_parser_constant_expression (parser, in cp_parser_direct_declarator()
21390 else if (!parser->in_function_body in cp_parser_direct_declarator()
21397 cp_parser_error (parser, in cp_parser_direct_declarator()
21412 if (!cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE)) in cp_parser_direct_declarator()
21418 attrs = cp_parser_std_attribute_spec_seq (parser); in cp_parser_direct_declarator()
21437 cp_parser_parse_tentatively (parser); in cp_parser_direct_declarator()
21444 cp_lexer_consume_token (parser->lexer); in cp_parser_direct_declarator()
21450 declarator_id_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_direct_declarator()
21452 = cp_parser_declarator_id (parser, /*optional_p=*/abstract_ok); in cp_parser_direct_declarator()
21453 qualifying_scope = parser->scope; in cp_parser_direct_declarator()
21461 okay = !cp_parser_error_occurred (parser); in cp_parser_direct_declarator()
21467 cp_parser_abort_tentative_parse (parser); in cp_parser_direct_declarator()
21470 okay = cp_parser_parse_definitely (parser); in cp_parser_direct_declarator()
21478 cp_parser_error (parser, "expected unqualified-id"); in cp_parser_direct_declarator()
21493 attrs = cp_parser_std_attribute_spec_seq (parser); in cp_parser_direct_declarator()
21557 cp_parser_error (parser, "invalid declarator"); in cp_parser_direct_declarator()
21636 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_direct_declarator()
21652 = cp_parser_lookup_name_simple (parser, unqualified_name, in cp_parser_direct_declarator()
21676 cp_parser_error (parser, "qualified-id in declaration"); in cp_parser_direct_declarator()
21682 parser->in_declarator_p = true; in cp_parser_direct_declarator()
21687 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_direct_declarator()
21689 parser->default_arg_ok_p = false; in cp_parser_direct_declarator()
21701 cp_parser_error (parser, "expected declarator"); in cp_parser_direct_declarator()
21723 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_direct_declarator()
21724 parser->in_declarator_p = saved_in_declarator_p; in cp_parser_direct_declarator()
21754 cp_parser_ptr_operator (cp_parser* parser, in cp_parser_ptr_operator() argument
21769 token = cp_lexer_peek_token (parser->lexer); in cp_parser_ptr_operator()
21783 cp_lexer_consume_token (parser->lexer); in cp_parser_ptr_operator()
21790 || cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_ptr_operator()
21791 *cv_quals = cp_parser_cv_qualifier_seq_opt (parser); in cp_parser_ptr_operator()
21793 attrs = cp_parser_std_attribute_spec_seq (parser); in cp_parser_ptr_operator()
21800 cp_parser_parse_tentatively (parser); in cp_parser_ptr_operator()
21802 cp_parser_global_scope_opt (parser, in cp_parser_ptr_operator()
21805 token = cp_lexer_peek_token (parser->lexer); in cp_parser_ptr_operator()
21806 cp_parser_nested_name_specifier (parser, in cp_parser_ptr_operator()
21813 if (!cp_parser_error_occurred (parser) in cp_parser_ptr_operator()
21814 && cp_parser_require (parser, CPP_MULT, RT_MULT)) in cp_parser_ptr_operator()
21819 if (TREE_CODE (parser->scope) == NAMESPACE_DECL) in cp_parser_ptr_operator()
21820 error_at (token->location, "%qD is a namespace", parser->scope); in cp_parser_ptr_operator()
21821 else if (TREE_CODE (parser->scope) == ENUMERAL_TYPE) in cp_parser_ptr_operator()
21823 "non-class %q#T", parser->scope); in cp_parser_ptr_operator()
21828 *type = parser->scope; in cp_parser_ptr_operator()
21830 parser->scope = NULL_TREE; in cp_parser_ptr_operator()
21831 parser->qualifying_scope = NULL_TREE; in cp_parser_ptr_operator()
21832 parser->object_scope = NULL_TREE; in cp_parser_ptr_operator()
21834 attrs = cp_parser_std_attribute_spec_seq (parser); in cp_parser_ptr_operator()
21838 *cv_quals = cp_parser_cv_qualifier_seq_opt (parser); in cp_parser_ptr_operator()
21842 if (!cp_parser_parse_definitely (parser)) in cp_parser_ptr_operator()
21843 cp_parser_error (parser, "expected ptr-operator"); in cp_parser_ptr_operator()
21866 cp_parser_cv_qualifier_seq_opt (cp_parser* parser) in cp_parser_cv_qualifier_seq_opt() argument
21876 token = cp_lexer_peek_token (parser->lexer); in cp_parser_cv_qualifier_seq_opt()
21905 cp_lexer_purge_token (parser->lexer); in cp_parser_cv_qualifier_seq_opt()
21909 cp_lexer_consume_token (parser->lexer); in cp_parser_cv_qualifier_seq_opt()
21926 cp_parser_ref_qualifier_opt (cp_parser* parser) in cp_parser_ref_qualifier_opt() argument
21931 if (cxx_dialect < cxx11 && cp_parser_parsing_tentatively (parser)) in cp_parser_ref_qualifier_opt()
21937 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_ref_qualifier_opt()
21959 cp_lexer_purge_token (parser->lexer); in cp_parser_ref_qualifier_opt()
21964 cp_lexer_consume_token (parser->lexer); in cp_parser_ref_qualifier_opt()
21978 cp_parser_tx_qualifier_opt (cp_parser *parser) in cp_parser_tx_qualifier_opt() argument
21980 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_tx_qualifier_opt()
21992 cp_lexer_consume_token (parser->lexer); in cp_parser_tx_qualifier_opt()
22018 cp_parser_virt_specifier_seq_opt (cp_parser* parser) in cp_parser_virt_specifier_seq_opt() argument
22028 token = cp_lexer_peek_token (parser->lexer); in cp_parser_virt_specifier_seq_opt()
22054 cp_lexer_purge_token (parser->lexer); in cp_parser_virt_specifier_seq_opt()
22058 cp_lexer_consume_token (parser->lexer); in cp_parser_virt_specifier_seq_opt()
22121 cp_parser_late_return_type_opt (cp_parser* parser, cp_declarator *declarator, in cp_parser_late_return_type_opt() argument
22126 bool declare_simd_p = (parser->omp_declare_simd in cp_parser_late_return_type_opt()
22130 bool oacc_routine_p = (parser->oacc_routine in cp_parser_late_return_type_opt()
22135 token = cp_lexer_peek_token (parser->lexer); in cp_parser_late_return_type_opt()
22155 cp_lexer_consume_token (parser->lexer); in cp_parser_late_return_type_opt()
22157 type = cp_parser_trailing_type_id (parser); in cp_parser_late_return_type_opt()
22162 requires_clause = cp_parser_requires_clause_opt (parser, false); in cp_parser_late_return_type_opt()
22166 = cp_parser_late_parsing_omp_declare_simd (parser, in cp_parser_late_return_type_opt()
22170 = cp_parser_late_parsing_oacc_routine (parser, in cp_parser_late_return_type_opt()
22196 cp_parser_declarator_id (cp_parser* parser, bool optional_p) in cp_parser_declarator_id() argument
22213 id = cp_parser_id_expression (parser, in cp_parser_declarator_id()
22239 cp_parser_type_id_1 (cp_parser *parser, cp_parser_flags flags, in cp_parser_type_id_1() argument
22247 cp_parser_type_specifier_seq (parser, flags, in cp_parser_type_id_1()
22260 gcc_assert (cp_parser_uncommitted_to_tentative_parse_p (parser)); in cp_parser_type_id_1()
22261 cp_parser_simulate_error (parser); in cp_parser_type_id_1()
22268 cp_parser_parse_tentatively (parser); in cp_parser_type_id_1()
22271 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_ABSTRACT, in cp_parser_type_id_1()
22278 if (!cp_parser_parse_definitely (parser)) in cp_parser_type_id_1()
22283 && (!flag_concepts || parser->in_type_id_in_expr_p) in cp_parser_type_id_1()
22298 else if (parser->in_result_type_constraint_p) in cp_parser_type_id_1()
22323 cp_parser_type_id (cp_parser *parser, cp_parser_flags flags, in cp_parser_type_id() argument
22326 return cp_parser_type_id_1 (parser, flags, false, false, type_location); in cp_parser_type_id()
22332 cp_parser_template_type_arg (cp_parser *parser) in cp_parser_template_type_arg() argument
22335 const char *saved_message = parser->type_definition_forbidden_message; in cp_parser_template_type_arg()
22336 parser->type_definition_forbidden_message in cp_parser_template_type_arg()
22338 r = cp_parser_type_id_1 (parser, CP_PARSER_FLAGS_NONE, true, false, NULL); in cp_parser_template_type_arg()
22339 parser->type_definition_forbidden_message = saved_message; in cp_parser_template_type_arg()
22351 cp_parser_trailing_type_id (cp_parser *parser) in cp_parser_trailing_type_id() argument
22353 return cp_parser_type_id_1 (parser, CP_PARSER_FLAGS_TYPENAME_OPTIONAL, in cp_parser_trailing_type_id()
22378 cp_parser_type_specifier_seq (cp_parser* parser, in cp_parser_type_specifier_seq() argument
22404 if (cp_next_tokens_can_be_attribute_p (parser)) in cp_parser_type_specifier_seq()
22410 && cp_next_tokens_can_be_gnu_attribute_p (parser)) in cp_parser_type_specifier_seq()
22412 size_t n = cp_parser_skip_attributes_opt (parser, 1); in cp_parser_type_specifier_seq()
22413 cp_token *tok = cp_lexer_peek_nth_token (parser->lexer, n); in cp_parser_type_specifier_seq()
22420 cp_parser_attributes_opt (parser)); in cp_parser_type_specifier_seq()
22427 start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_type_specifier_seq()
22430 type_specifier = cp_parser_type_specifier (parser, in cp_parser_type_specifier_seq()
22443 int in_decl = parser->in_declarator_p; in cp_parser_type_specifier_seq()
22444 parser->in_declarator_p = true; in cp_parser_type_specifier_seq()
22446 if (cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_type_specifier_seq()
22447 || !cp_parser_parse_and_diagnose_invalid_type_name (parser)) in cp_parser_type_specifier_seq()
22448 cp_parser_error (parser, "expected type-specifier"); in cp_parser_type_specifier_seq()
22450 parser->in_declarator_p = in_decl; in cp_parser_type_specifier_seq()
22486 function_being_declared_is_template_p (cp_parser* parser) in function_being_declared_is_template_p() argument
22491 if (parser->implicit_template_scope) in function_being_declared_is_template_p()
22496 return parser->num_template_parameter_lists != 0; in function_being_declared_is_template_p()
22498 return ((int) parser->num_template_parameter_lists > template_class_depth in function_being_declared_is_template_p()
22515 cp_parser_parameter_declaration_clause (cp_parser* parser, in cp_parser_parameter_declaration_clause() argument
22523 (parser->auto_is_implicit_function_template_parm_p); in cp_parser_parameter_declaration_clause()
22530 && parser->default_arg_ok_p) in cp_parser_parameter_declaration_clause()
22533 parser->auto_is_implicit_function_template_parm_p = true; in cp_parser_parameter_declaration_clause()
22536 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration_clause()
22541 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
22549 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_parameter_declaration_clause()
22553 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
22559 parameters = cp_parser_parameter_declaration_list (parser, flags); in cp_parser_parameter_declaration_clause()
22567 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration_clause()
22572 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
22575 = (cp_parser_require (parser, CPP_ELLIPSIS, RT_ELLIPSIS) != NULL); in cp_parser_parameter_declaration_clause()
22582 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_clause()
22609 cp_parser_parameter_declaration_list (cp_parser* parser, cp_parser_flags flags) in cp_parser_parameter_declaration_list() argument
22620 = parser->in_unbraced_linkage_specification_p; in cp_parser_parameter_declaration_list()
22621 parser->in_unbraced_linkage_specification_p = false; in cp_parser_parameter_declaration_list()
22632 = cp_parser_parameter_declaration (parser, flags, in cp_parser_parameter_declaration_list()
22680 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN) in cp_parser_parameter_declaration_list()
22681 || cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS) in cp_parser_parameter_declaration_list()
22683 || cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON) in cp_parser_parameter_declaration_list()
22684 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_parameter_declaration_list()
22687 else if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_parameter_declaration_list()
22692 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_parameter_declaration_list()
22698 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration_list()
22711 if (!parser->in_template_argument_list_p in cp_parser_parameter_declaration_list()
22712 && !parser->in_type_id_in_expr_p in cp_parser_parameter_declaration_list()
22713 && cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_parameter_declaration_list()
22719 cp_parser_commit_to_tentative_parse (parser); in cp_parser_parameter_declaration_list()
22723 cp_parser_error (parser, "expected %<,%> or %<...%>"); in cp_parser_parameter_declaration_list()
22724 if (!cp_parser_uncommitted_to_tentative_parse_p (parser)) in cp_parser_parameter_declaration_list()
22725 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_parameter_declaration_list()
22733 parser->in_unbraced_linkage_specification_p in cp_parser_parameter_declaration_list()
22741 if (cp_binding_level *its = parser->implicit_template_scope) in cp_parser_parameter_declaration_list()
22748 parser->implicit_template_parms = 0; in cp_parser_parameter_declaration_list()
22749 parser->implicit_template_scope = 0; in cp_parser_parameter_declaration_list()
22776 cp_parser_parameter_declaration (cp_parser *parser, in cp_parser_parameter_declaration() argument
22799 saved_message = parser->type_definition_forbidden_message; in cp_parser_parameter_declaration()
22800 parser->type_definition_forbidden_message in cp_parser_parameter_declaration()
22803 int template_parm_idx = (function_being_declared_is_template_p (parser) ? in cp_parser_parameter_declaration()
22808 cp_token *decl_spec_token_start = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration()
22809 cp_parser_decl_specifier_seq (parser, in cp_parser_parameter_declaration()
22816 && cp_parser_parse_and_diagnose_invalid_type_name (parser)) in cp_parser_parameter_declaration()
22821 if (cp_parser_error_occurred (parser)) in cp_parser_parameter_declaration()
22823 parser->type_definition_forbidden_message = saved_message; in cp_parser_parameter_declaration()
22828 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration()
22845 bool saved_default_arg_ok_p = parser->default_arg_ok_p; in cp_parser_parameter_declaration()
22846 parser->default_arg_ok_p = false; in cp_parser_parameter_declaration()
22852 if (!parser->in_template_argument_list_p in cp_parser_parameter_declaration()
22860 && !parser->in_type_id_in_expr_p in cp_parser_parameter_declaration()
22861 && cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_parameter_declaration()
22862 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE) in cp_parser_parameter_declaration()
22863 && cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_parameter_declaration()
22864 cp_parser_commit_to_tentative_parse (parser); in cp_parser_parameter_declaration()
22867 declarator = cp_parser_declarator (parser, in cp_parser_parameter_declaration()
22875 parser->default_arg_ok_p = saved_default_arg_ok_p; in cp_parser_parameter_declaration()
22879 cp_parser_attributes_opt (parser)); in cp_parser_parameter_declaration()
22897 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration()
22902 if (parser->implicit_template_parms in cp_parser_parameter_declaration()
22916 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_parameter_declaration()
22930 cp_lexer_consume_token (parser->lexer); in cp_parser_parameter_declaration()
22945 parser->type_definition_forbidden_message = saved_message; in cp_parser_parameter_declaration()
22948 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_parameter_declaration()
22951 token = cp_lexer_peek_token (parser->lexer); in cp_parser_parameter_declaration()
22957 default_argument = cp_parser_cache_defarg (parser, /*nsdmi=*/false); in cp_parser_parameter_declaration()
22963 = cp_parser_default_type_template_argument (parser); in cp_parser_parameter_declaration()
22969 = cp_parser_default_template_template_argument (parser); in cp_parser_parameter_declaration()
22975 = cp_parser_default_argument (parser, template_parm_p); in cp_parser_parameter_declaration()
22977 if (!parser->default_arg_ok_p) in cp_parser_parameter_declaration()
23053 cp_parser_default_argument (cp_parser *parser, bool template_parm_p) in cp_parser_default_argument() argument
23062 saved_greater_than_is_operator_p = parser->greater_than_is_operator_p; in cp_parser_default_argument()
23063 parser->greater_than_is_operator_p = !template_parm_p; in cp_parser_default_argument()
23066 saved_local_variables_forbidden_p = parser->local_variables_forbidden_p; in cp_parser_default_argument()
23067 parser->local_variables_forbidden_p = LOCAL_VARS_AND_THIS_FORBIDDEN; in cp_parser_default_argument()
23082 = cp_parser_initializer (parser, &is_direct_init, &non_constant_p); in cp_parser_default_argument()
23093 parser->greater_than_is_operator_p = saved_greater_than_is_operator_p; in cp_parser_default_argument()
23094 parser->local_variables_forbidden_p = saved_local_variables_forbidden_p; in cp_parser_default_argument()
23105 cp_parser_function_body (cp_parser *parser, bool in_function_try_block) in cp_parser_function_body() argument
23107 cp_parser_compound_statement (parser, NULL, (in_function_try_block in cp_parser_function_body()
23117 cp_parser_ctor_initializer_opt_and_function_body (cp_parser *parser, in cp_parser_ctor_initializer_opt_and_function_body() argument
23143 cp_parser_ctor_initializer_opt (parser); in cp_parser_ctor_initializer_opt_and_function_body()
23158 cp_parser_function_body (parser, in_function_try_block); in cp_parser_ctor_initializer_opt_and_function_body()
23181 cp_parser_initializer (cp_parser* parser, bool* is_direct_init, in cp_parser_initializer() argument
23188 token = cp_lexer_peek_token (parser->lexer); in cp_parser_initializer()
23199 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer()
23201 init = cp_parser_initializer_clause (parser, non_constant_p); in cp_parser_initializer()
23206 vec = cp_parser_parenthesized_expression_list (parser, non_attr, in cp_parser_initializer()
23217 cp_lexer_set_source_position (parser->lexer); in cp_parser_initializer()
23219 init = cp_parser_braced_list (parser, non_constant_p); in cp_parser_initializer()
23225 cp_parser_error (parser, "expected initializer"); in cp_parser_initializer()
23249 cp_parser_initializer_clause (cp_parser* parser, bool* non_constant_p) in cp_parser_initializer_clause() argument
23258 if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_initializer_clause()
23261 = cp_parser_constant_expression (parser, in cp_parser_initializer_clause()
23266 initializer = cp_parser_braced_list (parser, non_constant_p); in cp_parser_initializer_clause()
23286 cp_parser_braced_list (cp_parser* parser, bool* non_constant_p) in cp_parser_braced_list() argument
23289 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_braced_list()
23293 braces.require_open (parser); in cp_parser_braced_list()
23297 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_braced_list()
23302 = cp_parser_initializer_list (parser, non_constant_p, &designated); in cp_parser_braced_list()
23305 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_braced_list()
23306 cp_lexer_consume_token (parser->lexer); in cp_parser_braced_list()
23311 location_t finish_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_braced_list()
23312 braces.require_close (parser); in cp_parser_braced_list()
23329 cp_parser_skip_to_closing_square_bracket (cp_parser *parser) in cp_parser_skip_to_closing_square_bracket() argument
23335 cp_token * token = cp_lexer_peek_token (parser->lexer); in cp_parser_skip_to_closing_square_bracket()
23340 if (!parser->lexer->in_pragma) in cp_parser_skip_to_closing_square_bracket()
23354 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_square_bracket()
23364 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_closing_square_bracket()
23371 cp_parser_array_designator_p (cp_parser *parser) in cp_parser_array_designator_p() argument
23374 cp_lexer_consume_token (parser->lexer); in cp_parser_array_designator_p()
23376 cp_lexer_save_tokens (parser->lexer); in cp_parser_array_designator_p()
23382 = (cp_parser_skip_to_closing_square_bracket (parser) in cp_parser_array_designator_p()
23383 && cp_lexer_next_token_is (parser->lexer, CPP_EQ)); in cp_parser_array_designator_p()
23386 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_array_designator_p()
23427 cp_parser_initializer_list (cp_parser* parser, bool* non_constant_p, in cp_parser_initializer_list() argument
23447 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_initializer_list()
23451 || cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_initializer_list()
23452 && cp_lexer_next_token_is (parser->lexer, CPP_DOT) in cp_parser_initializer_list()
23453 && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_NAME in cp_parser_initializer_list()
23454 && (cp_lexer_peek_nth_token (parser->lexer, 3)->type == CPP_EQ in cp_parser_initializer_list()
23455 || (cp_lexer_peek_nth_token (parser->lexer, 3)->type in cp_parser_initializer_list()
23463 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer_list()
23465 designator = cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_initializer_list()
23466 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_initializer_list()
23468 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer_list()
23473 else if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_initializer_list()
23474 && cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_initializer_list()
23475 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_initializer_list()
23482 designator = cp_lexer_consume_token (parser->lexer)->u.value; in cp_parser_initializer_list()
23484 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer_list()
23487 else if (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_initializer_list()
23489 && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_initializer_list()
23494 cp_parser_parse_tentatively (parser); in cp_parser_initializer_list()
23496 if (!cp_parser_array_designator_p (parser)) in cp_parser_initializer_list()
23498 cp_parser_simulate_error (parser); in cp_parser_initializer_list()
23503 designator = cp_parser_constant_expression (parser, true, in cp_parser_initializer_list()
23505 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_initializer_list()
23506 cp_parser_require (parser, CPP_EQ, RT_EQ); in cp_parser_initializer_list()
23509 if (!cp_parser_parse_definitely (parser)) in cp_parser_initializer_list()
23540 initializer = cp_parser_initializer_clause (parser, in cp_parser_initializer_list()
23548 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_initializer_list()
23550 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_initializer_list()
23553 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer_list()
23568 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_initializer_list()
23572 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_initializer_list()
23593 cp_lexer_consume_token (parser->lexer); in cp_parser_initializer_list()
23648 cp_parser_class_name (cp_parser *parser, in cp_parser_class_name() argument
23664 token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_name()
23667 cp_parser_error (parser, "expected class-name"); in cp_parser_class_name()
23673 scope = parser->scope; in cp_parser_class_name()
23684 && !cp_parser_nth_token_starts_template_argument_list_p (parser, 2)) in cp_parser_class_name()
23690 identifier_token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_name()
23692 identifier = cp_parser_identifier (parser); in cp_parser_class_name()
23709 cp_parser_simulate_error (parser); in cp_parser_class_name()
23720 if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_class_name()
23723 decl = cp_parser_lookup_name (parser, identifier, in cp_parser_class_name()
23732 if (cp_parser_parsing_tentatively (parser)) in cp_parser_class_name()
23733 cp_parser_simulate_error (parser); in cp_parser_class_name()
23741 decl = cp_parser_template_id (parser, template_keyword_p, in cp_parser_class_name()
23767 && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) in cp_parser_class_name()
23790 && cp_lexer_peek_token (parser->lexer)->type == CPP_DOT in cp_parser_class_name()
23795 cp_parser_error (parser, "expected class-name"); in cp_parser_class_name()
23796 else if (identifier && !parser->scope) in cp_parser_class_name()
23838 cp_parser_class_specifier_1 (cp_parser* parser) in cp_parser_class_specifier_1() argument
23855 type = cp_parser_class_head (parser, in cp_parser_class_specifier_1()
23861 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_class_specifier_1()
23868 if (!braces.require_open (parser)) in cp_parser_class_specifier_1()
23874 cp_ensure_no_omp_declare_simd (parser); in cp_parser_class_specifier_1()
23875 cp_ensure_no_oacc_routine (parser); in cp_parser_class_specifier_1()
23878 bool type_definition_ok_p = cp_parser_check_type_definition (parser); in cp_parser_class_specifier_1()
23880 ++parser->num_classes_being_defined; in cp_parser_class_specifier_1()
23884 = parser->num_template_parameter_lists; in cp_parser_class_specifier_1()
23885 parser->num_template_parameter_lists = 0; in cp_parser_class_specifier_1()
23887 saved_in_function_body = parser->in_function_body; in cp_parser_class_specifier_1()
23888 parser->in_function_body = false; in cp_parser_class_specifier_1()
23890 in_statement = parser->in_statement; in cp_parser_class_specifier_1()
23891 parser->in_statement = 0; in cp_parser_class_specifier_1()
23893 in_switch_statement_p = parser->in_switch_statement_p; in cp_parser_class_specifier_1()
23894 parser->in_switch_statement_p = false; in cp_parser_class_specifier_1()
23897 = parser->in_unbraced_linkage_specification_p; in cp_parser_class_specifier_1()
23898 parser->in_unbraced_linkage_specification_p = false; in cp_parser_class_specifier_1()
23910 cp_parser_skip_to_closing_brace (parser); in cp_parser_class_specifier_1()
23913 cp_parser_member_specification_opt (parser); in cp_parser_class_specifier_1()
23916 closing_brace = braces.require_close (parser); in cp_parser_class_specifier_1()
23918 if (cp_parser_allow_gnu_extensions_p (parser)) in cp_parser_class_specifier_1()
23919 attributes = cp_parser_gnu_attributes_opt (parser); in cp_parser_class_specifier_1()
23937 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_specifier_1()
23940 if (cp_next_tokens_can_be_std_attribute_p (parser)) in cp_parser_class_specifier_1()
23983 cp_token *lookahead = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_class_specifier_1()
24003 = cp_lexer_previous_token_position (parser->lexer); in cp_parser_class_specifier_1()
24004 cp_token *prev_token = cp_lexer_token_at (parser->lexer, prev); in cp_parser_class_specifier_1()
24033 cp_lexer_set_token_position (parser->lexer, prev); in cp_parser_class_specifier_1()
24034 token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_specifier_1()
24060 if (--parser->num_classes_being_defined == 0) in cp_parser_class_specifier_1()
24103 cp_parser_late_parsing_default_args (parser, decl); in cp_parser_class_specifier_1()
24134 = parser->local_variables_forbidden_p; in cp_parser_class_specifier_1()
24136 parser->local_variables_forbidden_p |= THIS_FORBIDDEN; in cp_parser_class_specifier_1()
24139 spec = cp_parser_late_noexcept_specifier (parser, spec, decl); in cp_parser_class_specifier_1()
24145 parser->local_variables_forbidden_p = local_variables_forbidden_p; in cp_parser_class_specifier_1()
24173 cp_parser_late_parsing_nsdmi (parser, decl); in cp_parser_class_specifier_1()
24187 cp_parser_late_parsing_for_member (parser, decl); in cp_parser_class_specifier_1()
24190 cp_parser_late_parsing_for_member (parser, decl); in cp_parser_class_specifier_1()
24194 cp_parser_late_parsing_for_member (parser, decl); in cp_parser_class_specifier_1()
24202 parser->in_switch_statement_p = in_switch_statement_p; in cp_parser_class_specifier_1()
24203 parser->in_statement = in_statement; in cp_parser_class_specifier_1()
24204 parser->in_function_body = saved_in_function_body; in cp_parser_class_specifier_1()
24205 parser->num_template_parameter_lists in cp_parser_class_specifier_1()
24207 parser->in_unbraced_linkage_specification_p in cp_parser_class_specifier_1()
24214 cp_parser_class_specifier (cp_parser* parser) in cp_parser_class_specifier() argument
24218 ret = cp_parser_class_specifier_1 (parser); in cp_parser_class_specifier()
24255 cp_parser_class_head (cp_parser* parser, in cp_parser_class_head() argument
24269 bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_class_head()
24278 parser->colon_corrects_to_scope_p = false; in cp_parser_class_head()
24281 class_key = cp_parser_class_key (parser); in cp_parser_class_head()
24288 attributes = cp_parser_attributes_opt (parser); in cp_parser_class_head()
24299 if (cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false)) in cp_parser_class_head()
24306 nested_name_specifier_token_start = cp_lexer_peek_token (parser->lexer); in cp_parser_class_head()
24308 = cp_parser_nested_name_specifier_opt (parser, in cp_parser_class_head()
24320 type_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_head()
24338 cp_parser_parse_tentatively (parser); in cp_parser_class_head()
24339 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_class_head()
24340 bad_template_keyword = cp_lexer_consume_token (parser->lexer); in cp_parser_class_head()
24341 type = cp_parser_class_name (parser, in cp_parser_class_head()
24349 if (!cp_parser_parse_definitely (parser)) in cp_parser_class_head()
24352 type_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_head()
24353 id = cp_parser_identifier (parser); in cp_parser_class_head()
24371 cp_parser_parse_tentatively (parser); in cp_parser_class_head()
24373 type_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_head()
24374 id = cp_parser_template_id (parser, in cp_parser_class_head()
24380 if (!cp_parser_parse_definitely (parser)) in cp_parser_class_head()
24382 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_class_head()
24384 type_start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_class_head()
24385 id = cp_parser_identifier (parser); in cp_parser_class_head()
24401 cp_parser_check_for_invalid_template_id (parser, id, in cp_parser_class_head()
24405 virt_specifiers = cp_parser_virt_specifier_seq_opt (parser); in cp_parser_class_head()
24411 if (!cp_parser_next_token_starts_class_definition_p (parser)) in cp_parser_class_head()
24413 cp_parser_error (parser, "expected %<{%> or %<:%>"); in cp_parser_class_head()
24420 cp_parser_commit_to_tentative_parse (parser); in cp_parser_class_head()
24423 cp_parser_error (parser, in cp_parser_class_head()
24431 cp_parser_error (parser, in cp_parser_class_head()
24438 cp_parser_error (parser, in cp_parser_class_head()
24494 && parser->num_template_parameter_lists == 0 in cp_parser_class_head()
24516 ++parser->num_template_parameter_lists; in cp_parser_class_head()
24524 if (!cp_parser_check_template_parameters (parser, num_templates, in cp_parser_class_head()
24579 cp_parser_error (parser, "could not resolve typename type"); in cp_parser_class_head()
24619 tag_scope tag_scope = (parser->in_type_id_in_expr_p in cp_parser_class_head()
24623 parser->num_template_parameter_lists); in cp_parser_class_head()
24627 cp_parser_check_class_key (parser, UNKNOWN_LOCATION, class_key, type, in cp_parser_class_head()
24673 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_class_head()
24679 bases = cp_parser_base_clause (parser); in cp_parser_class_head()
24690 if (type && cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_class_head()
24702 --parser->num_template_parameter_lists; in cp_parser_class_head()
24710 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_class_head()
24725 cp_parser_class_key (cp_parser* parser) in cp_parser_class_key() argument
24731 token = cp_parser_require (parser, CPP_KEYWORD, RT_CLASS_KEY); in cp_parser_class_key()
24738 cp_parser_error (parser, "expected class-key"); in cp_parser_class_key()
24750 cp_parser_type_parameter_key (cp_parser* parser) in cp_parser_type_parameter_key() argument
24754 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_type_parameter_key()
24757 cp_lexer_consume_token (parser->lexer); in cp_parser_type_parameter_key()
24766 cp_parser_error (parser, "expected %<class%> or %<typename%>"); in cp_parser_type_parameter_key()
24778 cp_parser_member_specification_opt (cp_parser* parser) in cp_parser_member_specification_opt() argument
24786 token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_specification_opt()
24801 cp_lexer_consume_token (parser->lexer); in cp_parser_member_specification_opt()
24805 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_member_specification_opt()
24812 cp_parser_pragma (parser, pragma_member, NULL); in cp_parser_member_specification_opt()
24818 cp_parser_member_declaration (parser); in cp_parser_member_specification_opt()
24858 cp_parser_member_declaration (cp_parser* parser) in cp_parser_member_declaration() argument
24869 bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_member_declaration()
24872 if (cp_parser_extension_opt (parser, &saved_pedantic)) in cp_parser_member_declaration()
24875 cp_parser_member_declaration (parser); in cp_parser_member_declaration()
24883 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_member_declaration()
24887 if (cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_LESS in cp_parser_member_declaration()
24888 && cp_lexer_peek_nth_token (parser->lexer, 3)->type == CPP_GREATER) in cp_parser_member_declaration()
24889 cp_parser_explicit_specialization (parser); in cp_parser_member_declaration()
24891 cp_parser_template_declaration (parser, /*member_p=*/true); in cp_parser_member_declaration()
24896 else if (cp_parser_template_declaration_after_export (parser, true)) in cp_parser_member_declaration()
24900 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_USING)) in cp_parser_member_declaration()
24905 cp_parser_using_declaration (parser, in cp_parser_member_declaration()
24913 cp_parser_parse_tentatively (parser); in cp_parser_member_declaration()
24914 decl = cp_parser_alias_declaration (parser); in cp_parser_member_declaration()
24921 !cp_parser_uncommitted_to_tentative_parse_p (parser); in cp_parser_member_declaration()
24922 cp_parser_parse_definitely (parser); in cp_parser_member_declaration()
24927 cp_parser_using_declaration (parser, in cp_parser_member_declaration()
24934 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AT_DEFS)) in cp_parser_member_declaration()
24937 tree ivar_chains = cp_parser_objc_defs_expression (parser); in cp_parser_member_declaration()
24950 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_STATIC_ASSERT)) in cp_parser_member_declaration()
24952 cp_parser_static_assert (parser, /*member_p=*/true); in cp_parser_member_declaration()
24956 parser->colon_corrects_to_scope_p = false; in cp_parser_member_declaration()
24958 if (cp_parser_using_declaration (parser, /*access_declaration=*/true)) in cp_parser_member_declaration()
24962 decl_spec_token_start = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
24963 cp_parser_decl_specifier_seq (parser, in cp_parser_member_declaration()
24970 && cp_parser_parse_and_diagnose_invalid_type_name (parser)) in cp_parser_member_declaration()
24974 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_member_declaration()
24987 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
25082 while (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_member_declaration()
25090 token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
25096 if (cp_next_tokens_can_be_attribute_p (parser) in cp_parser_member_declaration()
25098 && cp_nth_tokens_can_be_attribute_p (parser, 2) in cp_parser_member_declaration()
25102 = cp_parser_skip_attributes_opt (parser, 1 + named_bitfld); in cp_parser_member_declaration()
25103 token = cp_lexer_peek_nth_token (parser->lexer, n); in cp_parser_member_declaration()
25109 && token == cp_lexer_peek_token (parser->lexer) in cp_parser_member_declaration()
25110 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_COLON) in cp_parser_member_declaration()
25117 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_member_declaration()
25120 identifier = cp_parser_identifier (parser); in cp_parser_member_declaration()
25125 attributes = cp_parser_attributes_opt (parser); in cp_parser_member_declaration()
25128 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
25131 width = cp_parser_constant_expression (parser, false, NULL, in cp_parser_member_declaration()
25138 && (cp_lexer_next_token_is (parser->lexer, CPP_EQ) in cp_parser_member_declaration()
25139 || cp_lexer_next_token_is (parser->lexer, in cp_parser_member_declaration()
25143 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_member_declaration()
25151 initializer = cp_parser_save_nsdmi (parser); in cp_parser_member_declaration()
25165 if (cp_next_tokens_can_be_std_attribute_p (parser)) in cp_parser_member_declaration()
25170 late_attributes = cp_parser_attributes_opt (parser); in cp_parser_member_declaration()
25205 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_member_declaration()
25217 cp_parser_skip_to_end_of_statement (parser); in cp_parser_member_declaration()
25223 if (cp_lexer_next_token_is (parser->lexer, in cp_parser_member_declaration()
25225 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
25235 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_member_declaration()
25237 attributes = cp_parser_attributes_opt (parser); in cp_parser_member_declaration()
25251 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_member_declaration()
25266 initializer_token_start = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
25273 initializer = cp_parser_pure_specifier (parser); in cp_parser_member_declaration()
25275 initializer = cp_parser_save_nsdmi (parser); in cp_parser_member_declaration()
25282 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
25284 initializer = cp_parser_initializer_clause (parser, in cp_parser_member_declaration()
25289 initializer = cp_parser_constant_initializer (parser); in cp_parser_member_declaration()
25291 else if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE) in cp_parser_member_declaration()
25296 initializer = cp_parser_save_nsdmi (parser); in cp_parser_member_declaration()
25298 initializer = cp_parser_initializer (parser, &x, &x); in cp_parser_member_declaration()
25306 else if (cp_lexer_next_token_is (parser->lexer, CPP_COLON) in cp_parser_member_declaration()
25319 cp_parser_skip_to_end_of_statement (parser); in cp_parser_member_declaration()
25321 if (cp_lexer_next_token_is (parser->lexer, in cp_parser_member_declaration()
25323 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
25336 (cp_lexer_peek_token (parser->lexer))) in cp_parser_member_declaration()
25346 decl = cp_parser_save_member_function_body (parser, in cp_parser_member_declaration()
25350 if (parser->fully_implicit_function_template_p) in cp_parser_member_declaration()
25351 decl = finish_fully_implicit_template (parser, decl); in cp_parser_member_declaration()
25356 token = cp_lexer_peek_token (parser->lexer); in cp_parser_member_declaration()
25361 = cp_lexer_consume_token (parser->lexer)->location; in cp_parser_member_declaration()
25377 if (parser->fully_implicit_function_template_p) in cp_parser_member_declaration()
25380 finish_fully_implicit_template (parser, 0); in cp_parser_member_declaration()
25382 decl = finish_fully_implicit_template (parser, decl); in cp_parser_member_declaration()
25386 cp_finalize_omp_declare_simd (parser, decl); in cp_parser_member_declaration()
25387 cp_finalize_oacc_routine (parser, decl, false); in cp_parser_member_declaration()
25400 parser->scope = NULL_TREE; in cp_parser_member_declaration()
25401 parser->qualifying_scope = NULL_TREE; in cp_parser_member_declaration()
25402 parser->object_scope = NULL_TREE; in cp_parser_member_declaration()
25404 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_member_declaration()
25406 cp_lexer_consume_token (parser->lexer); in cp_parser_member_declaration()
25407 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_member_declaration()
25409 cp_token *token = cp_lexer_previous_token (parser->lexer); in cp_parser_member_declaration()
25417 else if (cp_lexer_next_token_is_not (parser->lexer, in cp_parser_member_declaration()
25423 cp_token *token = cp_lexer_previous_token (parser->lexer); in cp_parser_member_declaration()
25446 cp_parser_save_default_args (parser, STRIP_TEMPLATE (decl)); in cp_parser_member_declaration()
25458 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_member_declaration()
25460 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_member_declaration()
25472 cp_parser_pure_specifier (cp_parser* parser) in cp_parser_pure_specifier() argument
25477 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_pure_specifier()
25480 token = cp_lexer_peek_token (parser->lexer); in cp_parser_pure_specifier()
25486 cp_lexer_consume_token (parser->lexer); in cp_parser_pure_specifier()
25499 cp_parser_error (parser, in cp_parser_pure_specifier()
25501 cp_parser_skip_to_end_of_statement (parser); in cp_parser_pure_specifier()
25521 cp_parser_constant_initializer (cp_parser* parser) in cp_parser_constant_initializer() argument
25524 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_constant_initializer()
25532 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_constant_initializer()
25534 cp_parser_error (parser, in cp_parser_constant_initializer()
25538 braces.consume_open (parser); in cp_parser_constant_initializer()
25540 cp_parser_skip_to_closing_brace (parser); in cp_parser_constant_initializer()
25542 braces.require_close (parser); in cp_parser_constant_initializer()
25547 return cp_parser_constant_expression (parser); in cp_parser_constant_initializer()
25569 cp_parser_base_clause (cp_parser* parser) in cp_parser_base_clause() argument
25574 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_base_clause()
25584 base = cp_parser_base_specifier (parser); in cp_parser_base_clause()
25586 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_base_clause()
25589 cp_lexer_consume_token (parser->lexer); in cp_parser_base_clause()
25608 token = cp_lexer_peek_token (parser->lexer); in cp_parser_base_clause()
25613 cp_lexer_consume_token (parser->lexer); in cp_parser_base_clause()
25619 parser->scope = NULL_TREE; in cp_parser_base_clause()
25620 parser->qualifying_scope = NULL_TREE; in cp_parser_base_clause()
25621 parser->object_scope = NULL_TREE; in cp_parser_base_clause()
25641 cp_parser_base_specifier (cp_parser* parser) in cp_parser_base_specifier() argument
25656 token = cp_lexer_peek_token (parser->lexer); in cp_parser_base_specifier()
25664 cp_parser_error (parser, in cp_parser_base_specifier()
25672 cp_lexer_consume_token (parser->lexer); in cp_parser_base_specifier()
25684 cp_parser_error (parser, in cp_parser_base_specifier()
25692 cp_lexer_consume_token (parser->lexer); in cp_parser_base_specifier()
25704 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TYPENAME)) in cp_parser_base_specifier()
25706 token = cp_lexer_peek_token (parser->lexer); in cp_parser_base_specifier()
25714 cp_lexer_consume_token (parser->lexer); in cp_parser_base_specifier()
25718 cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false); in cp_parser_base_specifier()
25731 cp_parser_nested_name_specifier_opt (parser, in cp_parser_base_specifier()
25738 class_scope_p = (parser->scope && TYPE_P (parser->scope)); in cp_parser_base_specifier()
25739 template_p = class_scope_p && cp_parser_optional_template_keyword (parser); in cp_parser_base_specifier()
25741 if (!parser->scope in cp_parser_base_specifier()
25742 && cp_lexer_next_token_is_decltype (parser->lexer)) in cp_parser_base_specifier()
25744 type = cp_parser_decltype (parser); in cp_parser_base_specifier()
25748 type = cp_parser_class_name (parser, in cp_parser_base_specifier()
25770 cp_parser_save_noexcept (cp_parser *parser) in cp_parser_save_noexcept() argument
25772 cp_token *first = parser->lexer->next_token; in cp_parser_save_noexcept()
25774 cp_parser_cache_group (parser, CPP_CLOSE_PAREN, /*depth=*/0); in cp_parser_save_noexcept()
25775 cp_token *last = parser->lexer->next_token; in cp_parser_save_noexcept()
25793 cp_parser_late_noexcept_specifier (cp_parser *parser, tree default_arg, in cp_parser_late_noexcept_specifier() argument
25799 push_unparsed_function_queues (parser); in cp_parser_late_noexcept_specifier()
25804 cp_parser_push_lexer_for_tokens (parser, tokens); in cp_parser_late_noexcept_specifier()
25811 = cp_parser_noexcept_specification_opt (parser, in cp_parser_late_noexcept_specifier()
25818 cp_parser_pop_lexer (parser); in cp_parser_late_noexcept_specifier()
25821 pop_unparsed_function_queues (parser); in cp_parser_late_noexcept_specifier()
25869 cp_parser_noexcept_specification_opt (cp_parser* parser, in cp_parser_noexcept_specification_opt() argument
25880 token = cp_lexer_peek_token (parser->lexer); in cp_parser_noexcept_specification_opt()
25893 = ((cp_lexer_nth_token_is (parser->lexer, 3, CPP_NUMBER) in cp_parser_noexcept_specification_opt()
25894 || cp_lexer_nth_token_is (parser->lexer, 3, CPP_KEYWORD)) in cp_parser_noexcept_specification_opt()
25895 && cp_lexer_nth_token_is (parser->lexer, 4, CPP_CLOSE_PAREN)); in cp_parser_noexcept_specification_opt()
25897 if (cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_PAREN) in cp_parser_noexcept_specification_opt()
25907 return cp_parser_save_noexcept (parser); in cp_parser_noexcept_specification_opt()
25909 cp_lexer_consume_token (parser->lexer); in cp_parser_noexcept_specification_opt()
25911 if (cp_lexer_peek_token (parser->lexer)->type == CPP_OPEN_PAREN) in cp_parser_noexcept_specification_opt()
25914 parens.consume_open (parser); in cp_parser_noexcept_specification_opt()
25925 saved_message = parser->type_definition_forbidden_message; in cp_parser_noexcept_specification_opt()
25926 parser->type_definition_forbidden_message in cp_parser_noexcept_specification_opt()
25931 = cp_parser_constant_expression (parser, in cp_parser_noexcept_specification_opt()
25942 parser->type_definition_forbidden_message = saved_message; in cp_parser_noexcept_specification_opt()
25946 expr = cp_parser_expression (parser); in cp_parser_noexcept_specification_opt()
25950 parens.require_close (parser); in cp_parser_noexcept_specification_opt()
25984 cp_parser_exception_specification_opt (cp_parser* parser, in cp_parser_exception_specification_opt() argument
25993 token = cp_lexer_peek_token (parser->lexer); in cp_parser_exception_specification_opt()
25997 = cp_parser_noexcept_specification_opt (parser, flags, in cp_parser_exception_specification_opt()
26011 cp_lexer_consume_token (parser->lexer); in cp_parser_exception_specification_opt()
26015 parens.require_open (parser); in cp_parser_exception_specification_opt()
26018 token = cp_lexer_peek_token (parser->lexer); in cp_parser_exception_specification_opt()
26023 saved_message = parser->type_definition_forbidden_message; in cp_parser_exception_specification_opt()
26024 parser->type_definition_forbidden_message in cp_parser_exception_specification_opt()
26027 type_id_list = cp_parser_type_id_list (parser); in cp_parser_exception_specification_opt()
26029 parser->type_definition_forbidden_message = saved_message; in cp_parser_exception_specification_opt()
26051 parens.require_close (parser); in cp_parser_exception_specification_opt()
26066 cp_parser_type_id_list (cp_parser* parser) in cp_parser_type_id_list() argument
26075 token = cp_lexer_peek_token (parser->lexer); in cp_parser_type_id_list()
26078 type = cp_parser_type_id (parser); in cp_parser_type_id_list()
26087 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_type_id_list()
26090 cp_lexer_consume_token (parser->lexer); in cp_parser_type_id_list()
26098 token = cp_lexer_peek_token (parser->lexer); in cp_parser_type_id_list()
26103 cp_lexer_consume_token (parser->lexer); in cp_parser_type_id_list()
26115 cp_parser_try_block (cp_parser* parser) in cp_parser_try_block() argument
26119 cp_parser_require_keyword (parser, RID_TRY, RT_TRY); in cp_parser_try_block()
26120 if (parser->in_function_body in cp_parser_try_block()
26128 cp_parser_compound_statement (parser, NULL, BCS_TRY_BLOCK, false); in cp_parser_try_block()
26130 cp_parser_handler_seq (parser); in cp_parser_try_block()
26142 cp_parser_function_try_block (cp_parser* parser) in cp_parser_function_try_block() argument
26148 if (!cp_parser_require_keyword (parser, RID_TRY, RT_TRY)) in cp_parser_function_try_block()
26154 (parser, /*in_function_try_block=*/true); in cp_parser_function_try_block()
26158 cp_parser_handler_seq (parser); in cp_parser_function_try_block()
26169 cp_parser_handler_seq (cp_parser* parser) in cp_parser_handler_seq() argument
26176 cp_parser_handler (parser); in cp_parser_handler_seq()
26178 token = cp_lexer_peek_token (parser->lexer); in cp_parser_handler_seq()
26191 cp_parser_handler (cp_parser* parser) in cp_parser_handler() argument
26196 cp_parser_require_keyword (parser, RID_CATCH, RT_CATCH); in cp_parser_handler()
26199 parens.require_open (parser); in cp_parser_handler()
26200 declaration = cp_parser_exception_declaration (parser); in cp_parser_handler()
26202 parens.require_close (parser); in cp_parser_handler()
26203 cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); in cp_parser_handler()
26219 cp_parser_exception_declaration (cp_parser* parser) in cp_parser_exception_declaration() argument
26226 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_exception_declaration()
26229 cp_lexer_consume_token (parser->lexer); in cp_parser_exception_declaration()
26234 saved_message = parser->type_definition_forbidden_message; in cp_parser_exception_declaration()
26235 parser->type_definition_forbidden_message in cp_parser_exception_declaration()
26239 cp_parser_type_specifier_seq (parser, CP_PARSER_FLAGS_NONE, in cp_parser_exception_declaration()
26244 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_exception_declaration()
26247 declarator = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_EITHER, in cp_parser_exception_declaration()
26256 parser->type_definition_forbidden_message = saved_message; in cp_parser_exception_declaration()
26272 cp_parser_throw_expression (cp_parser* parser) in cp_parser_throw_expression() argument
26276 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_throw_expression()
26278 cp_parser_require_keyword (parser, RID_THROW, RT_THROW); in cp_parser_throw_expression()
26279 token = cp_lexer_peek_token (parser->lexer); in cp_parser_throw_expression()
26290 expression = cp_parser_assignment_expression (parser); in cp_parser_throw_expression()
26298 parser->lexer); in cp_parser_throw_expression()
26313 cp_parser_yield_expression (cp_parser* parser) in cp_parser_yield_expression() argument
26317 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_yield_expression()
26320 cp_parser_require_keyword (parser, RID_CO_YIELD, RT_CO_YIELD); in cp_parser_yield_expression()
26322 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_yield_expression()
26325 cp_lexer_set_source_position (parser->lexer); in cp_parser_yield_expression()
26328 expr = cp_parser_braced_list (parser, &expr_non_constant_p); in cp_parser_yield_expression()
26331 expr = cp_parser_assignment_expression (parser); in cp_parser_yield_expression()
26351 cp_parser_asm_specification_opt (cp_parser* parser) in cp_parser_asm_specification_opt() argument
26357 token = cp_lexer_peek_token (parser->lexer); in cp_parser_asm_specification_opt()
26364 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_specification_opt()
26367 parens.require_open (parser); in cp_parser_asm_specification_opt()
26370 asm_specification = cp_parser_string_literal (parser, false, false); in cp_parser_asm_specification_opt()
26373 parens.require_close (parser); in cp_parser_asm_specification_opt()
26396 cp_parser_asm_operand_list (cp_parser* parser) in cp_parser_asm_operand_list() argument
26407 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_asm_operand_list()
26410 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_operand_list()
26412 name = cp_parser_identifier (parser); in cp_parser_asm_operand_list()
26417 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_asm_operand_list()
26422 string_literal = cp_parser_string_literal (parser, false, false); in cp_parser_asm_operand_list()
26426 parens.require_open (parser); in cp_parser_asm_operand_list()
26428 expression = cp_parser_expression (parser); in cp_parser_asm_operand_list()
26430 parens.require_close (parser); in cp_parser_asm_operand_list()
26443 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_asm_operand_list()
26446 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_operand_list()
26462 cp_parser_asm_clobber_list (cp_parser* parser) in cp_parser_asm_clobber_list() argument
26471 string_literal = cp_parser_string_literal (parser, false, false); in cp_parser_asm_clobber_list()
26476 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_asm_clobber_list()
26479 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_clobber_list()
26495 cp_parser_asm_label_list (cp_parser* parser) in cp_parser_asm_label_list() argument
26504 identifier = cp_parser_identifier (parser); in cp_parser_asm_label_list()
26519 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_asm_label_list()
26522 cp_lexer_consume_token (parser->lexer); in cp_parser_asm_label_list()
26532 cp_next_tokens_can_be_gnu_attribute_p (cp_parser *parser) in cp_next_tokens_can_be_gnu_attribute_p() argument
26534 return cp_nth_tokens_can_be_gnu_attribute_p (parser, 1); in cp_next_tokens_can_be_gnu_attribute_p()
26541 cp_next_tokens_can_be_std_attribute_p (cp_parser *parser) in cp_next_tokens_can_be_std_attribute_p() argument
26543 return cp_nth_tokens_can_be_std_attribute_p (parser, 1); in cp_next_tokens_can_be_std_attribute_p()
26550 cp_nth_tokens_can_be_std_attribute_p (cp_parser *parser, size_t n) in cp_nth_tokens_can_be_std_attribute_p() argument
26552 cp_token *token = cp_lexer_peek_nth_token (parser->lexer, n); in cp_nth_tokens_can_be_std_attribute_p()
26557 && (token = cp_lexer_peek_nth_token (parser->lexer, n + 1)) in cp_nth_tokens_can_be_std_attribute_p()
26565 cp_nth_tokens_can_be_gnu_attribute_p (cp_parser *parser, size_t n) in cp_nth_tokens_can_be_gnu_attribute_p() argument
26567 cp_token *token = cp_lexer_peek_nth_token (parser->lexer, n); in cp_nth_tokens_can_be_gnu_attribute_p()
26576 cp_next_tokens_can_be_attribute_p (cp_parser *parser) in cp_next_tokens_can_be_attribute_p() argument
26578 return (cp_next_tokens_can_be_gnu_attribute_p (parser) in cp_next_tokens_can_be_attribute_p()
26579 || cp_next_tokens_can_be_std_attribute_p (parser)); in cp_next_tokens_can_be_attribute_p()
26586 cp_nth_tokens_can_be_attribute_p (cp_parser *parser, size_t n) in cp_nth_tokens_can_be_attribute_p() argument
26588 return (cp_nth_tokens_can_be_gnu_attribute_p (parser, n) in cp_nth_tokens_can_be_attribute_p()
26589 || cp_nth_tokens_can_be_std_attribute_p (parser, n)); in cp_nth_tokens_can_be_attribute_p()
26596 cp_parser_attributes_opt (cp_parser *parser) in cp_parser_attributes_opt() argument
26598 if (cp_next_tokens_can_be_gnu_attribute_p (parser)) in cp_parser_attributes_opt()
26599 return cp_parser_gnu_attributes_opt (parser); in cp_parser_attributes_opt()
26600 return cp_parser_std_attribute_spec_seq (parser); in cp_parser_attributes_opt()
26614 cp_parser_gnu_attributes_opt (cp_parser* parser) in cp_parser_gnu_attributes_opt() argument
26619 (parser->auto_is_implicit_function_template_parm_p, false); in cp_parser_gnu_attributes_opt()
26628 token = cp_lexer_peek_token (parser->lexer); in cp_parser_gnu_attributes_opt()
26634 cp_lexer_consume_token (parser->lexer); in cp_parser_gnu_attributes_opt()
26637 if (!outer_parens.require_open (parser)) in cp_parser_gnu_attributes_opt()
26640 if (!inner_parens.require_open (parser)) in cp_parser_gnu_attributes_opt()
26644 token = cp_lexer_peek_token (parser->lexer); in cp_parser_gnu_attributes_opt()
26647 attribute_list = cp_parser_gnu_attribute_list (parser); in cp_parser_gnu_attributes_opt()
26654 if (!inner_parens.require_close (parser)) in cp_parser_gnu_attributes_opt()
26656 if (!outer_parens.require_close (parser)) in cp_parser_gnu_attributes_opt()
26659 cp_parser_skip_to_end_of_statement (parser); in cp_parser_gnu_attributes_opt()
26686 cp_parser_gnu_attribute_list (cp_parser* parser, bool exactly_one /* = false */) in cp_parser_gnu_attribute_list() argument
26689 bool save_translate_strings_p = parser->translate_strings_p; in cp_parser_gnu_attribute_list()
26695 parser->translate_strings_p = false; in cp_parser_gnu_attribute_list()
26704 token = cp_lexer_peek_token (parser->lexer); in cp_parser_gnu_attribute_list()
26712 cp_token *id_token = cp_lexer_consume_token (parser->lexer); in cp_parser_gnu_attribute_list()
26726 token = cp_lexer_peek_token (parser->lexer); in cp_parser_gnu_attribute_list()
26734 (parser, attr_flag, /*cast_p=*/false, in cp_parser_gnu_attribute_list()
26755 token = cp_lexer_peek_token (parser->lexer); in cp_parser_gnu_attribute_list()
26763 cp_lexer_consume_token (parser->lexer); in cp_parser_gnu_attribute_list()
26765 parser->translate_strings_p = save_translate_strings_p; in cp_parser_gnu_attribute_list()
26813 cp_parser_std_attribute (cp_parser *parser, tree attr_ns) in cp_parser_std_attribute() argument
26819 (parser->auto_is_implicit_function_template_parm_p, false); in cp_parser_std_attribute()
26823 token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute()
26834 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute()
26836 token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute()
26841 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute()
26847 token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute()
26860 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute()
26866 token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute()
26915 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_std_attribute()
26931 for (size_t n = cp_parser_skip_balanced_tokens (parser, 1) - 1; n; --n) in cp_parser_std_attribute()
26932 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute()
26937 (parser, attr_flag, /*cast_p=*/false, in cp_parser_std_attribute()
26998 cp_parser_std_attribute_list (cp_parser *parser, tree attr_ns) in cp_parser_std_attribute_list() argument
27005 attribute = cp_parser_std_attribute (parser, attr_ns); in cp_parser_std_attribute_list()
27014 token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute_list()
27017 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_list()
27028 token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute_list()
27032 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_list()
27052 cp_parser_std_attribute_spec (cp_parser *parser) in cp_parser_std_attribute_spec() argument
27055 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute_spec()
27058 && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_OPEN_SQUARE) in cp_parser_std_attribute_spec()
27062 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_spec()
27063 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_spec()
27065 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_USING)) in cp_parser_std_attribute_spec()
27067 token = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_std_attribute_spec()
27076 && cp_lexer_nth_token_is (parser->lexer, 3, CPP_COLON)) in cp_parser_std_attribute_spec()
27083 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_spec()
27084 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_spec()
27085 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_spec()
27091 attributes = cp_parser_std_attribute_list (parser, attr_ns); in cp_parser_std_attribute_spec()
27093 if (!cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE) in cp_parser_std_attribute_spec()
27094 || !cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE)) in cp_parser_std_attribute_spec()
27095 cp_parser_skip_to_end_of_statement (parser); in cp_parser_std_attribute_spec()
27107 token = cp_lexer_peek_token (parser->lexer); in cp_parser_std_attribute_spec()
27113 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_spec()
27117 if (!parens.require_open (parser)) in cp_parser_std_attribute_spec()
27120 cp_parser_parse_tentatively (parser); in cp_parser_std_attribute_spec()
27121 alignas_expr = cp_parser_type_id (parser); in cp_parser_std_attribute_spec()
27123 if (!cp_parser_parse_definitely (parser)) in cp_parser_std_attribute_spec()
27125 alignas_expr = cp_parser_assignment_expression (parser); in cp_parser_std_attribute_spec()
27127 cp_parser_skip_to_end_of_statement (parser); in cp_parser_std_attribute_spec()
27137 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_std_attribute_spec()
27139 cp_lexer_consume_token (parser->lexer); in cp_parser_std_attribute_spec()
27149 if (cp_parser_uncommitted_to_tentative_parse_p (parser) in cp_parser_std_attribute_spec()
27150 && cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_std_attribute_spec()
27151 cp_parser_commit_to_tentative_parse (parser); in cp_parser_std_attribute_spec()
27153 if (!parens.require_close (parser)) in cp_parser_std_attribute_spec()
27173 cp_parser_std_attribute_spec_seq (cp_parser *parser) in cp_parser_std_attribute_spec_seq() argument
27184 tree attr_spec = cp_parser_std_attribute_spec (parser); in cp_parser_std_attribute_spec_seq()
27204 cp_parser_skip_balanced_tokens (cp_parser *parser, size_t n) in cp_parser_skip_balanced_tokens() argument
27209 switch (cp_lexer_peek_nth_token (parser->lexer, n++)->type) in cp_parser_skip_balanced_tokens()
27212 if (!parser->lexer->in_pragma) in cp_parser_skip_balanced_tokens()
27248 cp_parser_skip_gnu_attributes_opt (cp_parser *parser, size_t n) in cp_parser_skip_gnu_attributes_opt() argument
27252 if (!cp_lexer_nth_token_is_keyword (parser->lexer, n, RID_ATTRIBUTE) in cp_parser_skip_gnu_attributes_opt()
27253 || !cp_lexer_nth_token_is (parser->lexer, n + 1, CPP_OPEN_PAREN) in cp_parser_skip_gnu_attributes_opt()
27254 || !cp_lexer_nth_token_is (parser->lexer, n + 2, CPP_OPEN_PAREN)) in cp_parser_skip_gnu_attributes_opt()
27257 size_t n2 = cp_parser_skip_balanced_tokens (parser, n + 2); in cp_parser_skip_gnu_attributes_opt()
27260 if (!cp_lexer_nth_token_is (parser->lexer, n2, CPP_CLOSE_PAREN)) in cp_parser_skip_gnu_attributes_opt()
27272 cp_parser_skip_std_attribute_spec_seq (cp_parser *parser, size_t n) in cp_parser_skip_std_attribute_spec_seq() argument
27276 if (cp_lexer_nth_token_is (parser->lexer, n, CPP_OPEN_SQUARE) in cp_parser_skip_std_attribute_spec_seq()
27277 && cp_lexer_nth_token_is (parser->lexer, n + 1, CPP_OPEN_SQUARE)) in cp_parser_skip_std_attribute_spec_seq()
27279 size_t n2 = cp_parser_skip_balanced_tokens (parser, n + 1); in cp_parser_skip_std_attribute_spec_seq()
27282 if (!cp_lexer_nth_token_is (parser->lexer, n2, CPP_CLOSE_SQUARE)) in cp_parser_skip_std_attribute_spec_seq()
27286 else if (cp_lexer_nth_token_is_keyword (parser->lexer, n, RID_ALIGNAS) in cp_parser_skip_std_attribute_spec_seq()
27287 && cp_lexer_nth_token_is (parser->lexer, n + 1, CPP_OPEN_PAREN)) in cp_parser_skip_std_attribute_spec_seq()
27289 size_t n2 = cp_parser_skip_balanced_tokens (parser, n + 1); in cp_parser_skip_std_attribute_spec_seq()
27305 cp_parser_skip_attributes_opt (cp_parser *parser, size_t n) in cp_parser_skip_attributes_opt() argument
27307 if (cp_nth_tokens_can_be_gnu_attribute_p (parser, n)) in cp_parser_skip_attributes_opt()
27308 return cp_parser_skip_gnu_attributes_opt (parser, n); in cp_parser_skip_attributes_opt()
27309 return cp_parser_skip_std_attribute_spec_seq (parser, n); in cp_parser_skip_attributes_opt()
27319 cp_parser_extension_opt (cp_parser* parser, int* saved_pedantic) in cp_parser_extension_opt() argument
27324 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_EXTENSION)) in cp_parser_extension_opt()
27327 cp_lexer_consume_token (parser->lexer); in cp_parser_extension_opt()
27348 cp_parser_label_declaration (cp_parser* parser) in cp_parser_label_declaration() argument
27351 cp_parser_require_keyword (parser, RID_LABEL, RT_LABEL); in cp_parser_label_declaration()
27358 identifier = cp_parser_identifier (parser); in cp_parser_label_declaration()
27365 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_label_declaration()
27368 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_label_declaration()
27372 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_label_declaration()
27379 cp_parser_concept_definition (cp_parser *parser) in cp_parser_concept_definition() argument
27381 gcc_assert (cp_lexer_next_token_is_keyword (parser->lexer, RID_CONCEPT)); in cp_parser_concept_definition()
27382 cp_lexer_consume_token (parser->lexer); in cp_parser_concept_definition()
27384 cp_expr id = cp_parser_identifier (parser); in cp_parser_concept_definition()
27387 cp_parser_skip_to_end_of_statement (parser); in cp_parser_concept_definition()
27388 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_concept_definition()
27392 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_concept_definition()
27394 cp_parser_skip_to_end_of_statement (parser); in cp_parser_concept_definition()
27395 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_concept_definition()
27400 tree init = cp_parser_constraint_expression (parser); in cp_parser_concept_definition()
27402 cp_parser_skip_to_end_of_statement (parser); in cp_parser_concept_definition()
27406 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_concept_definition()
27445 cp_parser_constraint_requires_parens (cp_parser *parser, bool lambda_p) in cp_parser_constraint_requires_parens() argument
27447 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_constraint_requires_parens()
27465 if (cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_DELETE) in cp_parser_constraint_requires_parens()
27466 || cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_DEFAULT)) in cp_parser_constraint_requires_parens()
27528 if (cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_SQUARE)) in cp_parser_constraint_requires_parens()
27546 cp_parser_unary_constraint_requires_parens (cp_parser *parser) in cp_parser_unary_constraint_requires_parens() argument
27548 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_unary_constraint_requires_parens()
27592 cp_parser_constraint_primary_expression (cp_parser *parser, bool lambda_p) in cp_parser_constraint_primary_expression() argument
27596 if (cp_parser_unary_constraint_requires_parens (parser)) in cp_parser_constraint_primary_expression()
27598 cp_expr e = cp_parser_assignment_expression (parser, NULL, false, false); in cp_parser_constraint_primary_expression()
27603 cp_lexer_save_tokens (parser->lexer); in cp_parser_constraint_primary_expression()
27606 cp_expr expr = cp_parser_primary_expression (parser, in cp_parser_constraint_primary_expression()
27618 pce = cp_parser_constraint_requires_parens (parser, lambda_p); in cp_parser_constraint_primary_expression()
27622 cp_lexer_commit_tokens (parser->lexer); in cp_parser_constraint_primary_expression()
27628 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_constraint_primary_expression()
27629 cp_parser_parse_tentatively (parser); in cp_parser_constraint_primary_expression()
27631 expr = cp_parser_assignment_expression (parser, NULL, false, false); in cp_parser_constraint_primary_expression()
27633 expr = cp_parser_simple_cast_expression (parser); in cp_parser_constraint_primary_expression()
27634 if (cp_parser_parse_definitely (parser)) in cp_parser_constraint_primary_expression()
27653 cp_parser_constraint_logical_and_expression (cp_parser *parser, bool lambda_p) in cp_parser_constraint_logical_and_expression() argument
27655 cp_expr lhs = cp_parser_constraint_primary_expression (parser, lambda_p); in cp_parser_constraint_logical_and_expression()
27656 while (cp_lexer_next_token_is (parser->lexer, CPP_AND_AND)) in cp_parser_constraint_logical_and_expression()
27658 cp_token *op = cp_lexer_consume_token (parser->lexer); in cp_parser_constraint_logical_and_expression()
27659 tree rhs = cp_parser_constraint_primary_expression (parser, lambda_p); in cp_parser_constraint_logical_and_expression()
27672 cp_parser_constraint_logical_or_expression (cp_parser *parser, bool lambda_p) in cp_parser_constraint_logical_or_expression() argument
27674 cp_expr lhs = cp_parser_constraint_logical_and_expression (parser, lambda_p); in cp_parser_constraint_logical_or_expression()
27675 while (cp_lexer_next_token_is (parser->lexer, CPP_OR_OR)) in cp_parser_constraint_logical_or_expression()
27677 cp_token *op = cp_lexer_consume_token (parser->lexer); in cp_parser_constraint_logical_or_expression()
27678 cp_expr rhs = cp_parser_constraint_logical_and_expression (parser, lambda_p); in cp_parser_constraint_logical_or_expression()
27688 cp_parser_requires_clause_expression (cp_parser *parser, bool lambda_p) in cp_parser_requires_clause_expression() argument
27698 cp_expr expr = cp_parser_constraint_logical_or_expression (parser, lambda_p); in cp_parser_requires_clause_expression()
27714 cp_parser_constraint_expression (cp_parser *parser) in cp_parser_constraint_expression() argument
27721 cp_expr expr = cp_parser_binary_expression (parser, false, true, in cp_parser_constraint_expression()
27740 cp_parser_requires_clause_opt (cp_parser *parser, bool lambda_p) in cp_parser_requires_clause_opt() argument
27742 cp_token *tok = cp_lexer_peek_token (parser->lexer); in cp_parser_requires_clause_opt()
27748 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_requires_clause_opt()
27752 cp_lexer_consume_token (parser->lexer); in cp_parser_requires_clause_opt()
27753 cp_parser_constraint_expression (parser); in cp_parser_requires_clause_opt()
27758 cp_token *tok2 = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_requires_clause_opt()
27772 cp_lexer_consume_token (parser->lexer); in cp_parser_requires_clause_opt()
27775 return cp_parser_requires_clause_expression (parser, lambda_p); in cp_parser_requires_clause_opt()
27777 return cp_parser_constraint_expression (parser); in cp_parser_requires_clause_opt()
27790 cp_parser_requires_expression (cp_parser *parser) in cp_parser_requires_expression() argument
27792 gcc_assert (cp_lexer_next_token_is_keyword (parser->lexer, RID_REQUIRES)); in cp_parser_requires_expression()
27793 location_t loc = cp_lexer_consume_token (parser->lexer)->location; in cp_parser_requires_expression()
27796 tentative_firewall firewall (parser); in cp_parser_requires_expression()
27799 cp_parser_commit_to_tentative_parse (parser); in cp_parser_requires_expression()
27823 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_requires_expression()
27825 parms = cp_parser_requirement_parameter_list (parser); in cp_parser_requires_expression()
27837 reqs = cp_parser_requirement_body (parser); in cp_parser_requires_expression()
27845 loc = make_location (loc, loc, parser->lexer); in cp_parser_requires_expression()
27865 cp_parser_requirement_parameter_list (cp_parser *parser) in cp_parser_requirement_parameter_list() argument
27868 if (!parens.require_open (parser)) in cp_parser_requirement_parameter_list()
27872 (parser, CP_PARSER_FLAGS_TYPENAME_OPTIONAL)); in cp_parser_requirement_parameter_list()
27874 if (!parens.require_close (parser)) in cp_parser_requirement_parameter_list()
27885 cp_parser_requirement_body (cp_parser *parser) in cp_parser_requirement_body() argument
27888 if (!braces.require_open (parser)) in cp_parser_requirement_body()
27891 tree reqs = cp_parser_requirement_seq (parser); in cp_parser_requirement_body()
27893 if (!braces.require_close (parser)) in cp_parser_requirement_body()
27906 cp_parser_requirement_seq (cp_parser *parser) in cp_parser_requirement_seq() argument
27911 tree req = cp_parser_requirement (parser); in cp_parser_requirement_seq()
27915 while (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_BRACE) in cp_parser_requirement_seq()
27916 && cp_lexer_next_token_is_not (parser->lexer, CPP_EOF)); in cp_parser_requirement_seq()
27935 cp_parser_requirement (cp_parser *parser) in cp_parser_requirement() argument
27937 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_requirement()
27938 return cp_parser_compound_requirement (parser); in cp_parser_requirement()
27939 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TYPENAME)) in cp_parser_requirement()
27940 return cp_parser_type_requirement (parser); in cp_parser_requirement()
27941 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_REQUIRES)) in cp_parser_requirement()
27942 return cp_parser_nested_requirement (parser); in cp_parser_requirement()
27944 return cp_parser_simple_requirement (parser); in cp_parser_requirement()
27953 cp_parser_simple_requirement (cp_parser *parser) in cp_parser_simple_requirement() argument
27955 location_t start = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_simple_requirement()
27956 cp_expr expr = cp_parser_expression (parser, NULL, false, false); in cp_parser_simple_requirement()
27958 cp_parser_skip_to_end_of_statement (parser); in cp_parser_simple_requirement()
27960 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_simple_requirement()
27983 cp_parser_type_requirement (cp_parser *parser) in cp_parser_type_requirement() argument
27985 cp_token *start_tok = cp_lexer_consume_token (parser->lexer); in cp_parser_type_requirement()
27986 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_type_requirement()
27989 tree saved_scope = parser->scope; in cp_parser_type_requirement()
27990 tree saved_object_scope = parser->object_scope; in cp_parser_type_requirement()
27991 tree saved_qualifying_scope = parser->qualifying_scope; in cp_parser_type_requirement()
27992 cp_parser_global_scope_opt (parser, /*current_scope_valid_p=*/false); in cp_parser_type_requirement()
27993 cp_parser_nested_name_specifier_opt (parser, in cp_parser_type_requirement()
28000 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_type_requirement()
28002 cp_lexer_consume_token (parser->lexer); in cp_parser_type_requirement()
28003 type = cp_parser_template_id (parser, in cp_parser_type_requirement()
28008 type = make_typename_type (parser->scope, type, typename_type, in cp_parser_type_requirement()
28012 type = cp_parser_type_name (parser, /*typename_keyword_p=*/true); in cp_parser_type_requirement()
28017 parser->scope = saved_scope; in cp_parser_type_requirement()
28018 parser->object_scope = saved_object_scope; in cp_parser_type_requirement()
28019 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_type_requirement()
28022 cp_parser_skip_to_end_of_statement (parser); in cp_parser_type_requirement()
28024 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_type_requirement()
28029 loc = make_location (loc, start_tok->location, parser->lexer); in cp_parser_type_requirement()
28039 cp_parser_compound_requirement (cp_parser *parser) in cp_parser_compound_requirement() argument
28043 if (!braces.require_open (parser)) in cp_parser_compound_requirement()
28046 cp_token *expr_token = cp_lexer_peek_token (parser->lexer); in cp_parser_compound_requirement()
28048 tree expr = cp_parser_expression (parser, NULL, false, false); in cp_parser_compound_requirement()
28050 cp_parser_skip_to_closing_brace (parser); in cp_parser_compound_requirement()
28052 if (!braces.require_close (parser)) in cp_parser_compound_requirement()
28054 cp_parser_skip_to_end_of_statement (parser); in cp_parser_compound_requirement()
28055 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_compound_requirement()
28062 cp_parser_skip_to_end_of_statement (parser); in cp_parser_compound_requirement()
28063 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_compound_requirement()
28069 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_NOEXCEPT)) in cp_parser_compound_requirement()
28071 cp_lexer_consume_token (parser->lexer); in cp_parser_compound_requirement()
28077 if (cp_lexer_next_token_is (parser->lexer, CPP_DEREF)) in cp_parser_compound_requirement()
28079 cp_lexer_consume_token (parser->lexer); in cp_parser_compound_requirement()
28080 cp_token *tok = cp_lexer_peek_token (parser->lexer); in cp_parser_compound_requirement()
28082 bool saved_result_type_constraint_p = parser->in_result_type_constraint_p; in cp_parser_compound_requirement()
28083 parser->in_result_type_constraint_p = true; in cp_parser_compound_requirement()
28087 type = cp_parser_trailing_type_id (parser); in cp_parser_compound_requirement()
28088 parser->in_result_type_constraint_p = saved_result_type_constraint_p; in cp_parser_compound_requirement()
28093 parser->lexer); in cp_parser_compound_requirement()
28102 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_compound_requirement()
28114 parser->lexer); in cp_parser_compound_requirement()
28116 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_compound_requirement()
28130 cp_parser_nested_requirement (cp_parser *parser) in cp_parser_nested_requirement() argument
28132 gcc_assert (cp_lexer_next_token_is_keyword (parser->lexer, RID_REQUIRES)); in cp_parser_nested_requirement()
28133 cp_token *tok = cp_lexer_consume_token (parser->lexer); in cp_parser_nested_requirement()
28134 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_nested_requirement()
28135 tree req = cp_parser_constraint_expression (parser); in cp_parser_nested_requirement()
28137 cp_parser_skip_to_end_of_statement (parser); in cp_parser_nested_requirement()
28138 loc = make_location (loc, tok->location, parser->lexer); in cp_parser_nested_requirement()
28139 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_nested_requirement()
28201 cp_parser_lookup_name (cp_parser *parser, tree name, in cp_parser_lookup_name() argument
28210 tree object_type = parser->context->object_type; in cp_parser_lookup_name()
28219 parser->context->object_type = NULL_TREE; in cp_parser_lookup_name()
28243 if (parser->scope) in cp_parser_lookup_name()
28244 type = parser->scope; in cp_parser_lookup_name()
28255 return lookup_destructor (current_class_ref, parser->scope, name, in cp_parser_lookup_name()
28273 if (parser->scope) in cp_parser_lookup_name()
28277 if (parser->scope == error_mark_node) in cp_parser_lookup_name()
28285 dependent_p = (TYPE_P (parser->scope) in cp_parser_lookup_name()
28286 && dependent_scope_p (parser->scope)); in cp_parser_lookup_name()
28287 if ((check_dependency || !CLASS_TYPE_P (parser->scope)) in cp_parser_lookup_name()
28301 pushed_scope = push_scope (parser->scope); in cp_parser_lookup_name()
28307 decl = lookup_qualified_name (parser->scope, name, in cp_parser_lookup_name()
28327 && same_type_p (DECL_CONTEXT (decl), parser->scope)) in cp_parser_lookup_name()
28328 decl = lookup_qualified_name (parser->scope, ctor_identifier, in cp_parser_lookup_name()
28343 if (decl == error_mark_node && TYPE_P (parser->scope) in cp_parser_lookup_name()
28344 && dependent_type_p (parser->scope)) in cp_parser_lookup_name()
28353 type = make_typename_type (parser->scope, name, tag_type, in cp_parser_lookup_name()
28359 && (cp_parser_next_token_ends_template_argument_p (parser) in cp_parser_lookup_name()
28360 || cp_lexer_next_token_is (parser->lexer, in cp_parser_lookup_name()
28362 decl = make_unbound_class_template (parser->scope, in cp_parser_lookup_name()
28367 parser->scope, name, in cp_parser_lookup_name()
28370 parser->qualifying_scope = parser->scope; in cp_parser_lookup_name()
28371 parser->object_scope = NULL_TREE; in cp_parser_lookup_name()
28400 parser->object_scope = object_type; in cp_parser_lookup_name()
28401 parser->qualifying_scope = NULL_TREE; in cp_parser_lookup_name()
28408 parser->qualifying_scope = NULL_TREE; in cp_parser_lookup_name()
28409 parser->object_scope = NULL_TREE; in cp_parser_lookup_name()
28427 if (!cp_parser_simulate_error (parser)) in cp_parser_lookup_name()
28450 check_accessibility_of_qualified_id (decl, object_type, parser->scope); in cp_parser_lookup_name()
28462 cp_parser_lookup_name_simple (cp_parser* parser, tree name, location_t location) in cp_parser_lookup_name_simple() argument
28464 return cp_parser_lookup_name (parser, name, in cp_parser_lookup_name_simple()
28522 cp_parser_check_declarator_template_parameters (cp_parser* parser, in cp_parser_check_declarator_template_parameters() argument
28546 (parser, num_templates, template_id_p, declarator_location, in cp_parser_check_declarator_template_parameters()
28556 (parser, declarator->declarator, declarator_location)); in cp_parser_check_declarator_template_parameters()
28574 cp_parser_check_template_parameters (cp_parser* parser, in cp_parser_check_template_parameters() argument
28582 if (parser->num_template_parameter_lists == num_templates) in cp_parser_check_template_parameters()
28587 && parser->num_template_parameter_lists == num_templates + 1) in cp_parser_check_template_parameters()
28590 if (cp_parser_simulate_error (parser)) in cp_parser_check_template_parameters()
28597 if (parser->num_template_parameter_lists < num_templates) in cp_parser_check_template_parameters()
28628 cp_parser_global_scope_opt (cp_parser* parser, bool current_scope_valid_p) in cp_parser_global_scope_opt() argument
28633 token = cp_lexer_peek_token (parser->lexer); in cp_parser_global_scope_opt()
28639 cp_lexer_consume_token (parser->lexer); in cp_parser_global_scope_opt()
28641 parser->scope = global_namespace; in cp_parser_global_scope_opt()
28642 parser->qualifying_scope = global_namespace; in cp_parser_global_scope_opt()
28643 parser->object_scope = NULL_TREE; in cp_parser_global_scope_opt()
28645 return parser->scope; in cp_parser_global_scope_opt()
28649 parser->scope = NULL_TREE; in cp_parser_global_scope_opt()
28650 parser->qualifying_scope = NULL_TREE; in cp_parser_global_scope_opt()
28651 parser->object_scope = NULL_TREE; in cp_parser_global_scope_opt()
28663 cp_parser_constructor_declarator_p (cp_parser *parser, cp_parser_flags flags, in cp_parser_constructor_declarator_p() argument
28674 if (parser->in_function_body) in cp_parser_constructor_declarator_p()
28677 next_token = cp_lexer_peek_token (parser->lexer); in cp_parser_constructor_declarator_p()
28686 cp_parser_parse_tentatively (parser); in cp_parser_constructor_declarator_p()
28691 cp_parser_global_scope_opt (parser, in cp_parser_constructor_declarator_p()
28695 = (cp_parser_nested_name_specifier_opt (parser, in cp_parser_constructor_declarator_p()
28729 tree id = cp_parser_unqualified_id (parser, in cp_parser_constructor_declarator_p()
28751 cp_parser_parse_tentatively (parser); in cp_parser_constructor_declarator_p()
28754 type_decl = cp_parser_class_name (parser, in cp_parser_constructor_declarator_p()
28763 && !cp_parser_parse_definitely (parser)) in cp_parser_constructor_declarator_p()
28766 tree tmpl = cp_parser_template_name (parser, in cp_parser_constructor_declarator_p()
28776 cp_parser_simulate_error (parser); in cp_parser_constructor_declarator_p()
28784 constructor_p = (!cp_parser_error_occurred (parser) in cp_parser_constructor_declarator_p()
28802 && !cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_constructor_declarator_p()
28806 && cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN) in cp_parser_constructor_declarator_p()
28807 && cp_lexer_next_token_is_not (parser->lexer, CPP_ELLIPSIS) in cp_parser_constructor_declarator_p()
28811 && (!cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer) in cp_parser_constructor_declarator_p()
28818 || (cp_parser_allow_gnu_extensions_p (parser) in cp_parser_constructor_declarator_p()
28819 && cp_next_tokens_can_be_gnu_attribute_p (parser))) in cp_parser_constructor_declarator_p()
28821 && !cp_next_tokens_can_be_std_attribute_p (parser)) in cp_parser_constructor_declarator_p()
28827 if (cp_next_tokens_can_be_gnu_attribute_p (parser)) in cp_parser_constructor_declarator_p()
28829 unsigned int n = cp_parser_skip_gnu_attributes_opt (parser, 1); in cp_parser_constructor_declarator_p()
28831 cp_lexer_consume_token (parser->lexer); in cp_parser_constructor_declarator_p()
28847 cp_parser_abort_tentative_parse (parser); in cp_parser_constructor_declarator_p()
28857 = parser->num_template_parameter_lists; in cp_parser_constructor_declarator_p()
28858 parser->num_template_parameter_lists = 0; in cp_parser_constructor_declarator_p()
28879 cp_parser_type_specifier (parser, in cp_parser_constructor_declarator_p()
28887 parser->num_template_parameter_lists in cp_parser_constructor_declarator_p()
28894 constructor_p = !cp_parser_error_occurred (parser); in cp_parser_constructor_declarator_p()
28899 cp_parser_abort_tentative_parse (parser); in cp_parser_constructor_declarator_p()
28912 (cp_parser* parser, in cp_parser_function_definition_from_specifiers_and_declarator() argument
28935 cp_finalize_omp_declare_simd (parser, current_function_decl); in cp_parser_function_definition_from_specifiers_and_declarator()
28936 parser->omp_declare_simd = NULL; in cp_parser_function_definition_from_specifiers_and_declarator()
28937 cp_finalize_oacc_routine (parser, current_function_decl, true); in cp_parser_function_definition_from_specifiers_and_declarator()
28938 parser->oacc_routine = NULL; in cp_parser_function_definition_from_specifiers_and_declarator()
28944 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_function_definition_from_specifiers_and_declarator()
28950 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_function_definition_from_specifiers_and_declarator()
28965 fn = cp_parser_function_definition_after_declarator (parser, in cp_parser_function_definition_from_specifiers_and_declarator()
28980 cp_parser_function_definition_after_declarator (cp_parser* parser, in cp_parser_function_definition_after_declarator() argument
28989 = parser->fully_implicit_function_template_p; in cp_parser_function_definition_after_declarator()
28990 parser->fully_implicit_function_template_p = false; in cp_parser_function_definition_after_declarator()
28992 = parser->implicit_template_parms; in cp_parser_function_definition_after_declarator()
28993 parser->implicit_template_parms = 0; in cp_parser_function_definition_after_declarator()
28995 = parser->implicit_template_scope; in cp_parser_function_definition_after_declarator()
28996 parser->implicit_template_scope = 0; in cp_parser_function_definition_after_declarator()
28998 saved_in_function_body = parser->in_function_body; in cp_parser_function_definition_after_declarator()
28999 parser->in_function_body = true; in cp_parser_function_definition_after_declarator()
29003 token = cp_lexer_peek_token (parser->lexer); in cp_parser_function_definition_after_declarator()
29004 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_RETURN)) in cp_parser_function_definition_after_declarator()
29007 cp_lexer_consume_token (parser->lexer); in cp_parser_function_definition_after_declarator()
29010 cp_parser_identifier (parser); in cp_parser_function_definition_after_declarator()
29017 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_function_definition_after_declarator()
29022 cp_lexer_consume_token (parser->lexer); in cp_parser_function_definition_after_declarator()
29028 = parser->in_unbraced_linkage_specification_p; in cp_parser_function_definition_after_declarator()
29029 parser->in_unbraced_linkage_specification_p = false; in cp_parser_function_definition_after_declarator()
29033 = parser->num_template_parameter_lists; in cp_parser_function_definition_after_declarator()
29034 parser->num_template_parameter_lists = 0; in cp_parser_function_definition_after_declarator()
29040 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRANSACTION_ATOMIC)) in cp_parser_function_definition_after_declarator()
29041 cp_parser_function_transaction (parser, RID_TRANSACTION_ATOMIC); in cp_parser_function_definition_after_declarator()
29042 else if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_function_definition_after_declarator()
29044 cp_parser_function_transaction (parser, RID_TRANSACTION_RELAXED); in cp_parser_function_definition_after_declarator()
29045 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRY)) in cp_parser_function_definition_after_declarator()
29046 cp_parser_function_try_block (parser); in cp_parser_function_definition_after_declarator()
29049 (parser, /*in_function_try_block=*/false); in cp_parser_function_definition_after_declarator()
29056 parser->in_unbraced_linkage_specification_p in cp_parser_function_definition_after_declarator()
29058 parser->num_template_parameter_lists in cp_parser_function_definition_after_declarator()
29060 parser->in_function_body = saved_in_function_body; in cp_parser_function_definition_after_declarator()
29062 parser->fully_implicit_function_template_p in cp_parser_function_definition_after_declarator()
29064 parser->implicit_template_parms in cp_parser_function_definition_after_declarator()
29066 parser->implicit_template_scope in cp_parser_function_definition_after_declarator()
29069 if (parser->fully_implicit_function_template_p) in cp_parser_function_definition_after_declarator()
29070 finish_fully_implicit_template (parser, /*member_decl_opt=*/0); in cp_parser_function_definition_after_declarator()
29078 cp_parser_template_declaration_after_parameters (cp_parser* parser, in cp_parser_template_declaration_after_parameters() argument
29086 ++parser->num_template_parameter_lists; in cp_parser_template_declaration_after_parameters()
29096 if (cp_parser_template_declaration_after_export (parser, member_p)) in cp_parser_template_declaration_after_parameters()
29099 && cp_lexer_next_token_is_keyword (parser->lexer, RID_USING)) in cp_parser_template_declaration_after_parameters()
29100 decl = cp_parser_alias_declaration (parser); in cp_parser_template_declaration_after_parameters()
29102 && cp_lexer_next_token_is_keyword (parser->lexer, RID_CONCEPT) in cp_parser_template_declaration_after_parameters()
29103 && !cp_lexer_nth_token_is_keyword (parser->lexer, 2, RID_BOOL)) in cp_parser_template_declaration_after_parameters()
29105 decl = cp_parser_concept_definition (parser); in cp_parser_template_declaration_after_parameters()
29111 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_declaration_after_parameters()
29112 decl = cp_parser_single_declaration (parser, in cp_parser_template_declaration_after_parameters()
29134 --parser->num_template_parameter_lists; in cp_parser_template_declaration_after_parameters()
29217 cp_parser_template_introduction (cp_parser* parser, bool member_p) in cp_parser_template_introduction() argument
29219 cp_parser_parse_tentatively (parser); in cp_parser_template_introduction()
29221 tree saved_scope = parser->scope; in cp_parser_template_introduction()
29222 tree saved_object_scope = parser->object_scope; in cp_parser_template_introduction()
29223 tree saved_qualifying_scope = parser->qualifying_scope; in cp_parser_template_introduction()
29224 bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_template_introduction()
29226 cp_token *start_token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_introduction()
29231 parser->colon_corrects_to_scope_p = false; in cp_parser_template_introduction()
29234 cp_parser_global_scope_opt (parser, in cp_parser_template_introduction()
29237 cp_parser_nested_name_specifier_opt (parser, in cp_parser_template_introduction()
29243 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_template_introduction()
29244 tree concept_name = cp_parser_identifier (parser); in cp_parser_template_introduction()
29248 tree tmpl_decl = cp_parser_lookup_name_simple (parser, concept_name, in cp_parser_template_introduction()
29250 parser->scope = saved_scope; in cp_parser_template_introduction()
29251 parser->object_scope = saved_object_scope; in cp_parser_template_introduction()
29252 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_template_introduction()
29253 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_template_introduction()
29257 cp_parser_simulate_error (parser); in cp_parser_template_introduction()
29261 braces.require_open (parser); in cp_parser_template_introduction()
29264 if (!cp_parser_parse_definitely (parser)) in cp_parser_template_introduction()
29271 tree introduction_list = cp_parser_introduction_list (parser); in cp_parser_template_introduction()
29274 if (!braces.require_close (parser)) in cp_parser_template_introduction()
29287 cp_parser_name_lookup_error (parser, concept_name, tmpl_decl, NLE_NULL, in cp_parser_template_introduction()
29295 parser->lexer); in cp_parser_template_introduction()
29305 cp_parser_template_declaration_after_parameters (parser, parms, in cp_parser_template_introduction()
29319 cp_parser_explicit_template_declaration (cp_parser* parser, bool member_p) in cp_parser_explicit_template_declaration() argument
29326 if (!cp_parser_require (parser, CPP_LESS, RT_LESS)) in cp_parser_explicit_template_declaration()
29335 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_explicit_template_declaration()
29361 if (cp_lexer_next_token_is (parser->lexer, CPP_GREATER)) in cp_parser_explicit_template_declaration()
29363 cp_parser_error (parser, "invalid explicit specialization"); in cp_parser_explicit_template_declaration()
29370 parameter_list = cp_parser_template_parameter_list (parser); in cp_parser_explicit_template_declaration()
29374 cp_parser_skip_to_end_of_template_parameter_list (parser); in cp_parser_explicit_template_declaration()
29380 if (tree treqs = cp_parser_requires_clause_opt (parser, false)) in cp_parser_explicit_template_declaration()
29385 cp_parser_template_declaration_after_parameters (parser, parameter_list, in cp_parser_explicit_template_declaration()
29399 cp_parser_template_declaration_after_export (cp_parser* parser, bool member_p) in cp_parser_template_declaration_after_export() argument
29401 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_template_declaration_after_export()
29403 cp_lexer_consume_token (parser->lexer); in cp_parser_template_declaration_after_export()
29404 cp_parser_explicit_template_declaration (parser, member_p); in cp_parser_template_declaration_after_export()
29408 return cp_parser_template_introduction (parser, member_p); in cp_parser_template_declaration_after_export()
29433 cp_parser_single_declaration (cp_parser* parser, in cp_parser_single_declaration() argument
29455 decl_spec_token_start = cp_lexer_peek_token (parser->lexer); in cp_parser_single_declaration()
29456 cp_parser_decl_specifier_seq (parser, in cp_parser_single_declaration()
29479 if (cp_parser_declares_only_class_p (parser) in cp_parser_single_declaration()
29515 if (!cp_parser_declares_only_class_p (parser) in cp_parser_single_declaration()
29518 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_single_declaration()
29521 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_single_declaration()
29529 && cp_parser_parse_and_diagnose_invalid_type_name (parser)) in cp_parser_single_declaration()
29544 && (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON) in cp_parser_single_declaration()
29547 decl = cp_parser_init_declarator (parser, in cp_parser_single_declaration()
29577 || !cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON))) in cp_parser_single_declaration()
29578 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_single_declaration()
29585 parser->scope = NULL_TREE; in cp_parser_single_declaration()
29586 parser->qualifying_scope = NULL_TREE; in cp_parser_single_declaration()
29587 parser->object_scope = NULL_TREE; in cp_parser_single_declaration()
29595 cp_parser_simple_cast_expression (cp_parser *parser) in cp_parser_simple_cast_expression() argument
29597 return cp_parser_cast_expression (parser, /*address_p=*/false, in cp_parser_simple_cast_expression()
29605 cp_parser_functional_cast (cp_parser* parser, tree type) in cp_parser_functional_cast() argument
29617 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_functional_cast()
29619 cp_lexer_set_source_position (parser->lexer); in cp_parser_functional_cast()
29621 expression_list = cp_parser_braced_list (parser, &nonconst_p); in cp_parser_functional_cast()
29634 parser->lexer); in cp_parser_functional_cast()
29640 vec = cp_parser_parenthesized_expression_list (parser, non_attr, in cp_parser_functional_cast()
29658 parser->lexer); in cp_parser_functional_cast()
29668 && cp_parser_non_integral_constant_expression (parser, in cp_parser_functional_cast()
29682 cp_parser_save_member_function_body (cp_parser* parser, in cp_parser_save_member_function_body() argument
29694 cp_finalize_omp_declare_simd (parser, fn); in cp_parser_save_member_function_body()
29695 cp_finalize_oacc_routine (parser, fn, true); in cp_parser_save_member_function_body()
29701 (cp_lexer_peek_token (parser->lexer))) in cp_parser_save_member_function_body()
29702 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_save_member_function_body()
29707 cp_parser_save_default_args (parser, fn); in cp_parser_save_member_function_body()
29711 first = parser->lexer->next_token; in cp_parser_save_member_function_body()
29713 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRANSACTION_RELAXED)) in cp_parser_save_member_function_body()
29714 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29715 else if (cp_lexer_next_token_is_keyword (parser->lexer, in cp_parser_save_member_function_body()
29718 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29720 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE) in cp_parser_save_member_function_body()
29721 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_SQUARE) in cp_parser_save_member_function_body()
29722 && (cp_lexer_nth_token_is (parser->lexer, 3, CPP_NAME) in cp_parser_save_member_function_body()
29723 || cp_lexer_nth_token_is (parser->lexer, 3, CPP_KEYWORD)) in cp_parser_save_member_function_body()
29724 && cp_lexer_nth_token_is (parser->lexer, 4, CPP_CLOSE_SQUARE) in cp_parser_save_member_function_body()
29725 && cp_lexer_nth_token_is (parser->lexer, 5, CPP_CLOSE_SQUARE)) in cp_parser_save_member_function_body()
29727 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29728 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29729 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29730 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29731 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29734 while (cp_next_tokens_can_be_gnu_attribute_p (parser) in cp_parser_save_member_function_body()
29735 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_PAREN)) in cp_parser_save_member_function_body()
29737 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29738 if (cp_parser_cache_group (parser, CPP_CLOSE_PAREN, /*depth=*/0)) in cp_parser_save_member_function_body()
29744 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRY)) in cp_parser_save_member_function_body()
29746 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29750 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_save_member_function_body()
29752 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29753 while (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_save_member_function_body()
29756 if (cp_parser_cache_group (parser, CPP_CLOSE_PAREN, /*depth=*/0)) in cp_parser_save_member_function_body()
29760 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_save_member_function_body()
29761 cp_lexer_consume_token (parser->lexer); in cp_parser_save_member_function_body()
29764 cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0); in cp_parser_save_member_function_body()
29767 while (cp_lexer_next_token_is_keyword (parser->lexer, RID_CATCH)) in cp_parser_save_member_function_body()
29768 cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0); in cp_parser_save_member_function_body()
29769 last = parser->lexer->next_token; in cp_parser_save_member_function_body()
29790 cp_parser_save_nsdmi (cp_parser* parser) in cp_parser_save_nsdmi() argument
29792 return cp_parser_cache_defarg (parser, /*nsdmi=*/true); in cp_parser_save_nsdmi()
29800 cp_parser_enclosed_template_argument_list (cp_parser* parser) in cp_parser_enclosed_template_argument_list() argument
29814 = parser->greater_than_is_operator_p; in cp_parser_enclosed_template_argument_list()
29815 parser->greater_than_is_operator_p = false; in cp_parser_enclosed_template_argument_list()
29818 saved_scope = parser->scope; in cp_parser_enclosed_template_argument_list()
29819 saved_qualifying_scope = parser->qualifying_scope; in cp_parser_enclosed_template_argument_list()
29820 saved_object_scope = parser->object_scope; in cp_parser_enclosed_template_argument_list()
29825 if (cp_lexer_next_token_is (parser->lexer, CPP_GREATER) in cp_parser_enclosed_template_argument_list()
29826 || cp_lexer_next_token_is (parser->lexer, CPP_RSHIFT)) in cp_parser_enclosed_template_argument_list()
29829 arguments = cp_parser_template_argument_list (parser); in cp_parser_enclosed_template_argument_list()
29832 if (cp_lexer_next_token_is (parser->lexer, CPP_RSHIFT)) in cp_parser_enclosed_template_argument_list()
29852 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_enclosed_template_argument_list()
29863 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_enclosed_template_argument_list()
29877 cp_token *token = cp_lexer_consume_token (parser->lexer); in cp_parser_enclosed_template_argument_list()
29884 cp_parser_skip_to_end_of_template_parameter_list (parser); in cp_parser_enclosed_template_argument_list()
29886 parser->greater_than_is_operator_p in cp_parser_enclosed_template_argument_list()
29889 parser->scope = saved_scope; in cp_parser_enclosed_template_argument_list()
29890 parser->qualifying_scope = saved_qualifying_scope; in cp_parser_enclosed_template_argument_list()
29891 parser->object_scope = saved_object_scope; in cp_parser_enclosed_template_argument_list()
29901 cp_parser_late_parsing_for_member (cp_parser* parser, tree member_function) in cp_parser_late_parsing_for_member() argument
29912 gcc_assert (parser->num_classes_being_defined == 0); in cp_parser_late_parsing_for_member()
29917 push_unparsed_function_queues (parser); in cp_parser_late_parsing_for_member()
29941 cp_parser_push_lexer_for_tokens (parser, tokens); in cp_parser_late_parsing_for_member()
29955 parser->lexer->in_pragma = true; in cp_parser_late_parsing_for_member()
29956 cp_parser_omp_declare_reduction_exprs (member_function, parser); in cp_parser_late_parsing_for_member()
29962 cp_parser_function_definition_after_declarator (parser, in cp_parser_late_parsing_for_member()
29971 cp_parser_pop_lexer (parser); in cp_parser_late_parsing_for_member()
29978 pop_unparsed_function_queues (parser); in cp_parser_late_parsing_for_member()
29986 cp_parser_save_default_args (cp_parser* parser, tree decl) in cp_parser_save_default_args() argument
30012 cp_parser_late_parse_one_default_arg (cp_parser *parser, tree decl, in cp_parser_late_parse_one_default_arg() argument
30025 cp_parser_push_lexer_for_tokens (parser, tokens); in cp_parser_late_parse_one_default_arg()
30030 parsed_arg = cp_parser_initializer (parser, &dummy, &dummy); in cp_parser_late_parse_one_default_arg()
30037 cp_parser_skip_to_end_of_statement (parser); in cp_parser_late_parse_one_default_arg()
30055 if (!cp_lexer_next_token_is (parser->lexer, CPP_EOF)) in cp_parser_late_parse_one_default_arg()
30058 cp_parser_error (parser, "expected %<,%>"); in cp_parser_late_parse_one_default_arg()
30060 cp_parser_error (parser, "expected %<;%>"); in cp_parser_late_parse_one_default_arg()
30064 cp_parser_pop_lexer (parser); in cp_parser_late_parse_one_default_arg()
30073 cp_parser_late_parsing_nsdmi (cp_parser *parser, tree field) in cp_parser_late_parsing_nsdmi() argument
30079 push_unparsed_function_queues (parser); in cp_parser_late_parsing_nsdmi()
30080 def = cp_parser_late_parse_one_default_arg (parser, field, in cp_parser_late_parsing_nsdmi()
30083 pop_unparsed_function_queues (parser); in cp_parser_late_parsing_nsdmi()
30096 cp_parser_late_parsing_default_args (cp_parser *parser, tree fn) in cp_parser_late_parsing_default_args() argument
30105 push_unparsed_function_queues (parser); in cp_parser_late_parsing_default_args()
30109 saved_local_variables_forbidden_p = parser->local_variables_forbidden_p; in cp_parser_late_parsing_default_args()
30110 parser->local_variables_forbidden_p = LOCAL_VARS_AND_THIS_FORBIDDEN; in cp_parser_late_parsing_default_args()
30135 = cp_parser_late_parse_one_default_arg (parser, parmdecl, in cp_parser_late_parsing_default_args()
30152 parser->local_variables_forbidden_p = saved_local_variables_forbidden_p; in cp_parser_late_parsing_default_args()
30155 pop_unparsed_function_queues (parser); in cp_parser_late_parsing_default_args()
30165 cp_parser_sizeof_pack (cp_parser *parser) in cp_parser_sizeof_pack() argument
30168 cp_lexer_consume_token (parser->lexer); in cp_parser_sizeof_pack()
30172 bool paren = cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN); in cp_parser_sizeof_pack()
30174 parens.consume_open (parser); in cp_parser_sizeof_pack()
30176 permerror (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_sizeof_pack()
30179 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_sizeof_pack()
30180 tree name = cp_parser_identifier (parser); in cp_parser_sizeof_pack()
30184 parser->scope = NULL_TREE; in cp_parser_sizeof_pack()
30185 parser->qualifying_scope = NULL_TREE; in cp_parser_sizeof_pack()
30186 parser->object_scope = NULL_TREE; in cp_parser_sizeof_pack()
30187 tree expr = cp_parser_lookup_name_simple (parser, name, token->location); in cp_parser_sizeof_pack()
30189 cp_parser_name_lookup_error (parser, name, expr, NLE_NULL, in cp_parser_sizeof_pack()
30199 parens.require_close (parser); in cp_parser_sizeof_pack()
30210 cp_parser_sizeof_operand (cp_parser* parser, enum rid keyword) in cp_parser_sizeof_operand() argument
30221 && cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_sizeof_operand()
30222 return cp_parser_sizeof_pack (parser); in cp_parser_sizeof_operand()
30226 saved_message = parser->type_definition_forbidden_message; in cp_parser_sizeof_operand()
30227 saved_message_arg = parser->type_definition_forbidden_message_arg; in cp_parser_sizeof_operand()
30228 parser->type_definition_forbidden_message in cp_parser_sizeof_operand()
30230 parser->type_definition_forbidden_message_arg in cp_parser_sizeof_operand()
30236 = parser->integral_constant_expression_p; in cp_parser_sizeof_operand()
30238 = parser->non_integral_constant_expression_p; in cp_parser_sizeof_operand()
30239 parser->integral_constant_expression_p = false; in cp_parser_sizeof_operand()
30246 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_sizeof_operand()
30250 tentative_firewall firewall (parser); in cp_parser_sizeof_operand()
30254 cp_parser_parse_tentatively (parser); in cp_parser_sizeof_operand()
30257 parens.consume_open (parser); in cp_parser_sizeof_operand()
30263 if (cp_parser_compound_literal_p (parser)) in cp_parser_sizeof_operand()
30264 cp_parser_simulate_error (parser); in cp_parser_sizeof_operand()
30267 bool saved_in_type_id_in_expr_p = parser->in_type_id_in_expr_p; in cp_parser_sizeof_operand()
30268 parser->in_type_id_in_expr_p = true; in cp_parser_sizeof_operand()
30270 type = cp_parser_type_id (parser); in cp_parser_sizeof_operand()
30272 parens.require_close (parser); in cp_parser_sizeof_operand()
30273 parser->in_type_id_in_expr_p = saved_in_type_id_in_expr_p; in cp_parser_sizeof_operand()
30277 if (cp_parser_parse_definitely (parser)) in cp_parser_sizeof_operand()
30282 cp_parser_commit_to_tentative_parse (parser); in cp_parser_sizeof_operand()
30284 expr = cp_parser_unary_expression (parser); in cp_parser_sizeof_operand()
30288 expr = cp_parser_unary_expression (parser); in cp_parser_sizeof_operand()
30295 parser->type_definition_forbidden_message = saved_message; in cp_parser_sizeof_operand()
30296 parser->type_definition_forbidden_message_arg = saved_message_arg; in cp_parser_sizeof_operand()
30297 parser->integral_constant_expression_p in cp_parser_sizeof_operand()
30299 parser->non_integral_constant_expression_p in cp_parser_sizeof_operand()
30308 cp_parser_declares_only_class_p (cp_parser *parser) in cp_parser_declares_only_class_p() argument
30312 return (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON) in cp_parser_declares_only_class_p()
30313 || cp_lexer_next_token_is (parser->lexer, CPP_COMMA)); in cp_parser_declares_only_class_p()
30320 cp_parser_set_storage_class (cp_parser *parser, in cp_parser_set_storage_class() argument
30327 if (parser->in_unbraced_linkage_specification_p) in cp_parser_set_storage_class()
30561 cp_parser_required_error (cp_parser *parser, in cp_parser_required_error() argument
30566 if (cp_parser_simulate_error (parser)) in cp_parser_required_error()
30733 cp_parser_error_1 (parser, gmsgid, token_desc, matching_location); in cp_parser_required_error()
30749 cp_parser_require (cp_parser* parser, in cp_parser_require() argument
30754 if (cp_lexer_next_token_is (parser->lexer, type)) in cp_parser_require()
30755 return cp_lexer_consume_token (parser->lexer); in cp_parser_require()
30759 if (!cp_parser_simulate_error (parser)) in cp_parser_require()
30760 cp_parser_required_error (parser, token_desc, /*keyword=*/false, in cp_parser_require()
30771 cp_parser_skip_to_end_of_template_parameter_list (cp_parser* parser) in cp_parser_skip_to_end_of_template_parameter_list() argument
30779 if (cp_parser_require (parser, CPP_GREATER, RT_GREATER)) in cp_parser_skip_to_end_of_template_parameter_list()
30786 switch (cp_lexer_peek_token (parser->lexer)->type) in cp_parser_skip_to_end_of_template_parameter_list()
30804 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_template_parameter_list()
30815 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_template_parameter_list()
30844 cp_lexer_consume_token (parser->lexer); in cp_parser_skip_to_end_of_template_parameter_list()
30855 cp_parser_require_keyword (cp_parser* parser, in cp_parser_require_keyword() argument
30859 cp_token *token = cp_parser_require (parser, CPP_KEYWORD, token_desc); in cp_parser_require_keyword()
30863 cp_parser_required_error (parser, token_desc, /*keyword=*/true, in cp_parser_require_keyword()
30895 cp_parser_next_token_starts_class_definition_p (cp_parser *parser) in cp_parser_next_token_starts_class_definition_p() argument
30899 token = cp_lexer_peek_token (parser->lexer); in cp_parser_next_token_starts_class_definition_p()
30902 && !parser->colon_doesnt_start_class_def_p)); in cp_parser_next_token_starts_class_definition_p()
30909 cp_parser_next_token_ends_template_argument_p (cp_parser *parser) in cp_parser_next_token_ends_template_argument_p() argument
30913 token = cp_lexer_peek_token (parser->lexer); in cp_parser_next_token_ends_template_argument_p()
30924 cp_parser_nth_token_starts_template_argument_list_p (cp_parser * parser, in cp_parser_nth_token_starts_template_argument_list_p() argument
30929 token = cp_lexer_peek_nth_token (parser->lexer, n); in cp_parser_nth_token_starts_template_argument_list_p()
30938 token2 = cp_lexer_peek_nth_token (parser->lexer, n+1); in cp_parser_nth_token_starts_template_argument_list_p()
30989 cp_parser_maybe_warn_enum_key (cp_parser *parser, location_t key_loc, in cp_parser_maybe_warn_enum_key() argument
30999 tree decl = cp_parser_lookup_name_simple (parser, name, input_location); in cp_parser_maybe_warn_enum_key()
31168 cp_parser_check_class_key (cp_parser *parser, location_t key_loc, in cp_parser_check_class_key() argument
31197 class_decl_loc_t::add (parser, key_loc, class_key, type, def_p, decl_p); in cp_parser_check_class_key()
31228 class_decl_loc_t::add (cp_parser *parser, location_t key_loc, in add() argument
31236 tree decl = cp_parser_lookup_name_simple (parser, name, input_location); in add()
31549 cp_parser_optional_template_keyword (cp_parser *parser) in cp_parser_optional_template_keyword() argument
31551 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TEMPLATE)) in cp_parser_optional_template_keyword()
31560 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_optional_template_keyword()
31567 cp_lexer_purge_token (parser->lexer); in cp_parser_optional_template_keyword()
31573 cp_lexer_consume_token (parser->lexer); in cp_parser_optional_template_keyword()
31584 cp_parser_pre_parsed_nested_name_specifier (cp_parser *parser) in cp_parser_pre_parsed_nested_name_specifier() argument
31589 check_value = cp_lexer_consume_token (parser->lexer)->u.tree_check_value; in cp_parser_pre_parsed_nested_name_specifier()
31591 parser->scope = saved_checks_value (check_value); in cp_parser_pre_parsed_nested_name_specifier()
31592 parser->qualifying_scope = check_value->qualifying_scope; in cp_parser_pre_parsed_nested_name_specifier()
31593 parser->object_scope = NULL_TREE; in cp_parser_pre_parsed_nested_name_specifier()
31600 cp_parser_cache_group (cp_parser *parser, in cp_parser_cache_group() argument
31606 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_cache_group()
31623 cp_lexer_consume_token (parser->lexer); in cp_parser_cache_group()
31627 cp_parser_cache_group (parser, CPP_CLOSE_BRACE, depth + 1); in cp_parser_cache_group()
31636 cp_parser_cache_group (parser, CPP_CLOSE_PAREN, depth + 1); in cp_parser_cache_group()
31641 cp_parser_cache_group (parser, CPP_PRAGMA_EOL, depth + 1); in cp_parser_cache_group()
31656 cp_parser_cache_defarg (cp_parser *parser, bool nsdmi) in cp_parser_cache_defarg() argument
31666 first_token = cp_lexer_peek_token (parser->lexer); in cp_parser_cache_defarg()
31670 cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0); in cp_parser_cache_defarg()
31671 token = cp_lexer_peek_token (parser->lexer); in cp_parser_cache_defarg()
31678 token = cp_lexer_peek_token (parser->lexer); in cp_parser_cache_defarg()
31700 bool saved_italp = parser->in_template_argument_list_p; in cp_parser_cache_defarg()
31701 parser->in_template_argument_list_p = true; in cp_parser_cache_defarg()
31703 cp_parser_parse_tentatively (parser); in cp_parser_cache_defarg()
31717 cp_lexer_consume_token (parser->lexer); in cp_parser_cache_defarg()
31718 cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_cache_defarg()
31725 peek = cp_lexer_peek_token (parser->lexer); in cp_parser_cache_defarg()
31726 if (cp_parser_error_occurred (parser)) in cp_parser_cache_defarg()
31738 cp_lexer_consume_token (parser->lexer); in cp_parser_cache_defarg()
31741 (parser, CP_PARSER_FLAGS_NONE); in cp_parser_cache_defarg()
31746 if (!cp_parser_error_occurred (parser) && !error) in cp_parser_cache_defarg()
31748 cp_parser_abort_tentative_parse (parser); in cp_parser_cache_defarg()
31750 parser->in_template_argument_list_p = saved_italp; in cp_parser_cache_defarg()
31833 token = cp_lexer_consume_token (parser->lexer); in cp_parser_cache_defarg()
31862 cp_parser_parse_tentatively (cp_parser* parser) in cp_parser_parse_tentatively() argument
31865 parser->context = cp_parser_context_new (parser->context); in cp_parser_parse_tentatively()
31867 cp_lexer_save_tokens (parser->lexer); in cp_parser_parse_tentatively()
31877 cp_parser_commit_to_tentative_parse (cp_parser* parser) in cp_parser_commit_to_tentative_parse() argument
31883 lexer = parser->lexer; in cp_parser_commit_to_tentative_parse()
31884 for (context = parser->context; context->next; context = context->next) in cp_parser_commit_to_tentative_parse()
31904 cp_parser_commit_to_topmost_tentative_parse (cp_parser* parser) in cp_parser_commit_to_topmost_tentative_parse() argument
31906 cp_parser_context *context = parser->context; in cp_parser_commit_to_topmost_tentative_parse()
31907 cp_lexer *lexer = parser->lexer; in cp_parser_commit_to_topmost_tentative_parse()
31925 cp_parser_abort_tentative_parse (cp_parser* parser) in cp_parser_abort_tentative_parse() argument
31927 gcc_assert (parser->context->status != CP_PARSER_STATUS_KIND_COMMITTED in cp_parser_abort_tentative_parse()
31929 cp_parser_simulate_error (parser); in cp_parser_abort_tentative_parse()
31932 cp_parser_parse_definitely (parser); in cp_parser_abort_tentative_parse()
31940 cp_parser_parse_definitely (cp_parser* parser) in cp_parser_parse_definitely() argument
31947 error_occurred = cp_parser_error_occurred (parser); in cp_parser_parse_definitely()
31949 context = parser->context; in cp_parser_parse_definitely()
31950 parser->context = context->next; in cp_parser_parse_definitely()
31957 cp_lexer_commit_tokens (parser->lexer); in cp_parser_parse_definitely()
31965 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_parse_definitely()
31979 cp_parser_uncommitted_to_tentative_parse_p (cp_parser* parser) in cp_parser_uncommitted_to_tentative_parse_p() argument
31981 return (cp_parser_parsing_tentatively (parser) in cp_parser_uncommitted_to_tentative_parse_p()
31982 && parser->context->status != CP_PARSER_STATUS_KIND_COMMITTED); in cp_parser_uncommitted_to_tentative_parse_p()
31989 cp_parser_error_occurred (cp_parser* parser) in cp_parser_error_occurred() argument
31991 return (cp_parser_parsing_tentatively (parser) in cp_parser_error_occurred()
31992 && parser->context->status == CP_PARSER_STATUS_KIND_ERROR); in cp_parser_error_occurred()
31998 cp_parser_allow_gnu_extensions_p (cp_parser* parser) in cp_parser_allow_gnu_extensions_p() argument
32000 return parser->allow_gnu_extensions_p; in cp_parser_allow_gnu_extensions_p()
32019 cp_parser_objc_expression (cp_parser* parser) in cp_parser_objc_expression() argument
32022 cp_token *kwd = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_expression()
32027 return cp_parser_objc_message_expression (parser); in cp_parser_objc_expression()
32030 kwd = cp_lexer_consume_token (parser->lexer); in cp_parser_objc_expression()
32037 return cp_parser_objc_encode_expression (parser); in cp_parser_objc_expression()
32040 return cp_parser_objc_protocol_expression (parser); in cp_parser_objc_expression()
32043 return cp_parser_objc_selector_expression (parser); in cp_parser_objc_expression()
32053 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_expression()
32067 cp_parser_objc_message_expression (cp_parser* parser) in cp_parser_objc_message_expression() argument
32071 parser->objective_c_message_context_p = true; in cp_parser_objc_message_expression()
32072 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_message_expression()
32073 cp_lexer_consume_token (parser->lexer); /* Eat '['. */ in cp_parser_objc_message_expression()
32074 receiver = cp_parser_objc_message_receiver (parser); in cp_parser_objc_message_expression()
32075 messageargs = cp_parser_objc_message_args (parser); in cp_parser_objc_message_expression()
32076 location_t end_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_message_expression()
32077 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_objc_message_expression()
32088 parser->objective_c_message_context_p = false; in cp_parser_objc_message_expression()
32101 cp_parser_objc_message_receiver (cp_parser* parser) in cp_parser_objc_message_receiver() argument
32107 cp_parser_parse_tentatively (parser); in cp_parser_objc_message_receiver()
32108 rcv = cp_parser_expression (parser); in cp_parser_objc_message_receiver()
32111 if (cp_parser_parse_definitely (parser)) in cp_parser_objc_message_receiver()
32114 cp_parser_parse_tentatively (parser); in cp_parser_objc_message_receiver()
32115 rcv = cp_parser_simple_type_specifier (parser, in cp_parser_objc_message_receiver()
32119 if (cp_parser_parse_definitely (parser)) in cp_parser_objc_message_receiver()
32122 cp_parser_error (parser, "objective-c++ message receiver expected"); in cp_parser_objc_message_receiver()
32146 cp_parser_objc_message_args (cp_parser* parser) in cp_parser_objc_message_args() argument
32150 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_message_args()
32157 selector = cp_parser_objc_selector (parser); in cp_parser_objc_message_args()
32161 && cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_objc_message_args()
32165 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_objc_message_args()
32166 arg = cp_parser_assignment_expression (parser); in cp_parser_objc_message_args()
32172 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_message_args()
32180 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_message_args()
32181 arg = cp_parser_assignment_expression (parser); in cp_parser_objc_message_args()
32187 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_message_args()
32192 cp_parser_error (parser, "objective-c++ message argument(s) are expected"); in cp_parser_objc_message_args()
32207 cp_parser_objc_encode_expression (cp_parser* parser) in cp_parser_objc_encode_expression() argument
32211 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_encode_expression()
32213 cp_lexer_consume_token (parser->lexer); /* Eat '@encode'. */ in cp_parser_objc_encode_expression()
32215 parens.require_open (parser); in cp_parser_objc_encode_expression()
32216 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_encode_expression()
32217 type = complete_type (cp_parser_type_id (parser)); in cp_parser_objc_encode_expression()
32218 parens.require_close (parser); in cp_parser_objc_encode_expression()
32245 location_t combined_loc = make_location (start_loc, start_loc, parser->lexer); in cp_parser_objc_encode_expression()
32253 cp_parser_objc_defs_expression (cp_parser *parser) in cp_parser_objc_defs_expression() argument
32257 cp_lexer_consume_token (parser->lexer); /* Eat '@defs'. */ in cp_parser_objc_defs_expression()
32259 parens.require_open (parser); in cp_parser_objc_defs_expression()
32260 name = cp_parser_identifier (parser); in cp_parser_objc_defs_expression()
32261 parens.require_close (parser); in cp_parser_objc_defs_expression()
32274 cp_parser_objc_protocol_expression (cp_parser* parser) in cp_parser_objc_protocol_expression() argument
32277 location_t start_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_protocol_expression()
32279 cp_lexer_consume_token (parser->lexer); /* Eat '@protocol'. */ in cp_parser_objc_protocol_expression()
32281 parens.require_open (parser); in cp_parser_objc_protocol_expression()
32282 proto = cp_parser_identifier (parser); in cp_parser_objc_protocol_expression()
32283 parens.require_close (parser); in cp_parser_objc_protocol_expression()
32289 location_t combined_loc = make_location (start_loc, start_loc, parser->lexer); in cp_parser_objc_protocol_expression()
32311 cp_parser_objc_selector_expression (cp_parser* parser) in cp_parser_objc_selector_expression() argument
32316 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_selector_expression()
32318 cp_lexer_consume_token (parser->lexer); /* Eat '@selector'. */ in cp_parser_objc_selector_expression()
32320 parens.require_open (parser); in cp_parser_objc_selector_expression()
32321 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_selector_expression()
32330 selector = cp_parser_objc_selector (parser); in cp_parser_objc_selector_expression()
32332 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON) in cp_parser_objc_selector_expression()
32333 && cp_lexer_next_token_is_not (parser->lexer, CPP_SCOPE)) in cp_parser_objc_selector_expression()
32343 cp_parser_error (parser, "expected %<:%>"); in cp_parser_objc_selector_expression()
32347 token = cp_lexer_consume_token (parser->lexer); in cp_parser_objc_selector_expression()
32363 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_selector_expression()
32367 parens.require_close (parser); in cp_parser_objc_selector_expression()
32374 location_t combined_loc = make_location (loc, loc, parser->lexer); in cp_parser_objc_selector_expression()
32390 cp_parser_objc_identifier_list (cp_parser* parser) in cp_parser_objc_identifier_list() argument
32396 identifier = cp_parser_identifier (parser); in cp_parser_objc_identifier_list()
32401 sep = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_identifier_list()
32405 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in cp_parser_objc_identifier_list()
32406 identifier = cp_parser_identifier (parser); in cp_parser_objc_identifier_list()
32412 sep = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_identifier_list()
32427 cp_parser_objc_alias_declaration (cp_parser* parser) in cp_parser_objc_alias_declaration() argument
32431 cp_lexer_consume_token (parser->lexer); /* Eat '@compatibility_alias'. */ in cp_parser_objc_alias_declaration()
32432 alias = cp_parser_identifier (parser); in cp_parser_objc_alias_declaration()
32433 orig = cp_parser_identifier (parser); in cp_parser_objc_alias_declaration()
32435 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_alias_declaration()
32447 cp_parser_objc_class_declaration (cp_parser* parser) in cp_parser_objc_class_declaration() argument
32449 cp_lexer_consume_token (parser->lexer); /* Eat '@class'. */ in cp_parser_objc_class_declaration()
32454 id = cp_parser_identifier (parser); in cp_parser_objc_class_declaration()
32460 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_objc_class_declaration()
32461 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_class_declaration()
32465 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_class_declaration()
32479 cp_parser_objc_protocol_refs_opt (cp_parser* parser) in cp_parser_objc_protocol_refs_opt() argument
32483 if(cp_lexer_next_token_is (parser->lexer, CPP_LESS)) in cp_parser_objc_protocol_refs_opt()
32485 cp_lexer_consume_token (parser->lexer); /* Eat '<'. */ in cp_parser_objc_protocol_refs_opt()
32486 protorefs = cp_parser_objc_identifier_list (parser); in cp_parser_objc_protocol_refs_opt()
32487 cp_parser_require (parser, CPP_GREATER, RT_GREATER); in cp_parser_objc_protocol_refs_opt()
32496 cp_parser_objc_visibility_spec (cp_parser* parser) in cp_parser_objc_visibility_spec() argument
32498 cp_token *vis = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_visibility_spec()
32519 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_visibility_spec()
32526 cp_parser_objc_method_type (cp_parser* parser) in cp_parser_objc_method_type() argument
32528 if (cp_lexer_consume_token (parser->lexer)->type == CPP_PLUS) in cp_parser_objc_method_type()
32537 cp_parser_objc_protocol_qualifiers (cp_parser* parser) in cp_parser_objc_protocol_qualifiers() argument
32540 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_protocol_qualifiers()
32553 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_protocol_qualifiers()
32554 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_protocol_qualifiers()
32564 cp_parser_objc_typename (cp_parser* parser) in cp_parser_objc_typename() argument
32568 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_objc_typename()
32573 parens.consume_open (parser); /* Eat '('. */ in cp_parser_objc_typename()
32574 proto_quals = cp_parser_objc_protocol_qualifiers (parser); in cp_parser_objc_typename()
32578 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_objc_typename()
32580 cp_type = cp_parser_type_id (parser); in cp_parser_objc_typename()
32592 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_objc_typename()
32599 parens.require_close (parser); in cp_parser_objc_typename()
32621 cp_parser_objc_selector (cp_parser* parser) in cp_parser_objc_selector() argument
32623 cp_token *token = cp_lexer_consume_token (parser->lexer); in cp_parser_objc_selector()
32652 cp_parser_objc_method_keyword_params (cp_parser* parser, tree* attributes) in cp_parser_objc_method_keyword_params() argument
32656 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_keyword_params()
32667 selector = cp_parser_objc_selector (parser); in cp_parser_objc_method_keyword_params()
32671 && cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_objc_method_keyword_params()
32678 if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) in cp_parser_objc_method_keyword_params()
32684 type_name = cp_parser_objc_typename (parser); in cp_parser_objc_method_keyword_params()
32686 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_ATTRIBUTE)) in cp_parser_objc_method_keyword_params()
32687 parm_attr = cp_parser_attributes_opt (parser); in cp_parser_objc_method_keyword_params()
32688 identifier = cp_parser_identifier (parser); in cp_parser_objc_method_keyword_params()
32697 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_keyword_params()
32702 cp_parser_error (parser, "objective-c++ method declaration is expected"); in cp_parser_objc_method_keyword_params()
32709 *attributes = cp_parser_attributes_opt (parser); in cp_parser_objc_method_keyword_params()
32710 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON) in cp_parser_objc_method_keyword_params()
32711 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_objc_method_keyword_params()
32713 cp_parser_error (parser, in cp_parser_objc_method_keyword_params()
32720 cp_parser_error (parser, "objective-c++ method declaration is expected"); in cp_parser_objc_method_keyword_params()
32729 cp_parser_objc_method_tail_params_opt (cp_parser* parser, bool *ellipsisp, in cp_parser_objc_method_tail_params_opt() argument
32733 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_tail_params_opt()
32741 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in cp_parser_objc_method_tail_params_opt()
32742 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_tail_params_opt()
32746 cp_lexer_consume_token (parser->lexer); /* Eat '...'. */ in cp_parser_objc_method_tail_params_opt()
32748 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_tail_params_opt()
32753 parmdecl = cp_parser_parameter_declaration (parser, CP_PARSER_FLAGS_NONE, in cp_parser_objc_method_tail_params_opt()
32761 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_tail_params_opt()
32769 *attributes = cp_parser_attributes_opt (parser); in cp_parser_objc_method_tail_params_opt()
32770 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON) in cp_parser_objc_method_tail_params_opt()
32771 || cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_objc_method_tail_params_opt()
32777 *attributes = cp_parser_attributes_opt (parser); in cp_parser_objc_method_tail_params_opt()
32779 cp_parser_error (parser, in cp_parser_objc_method_tail_params_opt()
32790 cp_parser_objc_interstitial_code (cp_parser* parser) in cp_parser_objc_interstitial_code() argument
32792 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_interstitial_code()
32798 (cp_lexer_peek_nth_token (parser->lexer, 2))) in cp_parser_objc_interstitial_code()
32799 cp_parser_linkage_specification (parser); in cp_parser_objc_interstitial_code()
32802 cp_parser_pragma (parser, pragma_objc_icode, NULL); in cp_parser_objc_interstitial_code()
32805 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_interstitial_code()
32809 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_interstitial_code()
32814 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_interstitial_code()
32818 cp_parser_namespace_definition (parser); in cp_parser_objc_interstitial_code()
32822 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_interstitial_code()
32828 cp_parser_block_declaration (parser, /*statement_p=*/false); in cp_parser_objc_interstitial_code()
32834 cp_parser_objc_method_signature (cp_parser* parser, tree* attributes) in cp_parser_objc_method_signature() argument
32840 is_class_method = cp_parser_objc_method_type (parser); in cp_parser_objc_method_signature()
32841 rettype = cp_parser_objc_typename (parser); in cp_parser_objc_method_signature()
32843 kwdparms = cp_parser_objc_method_keyword_params (parser, attributes); in cp_parser_objc_method_signature()
32846 optparms = cp_parser_objc_method_tail_params_opt (parser, &ellipsis, attributes); in cp_parser_objc_method_signature()
32854 cp_parser_objc_method_maybe_bad_prefix_attributes (cp_parser* parser) in cp_parser_objc_method_maybe_bad_prefix_attributes() argument
32857 cp_lexer_save_tokens (parser->lexer); in cp_parser_objc_method_maybe_bad_prefix_attributes()
32858 tattr = cp_parser_attributes_opt (parser); in cp_parser_objc_method_maybe_bad_prefix_attributes()
32863 if (cp_lexer_next_token_is (parser->lexer, CPP_PLUS) in cp_parser_objc_method_maybe_bad_prefix_attributes()
32864 || cp_lexer_next_token_is (parser->lexer, CPP_MINUS)) in cp_parser_objc_method_maybe_bad_prefix_attributes()
32869 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_objc_method_maybe_bad_prefix_attributes()
32876 cp_parser_objc_method_prototype_list (cp_parser* parser) in cp_parser_objc_method_prototype_list() argument
32878 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_prototype_list()
32890 sig = cp_parser_objc_method_signature (parser, &attributes); in cp_parser_objc_method_prototype_list()
32893 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_method_prototype_list()
32894 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_prototype_list()
32898 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_method_prototype_list()
32901 cp_parser_objc_at_property_declaration (parser); in cp_parser_objc_method_prototype_list()
32903 && cp_parser_objc_method_maybe_bad_prefix_attributes(parser)) in cp_parser_objc_method_prototype_list()
32904 warning_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_objc_method_prototype_list()
32909 cp_parser_objc_interstitial_code (parser); in cp_parser_objc_method_prototype_list()
32911 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_prototype_list()
32915 cp_lexer_consume_token (parser->lexer); /* Eat '@end'. */ in cp_parser_objc_method_prototype_list()
32917 cp_parser_error (parser, "expected %<@end%>"); in cp_parser_objc_method_prototype_list()
32925 cp_parser_objc_method_definition_list (cp_parser* parser) in cp_parser_objc_method_definition_list() argument
32927 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_definition_list()
32943 sig = cp_parser_objc_method_signature (parser, &attribute); in cp_parser_objc_method_definition_list()
32946 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_method_definition_list()
32947 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_definition_list()
32954 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_method_definition_list()
32955 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_method_definition_list()
32957 ptk = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_definition_list()
32963 meth = cp_parser_function_definition_after_declarator (parser, in cp_parser_objc_method_definition_list()
32972 cp_parser_objc_at_property_declaration (parser); in cp_parser_objc_method_definition_list()
32974 cp_parser_objc_at_synthesize_declaration (parser); in cp_parser_objc_method_definition_list()
32976 cp_parser_objc_at_dynamic_declaration (parser); in cp_parser_objc_method_definition_list()
32978 && cp_parser_objc_method_maybe_bad_prefix_attributes(parser)) in cp_parser_objc_method_definition_list()
32983 cp_parser_objc_interstitial_code (parser); in cp_parser_objc_method_definition_list()
32985 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_method_definition_list()
32989 cp_lexer_consume_token (parser->lexer); /* Eat '@end'. */ in cp_parser_objc_method_definition_list()
32991 cp_parser_error (parser, "expected %<@end%>"); in cp_parser_objc_method_definition_list()
32999 cp_parser_objc_class_ivars (cp_parser* parser) in cp_parser_objc_class_ivars() argument
33001 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
33006 cp_lexer_consume_token (parser->lexer); /* Eat '{'. */ in cp_parser_objc_class_ivars()
33007 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
33016 cp_parser_objc_visibility_spec (parser); in cp_parser_objc_class_ivars()
33018 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_objc_class_ivars()
33021 cp_parser_decl_specifier_seq (parser, in cp_parser_objc_class_ivars()
33029 cp_parser_error (parser, "invalid type for instance variable"); in cp_parser_objc_class_ivars()
33036 cp_parser_error (parser, "invalid type for instance variable"); in cp_parser_objc_class_ivars()
33043 cp_parser_error (parser, "invalid type for instance variable"); in cp_parser_objc_class_ivars()
33052 while (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_class_ivars()
33059 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
33064 && (cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_objc_class_ivars()
33069 cp_parser_identifier (parser), in cp_parser_objc_class_ivars()
33073 cp_lexer_consume_token (parser->lexer); /* Eat ':'. */ in cp_parser_objc_class_ivars()
33076 = cp_parser_constant_expression (parser); in cp_parser_objc_class_ivars()
33082 = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_objc_class_ivars()
33092 attributes = cp_parser_attributes_opt (parser); in cp_parser_objc_class_ivars()
33121 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
33125 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in cp_parser_objc_class_ivars()
33131 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_class_ivars()
33132 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_class_ivars()
33136 cp_parser_error (parser, "expected %<}%>"); in cp_parser_objc_class_ivars()
33141 cp_lexer_consume_token (parser->lexer); /* Eat '}'. */ in cp_parser_objc_class_ivars()
33144 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_class_ivars()
33145 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_class_ivars()
33151 cp_parser_objc_protocol_declaration (cp_parser* parser, tree attributes) in cp_parser_objc_protocol_declaration() argument
33156 cp_lexer_consume_token (parser->lexer); /* Eat '@protocol'. */ in cp_parser_objc_protocol_declaration()
33157 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME)) in cp_parser_objc_protocol_declaration()
33159 tok = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_protocol_declaration()
33161 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_protocol_declaration()
33166 tok = cp_lexer_peek_nth_token (parser->lexer, 2); in cp_parser_objc_protocol_declaration()
33175 id = cp_parser_identifier (parser); in cp_parser_objc_protocol_declaration()
33181 if(cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_objc_protocol_declaration()
33182 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_protocol_declaration()
33186 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_protocol_declaration()
33192 proto = cp_parser_identifier (parser); in cp_parser_objc_protocol_declaration()
33193 protorefs = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_objc_protocol_declaration()
33195 cp_parser_objc_method_prototype_list (parser); in cp_parser_objc_protocol_declaration()
33202 cp_parser_objc_superclass_or_category (cp_parser *parser, in cp_parser_objc_superclass_or_category() argument
33207 cp_token *next = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_superclass_or_category()
33213 cp_lexer_consume_token (parser->lexer); /* Eat ':'. */ in cp_parser_objc_superclass_or_category()
33214 *super = cp_parser_identifier (parser); in cp_parser_objc_superclass_or_category()
33219 parens.consume_open (parser); /* Eat '('. */ in cp_parser_objc_superclass_or_category()
33223 if (iface_p && cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_objc_superclass_or_category()
33229 *categ = cp_parser_identifier (parser); in cp_parser_objc_superclass_or_category()
33231 parens.require_close (parser); in cp_parser_objc_superclass_or_category()
33238 cp_parser_objc_class_interface (cp_parser* parser, tree attributes) in cp_parser_objc_class_interface() argument
33243 cp_lexer_consume_token (parser->lexer); /* Eat '@interface'. */ in cp_parser_objc_class_interface()
33244 name = cp_parser_identifier (parser); in cp_parser_objc_class_interface()
33254 cp_parser_objc_superclass_or_category (parser, true, &super, &categ, in cp_parser_objc_class_interface()
33256 protos = cp_parser_objc_protocol_refs_opt (parser); in cp_parser_objc_class_interface()
33265 cp_parser_objc_class_ivars (parser); in cp_parser_objc_class_interface()
33269 cp_parser_objc_method_prototype_list (parser); in cp_parser_objc_class_interface()
33275 cp_parser_objc_class_implementation (cp_parser* parser) in cp_parser_objc_class_implementation() argument
33280 cp_lexer_consume_token (parser->lexer); /* Eat '@implementation'. */ in cp_parser_objc_class_implementation()
33281 name = cp_parser_identifier (parser); in cp_parser_objc_class_implementation()
33292 cp_parser_objc_superclass_or_category (parser, false, &super, &categ, in cp_parser_objc_class_implementation()
33302 cp_parser_objc_class_ivars (parser); in cp_parser_objc_class_implementation()
33306 cp_parser_objc_method_definition_list (parser); in cp_parser_objc_class_implementation()
33312 cp_parser_objc_end_implementation (cp_parser* parser) in cp_parser_objc_end_implementation() argument
33314 cp_lexer_consume_token (parser->lexer); /* Eat '@end'. */ in cp_parser_objc_end_implementation()
33321 cp_parser_objc_declaration (cp_parser* parser, tree attributes) in cp_parser_objc_declaration() argument
33324 cp_token *kwd = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_declaration()
33349 cp_parser_objc_alias_declaration (parser); in cp_parser_objc_declaration()
33352 cp_parser_objc_class_declaration (parser); in cp_parser_objc_declaration()
33355 cp_parser_objc_protocol_declaration (parser, attributes); in cp_parser_objc_declaration()
33358 cp_parser_objc_class_interface (parser, attributes); in cp_parser_objc_declaration()
33361 cp_parser_objc_class_implementation (parser); in cp_parser_objc_declaration()
33364 cp_parser_objc_end_implementation (parser); in cp_parser_objc_declaration()
33369 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_declaration()
33400 cp_parser_objc_try_catch_finally_statement (cp_parser *parser) in cp_parser_objc_try_catch_finally_statement() argument
33405 cp_parser_require_keyword (parser, RID_AT_TRY, RT_AT_TRY); in cp_parser_objc_try_catch_finally_statement()
33406 location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_try_catch_finally_statement()
33411 cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); in cp_parser_objc_try_catch_finally_statement()
33414 while (cp_lexer_next_token_is_keyword (parser->lexer, RID_AT_CATCH)) in cp_parser_objc_try_catch_finally_statement()
33421 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_try_catch_finally_statement()
33422 if (parens.require_open (parser)) in cp_parser_objc_try_catch_finally_statement()
33424 if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) in cp_parser_objc_try_catch_finally_statement()
33431 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_try_catch_finally_statement()
33438 parm = cp_parser_parameter_declaration (parser, CP_PARSER_FLAGS_NONE, in cp_parser_objc_try_catch_finally_statement()
33449 parens.require_close (parser); in cp_parser_objc_try_catch_finally_statement()
33460 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_objc_try_catch_finally_statement()
33461 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_try_catch_finally_statement()
33469 cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); in cp_parser_objc_try_catch_finally_statement()
33472 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AT_FINALLY)) in cp_parser_objc_try_catch_finally_statement()
33474 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_try_catch_finally_statement()
33475 location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_try_catch_finally_statement()
33479 cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); in cp_parser_objc_try_catch_finally_statement()
33494 cp_parser_objc_synchronized_statement (cp_parser *parser) in cp_parser_objc_synchronized_statement() argument
33499 cp_parser_require_keyword (parser, RID_AT_SYNCHRONIZED, RT_AT_SYNCHRONIZED); in cp_parser_objc_synchronized_statement()
33501 location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_synchronized_statement()
33504 parens.require_open (parser); in cp_parser_objc_synchronized_statement()
33505 lock = cp_parser_expression (parser); in cp_parser_objc_synchronized_statement()
33506 parens.require_close (parser); in cp_parser_objc_synchronized_statement()
33511 cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); in cp_parser_objc_synchronized_statement()
33524 cp_parser_objc_throw_statement (cp_parser *parser) in cp_parser_objc_throw_statement() argument
33527 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_throw_statement()
33529 cp_parser_require_keyword (parser, RID_AT_THROW, RT_AT_THROW); in cp_parser_objc_throw_statement()
33531 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_throw_statement()
33532 expr = cp_parser_expression (parser); in cp_parser_objc_throw_statement()
33534 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_throw_statement()
33542 cp_parser_objc_statement (cp_parser * parser) in cp_parser_objc_statement() argument
33545 cp_token *kwd = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_statement()
33550 return cp_parser_objc_try_catch_finally_statement (parser); in cp_parser_objc_statement()
33552 return cp_parser_objc_synchronized_statement (parser); in cp_parser_objc_statement()
33554 return cp_parser_objc_throw_statement (parser); in cp_parser_objc_statement()
33558 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_objc_statement()
33570 cp_parser_objc_valid_prefix_attributes (cp_parser* parser, tree *attrib) in cp_parser_objc_valid_prefix_attributes() argument
33572 cp_lexer_save_tokens (parser->lexer); in cp_parser_objc_valid_prefix_attributes()
33573 *attrib = cp_parser_attributes_opt (parser); in cp_parser_objc_valid_prefix_attributes()
33575 if (OBJC_IS_AT_KEYWORD (cp_lexer_peek_token (parser->lexer)->keyword)) in cp_parser_objc_valid_prefix_attributes()
33577 cp_lexer_commit_tokens (parser->lexer); in cp_parser_objc_valid_prefix_attributes()
33580 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_objc_valid_prefix_attributes()
33597 cp_parser_objc_struct_declaration (cp_parser *parser) in cp_parser_objc_struct_declaration() argument
33604 cp_parser_decl_specifier_seq (parser, in cp_parser_objc_struct_declaration()
33615 cp_parser_error (parser, "invalid type for property"); in cp_parser_objc_struct_declaration()
33622 cp_parser_error (parser, "invalid type for property"); in cp_parser_objc_struct_declaration()
33629 cp_parser_error (parser, "invalid type for property"); in cp_parser_objc_struct_declaration()
33637 while (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_objc_struct_declaration()
33644 declarator = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, in cp_parser_objc_struct_declaration()
33649 attributes = cp_parser_attributes_opt (parser); in cp_parser_objc_struct_declaration()
33675 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_struct_declaration()
33678 cp_lexer_consume_token (parser->lexer); /* Eat ','. */ in cp_parser_objc_struct_declaration()
33718 cp_parser_objc_at_property_declaration (cp_parser *parser) in cp_parser_objc_at_property_declaration() argument
33724 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_at_property_declaration()
33726 cp_lexer_consume_token (parser->lexer); /* Eat '@property'. */ in cp_parser_objc_at_property_declaration()
33729 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_objc_at_property_declaration()
33733 location_t attr_start = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_at_property_declaration()
33734 parens.consume_open (parser); in cp_parser_objc_at_property_declaration()
33738 location_t attr_end = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_at_property_declaration()
33740 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_objc_at_property_declaration()
33749 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_at_property_declaration()
33760 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_at_property_declaration()
33773 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_at_property_declaration()
33796 if (cp_lexer_next_token_is_not (parser->lexer, CPP_EQ)) in cp_parser_objc_at_property_declaration()
33805 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_at_property_declaration()
33807 cp_lexer_consume_token (parser->lexer); /* eat the = */ in cp_parser_objc_at_property_declaration()
33810 (cp_lexer_peek_token (parser->lexer)->type)) in cp_parser_objc_at_property_declaration()
33820 token = cp_lexer_peek_token (parser->lexer); in cp_parser_objc_at_property_declaration()
33824 meth_name = cp_parser_objc_selector (parser); in cp_parser_objc_at_property_declaration()
33828 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) in cp_parser_objc_at_property_declaration()
33839 (parser->lexer)->location); in cp_parser_objc_at_property_declaration()
33840 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_at_property_declaration()
33860 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_objc_at_property_declaration()
33861 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_at_property_declaration()
33866 if (syntax_error || !parens.require_close (parser)) in cp_parser_objc_at_property_declaration()
33867 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_objc_at_property_declaration()
33878 tree properties = cp_parser_objc_struct_declaration (parser); in cp_parser_objc_at_property_declaration()
33881 cp_parser_skip_to_end_of_statement (parser); in cp_parser_objc_at_property_declaration()
33883 cp_parser_error (parser, "expected identifier"); in cp_parser_objc_at_property_declaration()
33894 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_at_property_declaration()
33922 cp_parser_objc_at_synthesize_declaration (cp_parser *parser) in cp_parser_objc_at_synthesize_declaration() argument
33926 loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_at_synthesize_declaration()
33928 cp_lexer_consume_token (parser->lexer); /* Eat '@synthesize'. */ in cp_parser_objc_at_synthesize_declaration()
33932 property = cp_parser_identifier (parser); in cp_parser_objc_at_synthesize_declaration()
33935 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_at_synthesize_declaration()
33938 if (cp_lexer_next_token_is (parser->lexer, CPP_EQ)) in cp_parser_objc_at_synthesize_declaration()
33940 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_at_synthesize_declaration()
33941 ivar = cp_parser_identifier (parser); in cp_parser_objc_at_synthesize_declaration()
33944 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_at_synthesize_declaration()
33951 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_objc_at_synthesize_declaration()
33952 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_at_synthesize_declaration()
33956 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_at_synthesize_declaration()
33973 cp_parser_objc_at_dynamic_declaration (cp_parser *parser) in cp_parser_objc_at_dynamic_declaration() argument
33977 loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_objc_at_dynamic_declaration()
33979 cp_lexer_consume_token (parser->lexer); /* Eat '@dynamic'. */ in cp_parser_objc_at_dynamic_declaration()
33983 property = cp_parser_identifier (parser); in cp_parser_objc_at_dynamic_declaration()
33986 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_at_dynamic_declaration()
33990 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_objc_at_dynamic_declaration()
33991 cp_lexer_consume_token (parser->lexer); in cp_parser_objc_at_dynamic_declaration()
33995 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_objc_at_dynamic_declaration()
34008 cp_parser_omp_clause_name (cp_parser *parser) in cp_parser_omp_clause_name() argument
34012 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO)) in cp_parser_omp_clause_name()
34014 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_IF)) in cp_parser_omp_clause_name()
34016 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_DEFAULT)) in cp_parser_omp_clause_name()
34018 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_DELETE)) in cp_parser_omp_clause_name()
34020 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_PRIVATE)) in cp_parser_omp_clause_name()
34022 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_FOR)) in cp_parser_omp_clause_name()
34024 else if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_name()
34026 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_name()
34237 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_name()
34274 cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind,
34279 bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p;
34282 parser->colon_corrects_to_scope_p = false;
34290 cp_parser_parse_tentatively (parser);
34291 token = cp_lexer_peek_token (parser->lexer);
34300 cp_lexer_consume_token (parser->lexer);
34307 decl = cp_parser_primary_expression (parser, false, false, false,
34312 name = cp_parser_id_expression (parser, /*template_p=*/false,
34320 && cp_parser_simulate_error (parser))
34326 decl = cp_parser_lookup_name_simple (parser, name, token->location);
34332 && cp_parser_simulate_error (parser))
34334 cp_parser_name_lookup_error (parser, name, decl, NLE_NULL,
34349 if (cp_lexer_peek_token (parser->lexer)->type != CPP_OPEN_SQUARE)
34359 while (cp_lexer_next_token_is (parser->lexer, CPP_DOT)
34361 && cp_lexer_next_token_is (parser->lexer, CPP_DEREF)))
34364 = cp_lexer_next_token_is (parser->lexer, CPP_DOT)
34367 = cp_lexer_peek_token (parser->lexer)->location;
34369 cp_lexer_consume_token (parser->lexer);
34372 = cp_parser_postfix_dot_deref_expression (parser, ttype,
34381 while (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE))
34385 parser->colon_corrects_to_scope_p = false;
34386 cp_lexer_consume_token (parser->lexer);
34387 if (!cp_lexer_next_token_is (parser->lexer, CPP_COLON))
34389 low_bound = cp_parser_expression (parser);
34394 parser->colon_corrects_to_scope_p
34396 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_SQUARE))
34401 if (!cp_parser_require (parser, CPP_COLON, RT_COLON))
34404 && cp_parser_simulate_error (parser))
34409 cp_parser_commit_to_tentative_parse (parser);
34410 if (!cp_lexer_next_token_is (parser->lexer,
34413 length = cp_parser_expression (parser);
34419 if (!cp_parser_require (parser, CPP_CLOSE_SQUARE,
34423 && cp_parser_simulate_error (parser))
34437 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)
34438 && cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)
34439 && cp_parser_simulate_error (parser))
34442 cp_parser_abort_tentative_parse (parser);
34443 decl = cp_parser_assignment_expression (parser, NULL,
34447 cp_parser_parse_definitely (parser);
34459 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA))
34461 cp_lexer_consume_token (parser->lexer);
34465 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p;
34467 if (colon != NULL && cp_lexer_next_token_is (parser->lexer, CPP_COLON))
34470 cp_parser_require (parser, CPP_COLON, RT_COLON);
34474 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN))
34482 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p;
34483 ending = cp_parser_skip_to_closing_parenthesis (parser,
34498 cp_parser_omp_var_list (cp_parser *parser, enum omp_clause_code kind, tree list,
34501 if (cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN))
34502 return cp_parser_omp_var_list_no_open (parser, kind, list, NULL,
34521 cp_parser_oacc_data_clause (cp_parser *parser, pragma_omp_clause c_kind, in cp_parser_oacc_data_clause() argument
34570 nl = cp_parser_omp_var_list (parser, OMP_CLAUSE_MAP, list, true); in cp_parser_oacc_data_clause()
34582 cp_parser_oacc_data_clause_deviceptr (cp_parser *parser, tree list) in cp_parser_oacc_data_clause_deviceptr() argument
34584 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_oacc_data_clause_deviceptr()
34590 vars = cp_parser_omp_var_list (parser, OMP_CLAUSE_ERROR, NULL); in cp_parser_oacc_data_clause_deviceptr()
34629 cp_parser_oacc_single_int_clause (cp_parser *parser, omp_clause_code code, in cp_parser_oacc_single_int_clause() argument
34632 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_oacc_single_int_clause()
34635 if (!parens.require_open (parser)) in cp_parser_oacc_single_int_clause()
34638 tree t = cp_parser_assignment_expression (parser, NULL, false, false); in cp_parser_oacc_single_int_clause()
34641 || !parens.require_close (parser)) in cp_parser_oacc_single_int_clause()
34643 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_oacc_single_int_clause()
34675 cp_parser_oacc_shape_clause (cp_parser *parser, location_t loc, in cp_parser_oacc_shape_clause() argument
34680 cp_lexer *lexer = parser->lexer; in cp_parser_oacc_shape_clause()
34689 parens.consume_open (parser); in cp_parser_oacc_shape_clause()
34702 if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) in cp_parser_oacc_shape_clause()
34708 cp_parser_error (parser, "too many %<static%> arguments"); in cp_parser_oacc_shape_clause()
34714 && (cp_lexer_nth_token_is (parser->lexer, 2, CPP_COMMA) in cp_parser_oacc_shape_clause()
34715 || cp_lexer_nth_token_is (parser->lexer, 2, in cp_parser_oacc_shape_clause()
34741 cp_parser_error (parser, "unexpected argument"); in cp_parser_oacc_shape_clause()
34745 tree expr = cp_parser_assignment_expression (parser, NULL, false, in cp_parser_oacc_shape_clause()
34763 if (!parens.require_close (parser)) in cp_parser_oacc_shape_clause()
34780 cp_parser_skip_to_closing_parenthesis (parser, false, false, true); in cp_parser_oacc_shape_clause()
34788 cp_parser_oacc_clause_tile (cp_parser *parser, location_t clause_loc, tree list) in cp_parser_oacc_clause_tile() argument
34801 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_oacc_clause_tile()
34806 if (tile && !cp_parser_require (parser, CPP_COMMA, RT_COMMA)) in cp_parser_oacc_clause_tile()
34809 if (cp_lexer_next_token_is (parser->lexer, CPP_MULT) in cp_parser_oacc_clause_tile()
34810 && (cp_lexer_nth_token_is (parser->lexer, 2, CPP_COMMA) in cp_parser_oacc_clause_tile()
34811 || cp_lexer_nth_token_is (parser->lexer, 2, CPP_CLOSE_PAREN))) in cp_parser_oacc_clause_tile()
34813 cp_lexer_consume_token (parser->lexer); in cp_parser_oacc_clause_tile()
34817 expr = cp_parser_constant_expression (parser); in cp_parser_oacc_clause_tile()
34821 while (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)); in cp_parser_oacc_clause_tile()
34824 cp_lexer_consume_token (parser->lexer); in cp_parser_oacc_clause_tile()
34837 cp_parser_oacc_wait_list (cp_parser *parser, location_t clause_loc, tree list) in cp_parser_oacc_wait_list() argument
34842 args = cp_parser_parenthesized_expression_list (parser, non_attr, in cp_parser_oacc_wait_list()
34851 cp_parser_error (parser, "expected integer expression list"); in cp_parser_oacc_wait_list()
34888 cp_parser_oacc_clause_wait (cp_parser *parser, tree list) in cp_parser_oacc_clause_wait() argument
34890 location_t location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_oacc_clause_wait()
34892 if (cp_lexer_peek_token (parser->lexer)->type == CPP_OPEN_PAREN) in cp_parser_oacc_clause_wait()
34893 list = cp_parser_oacc_wait_list (parser, location, list); in cp_parser_oacc_clause_wait()
34910 cp_parser_omp_clause_collapse (cp_parser *parser, tree list, location_t location) in cp_parser_omp_clause_collapse() argument
34916 loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_clause_collapse()
34918 if (!parens.require_open (parser)) in cp_parser_omp_clause_collapse()
34921 num = cp_parser_constant_expression (parser); in cp_parser_omp_clause_collapse()
34923 if (!parens.require_close (parser)) in cp_parser_omp_clause_collapse()
34924 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_collapse()
34956 cp_parser_omp_clause_default (cp_parser *parser, tree list, in cp_parser_omp_clause_default() argument
34963 if (!parens.require_open (parser)) in cp_parser_omp_clause_default()
34965 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_default()
34967 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_default()
34994 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_default()
35000 cp_parser_error (parser, "expected %<none%> or %<present%>"); in cp_parser_omp_clause_default()
35002 cp_parser_error (parser, "expected %<none%> or %<shared%>"); in cp_parser_omp_clause_default()
35006 || !parens.require_close (parser)) in cp_parser_omp_clause_default()
35007 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_default()
35026 cp_parser_omp_clause_final (cp_parser *parser, tree list, location_t location) in cp_parser_omp_clause_final() argument
35031 if (!parens.require_open (parser)) in cp_parser_omp_clause_final()
35034 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_final()
35037 || !parens.require_close (parser)) in cp_parser_omp_clause_final()
35038 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_final()
35066 cp_parser_omp_clause_if (cp_parser *parser, tree list, location_t location, in cp_parser_omp_clause_if() argument
35073 if (!parens.require_open (parser)) in cp_parser_omp_clause_if()
35076 if (is_omp && cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_if()
35078 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_if()
35095 if (cp_lexer_nth_token_is (parser->lexer, 2, CPP_NAME)) in cp_parser_omp_clause_if()
35097 id = cp_lexer_peek_nth_token (parser->lexer, 2)->u.value; in cp_parser_omp_clause_if()
35112 = cp_lexer_peek_nth_token (parser->lexer, 2)->location; in cp_parser_omp_clause_if()
35120 if (cp_lexer_nth_token_is (parser->lexer, 3, CPP_NAME)) in cp_parser_omp_clause_if()
35122 id = cp_lexer_peek_nth_token (parser->lexer, 3)->u.value; in cp_parser_omp_clause_if()
35130 = cp_lexer_peek_nth_token (parser->lexer, 3)->location; in cp_parser_omp_clause_if()
35139 if (cp_lexer_nth_token_is (parser->lexer, n, CPP_COLON)) in cp_parser_omp_clause_if()
35142 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_if()
35149 = cp_lexer_peek_nth_token (parser->lexer, n)->location; in cp_parser_omp_clause_if()
35157 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_if()
35160 || !parens.require_close (parser)) in cp_parser_omp_clause_if()
35161 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_if()
35252 cp_parser_omp_clause_num_threads (cp_parser *parser, tree list, in cp_parser_omp_clause_num_threads() argument
35258 if (!parens.require_open (parser)) in cp_parser_omp_clause_num_threads()
35261 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_num_threads()
35264 || !parens.require_close (parser)) in cp_parser_omp_clause_num_threads()
35265 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_num_threads()
35283 cp_parser_omp_clause_num_tasks (cp_parser *parser, tree list, in cp_parser_omp_clause_num_tasks() argument
35289 if (!parens.require_open (parser)) in cp_parser_omp_clause_num_tasks()
35292 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_num_tasks()
35295 || !parens.require_close (parser)) in cp_parser_omp_clause_num_tasks()
35296 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_num_tasks()
35314 cp_parser_omp_clause_grainsize (cp_parser *parser, tree list, in cp_parser_omp_clause_grainsize() argument
35320 if (!parens.require_open (parser)) in cp_parser_omp_clause_grainsize()
35323 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_grainsize()
35326 || !parens.require_close (parser)) in cp_parser_omp_clause_grainsize()
35327 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_grainsize()
35345 cp_parser_omp_clause_priority (cp_parser *parser, tree list, in cp_parser_omp_clause_priority() argument
35351 if (!parens.require_open (parser)) in cp_parser_omp_clause_priority()
35354 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_priority()
35357 || !parens.require_close (parser)) in cp_parser_omp_clause_priority()
35358 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_priority()
35376 cp_parser_omp_clause_hint (cp_parser *parser, tree list, location_t location) in cp_parser_omp_clause_hint() argument
35381 if (!parens.require_open (parser)) in cp_parser_omp_clause_hint()
35384 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_hint()
35387 || !parens.require_close (parser)) in cp_parser_omp_clause_hint()
35388 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_hint()
35408 cp_parser_omp_clause_defaultmap (cp_parser *parser, tree list, in cp_parser_omp_clause_defaultmap() argument
35418 if (!parens.require_open (parser)) in cp_parser_omp_clause_defaultmap()
35421 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_DEFAULT)) in cp_parser_omp_clause_defaultmap()
35423 else if (!cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_defaultmap()
35426 cp_parser_error (parser, "expected %<alloc%>, %<to%>, %<from%>, " in cp_parser_omp_clause_defaultmap()
35433 id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_defaultmap()
35481 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_defaultmap()
35483 if (!cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_omp_clause_defaultmap()
35485 if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) in cp_parser_omp_clause_defaultmap()
35488 if (!cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_defaultmap()
35491 cp_parser_error (parser, "expected %<scalar%>, %<aggregate%> or " in cp_parser_omp_clause_defaultmap()
35495 id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_defaultmap()
35525 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_defaultmap()
35527 if (!parens.require_close (parser)) in cp_parser_omp_clause_defaultmap()
35574 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_defaultmap()
35584 cp_parser_omp_clause_order (cp_parser *parser, tree list, location_t location) in cp_parser_omp_clause_order() argument
35590 if (!parens.require_open (parser)) in cp_parser_omp_clause_order()
35593 if (!cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_order()
35595 cp_parser_error (parser, "expected %<concurrent%>"); in cp_parser_omp_clause_order()
35600 id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_order()
35605 cp_parser_error (parser, "expected %<concurrent%>"); in cp_parser_omp_clause_order()
35608 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_order()
35609 if (!parens.require_close (parser)) in cp_parser_omp_clause_order()
35618 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_order()
35628 cp_parser_omp_clause_bind (cp_parser *parser, tree list, in cp_parser_omp_clause_bind() argument
35636 if (!parens.require_open (parser)) in cp_parser_omp_clause_bind()
35639 if (!cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_bind()
35642 cp_parser_error (parser, in cp_parser_omp_clause_bind()
35648 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_bind()
35657 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_bind()
35658 if (!parens.require_close (parser)) in cp_parser_omp_clause_bind()
35668 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_bind()
35681 cp_parser_omp_clause_ordered (cp_parser *parser, in cp_parser_omp_clause_ordered() argument
35690 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_omp_clause_ordered()
35693 parens.consume_open (parser); in cp_parser_omp_clause_ordered()
35695 num = cp_parser_constant_expression (parser); in cp_parser_omp_clause_ordered()
35697 if (!parens.require_close (parser)) in cp_parser_omp_clause_ordered()
35698 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_ordered()
35746 cp_parser_omp_clause_reduction (cp_parser *parser, enum omp_clause_code kind, in cp_parser_omp_clause_reduction() argument
35754 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_omp_clause_reduction()
35759 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_DEFAULT) in cp_parser_omp_clause_reduction()
35760 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_COMMA)) in cp_parser_omp_clause_reduction()
35762 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_reduction()
35763 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_reduction()
35765 else if (cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_omp_clause_reduction()
35766 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_COMMA)) in cp_parser_omp_clause_reduction()
35768 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_reduction()
35776 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_reduction()
35777 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_reduction()
35782 switch (cp_lexer_peek_token (parser->lexer)->type) in cp_parser_omp_clause_reduction()
35796 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_reduction()
35800 saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_omp_clause_reduction()
35801 parser->colon_corrects_to_scope_p = false; in cp_parser_omp_clause_reduction()
35802 id = cp_parser_id_expression (parser, /*template_p=*/false, in cp_parser_omp_clause_reduction()
35807 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_omp_clause_reduction()
35833 tree scope = parser->scope; in cp_parser_omp_clause_reduction()
35836 parser->scope = NULL_TREE; in cp_parser_omp_clause_reduction()
35837 parser->qualifying_scope = NULL_TREE; in cp_parser_omp_clause_reduction()
35838 parser->object_scope = NULL_TREE; in cp_parser_omp_clause_reduction()
35844 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_reduction()
35851 if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) in cp_parser_omp_clause_reduction()
35854 nlist = cp_parser_omp_var_list_no_open (parser, kind, list, in cp_parser_omp_clause_reduction()
35886 cp_parser_omp_clause_schedule (cp_parser *parser, tree list, location_t location) in cp_parser_omp_clause_schedule() argument
35892 if (!parens.require_open (parser)) in cp_parser_omp_clause_schedule()
35897 while (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_schedule()
35899 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_schedule()
35909 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_schedule()
35911 && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_clause_schedule()
35912 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_schedule()
35915 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_omp_clause_schedule()
35920 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_schedule()
35922 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_schedule()
35949 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_STATIC)) in cp_parser_omp_clause_schedule()
35951 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_AUTO)) in cp_parser_omp_clause_schedule()
35955 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_schedule()
35967 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_clause_schedule()
35970 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_schedule()
35972 token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_clause_schedule()
35973 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_schedule()
35986 if (!parens.require_close (parser)) in cp_parser_omp_clause_schedule()
35989 else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN)) in cp_parser_omp_clause_schedule()
36001 cp_parser_error (parser, "invalid schedule kind"); in cp_parser_omp_clause_schedule()
36003 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_schedule()
36087 cp_parser_omp_clause_num_teams (cp_parser *parser, tree list, in cp_parser_omp_clause_num_teams() argument
36093 if (!parens.require_open (parser)) in cp_parser_omp_clause_num_teams()
36096 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_num_teams()
36099 || !parens.require_close (parser)) in cp_parser_omp_clause_num_teams()
36100 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_num_teams()
36118 cp_parser_omp_clause_thread_limit (cp_parser *parser, tree list, in cp_parser_omp_clause_thread_limit() argument
36124 if (!parens.require_open (parser)) in cp_parser_omp_clause_thread_limit()
36127 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_thread_limit()
36130 || !parens.require_close (parser)) in cp_parser_omp_clause_thread_limit()
36131 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_thread_limit()
36150 cp_parser_omp_clause_aligned (cp_parser *parser, tree list) in cp_parser_omp_clause_aligned() argument
36156 if (!parens.require_open (parser)) in cp_parser_omp_clause_aligned()
36159 nlist = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_ALIGNED, list, in cp_parser_omp_clause_aligned()
36164 alignment = cp_parser_constant_expression (parser); in cp_parser_omp_clause_aligned()
36166 if (!parens.require_close (parser)) in cp_parser_omp_clause_aligned()
36167 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_aligned()
36188 cp_parser_omp_clause_lastprivate (cp_parser *parser, tree list) in cp_parser_omp_clause_lastprivate() argument
36192 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_omp_clause_lastprivate()
36195 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_omp_clause_lastprivate()
36196 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_COLON)) in cp_parser_omp_clause_lastprivate()
36198 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_lastprivate()
36204 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_lastprivate()
36205 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_lastprivate()
36209 tree nlist = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_LASTPRIVATE, in cp_parser_omp_clause_lastprivate()
36227 cp_parser_omp_clause_linear (cp_parser *parser, tree list, in cp_parser_omp_clause_linear() argument
36235 if (!parens.require_open (parser)) in cp_parser_omp_clause_linear()
36238 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_linear()
36240 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_linear()
36249 if (cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_PAREN)) in cp_parser_omp_clause_linear()
36250 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_linear()
36256 nlist = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_LINEAR, list, in cp_parser_omp_clause_linear()
36260 nlist = cp_parser_omp_var_list (parser, OMP_CLAUSE_LINEAR, list); in cp_parser_omp_clause_linear()
36261 colon = cp_lexer_next_token_is (parser->lexer, CPP_COLON); in cp_parser_omp_clause_linear()
36263 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_omp_clause_linear()
36264 else if (!parens.require_close (parser)) in cp_parser_omp_clause_linear()
36265 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_linear()
36274 && cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_omp_clause_linear()
36275 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_CLOSE_PAREN)) in cp_parser_omp_clause_linear()
36277 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_clause_linear()
36278 cp_parser_parse_tentatively (parser); in cp_parser_omp_clause_linear()
36279 step = cp_parser_id_expression (parser, /*template_p=*/false, in cp_parser_omp_clause_linear()
36285 step = cp_parser_lookup_name_simple (parser, step, token->location); in cp_parser_omp_clause_linear()
36289 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_clause_linear()
36291 else if (!cp_parser_parse_definitely (parser)) in cp_parser_omp_clause_linear()
36295 step = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_linear()
36297 if (!parens.require_close (parser)) in cp_parser_omp_clause_linear()
36298 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_linear()
36319 cp_parser_omp_clause_safelen (cp_parser *parser, tree list, in cp_parser_omp_clause_safelen() argument
36325 if (!parens.require_open (parser)) in cp_parser_omp_clause_safelen()
36328 t = cp_parser_constant_expression (parser); in cp_parser_omp_clause_safelen()
36331 || !parens.require_close (parser)) in cp_parser_omp_clause_safelen()
36332 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_safelen()
36349 cp_parser_omp_clause_simdlen (cp_parser *parser, tree list, in cp_parser_omp_clause_simdlen() argument
36355 if (!parens.require_open (parser)) in cp_parser_omp_clause_simdlen()
36358 t = cp_parser_constant_expression (parser); in cp_parser_omp_clause_simdlen()
36361 || !parens.require_close (parser)) in cp_parser_omp_clause_simdlen()
36362 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_simdlen()
36382 cp_parser_omp_clause_depend_sink (cp_parser *parser, location_t clause_loc, in cp_parser_omp_clause_depend_sink() argument
36387 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_depend_sink()
36389 cp_parser_error (parser, "expected identifier"); in cp_parser_omp_clause_depend_sink()
36393 while (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_depend_sink()
36395 location_t id_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_clause_depend_sink()
36396 tree t, identifier = cp_parser_identifier (parser); in cp_parser_omp_clause_depend_sink()
36404 (parser, identifier, in cp_parser_omp_clause_depend_sink()
36405 cp_lexer_peek_token (parser->lexer)->location); in cp_parser_omp_clause_depend_sink()
36407 cp_parser_name_lookup_error (parser, identifier, t, NLE_NULL, in cp_parser_omp_clause_depend_sink()
36412 if (cp_lexer_next_token_is (parser->lexer, CPP_MINUS)) in cp_parser_omp_clause_depend_sink()
36414 else if (!cp_lexer_next_token_is (parser->lexer, CPP_PLUS)) in cp_parser_omp_clause_depend_sink()
36419 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_depend_sink()
36421 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NUMBER)) in cp_parser_omp_clause_depend_sink()
36423 cp_parser_error (parser, "expected integer"); in cp_parser_omp_clause_depend_sink()
36427 addend = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_depend_sink()
36430 cp_parser_error (parser, "expected integer"); in cp_parser_omp_clause_depend_sink()
36433 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_depend_sink()
36443 if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) in cp_parser_omp_clause_depend_sink()
36446 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_depend_sink()
36449 if (cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN) && vec) in cp_parser_omp_clause_depend_sink()
36476 cp_parser_omp_iterators (cp_parser *parser) in cp_parser_omp_iterators() argument
36479 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_iterators()
36482 if (!parens.require_open (parser)) in cp_parser_omp_iterators()
36486 = parser->colon_corrects_to_scope_p; in cp_parser_omp_iterators()
36488 = parser->colon_doesnt_start_class_def_p; in cp_parser_omp_iterators()
36493 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_omp_iterators()
36494 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_EQ)) in cp_parser_omp_iterators()
36499 = parser->type_definition_forbidden_message; in cp_parser_omp_iterators()
36500 parser->type_definition_forbidden_message in cp_parser_omp_iterators()
36503 iter_type = cp_parser_type_id (parser); in cp_parser_omp_iterators()
36505 parser->type_definition_forbidden_message = saved_message; in cp_parser_omp_iterators()
36508 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_iterators()
36509 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME)) in cp_parser_omp_iterators()
36511 cp_parser_error (parser, "expected identifier"); in cp_parser_omp_iterators()
36515 tree id = cp_parser_identifier (parser); in cp_parser_omp_iterators()
36519 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_omp_iterators()
36522 parser->colon_corrects_to_scope_p = false; in cp_parser_omp_iterators()
36523 parser->colon_doesnt_start_class_def_p = true; in cp_parser_omp_iterators()
36524 tree begin = cp_parser_assignment_expression (parser); in cp_parser_omp_iterators()
36526 if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) in cp_parser_omp_iterators()
36529 tree end = cp_parser_assignment_expression (parser); in cp_parser_omp_iterators()
36532 if (cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_omp_iterators()
36534 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_iterators()
36535 step = cp_parser_assignment_expression (parser); in cp_parser_omp_iterators()
36550 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_iterators()
36552 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_iterators()
36559 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_omp_iterators()
36560 parser->colon_doesnt_start_class_def_p in cp_parser_omp_iterators()
36563 if (!parens.require_close (parser)) in cp_parser_omp_iterators()
36564 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_omp_iterators()
36593 cp_parser_omp_clause_depend (cp_parser *parser, tree list, location_t loc) in cp_parser_omp_clause_depend() argument
36599 if (!parens.require_open (parser)) in cp_parser_omp_clause_depend()
36604 if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_depend()
36607 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_depend()
36613 iterators = cp_parser_omp_iterators (parser); in cp_parser_omp_clause_depend()
36614 cp_parser_require (parser, CPP_COMMA, RT_COMMA); in cp_parser_omp_clause_depend()
36637 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_depend()
36654 if (!parens.require_close (parser)) in cp_parser_omp_clause_depend()
36655 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_depend()
36661 if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) in cp_parser_omp_clause_depend()
36665 nlist = cp_parser_omp_clause_depend_sink (parser, loc, list); in cp_parser_omp_clause_depend()
36668 nlist = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_DEPEND, in cp_parser_omp_clause_depend()
36691 cp_parser_error (parser, "invalid depend kind"); in cp_parser_omp_clause_depend()
36695 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_depend()
36715 cp_parser_omp_clause_map (cp_parser *parser, tree list) in cp_parser_omp_clause_map() argument
36721 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_omp_clause_map()
36724 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_map()
36726 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_map()
36732 if (cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_COMMA) in cp_parser_omp_clause_map()
36734 if ((cp_lexer_peek_nth_token (parser->lexer, nth)->type == CPP_NAME in cp_parser_omp_clause_map()
36735 || (cp_lexer_peek_nth_token (parser->lexer, nth)->keyword in cp_parser_omp_clause_map()
36737 && (cp_lexer_peek_nth_token (parser->lexer, nth + 1)->type in cp_parser_omp_clause_map()
36741 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_map()
36743 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_map()
36748 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_omp_clause_map()
36749 && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_COLON) in cp_parser_omp_clause_map()
36751 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_map()
36766 cp_parser_error (parser, "invalid map kind"); in cp_parser_omp_clause_map()
36767 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_map()
36772 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_map()
36773 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_map()
36775 else if (cp_lexer_next_token_is_keyword (parser->lexer, RID_DELETE) in cp_parser_omp_clause_map()
36776 && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_COLON) in cp_parser_omp_clause_map()
36779 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_map()
36780 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_map()
36783 nlist = cp_parser_omp_var_list_no_open (parser, OMP_CLAUSE_MAP, list, in cp_parser_omp_clause_map()
36796 cp_parser_omp_clause_device (cp_parser *parser, tree list, in cp_parser_omp_clause_device() argument
36802 if (!parens.require_open (parser)) in cp_parser_omp_clause_device()
36805 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_device()
36808 || !parens.require_close (parser)) in cp_parser_omp_clause_device()
36809 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_device()
36828 cp_parser_omp_clause_dist_schedule (cp_parser *parser, tree list, in cp_parser_omp_clause_dist_schedule() argument
36834 if (!parens.require_open (parser)) in cp_parser_omp_clause_dist_schedule()
36839 if (!cp_lexer_next_token_is_keyword (parser->lexer, RID_STATIC)) in cp_parser_omp_clause_dist_schedule()
36841 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_dist_schedule()
36843 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_clause_dist_schedule()
36845 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_dist_schedule()
36847 t = cp_parser_assignment_expression (parser); in cp_parser_omp_clause_dist_schedule()
36853 if (!parens.require_close (parser)) in cp_parser_omp_clause_dist_schedule()
36856 else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN)) in cp_parser_omp_clause_dist_schedule()
36867 cp_parser_error (parser, "invalid dist_schedule kind"); in cp_parser_omp_clause_dist_schedule()
36869 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_dist_schedule()
36882 cp_parser_omp_clause_proc_bind (cp_parser *parser, tree list, in cp_parser_omp_clause_proc_bind() argument
36888 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_omp_clause_proc_bind()
36891 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_proc_bind()
36893 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_proc_bind()
36908 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_proc_bind()
36909 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN)) in cp_parser_omp_clause_proc_bind()
36920 cp_parser_error (parser, "invalid depend kind"); in cp_parser_omp_clause_proc_bind()
36922 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_proc_bind()
36932 cp_parser_omp_clause_device_type (cp_parser *parser, tree list, in cp_parser_omp_clause_device_type() argument
36938 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_omp_clause_device_type()
36941 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_clause_device_type()
36943 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_clause_device_type()
36958 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_clause_device_type()
36959 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN)) in cp_parser_omp_clause_device_type()
36970 cp_parser_error (parser, "invalid depend kind"); in cp_parser_omp_clause_device_type()
36972 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_clause_device_type()
36982 cp_parser_oacc_clause_async (cp_parser *parser, tree list) in cp_parser_oacc_clause_async() argument
36985 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_oacc_clause_async()
36989 if (cp_lexer_peek_token (parser->lexer)->type == CPP_OPEN_PAREN) in cp_parser_oacc_clause_async()
36992 parens.consume_open (parser); in cp_parser_oacc_clause_async()
36994 t = cp_parser_assignment_expression (parser); in cp_parser_oacc_clause_async()
36996 || !parens.require_close (parser)) in cp_parser_oacc_clause_async()
36997 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_oacc_clause_async()
37016 cp_parser_oacc_all_clauses (cp_parser *parser, omp_clause_mask mask,
37026 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL))
37034 if (!first && cp_lexer_next_token_is (parser->lexer, CPP_COMMA))
37035 cp_lexer_consume_token (parser->lexer);
37037 here = cp_lexer_peek_token (parser->lexer)->location;
37038 c_kind = cp_parser_omp_clause_name (parser);
37043 clauses = cp_parser_oacc_clause_async (parser, clauses);
37052 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37056 clauses = cp_parser_omp_clause_collapse (parser, clauses, here);
37060 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37064 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37068 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37072 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37076 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37080 clauses = cp_parser_omp_clause_default (parser, clauses, here, true);
37084 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37088 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37092 clauses = cp_parser_oacc_data_clause_deviceptr (parser, clauses);
37096 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37105 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_FIRSTPRIVATE,
37111 clauses = cp_parser_oacc_shape_clause (parser, here, OMP_CLAUSE_GANG,
37115 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37119 clauses = cp_parser_omp_clause_if (parser, clauses, here, false);
37133 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37137 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37143 clauses = cp_parser_oacc_single_int_clause (parser, code, c_name,
37149 clauses = cp_parser_oacc_single_int_clause (parser, code, c_name,
37153 clauses = cp_parser_oacc_data_clause (parser, c_kind, clauses);
37157 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_PRIVATE,
37163 = cp_parser_omp_clause_reduction (parser, OMP_CLAUSE_REDUCTION,
37173 clauses = cp_parser_oacc_clause_tile (parser, here, clauses);
37177 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_USE_DEVICE_PTR,
37183 clauses = cp_parser_oacc_shape_clause (parser, here,
37190 clauses = cp_parser_oacc_single_int_clause (parser, code, c_name,
37194 clauses = cp_parser_oacc_clause_wait (parser, clauses);
37199 clauses = cp_parser_oacc_shape_clause (parser, here,
37204 cp_parser_error (parser, "expected %<#pragma acc%> clause");
37220 cp_parser_skip_to_pragma_eol (parser, pragma_tok);
37236 cp_parser_omp_all_clauses (cp_parser *parser, omp_clause_mask mask,
37247 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL))
37253 if (nested && cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN))
37258 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA))
37259 cp_lexer_consume_token (parser->lexer);
37261 error_at (cp_lexer_peek_token (parser->lexer)->location,
37266 token = cp_lexer_peek_token (parser->lexer);
37267 c_kind = cp_parser_omp_clause_name (parser);
37272 clauses = cp_parser_omp_clause_bind (parser, clauses,
37277 clauses = cp_parser_omp_clause_collapse (parser, clauses,
37282 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_COPYIN, clauses);
37286 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_COPYPRIVATE,
37291 clauses = cp_parser_omp_clause_default (parser, clauses,
37296 clauses = cp_parser_omp_clause_final (parser, clauses, token->location);
37300 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_FIRSTPRIVATE,
37305 clauses = cp_parser_omp_clause_grainsize (parser, clauses,
37310 clauses = cp_parser_omp_clause_hint (parser, clauses,
37315 clauses = cp_parser_omp_clause_defaultmap (parser, clauses,
37320 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_USE_DEVICE_PTR,
37325 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_USE_DEVICE_ADDR,
37330 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_IS_DEVICE_PTR,
37335 clauses = cp_parser_omp_clause_if (parser, clauses, token->location,
37341 = cp_parser_omp_clause_reduction (parser, OMP_CLAUSE_IN_REDUCTION,
37346 clauses = cp_parser_omp_clause_lastprivate (parser, clauses);
37350 clauses = cp_parser_omp_clause_mergeable (parser, clauses,
37355 clauses = cp_parser_omp_clause_nowait (parser, clauses,
37360 clauses = cp_parser_omp_clause_num_tasks (parser, clauses,
37365 clauses = cp_parser_omp_clause_num_threads (parser, clauses,
37370 clauses = cp_parser_omp_clause_order (parser, clauses,
37375 clauses = cp_parser_omp_clause_ordered (parser, clauses,
37380 clauses = cp_parser_omp_clause_priority (parser, clauses,
37385 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_PRIVATE,
37391 = cp_parser_omp_clause_reduction (parser, OMP_CLAUSE_REDUCTION,
37396 clauses = cp_parser_omp_clause_schedule (parser, clauses,
37401 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_SHARED,
37407 = cp_parser_omp_clause_reduction (parser,
37413 clauses = cp_parser_omp_clause_untied (parser, clauses,
37418 clauses = cp_parser_omp_clause_branch (parser, OMP_CLAUSE_INBRANCH,
37423 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_NONTEMPORAL,
37428 clauses = cp_parser_omp_clause_branch (parser,
37434 clauses = cp_parser_omp_clause_cancelkind (parser, OMP_CLAUSE_PARALLEL,
37446 clauses = cp_parser_omp_clause_cancelkind (parser, OMP_CLAUSE_FOR,
37453 clauses = cp_parser_omp_clause_cancelkind (parser, OMP_CLAUSE_SECTIONS,
37460 clauses = cp_parser_omp_clause_cancelkind (parser, OMP_CLAUSE_TASKGROUP,
37467 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_LINK, clauses);
37472 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_TO_DECLARE,
37475 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_TO, clauses);
37479 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_FROM, clauses);
37483 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_UNIFORM,
37488 clauses = cp_parser_omp_clause_num_teams (parser, clauses,
37493 clauses = cp_parser_omp_clause_thread_limit (parser, clauses,
37498 clauses = cp_parser_omp_clause_aligned (parser, clauses);
37506 clauses = cp_parser_omp_clause_linear (parser, clauses, declare_simd);
37511 clauses = cp_parser_omp_clause_depend (parser, clauses,
37516 clauses = cp_parser_omp_clause_map (parser, clauses);
37520 clauses = cp_parser_omp_clause_device (parser, clauses,
37525 clauses = cp_parser_omp_clause_dist_schedule (parser, clauses,
37530 clauses = cp_parser_omp_clause_proc_bind (parser, clauses,
37535 clauses = cp_parser_omp_clause_device_type (parser, clauses,
37540 clauses = cp_parser_omp_clause_safelen (parser, clauses,
37545 clauses = cp_parser_omp_clause_simdlen (parser, clauses,
37550 clauses = cp_parser_omp_clause_nogroup (parser, clauses,
37556 = cp_parser_omp_clause_orderedkind (parser, OMP_CLAUSE_THREADS,
37562 = cp_parser_omp_clause_orderedkind (parser, OMP_CLAUSE_SIMD,
37567 cp_parser_error (parser, "expected %<#pragma omp%> clause");
37583 cp_parser_skip_to_pragma_eol (parser, pragma_tok);
37603 cp_parser_begin_omp_structured_block (cp_parser *parser) in cp_parser_begin_omp_structured_block() argument
37605 unsigned save = parser->in_statement; in cp_parser_begin_omp_structured_block()
37615 if (parser->in_statement) in cp_parser_begin_omp_structured_block()
37616 parser->in_statement = IN_OMP_BLOCK; in cp_parser_begin_omp_structured_block()
37622 cp_parser_end_omp_structured_block (cp_parser *parser, unsigned save) in cp_parser_end_omp_structured_block() argument
37624 parser->in_statement = save; in cp_parser_end_omp_structured_block()
37628 cp_parser_omp_structured_block (cp_parser *parser, bool *if_p) in cp_parser_omp_structured_block() argument
37631 unsigned int save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_structured_block()
37633 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_omp_structured_block()
37635 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_structured_block()
37691 cp_parser_omp_atomic (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_atomic() argument
37702 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL)) in cp_parser_omp_atomic()
37704 if (!first && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_atomic()
37705 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
37709 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_atomic()
37711 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_atomic()
37712 location_t cloc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_atomic()
37738 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
37739 clauses = cp_parser_omp_clause_hint (parser, clauses, cloc); in cp_parser_omp_atomic()
37765 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
37771 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_atomic()
37847 v = cp_parser_unary_expression (parser); in cp_parser_omp_atomic()
37850 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_omp_atomic()
37853 lhs = cp_parser_expression (parser); in cp_parser_omp_atomic()
37855 lhs = cp_parser_unary_expression (parser); in cp_parser_omp_atomic()
37869 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_omp_atomic()
37871 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
37876 v = cp_parser_unary_expression (parser); in cp_parser_omp_atomic()
37879 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_omp_atomic()
37887 lhs = cp_parser_unary_expression (parser); in cp_parser_omp_atomic()
37945 switch (cp_lexer_peek_token (parser->lexer)->type) in cp_parser_omp_atomic()
37977 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
37978 cp_parser_parse_tentatively (parser); in cp_parser_omp_atomic()
37979 rhs1 = cp_parser_simple_cast_expression (parser); in cp_parser_omp_atomic()
37982 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_atomic()
37983 cp_parser_simple_cast_expression (parser); in cp_parser_omp_atomic()
37986 token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_atomic()
37989 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_atomic()
37990 cp_parser_parse_tentatively (parser); in cp_parser_omp_atomic()
37991 rhs = cp_parser_binary_expression (parser, false, true, in cp_parser_omp_atomic()
37995 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_atomic()
37996 cp_parser_binary_expression (parser, false, true, in cp_parser_omp_atomic()
38014 if (cp_parser_parse_definitely (parser)) in cp_parser_omp_atomic()
38028 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_atomic()
38031 rhs = cp_parser_expression (parser); in cp_parser_omp_atomic()
38038 cp_parser_error (parser, in cp_parser_omp_atomic()
38042 if (!cp_parser_parse_definitely (parser)) in cp_parser_omp_atomic()
38054 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
38064 cp_parser_error (parser, in cp_parser_omp_atomic()
38095 cp_parser_error (parser, in cp_parser_omp_atomic()
38103 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
38104 rhs = cp_parser_binary_expression (parser, false, false, in cp_parser_omp_atomic()
38111 cp_parser_error (parser, in cp_parser_omp_atomic()
38115 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
38117 rhs = cp_parser_expression (parser); in cp_parser_omp_atomic()
38125 if (!cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON)) in cp_parser_omp_atomic()
38127 v = cp_parser_unary_expression (parser); in cp_parser_omp_atomic()
38130 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_omp_atomic()
38132 lhs1 = cp_parser_unary_expression (parser); in cp_parser_omp_atomic()
38138 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_omp_atomic()
38139 cp_parser_require (parser, CPP_CLOSE_BRACE, RT_CLOSE_BRACE); in cp_parser_omp_atomic()
38146 cp_parser_consume_semicolon_at_end_of_statement (parser); in cp_parser_omp_atomic()
38150 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_omp_atomic()
38153 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_omp_atomic()
38154 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
38157 cp_parser_skip_to_end_of_block_or_statement (parser); in cp_parser_omp_atomic()
38158 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_omp_atomic()
38159 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_atomic()
38169 cp_parser_omp_barrier (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_barrier() argument
38171 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_barrier()
38187 cp_parser_omp_critical (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_omp_critical() argument
38191 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_omp_critical()
38194 parens.consume_open (parser); in cp_parser_omp_critical()
38196 name = cp_parser_identifier (parser); in cp_parser_omp_critical()
38199 || !parens.require_close (parser)) in cp_parser_omp_critical()
38200 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_critical()
38206 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA) in cp_parser_omp_critical()
38207 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_NAME)) in cp_parser_omp_critical()
38208 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_critical()
38210 clauses = cp_parser_omp_all_clauses (parser, in cp_parser_omp_critical()
38215 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_critical()
38217 stmt = cp_parser_omp_structured_block (parser, if_p); in cp_parser_omp_critical()
38236 cp_parser_omp_depobj (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_depobj() argument
38240 if (!parens.require_open (parser)) in cp_parser_omp_depobj()
38242 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_depobj()
38246 tree depobj = cp_parser_assignment_expression (parser); in cp_parser_omp_depobj()
38248 if (!parens.require_close (parser)) in cp_parser_omp_depobj()
38249 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_depobj()
38255 location_t c_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_depobj()
38256 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_depobj()
38258 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_depobj()
38261 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_depobj()
38266 clause = cp_parser_omp_clause_depend (parser, NULL_TREE, c_loc); in cp_parser_omp_depobj()
38277 if (c_parens.require_open (parser)) in cp_parser_omp_depobj()
38280 = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_depobj()
38281 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_depobj()
38283 tree id2 = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_depobj()
38286 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_depobj()
38302 if (!c_parens.require_close (parser)) in cp_parser_omp_depobj()
38303 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_omp_depobj()
38317 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_depobj()
38333 cp_parser_omp_flush (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_flush() argument
38336 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_flush()
38338 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_flush()
38347 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_omp_flush()
38349 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_flush()
38351 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_omp_flush()
38354 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_omp_flush()
38357 (void) cp_parser_omp_var_list (parser, OMP_CLAUSE_ERROR, NULL); in cp_parser_omp_flush()
38359 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_flush()
38367 cp_parser_omp_for_cond (cp_parser *parser, tree decl, enum tree_code code) in cp_parser_omp_for_cond() argument
38369 tree cond = cp_parser_binary_expression (parser, false, true, in cp_parser_omp_for_cond()
38372 || cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_omp_for_cond()
38374 cp_parser_skip_to_end_of_statement (parser); in cp_parser_omp_for_cond()
38410 cp_parser_omp_for_incr (cp_parser *parser, tree decl) in cp_parser_omp_for_incr() argument
38412 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_for_incr()
38422 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_incr()
38423 lhs = cp_parser_simple_cast_expression (parser); in cp_parser_omp_for_incr()
38430 lhs = cp_parser_primary_expression (parser, false, false, false, &idk); in cp_parser_omp_for_incr()
38435 token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_for_incr()
38440 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_incr()
38444 op = cp_parser_assignment_operator_opt (parser); in cp_parser_omp_for_incr()
38450 rhs = cp_parser_assignment_expression (parser); in cp_parser_omp_for_incr()
38455 lhs = cp_parser_binary_expression (parser, false, false, in cp_parser_omp_for_incr()
38457 token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_for_incr()
38469 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_incr()
38470 rhs = cp_parser_binary_expression (parser, false, false, in cp_parser_omp_for_incr()
38472 token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_for_incr()
38510 cp_parser_omp_for_loop_init (cp_parser *parser, in cp_parser_omp_for_loop_init() argument
38518 if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_omp_for_loop_init()
38536 cp_parser_parse_tentatively (parser); in cp_parser_omp_for_loop_init()
38537 cp_parser_type_specifier_seq (parser, CP_PARSER_FLAGS_NONE, in cp_parser_omp_for_loop_init()
38541 if (cp_parser_parse_definitely (parser)) in cp_parser_omp_for_loop_init()
38548 declarator = cp_parser_declarator (parser, in cp_parser_omp_for_loop_init()
38556 attributes = cp_parser_attributes_opt (parser); in cp_parser_omp_for_loop_init()
38557 asm_specification = cp_parser_asm_specification_opt (parser); in cp_parser_omp_for_loop_init()
38560 cp_parser_skip_to_end_of_statement (parser); in cp_parser_omp_for_loop_init()
38572 if (cp_lexer_next_token_is_not (parser->lexer, CPP_EQ)) in cp_parser_omp_for_loop_init()
38574 if (cp_lexer_next_token_is (parser->lexer, in cp_parser_omp_for_loop_init()
38580 cp_parser_require (parser, CPP_EQ, RT_EQ); in cp_parser_omp_for_loop_init()
38583 cp_parser_skip_to_end_of_statement (parser); in cp_parser_omp_for_loop_init()
38591 init = cp_parser_initializer (parser, in cp_parser_omp_for_loop_init()
38648 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_loop_init()
38649 init = cp_parser_assignment_expression (parser); in cp_parser_omp_for_loop_init()
38670 cp_parser_parse_tentatively (parser); in cp_parser_omp_for_loop_init()
38671 decl = cp_parser_primary_expression (parser, false, false, in cp_parser_omp_for_loop_init()
38673 cp_token *last_tok = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_for_loop_init()
38674 if (!cp_parser_error_occurred (parser) in cp_parser_omp_for_loop_init()
38679 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_for_loop_init()
38680 cp_parser_parse_tentatively (parser); in cp_parser_omp_for_loop_init()
38681 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_for_loop_init()
38682 tree name = cp_parser_id_expression (parser, /*template_p=*/false, in cp_parser_omp_for_loop_init()
38688 && last_tok == cp_lexer_peek_token (parser->lexer)) in cp_parser_omp_for_loop_init()
38690 decl = cp_parser_lookup_name_simple (parser, name, in cp_parser_omp_for_loop_init()
38695 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_for_loop_init()
38696 cp_parser_parse_tentatively (parser); in cp_parser_omp_for_loop_init()
38697 decl = cp_parser_primary_expression (parser, false, false, in cp_parser_omp_for_loop_init()
38700 if (!cp_parser_error_occurred (parser) in cp_parser_omp_for_loop_init()
38707 cp_parser_parse_definitely (parser); in cp_parser_omp_for_loop_init()
38708 cp_parser_require (parser, CPP_EQ, RT_EQ); in cp_parser_omp_for_loop_init()
38709 rhs = cp_parser_assignment_expression (parser); in cp_parser_omp_for_loop_init()
38721 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_for_loop_init()
38722 init = cp_parser_expression (parser); in cp_parser_omp_for_loop_init()
38926 cp_parser_omp_scan_loop_body (cp_parser *parser) in cp_parser_omp_scan_loop_body() argument
38931 if (!braces.require_open (parser)) in cp_parser_omp_scan_loop_body()
38934 substmt = cp_parser_omp_structured_block (parser, NULL); in cp_parser_omp_scan_loop_body()
38938 cp_token *tok = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_scan_loop_body()
38943 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_scan_loop_body()
38945 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_scan_loop_body()
38947 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_scan_loop_body()
38956 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_scan_loop_body()
38957 clauses = cp_parser_omp_var_list (parser, clause, NULL_TREE); in cp_parser_omp_scan_loop_body()
38960 cp_parser_error (parser, "expected %<inclusive%> or " in cp_parser_omp_scan_loop_body()
38963 cp_parser_require_pragma_eol (parser, tok); in cp_parser_omp_scan_loop_body()
38969 substmt = cp_parser_omp_structured_block (parser, NULL); in cp_parser_omp_scan_loop_body()
38974 braces.require_close (parser); in cp_parser_omp_scan_loop_body()
38980 cp_parser_omp_for_loop (cp_parser *parser, enum tree_code code, tree clauses, in cp_parser_omp_for_loop() argument
39045 loc_first = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_for_loop()
39053 if (!cp_lexer_next_token_is_keyword (parser->lexer, RID_FOR)) in cp_parser_omp_for_loop()
39056 cp_parser_error (parser, "for statement expected"); in cp_parser_omp_for_loop()
39059 loc = cp_lexer_consume_token (parser->lexer)->location; in cp_parser_omp_for_loop()
39066 if (!parens.require_open (parser)) in cp_parser_omp_for_loop()
39075 cp_lexer_save_tokens (parser->lexer); in cp_parser_omp_for_loop()
39079 = (cp_parser_skip_to_closing_parenthesis_1 (parser, in cp_parser_omp_for_loop()
39086 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_omp_for_loop()
39091 = parser->colon_corrects_to_scope_p; in cp_parser_omp_for_loop()
39094 parser->colon_corrects_to_scope_p = false; in cp_parser_omp_for_loop()
39097 cp_parser_simple_declaration (parser, in cp_parser_omp_for_loop()
39100 parser->colon_corrects_to_scope_p in cp_parser_omp_for_loop()
39103 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_omp_for_loop()
39105 init = cp_parser_range_for (parser, NULL_TREE, NULL_TREE, decl, in cp_parser_omp_for_loop()
39135 = cp_parser_omp_for_loop_init (parser, this_pre_body, for_block, in cp_parser_omp_for_loop()
39138 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_omp_for_loop()
39240 if (cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) in cp_parser_omp_for_loop()
39241 cond = cp_parser_omp_for_cond (parser, decl, code); in cp_parser_omp_for_loop()
39242 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_omp_for_loop()
39245 if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN)) in cp_parser_omp_for_loop()
39254 incr = cp_parser_omp_for_incr (parser, real_decl); in cp_parser_omp_for_loop()
39256 incr = cp_parser_expression (parser); in cp_parser_omp_for_loop()
39261 if (!parens.require_close (parser)) in cp_parser_omp_for_loop()
39262 cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, in cp_parser_omp_for_loop()
39291 cp_parser_parse_tentatively (parser); in cp_parser_omp_for_loop()
39294 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_FOR)) in cp_parser_omp_for_loop()
39296 else if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) in cp_parser_omp_for_loop()
39298 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_loop()
39302 && cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_omp_for_loop()
39303 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_loop()
39306 loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_for_loop()
39309 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_for_loop()
39317 cp_parser_parse_definitely (parser); in cp_parser_omp_for_loop()
39327 parser->in_statement = IN_OMP_FOR; in cp_parser_omp_for_loop()
39342 cp_parser_omp_scan_loop_body (parser); in cp_parser_omp_for_loop()
39344 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_omp_for_loop()
39358 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE)) in cp_parser_omp_for_loop()
39360 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_loop()
39363 else if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)) in cp_parser_omp_for_loop()
39364 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for_loop()
39369 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_omp_for_loop()
39373 cp_parser_statement_seq_opt (parser, NULL); in cp_parser_omp_for_loop()
39374 if (cp_lexer_next_token_is (parser->lexer, CPP_EOF)) in cp_parser_omp_for_loop()
39418 cp_parser_omp_loop (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_loop() argument
39424 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_loop()
39429 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_loop()
39439 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_loop()
39441 ret = cp_parser_omp_for_loop (parser, OMP_LOOP, clauses, cclauses, if_p); in cp_parser_omp_loop()
39443 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_loop()
39467 cp_parser_omp_simd (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_simd() argument
39473 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_simd()
39478 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_simd()
39497 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_simd()
39499 ret = cp_parser_omp_for_loop (parser, OMP_SIMD, clauses, cclauses, if_p); in cp_parser_omp_simd()
39501 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_simd()
39528 cp_parser_omp_for (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_for() argument
39534 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_for()
39546 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_for()
39548 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_for()
39557 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_for()
39559 return cp_parser_omp_simd (parser, pragma_tok, p_name, mask, in cp_parser_omp_for()
39562 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_for()
39563 ret = cp_parser_omp_simd (parser, pragma_tok, p_name, mask, in cp_parser_omp_for()
39565 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_for()
39580 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_for()
39588 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_for()
39598 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_for()
39600 ret = cp_parser_omp_for_loop (parser, OMP_FOR, clauses, cclauses, if_p); in cp_parser_omp_for()
39602 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_for()
39616 cp_parser_omp_master (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_master() argument
39622 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_master()
39626 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_master()
39628 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_master()
39637 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_master()
39639 return cp_parser_omp_taskloop (parser, pragma_tok, p_name, mask, in cp_parser_omp_master()
39642 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_master()
39643 ret = cp_parser_omp_taskloop (parser, pragma_tok, p_name, mask, in cp_parser_omp_master()
39645 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_master()
39654 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_master()
39660 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_master()
39665 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_master()
39668 cp_parser_omp_structured_block (parser, if_p)); in cp_parser_omp_master()
39687 cp_parser_omp_ordered (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_ordered() argument
39692 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_ordered()
39694 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_ordered()
39701 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_ordered()
39709 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_ordered()
39713 = cp_parser_omp_all_clauses (parser, in cp_parser_omp_ordered()
39722 = cp_parser_omp_all_clauses (parser, OMP_ORDERED_CLAUSE_MASK, in cp_parser_omp_ordered()
39730 cp_parser_omp_structured_block (parser, if_p)); in cp_parser_omp_ordered()
39744 cp_parser_omp_sections_scope (cp_parser *parser) in cp_parser_omp_sections_scope() argument
39751 if (!braces.require_open (parser)) in cp_parser_omp_sections_scope()
39756 if (cp_parser_pragma_kind (cp_lexer_peek_token (parser->lexer)) in cp_parser_omp_sections_scope()
39759 substmt = cp_parser_omp_structured_block (parser, NULL); in cp_parser_omp_sections_scope()
39766 tok = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_sections_scope()
39774 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_sections_scope()
39775 cp_parser_require_pragma_eol (parser, tok); in cp_parser_omp_sections_scope()
39780 cp_parser_error (parser, "expected %<#pragma omp section%> or %<}%>"); in cp_parser_omp_sections_scope()
39784 substmt = cp_parser_omp_structured_block (parser, NULL); in cp_parser_omp_sections_scope()
39788 braces.require_close (parser); in cp_parser_omp_sections_scope()
39812 cp_parser_omp_sections (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_sections() argument
39816 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_sections()
39823 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_sections()
39831 ret = cp_parser_omp_sections_scope (parser); in cp_parser_omp_sections()
39862 cp_parser_omp_parallel (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_parallel() argument
39868 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_parallel()
39877 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_FOR)) in cp_parser_omp_parallel()
39883 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_parallel()
39885 return cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses, in cp_parser_omp_parallel()
39888 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_parallel()
39889 tree ret = cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses, in cp_parser_omp_parallel()
39891 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_parallel()
39906 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_parallel()
39909 else if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_parallel()
39911 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_parallel()
39918 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_parallel()
39920 return cp_parser_omp_master (parser, pragma_tok, p_name, mask, in cp_parser_omp_parallel()
39923 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_parallel()
39924 tree ret = cp_parser_omp_master (parser, pragma_tok, p_name, mask, in cp_parser_omp_parallel()
39926 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_parallel()
39940 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_parallel()
39942 return cp_parser_omp_loop (parser, pragma_tok, p_name, mask, in cp_parser_omp_parallel()
39945 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_parallel()
39946 tree ret = cp_parser_omp_loop (parser, pragma_tok, p_name, mask, in cp_parser_omp_parallel()
39948 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_parallel()
39958 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_parallel()
39966 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_parallel()
39968 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_parallel()
39969 cp_parser_omp_sections (parser, pragma_tok, p_name, mask, cclauses); in cp_parser_omp_parallel()
39970 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_parallel()
39979 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_parallel()
39983 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_parallel()
39992 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_parallel()
39993 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_omp_parallel()
39994 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_parallel()
40010 cp_parser_omp_single (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_omp_single() argument
40017 = cp_parser_omp_all_clauses (parser, OMP_SINGLE_CLAUSE_MASK, in cp_parser_omp_single()
40019 OMP_SINGLE_BODY (stmt) = cp_parser_omp_structured_block (parser, if_p); in cp_parser_omp_single()
40042 cp_parser_omp_task (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_omp_task() argument
40047 clauses = cp_parser_omp_all_clauses (parser, OMP_TASK_CLAUSE_MASK, in cp_parser_omp_task()
40050 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_task()
40051 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_omp_task()
40052 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_task()
40066 cp_parser_omp_taskwait (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_taskwait() argument
40069 = cp_parser_omp_all_clauses (parser, OMP_TASKWAIT_CLAUSE_MASK, in cp_parser_omp_taskwait()
40089 cp_parser_omp_taskyield (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_taskyield() argument
40091 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_taskyield()
40106 cp_parser_omp_taskgroup (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_omp_taskgroup() argument
40109 = cp_parser_omp_all_clauses (parser, OMP_TASKGROUP_CLAUSE_MASK, in cp_parser_omp_taskgroup()
40112 cp_parser_omp_structured_block (parser, in cp_parser_omp_taskgroup()
40122 cp_parser_omp_threadprivate (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_threadprivate() argument
40126 vars = cp_parser_omp_var_list (parser, OMP_CLAUSE_ERROR, NULL); in cp_parser_omp_threadprivate()
40127 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_threadprivate()
40143 cp_parser_omp_cancel (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_cancel() argument
40145 tree clauses = cp_parser_omp_all_clauses (parser, OMP_CANCEL_CLAUSE_MASK, in cp_parser_omp_cancel()
40160 cp_parser_omp_cancellation_point (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_cancellation_point() argument
40166 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_cancellation_point()
40168 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_cancellation_point()
40173 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_cancellation_point()
40179 cp_parser_error (parser, "expected %<point%>"); in cp_parser_omp_cancellation_point()
40180 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_cancellation_point()
40191 cp_parser_error (parser, "expected declaration specifiers"); in cp_parser_omp_cancellation_point()
40192 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_cancellation_point()
40196 clauses = cp_parser_omp_all_clauses (parser, in cp_parser_omp_cancellation_point()
40215 cp_parser_omp_distribute (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_distribute() argument
40221 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_distribute()
40226 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_distribute()
40228 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_distribute()
40242 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_distribute()
40246 return cp_parser_omp_simd (parser, pragma_tok, p_name, mask, in cp_parser_omp_distribute()
40249 return cp_parser_omp_parallel (parser, pragma_tok, p_name, mask, in cp_parser_omp_distribute()
40253 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_distribute()
40255 ret = cp_parser_omp_simd (parser, pragma_tok, p_name, mask, in cp_parser_omp_distribute()
40258 ret = cp_parser_omp_parallel (parser, pragma_tok, p_name, mask, in cp_parser_omp_distribute()
40260 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_distribute()
40275 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_distribute()
40279 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_distribute()
40289 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_distribute()
40291 ret = cp_parser_omp_for_loop (parser, OMP_DISTRIBUTE, clauses, NULL, if_p); in cp_parser_omp_distribute()
40293 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_distribute()
40313 cp_parser_omp_teams (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_teams() argument
40319 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_teams()
40324 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_teams()
40326 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_teams()
40334 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_teams()
40336 return cp_parser_omp_distribute (parser, pragma_tok, p_name, mask, in cp_parser_omp_teams()
40340 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_teams()
40341 ret = cp_parser_omp_distribute (parser, pragma_tok, p_name, mask, in cp_parser_omp_teams()
40343 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_teams()
40362 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_teams()
40364 return cp_parser_omp_loop (parser, pragma_tok, p_name, mask, in cp_parser_omp_teams()
40368 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_teams()
40369 ret = cp_parser_omp_loop (parser, pragma_tok, p_name, mask, in cp_parser_omp_teams()
40371 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_teams()
40387 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_teams()
40391 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_teams()
40403 OMP_TEAMS_BODY (stmt) = cp_parser_omp_structured_block (parser, if_p); in cp_parser_omp_teams()
40421 cp_parser_omp_target_data (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_omp_target_data() argument
40424 = cp_parser_omp_all_clauses (parser, OMP_TARGET_DATA_CLAUSE_MASK, in cp_parser_omp_target_data()
40475 OMP_TARGET_DATA_BODY (stmt) = cp_parser_omp_structured_block (parser, if_p); in cp_parser_omp_target_data()
40493 cp_parser_omp_target_enter_data (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_target_enter_data() argument
40497 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_target_enter_data()
40499 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_target_enter_data()
40504 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_target_enter_data()
40510 cp_parser_error (parser, "expected %<data%>"); in cp_parser_omp_target_enter_data()
40511 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_target_enter_data()
40520 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_target_enter_data()
40525 = cp_parser_omp_all_clauses (parser, OMP_TARGET_ENTER_DATA_CLAUSE_MASK, in cp_parser_omp_target_enter_data()
40581 cp_parser_omp_target_exit_data (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_target_exit_data() argument
40585 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_target_exit_data()
40587 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_target_exit_data()
40592 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_target_exit_data()
40598 cp_parser_error (parser, "expected %<data%>"); in cp_parser_omp_target_exit_data()
40599 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_target_exit_data()
40608 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_target_exit_data()
40613 = cp_parser_omp_all_clauses (parser, OMP_TARGET_EXIT_DATA_CLAUSE_MASK, in cp_parser_omp_target_exit_data()
40671 cp_parser_omp_target_update (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_target_update() argument
40679 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_target_update()
40684 = cp_parser_omp_all_clauses (parser, OMP_TARGET_UPDATE_CLAUSE_MASK, in cp_parser_omp_target_update()
40719 cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_target() argument
40728 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_target()
40730 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_target()
40746 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_target()
40754 stmt = cp_parser_omp_teams (parser, pragma_tok, p_name, in cp_parser_omp_target()
40759 stmt = cp_parser_omp_parallel (parser, pragma_tok, p_name, in cp_parser_omp_target()
40764 stmt = cp_parser_omp_simd (parser, pragma_tok, p_name, in cp_parser_omp_target()
40775 unsigned save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_target()
40779 ret = cp_parser_omp_teams (parser, pragma_tok, p_name, in cp_parser_omp_target()
40784 ret = cp_parser_omp_parallel (parser, pragma_tok, p_name, in cp_parser_omp_target()
40789 ret = cp_parser_omp_simd (parser, pragma_tok, p_name, in cp_parser_omp_target()
40796 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_target()
40839 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_target()
40844 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_target()
40845 cp_parser_omp_target_data (parser, pragma_tok, if_p); in cp_parser_omp_target()
40850 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_target()
40851 cp_parser_omp_target_enter_data (parser, pragma_tok, context); in cp_parser_omp_target()
40856 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_target()
40857 cp_parser_omp_target_exit_data (parser, pragma_tok, context); in cp_parser_omp_target()
40862 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_target()
40863 return cp_parser_omp_target_update (parser, pragma_tok, context); in cp_parser_omp_target()
40868 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_target()
40876 = cp_parser_omp_all_clauses (parser, OMP_TARGET_CLAUSE_MASK, in cp_parser_omp_target()
40880 OMP_TARGET_BODY (stmt) = cp_parser_omp_structured_block (parser, if_p); in cp_parser_omp_target()
40920 cp_parser_oacc_cache (cp_parser *parser, cp_token *pragma_tok) in cp_parser_oacc_cache() argument
40928 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE__CACHE_, NULL_TREE); in cp_parser_oacc_cache()
40931 cp_parser_require_pragma_eol (parser, cp_lexer_peek_token (parser->lexer)); in cp_parser_oacc_cache()
40959 cp_parser_oacc_data (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_oacc_data() argument
40964 clauses = cp_parser_oacc_all_clauses (parser, OACC_DATA_CLAUSE_MASK, in cp_parser_oacc_data()
40968 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_oacc_data()
40969 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_oacc_data()
40970 cp_parser_end_omp_structured_block (parser, save); in cp_parser_oacc_data()
40985 cp_parser_oacc_host_data (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_oacc_host_data() argument
40990 clauses = cp_parser_oacc_all_clauses (parser, OACC_HOST_DATA_CLAUSE_MASK, in cp_parser_oacc_host_data()
40994 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_oacc_host_data()
40995 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_oacc_host_data()
40996 cp_parser_end_omp_structured_block (parser, save); in cp_parser_oacc_host_data()
41016 cp_parser_oacc_declare (cp_parser *parser, cp_token *pragma_tok) in cp_parser_oacc_declare() argument
41022 clauses = cp_parser_oacc_all_clauses (parser, OACC_DECLARE_CLAUSE_MASK, in cp_parser_oacc_declare()
41188 cp_parser_oacc_enter_exit_data (cp_parser *parser, cp_token *pragma_tok, in cp_parser_oacc_enter_exit_data() argument
41195 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_oacc_enter_exit_data()
41196 p = IDENTIFIER_POINTER (cp_lexer_peek_token (parser->lexer)->u.value); in cp_parser_oacc_enter_exit_data()
41202 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_oacc_enter_exit_data()
41206 cp_lexer_consume_token (parser->lexer); in cp_parser_oacc_enter_exit_data()
41209 clauses = cp_parser_oacc_all_clauses (parser, OACC_ENTER_DATA_CLAUSE_MASK, in cp_parser_oacc_enter_exit_data()
41212 clauses = cp_parser_oacc_all_clauses (parser, OACC_EXIT_DATA_CLAUSE_MASK, in cp_parser_oacc_enter_exit_data()
41247 cp_parser_oacc_loop (cp_parser *parser, cp_token *pragma_tok, char *p_name, in cp_parser_oacc_loop() argument
41255 tree clauses = cp_parser_oacc_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_oacc_loop()
41267 int save = cp_parser_begin_omp_structured_block (parser); in cp_parser_oacc_loop()
41268 tree stmt = cp_parser_omp_for_loop (parser, OACC_LOOP, clauses, NULL, if_p); in cp_parser_oacc_loop()
41269 cp_parser_end_omp_structured_block (parser, save); in cp_parser_oacc_loop()
41344 cp_parser_oacc_compute (cp_parser *parser, cp_token *pragma_tok, in cp_parser_oacc_compute() argument
41370 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_oacc_compute()
41373 = IDENTIFIER_POINTER (cp_lexer_peek_token (parser->lexer)->u.value); in cp_parser_oacc_compute()
41376 cp_lexer_consume_token (parser->lexer); in cp_parser_oacc_compute()
41379 tree stmt = cp_parser_oacc_loop (parser, pragma_tok, p_name, mask, in cp_parser_oacc_compute()
41386 tree clauses = cp_parser_oacc_all_clauses (parser, mask, p_name, pragma_tok); in cp_parser_oacc_compute()
41389 unsigned int save = cp_parser_begin_omp_structured_block (parser); in cp_parser_oacc_compute()
41390 cp_parser_statement (parser, NULL_TREE, false, if_p); in cp_parser_oacc_compute()
41391 cp_parser_end_omp_structured_block (parser, save); in cp_parser_oacc_compute()
41408 cp_parser_oacc_update (cp_parser *parser, cp_token *pragma_tok) in cp_parser_oacc_update() argument
41412 clauses = cp_parser_oacc_all_clauses (parser, OACC_UPDATE_CLAUSE_MASK, in cp_parser_oacc_update()
41441 cp_parser_oacc_wait (cp_parser *parser, cp_token *pragma_tok) in cp_parser_oacc_wait() argument
41444 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_oacc_wait()
41446 if (cp_lexer_peek_token (parser->lexer)->type == CPP_OPEN_PAREN) in cp_parser_oacc_wait()
41447 list = cp_parser_oacc_wait_list (parser, loc, list); in cp_parser_oacc_wait()
41449 clauses = cp_parser_oacc_all_clauses (parser, OACC_WAIT_CLAUSE_MASK, in cp_parser_oacc_wait()
41470 cp_parser_omp_declare_simd (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_declare_simd() argument
41474 bool first_p = parser->omp_declare_simd == NULL; in cp_parser_omp_declare_simd()
41485 parser->omp_declare_simd = &data; in cp_parser_omp_declare_simd()
41487 else if (parser->omp_declare_simd->variant_p != variant_p) in cp_parser_omp_declare_simd()
41492 parser->omp_declare_simd->variant_p ? "variant" : "simd", in cp_parser_omp_declare_simd()
41493 parser->omp_declare_simd->variant_p ? "simd" : "variant"); in cp_parser_omp_declare_simd()
41494 parser->omp_declare_simd->error_seen = true; in cp_parser_omp_declare_simd()
41498 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL) in cp_parser_omp_declare_simd()
41499 && cp_lexer_next_token_is_not (parser->lexer, CPP_EOF)) in cp_parser_omp_declare_simd()
41500 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare_simd()
41501 if (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL)) in cp_parser_omp_declare_simd()
41502 parser->omp_declare_simd->error_seen = true; in cp_parser_omp_declare_simd()
41503 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_declare_simd()
41505 = cp_token_cache_new (pragma_tok, cp_lexer_peek_token (parser->lexer)); in cp_parser_omp_declare_simd()
41506 parser->omp_declare_simd->tokens.safe_push (cp); in cp_parser_omp_declare_simd()
41510 while (cp_lexer_next_token_is (parser->lexer, CPP_PRAGMA)) in cp_parser_omp_declare_simd()
41511 cp_parser_pragma (parser, context, NULL); in cp_parser_omp_declare_simd()
41515 cp_parser_declaration (parser); in cp_parser_omp_declare_simd()
41518 cp_parser_member_declaration (parser); in cp_parser_omp_declare_simd()
41521 cp_parser_block_declaration (parser, /*statement_p=*/false); in cp_parser_omp_declare_simd()
41524 cp_parser_declaration_statement (parser); in cp_parser_omp_declare_simd()
41527 if (parser->omp_declare_simd in cp_parser_omp_declare_simd()
41528 && !parser->omp_declare_simd->error_seen in cp_parser_omp_declare_simd()
41529 && !parser->omp_declare_simd->fndecl_seen) in cp_parser_omp_declare_simd()
41533 parser->omp_declare_simd->variant_p ? "variant" : "simd"); in cp_parser_omp_declare_simd()
41535 parser->omp_declare_simd = NULL; in cp_parser_omp_declare_simd()
41558 cp_parser_omp_context_selector (cp_parser *parser, tree set, bool has_parms_p) in cp_parser_omp_context_selector() argument
41564 if (cp_lexer_next_token_is (parser->lexer, CPP_KEYWORD) in cp_parser_omp_context_selector()
41565 || cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_context_selector()
41566 selector = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_context_selector()
41569 cp_parser_error (parser, "expected trait selector name"); in cp_parser_omp_context_selector()
41624 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41639 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41641 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_omp_context_selector()
41651 parens.consume_open (parser); in cp_parser_omp_context_selector()
41653 cp_token *token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_context_selector()
41655 && cp_lexer_next_token_is (parser->lexer, CPP_NAME) in cp_parser_omp_context_selector()
41657 && cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_PAREN)) in cp_parser_omp_context_selector()
41659 cp_lexer_save_tokens (parser->lexer); in cp_parser_omp_context_selector()
41660 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41661 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41662 if (cp_parser_skip_to_closing_parenthesis (parser, false, false, in cp_parser_omp_context_selector()
41664 && cp_lexer_next_token_is (parser->lexer, CPP_COLON)) in cp_parser_omp_context_selector()
41666 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_omp_context_selector()
41667 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41670 parens2.require_open (parser); in cp_parser_omp_context_selector()
41671 tree score = cp_parser_constant_expression (parser); in cp_parser_omp_context_selector()
41672 if (!parens2.require_close (parser)) in cp_parser_omp_context_selector()
41673 cp_parser_skip_to_closing_parenthesis (parser, true, in cp_parser_omp_context_selector()
41675 cp_parser_require (parser, CPP_COLON, RT_COLON); in cp_parser_omp_context_selector()
41695 cp_lexer_rollback_tokens (parser->lexer); in cp_parser_omp_context_selector()
41697 token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_context_selector()
41706 t = cp_parser_constant_expression (parser); in cp_parser_omp_context_selector()
41724 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_context_selector()
41725 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41732 if (cp_lexer_next_token_is (parser->lexer, CPP_KEYWORD) in cp_parser_omp_context_selector()
41733 || cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_context_selector()
41735 tree prop = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_context_selector()
41736 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41741 cp_parser_error (parser, "expected identifier"); in cp_parser_omp_context_selector()
41749 if (cp_lexer_next_token_is (parser->lexer, CPP_KEYWORD) in cp_parser_omp_context_selector()
41750 || cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_context_selector()
41752 prop = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_context_selector()
41753 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41755 else if (cp_lexer_next_token_is (parser->lexer, CPP_STRING)) in cp_parser_omp_context_selector()
41756 value = cp_parser_string_literal (parser, false, false); in cp_parser_omp_context_selector()
41759 cp_parser_error (parser, "expected identifier or " in cp_parser_omp_context_selector()
41766 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_context_selector()
41767 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41774 t = cp_parser_constant_expression (parser); in cp_parser_omp_context_selector()
41798 = cp_parser_omp_all_clauses (parser, in cp_parser_omp_context_selector()
41806 if (!parens.require_close (parser)) in cp_parser_omp_context_selector()
41807 cp_parser_skip_to_closing_parenthesis (parser, true, false, true); in cp_parser_omp_context_selector()
41815 cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN); in cp_parser_omp_context_selector()
41821 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_context_selector()
41822 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector()
41845 cp_parser_omp_context_selector_specification (cp_parser *parser, in cp_parser_omp_context_selector_specification() argument
41852 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_context_selector_specification()
41854 = IDENTIFIER_POINTER (cp_lexer_peek_token (parser->lexer)->u.value); in cp_parser_omp_context_selector_specification()
41878 cp_parser_error (parser, "expected %<construct%>, %<device%>, " in cp_parser_omp_context_selector_specification()
41883 tree set = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_context_selector_specification()
41884 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector_specification()
41886 if (!cp_parser_require (parser, CPP_EQ, RT_EQ)) in cp_parser_omp_context_selector_specification()
41890 if (!braces.require_open (parser)) in cp_parser_omp_context_selector_specification()
41894 = cp_parser_omp_context_selector (parser, set, has_parms_p); in cp_parser_omp_context_selector_specification()
41897 cp_parser_skip_to_closing_brace (parser); in cp_parser_omp_context_selector_specification()
41903 braces.require_close (parser); in cp_parser_omp_context_selector_specification()
41905 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_context_selector_specification()
41906 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_context_selector_specification()
41921 cp_finish_omp_declare_variant (cp_parser *parser, cp_token *pragma_tok, in cp_finish_omp_declare_variant() argument
41925 if (!parens.require_open (parser)) in cp_finish_omp_declare_variant()
41928 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_finish_omp_declare_variant()
41934 cp_token *varid_token = cp_lexer_peek_token (parser->lexer); in cp_finish_omp_declare_variant()
41936 = cp_parser_id_expression (parser, /*template_keyword_p=*/false, in cp_finish_omp_declare_variant()
41941 parens.require_close (parser); in cp_finish_omp_declare_variant()
41953 variant = cp_parser_lookup_name (parser, varid, none_type, in cp_finish_omp_declare_variant()
41967 = finish_id_expression (varid, variant, parser->scope, in cp_finish_omp_declare_variant()
41969 &parser->non_integral_constant_expression_p, in cp_finish_omp_declare_variant()
41973 cp_parser_error (parser, error_msg); in cp_finish_omp_declare_variant()
41981 location_t match_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_finish_omp_declare_variant()
41982 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_finish_omp_declare_variant()
41983 clause = IDENTIFIER_POINTER (cp_lexer_peek_token (parser->lexer)->u.value); in cp_finish_omp_declare_variant()
41986 cp_parser_error (parser, "expected %<match%>"); in cp_finish_omp_declare_variant()
41990 cp_lexer_consume_token (parser->lexer); in cp_finish_omp_declare_variant()
41992 if (!parens.require_open (parser)) in cp_finish_omp_declare_variant()
41995 tree ctx = cp_parser_omp_context_selector_specification (parser, true); in cp_finish_omp_declare_variant()
42013 parens.require_close (parser); in cp_finish_omp_declare_variant()
42014 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_finish_omp_declare_variant()
42023 cp_parser_late_parsing_omp_declare_simd (cp_parser *parser, tree attrs) in cp_parser_late_parsing_omp_declare_simd() argument
42026 cp_omp_declare_simd_data *data = parser->omp_declare_simd; in cp_parser_late_parsing_omp_declare_simd()
42043 cp_parser_push_lexer_for_tokens (parser, ce); in cp_parser_late_parsing_omp_declare_simd()
42044 parser->lexer->in_pragma = true; in cp_parser_late_parsing_omp_declare_simd()
42045 gcc_assert (cp_lexer_peek_token (parser->lexer)->type == CPP_PRAGMA); in cp_parser_late_parsing_omp_declare_simd()
42046 cp_token *pragma_tok = cp_lexer_consume_token (parser->lexer); in cp_parser_late_parsing_omp_declare_simd()
42047 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_late_parsing_omp_declare_simd()
42049 cp_lexer_consume_token (parser->lexer); in cp_parser_late_parsing_omp_declare_simd()
42052 cl = cp_parser_omp_all_clauses (parser, OMP_DECLARE_SIMD_CLAUSE_MASK, in cp_parser_late_parsing_omp_declare_simd()
42066 attrs = cp_finish_omp_declare_variant (parser, pragma_tok, attrs); in cp_parser_late_parsing_omp_declare_simd()
42068 cp_parser_pop_lexer (parser); in cp_parser_late_parsing_omp_declare_simd()
42092 cp_parser_omp_declare_target (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_declare_target() argument
42097 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_declare_target()
42099 = cp_parser_omp_all_clauses (parser, OMP_DECLARE_TARGET_CLAUSE_MASK, in cp_parser_omp_declare_target()
42101 else if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_omp_declare_target()
42103 clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE_TO_DECLARE, in cp_parser_omp_declare_target()
42106 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_declare_target()
42110 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_declare_target()
42189 cp_parser_omp_end_declare_target (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_end_declare_target() argument
42192 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_end_declare_target()
42194 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_end_declare_target()
42199 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_end_declare_target()
42201 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_end_declare_target()
42203 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_end_declare_target()
42207 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_end_declare_target()
42210 cp_parser_error (parser, "expected %<target%>"); in cp_parser_omp_end_declare_target()
42211 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_end_declare_target()
42217 cp_parser_error (parser, "expected %<declare%>"); in cp_parser_omp_end_declare_target()
42218 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_end_declare_target()
42221 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_end_declare_target()
42248 cp_parser_omp_declare_reduction_exprs (tree fndecl, cp_parser *parser) in cp_parser_omp_declare_reduction_exprs() argument
42266 combiner = cp_parser_expression (parser); in cp_parser_omp_declare_reduction_exprs()
42273 if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN)) in cp_parser_omp_declare_reduction_exprs()
42277 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_declare_reduction_exprs()
42279 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_declare_reduction_exprs()
42285 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare_reduction_exprs()
42287 if (!parens.require_open (parser)) in cp_parser_omp_declare_reduction_exprs()
42291 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_declare_reduction_exprs()
42293 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_declare_reduction_exprs()
42314 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare_reduction_exprs()
42316 if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_PAREN) in cp_parser_omp_declare_reduction_exprs()
42317 || (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN) in cp_parser_omp_declare_reduction_exprs()
42318 && cp_lexer_peek_nth_token (parser->lexer, 2)->type in cp_parser_omp_declare_reduction_exprs()
42320 && cp_lexer_peek_nth_token (parser->lexer, 3)->type in cp_parser_omp_declare_reduction_exprs()
42327 initializer = cp_parser_initializer (parser, &is_direct_init, in cp_parser_omp_declare_reduction_exprs()
42334 cp_parser_parse_tentatively (parser); in cp_parser_omp_declare_reduction_exprs()
42337 tree fn_name = cp_parser_id_expression (parser, /*template_p=*/false, in cp_parser_omp_declare_reduction_exprs()
42344 || cp_parser_error_occurred (parser) in cp_parser_omp_declare_reduction_exprs()
42345 || !cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN) in cp_parser_omp_declare_reduction_exprs()
42347 (parser, non_attr, /*cast_p=*/false, in cp_parser_omp_declare_reduction_exprs()
42350 cp_parser_error_occurred (parser))) in cp_parser_omp_declare_reduction_exprs()
42353 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_declare_reduction_exprs()
42354 cp_parser_error (parser, "expected id-expression (arguments)"); in cp_parser_omp_declare_reduction_exprs()
42364 cp_parser_abort_tentative_parse (parser); in cp_parser_omp_declare_reduction_exprs()
42368 initializer = cp_parser_postfix_expression (parser, false, false, false, in cp_parser_omp_declare_reduction_exprs()
42382 if (!parens.require_close (parser)) in cp_parser_omp_declare_reduction_exprs()
42386 if (!cp_lexer_next_token_is (parser->lexer, CPP_PRAGMA_EOL)) in cp_parser_omp_declare_reduction_exprs()
42387 cp_parser_required_error (parser, RT_PRAGMA_EOL, /*keyword=*/false, in cp_parser_omp_declare_reduction_exprs()
42402 cp_parser_omp_declare_reduction (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_declare_reduction() argument
42417 if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) in cp_parser_omp_declare_reduction()
42420 switch (cp_lexer_peek_token (parser->lexer)->type) in cp_parser_omp_declare_reduction()
42447 reduc_id = orig_reduc_id = cp_parser_identifier (parser); in cp_parser_omp_declare_reduction()
42450 cp_parser_error (parser, "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, " in cp_parser_omp_declare_reduction()
42456 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare_reduction()
42462 if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) in cp_parser_omp_declare_reduction()
42467 saved_message = parser->type_definition_forbidden_message; in cp_parser_omp_declare_reduction()
42468 parser->type_definition_forbidden_message in cp_parser_omp_declare_reduction()
42471 saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; in cp_parser_omp_declare_reduction()
42472 parser->colon_corrects_to_scope_p = false; in cp_parser_omp_declare_reduction()
42475 = parser->colon_doesnt_start_class_def_p; in cp_parser_omp_declare_reduction()
42476 parser->colon_doesnt_start_class_def_p = true; in cp_parser_omp_declare_reduction()
42480 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_declare_reduction()
42481 type = cp_parser_type_id (parser); in cp_parser_omp_declare_reduction()
42504 if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_declare_reduction()
42505 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare_reduction()
42511 parser->type_definition_forbidden_message = saved_message; in cp_parser_omp_declare_reduction()
42512 parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; in cp_parser_omp_declare_reduction()
42513 parser->colon_doesnt_start_class_def_p in cp_parser_omp_declare_reduction()
42516 if (!cp_parser_require (parser, CPP_COLON, RT_COLON) in cp_parser_omp_declare_reduction()
42520 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_declare_reduction()
42524 first_token = cp_lexer_peek_token (parser->lexer); in cp_parser_omp_declare_reduction()
42562 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL) in cp_parser_omp_declare_reduction()
42563 && cp_lexer_next_token_is_not (parser->lexer, CPP_EOF)) in cp_parser_omp_declare_reduction()
42564 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare_reduction()
42565 if (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL)) in cp_parser_omp_declare_reduction()
42568 cp_lexer_peek_nth_token (parser->lexer, in cp_parser_omp_declare_reduction()
42589 cp_parser_push_lexer_for_tokens (parser, cp); in cp_parser_omp_declare_reduction()
42590 parser->lexer->in_pragma = true; in cp_parser_omp_declare_reduction()
42592 if (!cp_parser_omp_declare_reduction_exprs (fndecl, parser)) in cp_parser_omp_declare_reduction()
42599 cp_parser_pop_lexer (parser); in cp_parser_omp_declare_reduction()
42603 cp_parser_pop_lexer (parser); in cp_parser_omp_declare_reduction()
42620 cp_lexer_peek_nth_token (parser->lexer, 2)); in cp_parser_omp_declare_reduction()
42625 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_declare_reduction()
42642 cp_parser_omp_declare (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_declare() argument
42645 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_declare()
42647 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_declare()
42652 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare()
42653 cp_parser_omp_declare_simd (parser, pragma_tok, in cp_parser_omp_declare()
42659 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare()
42660 cp_parser_omp_declare_simd (parser, pragma_tok, in cp_parser_omp_declare()
42664 cp_ensure_no_omp_declare_simd (parser); in cp_parser_omp_declare()
42667 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare()
42668 cp_parser_omp_declare_reduction (parser, pragma_tok, in cp_parser_omp_declare()
42674 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_declare()
42679 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_declare()
42680 cp_parser_omp_declare_target (parser, pragma_tok); in cp_parser_omp_declare()
42684 cp_parser_error (parser, "expected %<simd%>, %<reduction%>, " in cp_parser_omp_declare()
42686 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_declare()
42694 cp_parser_omp_requires (cp_parser *parser, cp_token *pragma_tok) in cp_parser_omp_requires() argument
42700 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL)) in cp_parser_omp_requires()
42702 if (!first && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) in cp_parser_omp_requires()
42703 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_requires()
42707 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_requires()
42709 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_requires()
42711 location_t cloc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_requires()
42724 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_requires()
42727 if (parens.require_open (parser)) in cp_parser_omp_requires()
42729 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_requires()
42731 id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_requires()
42746 error_at (cp_lexer_peek_token (parser->lexer)->location, in cp_parser_omp_requires()
42749 if (cp_lexer_nth_token_is (parser->lexer, 2, in cp_parser_omp_requires()
42751 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_requires()
42754 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_requires()
42756 if (!parens.require_close (parser)) in cp_parser_omp_requires()
42757 cp_parser_skip_to_closing_parenthesis (parser, in cp_parser_omp_requires()
42765 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_requires()
42778 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_requires()
42785 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_requires()
42826 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_omp_requires()
42860 cp_parser_omp_taskloop (cp_parser *parser, cp_token *pragma_tok, in cp_parser_omp_taskloop() argument
42866 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_omp_taskloop()
42875 if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) in cp_parser_omp_taskloop()
42877 tree id = cp_lexer_peek_token (parser->lexer)->u.value; in cp_parser_omp_taskloop()
42886 cp_lexer_consume_token (parser->lexer); in cp_parser_omp_taskloop()
42888 return cp_parser_omp_simd (parser, pragma_tok, p_name, mask, in cp_parser_omp_taskloop()
42891 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_taskloop()
42892 ret = cp_parser_omp_simd (parser, pragma_tok, p_name, mask, in cp_parser_omp_taskloop()
42894 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_taskloop()
42909 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_omp_taskloop()
42913 clauses = cp_parser_omp_all_clauses (parser, mask, p_name, pragma_tok, in cp_parser_omp_taskloop()
42923 save = cp_parser_begin_omp_structured_block (parser); in cp_parser_omp_taskloop()
42925 ret = cp_parser_omp_for_loop (parser, OMP_TASKLOOP, clauses, cclauses, in cp_parser_omp_taskloop()
42928 cp_parser_end_omp_structured_block (parser, save); in cp_parser_omp_taskloop()
42956 cp_parser_oacc_routine (cp_parser *parser, cp_token *pragma_tok, in cp_parser_oacc_routine() argument
42962 gcc_checking_assert (parser->oacc_routine == NULL); in cp_parser_oacc_routine()
42972 parser->oacc_routine = &data; in cp_parser_oacc_routine()
42975 if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) in cp_parser_oacc_routine()
42978 parens.consume_open (parser); /* '(' */ in cp_parser_oacc_routine()
42983 location_t name_loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_oacc_routine()
42984 tree name = cp_parser_id_expression (parser, in cp_parser_oacc_routine()
42991 ? cp_parser_lookup_name_simple (parser, name, name_loc) in cp_parser_oacc_routine()
42994 cp_parser_name_lookup_error (parser, name, decl, NLE_NULL, name_loc); in cp_parser_oacc_routine()
42997 || !parens.require_close (parser)) in cp_parser_oacc_routine()
42999 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_oacc_routine()
43000 parser->oacc_routine = NULL; in cp_parser_oacc_routine()
43005 = cp_parser_oacc_all_clauses (parser, OACC_ROUTINE_CLAUSE_MASK, in cp_parser_oacc_routine()
43007 cp_lexer_peek_token (parser->lexer)); in cp_parser_oacc_routine()
43018 parser->oacc_routine = NULL; in cp_parser_oacc_routine()
43028 parser->oacc_routine = NULL; in cp_parser_oacc_routine()
43035 parser->oacc_routine = NULL; in cp_parser_oacc_routine()
43039 cp_finalize_oacc_routine (parser, decl, false); in cp_parser_oacc_routine()
43040 parser->oacc_routine = NULL; in cp_parser_oacc_routine()
43045 while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL) in cp_parser_oacc_routine()
43046 && cp_lexer_next_token_is_not (parser->lexer, CPP_EOF)) in cp_parser_oacc_routine()
43047 cp_lexer_consume_token (parser->lexer); in cp_parser_oacc_routine()
43048 if (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL)) in cp_parser_oacc_routine()
43049 parser->oacc_routine->error_seen = true; in cp_parser_oacc_routine()
43050 cp_parser_require_pragma_eol (parser, pragma_tok); in cp_parser_oacc_routine()
43052 = cp_token_cache_new (pragma_tok, cp_lexer_peek_token (parser->lexer)); in cp_parser_oacc_routine()
43053 parser->oacc_routine->tokens.safe_push (cp); in cp_parser_oacc_routine()
43057 if (cp_lexer_next_token_is (parser->lexer, CPP_PRAGMA)) in cp_parser_oacc_routine()
43059 cp_ensure_no_oacc_routine (parser); in cp_parser_oacc_routine()
43066 cp_parser_declaration (parser); in cp_parser_oacc_routine()
43067 if (parser->oacc_routine in cp_parser_oacc_routine()
43068 && !parser->oacc_routine->fndecl_seen) in cp_parser_oacc_routine()
43069 cp_ensure_no_oacc_routine (parser); in cp_parser_oacc_routine()
43071 parser->oacc_routine = NULL; in cp_parser_oacc_routine()
43080 cp_parser_late_parsing_oacc_routine (cp_parser *parser, tree attrs) in cp_parser_late_parsing_oacc_routine() argument
43083 cp_oacc_routine_data *data = parser->oacc_routine; in cp_parser_late_parsing_oacc_routine()
43098 cp_parser_push_lexer_for_tokens (parser, ce); in cp_parser_late_parsing_oacc_routine()
43099 parser->lexer->in_pragma = true; in cp_parser_late_parsing_oacc_routine()
43100 gcc_assert (cp_lexer_peek_token (parser->lexer)->type == CPP_PRAGMA); in cp_parser_late_parsing_oacc_routine()
43102 cp_token *pragma_tok = cp_lexer_consume_token (parser->lexer); in cp_parser_late_parsing_oacc_routine()
43103 gcc_checking_assert (parser->oacc_routine->clauses == NULL_TREE); in cp_parser_late_parsing_oacc_routine()
43104 parser->oacc_routine->clauses in cp_parser_late_parsing_oacc_routine()
43105 = cp_parser_oacc_all_clauses (parser, OACC_ROUTINE_CLAUSE_MASK, in cp_parser_late_parsing_oacc_routine()
43109 parser->oacc_routine->clauses = nreverse (parser->oacc_routine->clauses); in cp_parser_late_parsing_oacc_routine()
43110 cp_parser_pop_lexer (parser); in cp_parser_late_parsing_oacc_routine()
43121 cp_finalize_oacc_routine (cp_parser *parser, tree fndecl, bool is_defn) in cp_finalize_oacc_routine() argument
43123 if (__builtin_expect (parser->oacc_routine != NULL, 0)) in cp_finalize_oacc_routine()
43126 if (parser->oacc_routine->error_seen in cp_finalize_oacc_routine()
43130 if (parser->oacc_routine->fndecl_seen) in cp_finalize_oacc_routine()
43132 error_at (parser->oacc_routine->loc, in cp_finalize_oacc_routine()
43135 parser->oacc_routine = NULL; in cp_finalize_oacc_routine()
43140 cp_ensure_no_oacc_routine (parser); in cp_finalize_oacc_routine()
43145 = oacc_verify_routine_clauses (fndecl, &parser->oacc_routine->clauses, in cp_finalize_oacc_routine()
43146 parser->oacc_routine->loc, in cp_finalize_oacc_routine()
43150 parser->oacc_routine = NULL; in cp_finalize_oacc_routine()
43160 error_at (parser->oacc_routine->loc, in cp_finalize_oacc_routine()
43166 parser->oacc_routine = NULL; in cp_finalize_oacc_routine()
43171 tree dims = oacc_build_routine_dims (parser->oacc_routine->clauses); in cp_finalize_oacc_routine()
43177 parser->oacc_routine->clauses, in cp_finalize_oacc_routine()
43184 parser->oacc_routine->fndecl_seen = true; in cp_finalize_oacc_routine()
43191 cp_parser_omp_construct (cp_parser *parser, cp_token *pragma_tok, bool *if_p) in cp_parser_omp_construct() argument
43200 cp_parser_omp_atomic (parser, pragma_tok); in cp_parser_omp_construct()
43203 stmt = cp_parser_oacc_cache (parser, pragma_tok); in cp_parser_omp_construct()
43206 stmt = cp_parser_oacc_data (parser, pragma_tok, if_p); in cp_parser_omp_construct()
43209 stmt = cp_parser_oacc_enter_exit_data (parser, pragma_tok, true); in cp_parser_omp_construct()
43212 stmt = cp_parser_oacc_enter_exit_data (parser, pragma_tok, false); in cp_parser_omp_construct()
43215 stmt = cp_parser_oacc_host_data (parser, pragma_tok, if_p); in cp_parser_omp_construct()
43221 stmt = cp_parser_oacc_compute (parser, pragma_tok, p_name, if_p); in cp_parser_omp_construct()
43225 stmt = cp_parser_oacc_loop (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43229 stmt = cp_parser_oacc_update (parser, pragma_tok); in cp_parser_omp_construct()
43232 stmt = cp_parser_oacc_wait (parser, pragma_tok); in cp_parser_omp_construct()
43235 cp_parser_omp_atomic (parser, pragma_tok); in cp_parser_omp_construct()
43238 stmt = cp_parser_omp_critical (parser, pragma_tok, if_p); in cp_parser_omp_construct()
43242 stmt = cp_parser_omp_distribute (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43247 stmt = cp_parser_omp_for (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43252 stmt = cp_parser_omp_loop (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43257 stmt = cp_parser_omp_master (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43262 stmt = cp_parser_omp_parallel (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43267 stmt = cp_parser_omp_sections (parser, pragma_tok, p_name, mask, NULL); in cp_parser_omp_construct()
43271 stmt = cp_parser_omp_simd (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43275 stmt = cp_parser_omp_single (parser, pragma_tok, if_p); in cp_parser_omp_construct()
43278 stmt = cp_parser_omp_task (parser, pragma_tok, if_p); in cp_parser_omp_construct()
43281 stmt = cp_parser_omp_taskgroup (parser, pragma_tok, if_p); in cp_parser_omp_construct()
43285 stmt = cp_parser_omp_taskloop (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43290 stmt = cp_parser_omp_teams (parser, pragma_tok, p_name, mask, NULL, in cp_parser_omp_construct()
43312 cp_parser_txn_attribute_opt (cp_parser *parser) in cp_parser_txn_attribute_opt() argument
43317 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_ATTRIBUTE)) in cp_parser_txn_attribute_opt()
43318 return cp_parser_attributes_opt (parser); in cp_parser_txn_attribute_opt()
43320 if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_SQUARE)) in cp_parser_txn_attribute_opt()
43322 cp_lexer_consume_token (parser->lexer); in cp_parser_txn_attribute_opt()
43323 if (!cp_parser_require (parser, CPP_OPEN_SQUARE, RT_OPEN_SQUARE)) in cp_parser_txn_attribute_opt()
43326 token = cp_lexer_peek_token (parser->lexer); in cp_parser_txn_attribute_opt()
43329 token = cp_lexer_consume_token (parser->lexer); in cp_parser_txn_attribute_opt()
43339 cp_parser_error (parser, "expected identifier"); in cp_parser_txn_attribute_opt()
43341 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_txn_attribute_opt()
43343 cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); in cp_parser_txn_attribute_opt()
43356 cp_parser_transaction (cp_parser *parser, cp_token *token) in cp_parser_transaction() argument
43358 unsigned char old_in = parser->in_transaction; in cp_parser_transaction()
43363 cp_lexer_consume_token (parser->lexer); in cp_parser_transaction()
43370 attrs = cp_parser_txn_attribute_opt (parser); in cp_parser_transaction()
43385 noex = cp_parser_noexcept_specification_opt (parser, in cp_parser_transaction()
43397 parser->in_transaction = new_in; in cp_parser_transaction()
43398 cp_parser_compound_statement (parser, NULL, BCS_TRANSACTION, false); in cp_parser_transaction()
43399 parser->in_transaction = old_in; in cp_parser_transaction()
43414 cp_parser_transaction_expression (cp_parser *parser, enum rid keyword) in cp_parser_transaction_expression() argument
43416 unsigned char old_in = parser->in_transaction; in cp_parser_transaction_expression()
43421 location_t loc = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_transaction_expression()
43434 token = cp_parser_require_keyword (parser, keyword, in cp_parser_transaction_expression()
43447 parser->in_transaction = this_in; in cp_parser_transaction_expression()
43450 noex = cp_parser_noexcept_specification_opt (parser, in cp_parser_transaction_expression()
43458 || cp_lexer_peek_token (parser->lexer)->type == CPP_OPEN_PAREN) in cp_parser_transaction_expression()
43461 parens.require_open (parser); in cp_parser_transaction_expression()
43463 expr = cp_parser_expression (parser); in cp_parser_transaction_expression()
43466 parens.require_close (parser); in cp_parser_transaction_expression()
43477 parser->in_transaction = old_in; in cp_parser_transaction_expression()
43479 if (cp_parser_non_integral_constant_expression (parser, NIC_TRANSACTION)) in cp_parser_transaction_expression()
43496 cp_parser_function_transaction (cp_parser *parser, enum rid keyword) in cp_parser_function_transaction() argument
43498 unsigned char old_in = parser->in_transaction; in cp_parser_function_transaction()
43505 token = cp_parser_require_keyword (parser, keyword, in cp_parser_function_transaction()
43514 attrs = cp_parser_txn_attribute_opt (parser); in cp_parser_function_transaction()
43521 parser->in_transaction = new_in; in cp_parser_function_transaction()
43523 if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRY)) in cp_parser_function_transaction()
43524 cp_parser_function_try_block (parser); in cp_parser_function_transaction()
43527 (parser, /*in_function_try_block=*/false); in cp_parser_function_transaction()
43529 parser->in_transaction = old_in; in cp_parser_function_transaction()
43543 cp_parser_transaction_cancel (cp_parser *parser) in cp_parser_transaction_cancel() argument
43549 token = cp_parser_require_keyword (parser, RID_TRANSACTION_CANCEL, in cp_parser_transaction_cancel()
43553 attrs = cp_parser_txn_attribute_opt (parser); in cp_parser_transaction_cancel()
43559 cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); in cp_parser_transaction_cancel()
43567 else if (parser->in_transaction & TM_STMT_ATTR_RELAXED) in cp_parser_transaction_cancel()
43575 if ((parser->in_transaction & TM_STMT_ATTR_OUTER) == 0 in cp_parser_transaction_cancel()
43585 else if (parser->in_transaction == 0) in cp_parser_transaction_cancel()
43654 cp_parser_pragma_ivdep (cp_parser *parser, cp_token *pragma_tok) in cp_parser_pragma_ivdep() argument
43656 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_pragma_ivdep()
43663 cp_parser_pragma_unroll (cp_parser *parser, cp_token *pragma_tok) in cp_parser_pragma_unroll() argument
43665 location_t location = cp_lexer_peek_token (parser->lexer)->location; in cp_parser_pragma_unroll()
43666 tree expr = cp_parser_constant_expression (parser); in cp_parser_pragma_unroll()
43686 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_pragma_unroll()
43694 cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p) in cp_parser_pragma() argument
43701 pragma_tok = cp_lexer_consume_token (parser->lexer); in cp_parser_pragma()
43703 parser->lexer->in_pragma = true; in cp_parser_pragma()
43707 cp_ensure_no_omp_declare_simd (parser); in cp_parser_pragma()
43719 cp_parser_omp_barrier (parser, pragma_tok); in cp_parser_pragma()
43734 cp_parser_omp_depobj (parser, pragma_tok); in cp_parser_pragma()
43749 cp_parser_omp_flush (parser, pragma_tok); in cp_parser_pragma()
43764 cp_parser_omp_taskwait (parser, pragma_tok); in cp_parser_pragma()
43780 cp_parser_omp_taskyield (parser, pragma_tok); in cp_parser_pragma()
43796 cp_parser_omp_cancel (parser, pragma_tok); in cp_parser_pragma()
43809 cp_parser_omp_cancellation_point (parser, pragma_tok, context); in cp_parser_pragma()
43813 cp_parser_omp_threadprivate (parser, pragma_tok); in cp_parser_pragma()
43817 return cp_parser_omp_declare (parser, pragma_tok, context); in cp_parser_pragma()
43820 cp_parser_oacc_declare (parser, pragma_tok); in cp_parser_pragma()
43833 cp_parser_omp_construct (parser, pragma_tok, if_p); in cp_parser_pragma()
43846 cp_parser_omp_construct (parser, pragma_tok, if_p); in cp_parser_pragma()
43856 cp_parser_oacc_routine (parser, pragma_tok, context); in cp_parser_pragma()
43869 cp_parser_omp_construct (parser, pragma_tok, if_p); in cp_parser_pragma()
43882 cp_parser_omp_construct (parser, pragma_tok, if_p); in cp_parser_pragma()
43910 cp_parser_omp_construct (parser, pragma_tok, if_p); in cp_parser_pragma()
43922 return cp_parser_omp_requires (parser, pragma_tok); in cp_parser_pragma()
43928 ret = cp_parser_omp_ordered (parser, pragma_tok, context, if_p); in cp_parser_pragma()
43936 ret = cp_parser_omp_target (parser, pragma_tok, context, if_p); in cp_parser_pragma()
43941 cp_parser_omp_end_declare_target (parser, pragma_tok); in cp_parser_pragma()
43964 const bool ivdep = cp_parser_pragma_ivdep (parser, pragma_tok); in cp_parser_pragma()
43970 tok = cp_lexer_consume_token (parser->lexer); in cp_parser_pragma()
43971 unroll = cp_parser_pragma_unroll (parser, tok); in cp_parser_pragma()
43981 cp_parser_error (parser, "for, while or do statement expected"); in cp_parser_pragma()
43984 cp_parser_iteration_statement (parser, if_p, ivdep, unroll); in cp_parser_pragma()
43997 = cp_parser_pragma_unroll (parser, pragma_tok); in cp_parser_pragma()
44003 tok = cp_lexer_consume_token (parser->lexer); in cp_parser_pragma()
44004 ivdep = cp_parser_pragma_ivdep (parser, tok); in cp_parser_pragma()
44014 cp_parser_error (parser, "for, while or do statement expected"); in cp_parser_pragma()
44017 cp_parser_iteration_statement (parser, if_p, ivdep, unroll); in cp_parser_pragma()
44027 cp_parser_error (parser, "expected declaration specifiers"); in cp_parser_pragma()
44031 cp_parser_skip_to_pragma_eol (parser, pragma_tok); in cp_parser_pragma()
44104 synthesize_implicit_template_parm (cp_parser *parser, tree constr) in synthesize_implicit_template_parm() argument
44125 if (parser->implicit_template_scope) in synthesize_implicit_template_parm()
44127 gcc_assert (parser->implicit_template_parms); in synthesize_implicit_template_parm()
44129 current_binding_level = parser->implicit_template_scope; in synthesize_implicit_template_parm()
44187 || !function_being_declared_is_template_p (parser)) in synthesize_implicit_template_parm()
44194 parser->implicit_template_scope in synthesize_implicit_template_parm()
44199 parser->fully_implicit_function_template_p = true; in synthesize_implicit_template_parm()
44200 ++parser->num_template_parameter_lists; in synthesize_implicit_template_parm()
44209 parser->implicit_template_scope = scope; in synthesize_implicit_template_parm()
44212 parser->implicit_template_parms in synthesize_implicit_template_parm()
44233 = process_template_parm (parser->implicit_template_parms, in synthesize_implicit_template_parm()
44247 if (parser->implicit_template_parms) in synthesize_implicit_template_parm()
44248 parser->implicit_template_parms in synthesize_implicit_template_parm()
44249 = TREE_CHAIN (parser->implicit_template_parms); in synthesize_implicit_template_parm()
44251 parser->implicit_template_parms = new_parm; in synthesize_implicit_template_parm()
44267 TREE_VEC_ELT (new_parms, 0) = parser->implicit_template_parms; in synthesize_implicit_template_parm()
44276 TREE_VEC_ELT (new_parms, new_parm_idx) = parser->implicit_template_parms; in synthesize_implicit_template_parm()
44302 finish_fully_implicit_template (cp_parser *parser, tree member_decl_opt) in finish_fully_implicit_template() argument
44304 gcc_assert (parser->fully_implicit_function_template_p); in finish_fully_implicit_template()
44318 parser->fully_implicit_function_template_p = false; in finish_fully_implicit_template()
44319 parser->implicit_template_parms = 0; in finish_fully_implicit_template()
44320 parser->implicit_template_scope = 0; in finish_fully_implicit_template()
44321 --parser->num_template_parameter_lists; in finish_fully_implicit_template()
44332 abort_fully_implicit_template (cp_parser *parser) in abort_fully_implicit_template() argument
44336 if (parser->implicit_template_scope in abort_fully_implicit_template()
44337 && return_to_scope != parser->implicit_template_scope) in abort_fully_implicit_template()
44341 scope != parser->implicit_template_scope; in abort_fully_implicit_template()
44344 child->level_chain = parser->implicit_template_scope->level_chain; in abort_fully_implicit_template()
44345 parser->implicit_template_scope->level_chain = return_to_scope; in abort_fully_implicit_template()
44346 current_binding_level = parser->implicit_template_scope; in abort_fully_implicit_template()
44351 finish_fully_implicit_template (parser, NULL); in abort_fully_implicit_template()