blob: 68c41d8ff5b1652bdf2c2d4cf0517ebf0d5118b8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
2011-03-22 Le-Chun Wu <lcwu@google.com>
* Make-lang.in: Add new includes.
* call.c (build_new_op): Support for non-const non-modifying methods.
(find_const_memfunc_with_identical_prototype): New function.
(build_new_method_call): Suppress errors for calls in lock attributes.
Support for non-const non-modifying methods.
* class.c (cp_get_virtual_function_decl): New function.
(cp_fold_obj_type_ref): Refactored to call cp_get_virtual_function_decl.
(cp_decl_is_base_field): New function.
(cp_decl_is_constructor): Likewise.
(cp_decl_is_destructor): Likewise.
(cp_decl_is_const_member_func): Likewise.
* cp-lang.c: New language hooks.
* cp-tree.h: New function declarations.
* decl2.c (is_late_template_attribute): Handle delay parsing of lock
attribute arguments.
* error.c (dump_expr): Handle SSA_NAME.
* lex.c (unqualified_name_lookup_error): Suppress errors for lock
attributes.
* name-lookup.c (lookup_name_in_func_params): New function.
* name-lookup.h: New function declaration.
* parser.c (cp_parser): New fields.
(cp_parser_name_lookup_error): Suppress errors for lock attributes.
(cp_parser_new): Initialize unparsed_attribute_args_queue.
(cp_parser_postfix_expression): Add function parameter lookup support.
(cp_parser_parenthesized_expression_list): Fix a problem in parsing
identifier arguments and skip folding for decl arguments.
(cp_parser_lambda_declarator_opt): Add a new argument to
cp_parser_attributes_opt.
(cp_parser_label_for_labeled_statement): Likewise.
(cp_parser_condition): Likewise.
(cp_parser_decl_specifier_seq): Likewise.
(cp_parser_conversion_type_id): Likewise.
(cp_parser_elaborated_type_specifier): Likewise.
(cp_parser_enum_specifier): Likewise.
(cp_parser_namespace_definition): Likewise.
(cp_parser_using_directive): Likewise.
(cp_parser_init_declarator): Allow lock attributes on function
definitions. Support function parameter lookup. Also add a new
argument to cp_parser_attributes_opt.
(cp_parser_declarator): Add a new argument to calls to
cp_parser_attributes_opt.
(cp_parser_type_specifier_seq): Likewise.
(cp_parser_parameter_declaration): Likewise.
(cp_parser_class_specifier): Late-parse the lock attribute arguments.
Also add a new argument to cp_parser_attributes_opt.
(cp_parser_class_head): Add a new argument to cp_parser_attributes_opt.
(cp_parser_member_declaration): Likewise.
(cp_parser_asm_label_list): Likewise.
(cp_parser_attributes_opt): Add a new parameter 'member_p' and call
cp_parser_attribute_list with it.
(cp_parser_save_attribute_arg_list): New function.
(cp_parser_attribute_list): Add a new parameter 'member_p'. Also delay
parsing of lock attribute arguments by saving the tokens.
(cp_parser_late_parsing_attribute_arg_lists): New function.
(cp_parser_function_definition_from_specifiers_and_declarator): Parse
unbound lock attribute arguments.
(cp_parser_objc_method_keyword_params): Add a new argument to
cp_parser_attributes_opt.
(cp_parser_objc_method_tail_params_opt): Likewise.
(cp_parser_objc_method_maybe_bad_prefix_attributes): Likewise.
(cp_parser_objc_class_ivars): Likewise.
(cp_parser_objc_struct_declaration): Likewise.
(cp_parser_omp_for_loop): Likewise.
* pt.c (find_parameter_packs_r): Skip walking the subtrees if the tree
list node is created for delay parsing.
(apply_late_template_attributes): Defer instantiation of lock
attributes.
(pa_reverse): New function.
(instantiate_class_template): Instantiate the deferred lock attributes
and apply them to the corresponding declarations.
(tsubst_copy): Suppress errors for lock attributes.
(tsubst_copy_and_build): Support function parameter lookup.
* semantics.c (finish_non_static_data_member): Suppress errors for lock
attributes.
* typeck.c (finish_class_member_access_expr): Suppress errors for lock
attributes.
* typeck2.c (cxx_incomplete_type_diagnostic): Suppress errors for lock
attributes.
|