Daily bump.
[official-gcc.git] / gcc / cp / ChangeLog
blob67b07f14df4ec97c91b7d785b2db141dd2f4d292
1 2024-02-16  Marek Polacek  <polacek@redhat.com>
3         DR 1351
4         * search.cc (maybe_check_overriding_exception_spec): Don't error about
5         a looser exception specification if the overrider is deleted.
7 2024-02-16  Marek Polacek  <polacek@redhat.com>
9         PR c++/113789
10         PR c++/113853
11         * typeck.cc (treat_lvalue_as_rvalue_p): Update code to better
12         reflect [expr.prim.id.unqual]#4.2.
14 2024-02-16  Jakub Jelinek  <jakub@redhat.com>
16         PR c++/113929
17         * parser.cc (cp_parser_parameter_declaration): Diagnose this specifier
18         on template parameter declaration.
20 2024-02-16  Patrick Palka  <ppalka@redhat.com>
22         * module.cc (trees_out::core_bools): Stream TREE_UNAVAILABLE.
23         (trees_in::core_bools): Likewise.
24         (trees_out::core_vals): Stream LAMBDA_EXPR_REGEN_INFO.
25         (trees_in::core_vals): Likewise.
27 2024-02-14  Nathaniel Shead  <nathanieloshead@gmail.com>
29         PR c++/113708
30         * decl.cc (make_rtl_for_nonlocal_decl): Defer inline variables.
31         * decl2.cc (import_export_decl): Support inline variables.
33 2024-02-14  Patrick Palka  <ppalka@redhat.com>
35         PR c++/113908
36         PR c++/113332
37         * method.cc (synthesized_method_walk): Use maybe_push_to_top_level.
39 2024-02-14  Nathaniel Shead  <nathanieloshead@gmail.com>
41         PR c++/99573
42         * decl.cc (start_enum): Reorder check for redeclaring in module.
43         Add missing auto_diagnostic_groups.
45 2024-02-13  Marek Polacek  <polacek@redhat.com>
47         DR 1693
48         PR c++/113760
49         * parser.cc (cp_parser_member_declaration): Only pedwarn about an extra
50         semicolon in C++98.
52 2024-02-13  Tobias Burnus  <tburnus@baylibre.com>
54         PR middle-end/113904
55         * parser.cc (cp_parser_omp_context_selector): Handle splitting of
56         OMP_TRAIT_PROPERTY_EXPR into OMP_TRAIT_PROPERTY_{DEV_NUM,BOOL}_EXPR.
58 2024-02-13  Patrick Palka  <ppalka@redhat.com>
60         * Make-lang.in (CFLAGS-cp/module.o): Add $(ZLIBINC).
61         * module.cc: Include <zlib.h>.
62         (bytes::calc_crc): Use crc32 from zlib.
63         (bytes_out::set_crc): Use crc32_combine from zlib.
65 2024-02-13  Patrick Palka  <ppalka@redhat.com>
67         * module.cc (depset::hash::add_specializations): Use
68         STRIP_TEMPLATE consistently.
69         (get_originating_module_decl): Handle class-scope CONST_DECL.
71 2024-02-13  Patrick Palka  <ppalka@redhat.com>
73         * lambda.cc (lambda_function): Call get_class_binding_direct
74         instead of lookup_member to sidestep lazy loading.
75         * name-lookup.cc (check_local_shadow): Punt if we're in a
76         function context that's not actual parsing.
78 2024-02-13  Jason Merrill  <jason@redhat.com>
80         PR c++/113612
81         * pt.cc (process_partial_specialization): Return early
82         on redeclaration.
84 2024-02-13  Marek Polacek  <polacek@redhat.com>
86         PR c++/112436
87         * except.cc (expand_start_catch_block): Pass tf_warning_or_error to
88         is_admissible_throw_operand_or_catch_parameter.
89         (build_throw): Pass complain to
90         is_admissible_throw_operand_or_catch_parameter.
91         (complete_ptr_ref_or_void_ptr_p): Add a tsubst_flags_t parameter.  Use
92         it.  Return bool.  Call complete_type_or_maybe_complain instead of
93         complete_type_or_else.
94         (is_admissible_throw_operand_or_catch_parameter): Add a tsubst_flags_t
95         parameter.  Use it.  Guard error calls.
97 2024-02-13  Alex Coplan  <alex.coplan@arm.com>
99         PR c++/113658
100         * cp-objcp-common.cc (cp_feature_table): Remove entry for
101         cxx_constexpr_string_builtins.
103 2024-02-12  Marek Polacek  <polacek@redhat.com>
105         PR c++/113545
106         * constexpr.cc (cxx_eval_switch_expr): If the condition doesn't reduce
107         to an INTEGER_CST, consider it non-constant.
109 2024-02-10  Marek Polacek  <polacek@redhat.com>
111         DR 2237
112         PR c++/107126
113         PR c++/97202
114         * parser.cc (cp_parser_unqualified_id): Downgrade the DR2237 error to
115         a pedwarn.
116         (cp_parser_constructor_declarator_p): Likewise.
118 2024-02-10  Jakub Jelinek  <jakub@redhat.com>
120         * tree.cc (debug_binfo): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld"
121         and casts to long.
122         * pt.cc (print_template_statistics): Use HOST_SIZE_T_PRINT_DEC
123         and casts to fmt_size_t instead of "%ld" and casts to long.
124         * class.cc (dump_class_hierarchy_1): Use HOST_WIDE_INT_PRINT_UNSIGNED
125         instead of "%lu" and casts to unsigned long.  For TYPE_ALIGN, use
126         %u instead of %lu and drop casts to unsigned long.
127         * parser.cc (cp_lexer_peek_nth_token): Use HOST_SIZE_T_PRINT_DEC
128         and casts to fmt_size_t instead of "%ld" and casts to long.
130 2024-02-09  Marek Polacek  <polacek@redhat.com>
132         PR c++/113834
133         * semantics.cc (finish_type_pack_element): Perform range checking
134         before tree_to_shwi.
136 2024-02-09  Marek Polacek  <polacek@redhat.com>
138         PR c++/98388
139         * coroutines.cc (coro_rewrite_function_body): Pass tf_warning_or_error
140         to build_throw.
141         (morph_fn_to_coro): Likewise.
142         * cp-tree.h (build_throw): Adjust.
143         * except.cc (expand_end_catch_block): Pass tf_warning_or_error to
144         build_throw.
145         (build_throw): Add a tsubst_flags_t parameter.  Use it.  Remove
146         redundant variable.  Guard an inform call.
147         * parser.cc (cp_parser_throw_expression): Pass tf_warning_or_error
148         to build_throw.
149         * pt.cc (tsubst_expr) <case THROW_EXPR>: Pass complain to build_throw.
151 2024-02-09  Patrick Palka  <ppalka@redhat.com>
153         PR c++/112580
154         * module.cc (trees_in::read_class_def): When streaming in
155         an anonymous union field of an as-base class, don't overwrite
156         ANON_AGGR_TYPE_FIELD.
158 2024-02-08  Patrick Palka  <ppalka@redhat.com>
160         PR c++/113649
161         * pt.cc (do_class_deduction): Add outer_targs parameter.
162         Substitute outer arguments into the CTAD template.
163         (do_auto_deduction): Pass outer_targs to do_class_deduction.
165 2024-02-08  Jason Merrill  <jason@redhat.com>
167         * pt.cc (create_template_parm_object): Pass TARGET_EXPR to
168         cxx_constant_value.
170 2024-02-06  Jakub Jelinek  <jakub@redhat.com>
172         PR c++/113788
173         * parser.cc (CP_PARSER_FLAGS_PARAMETER): New enumerator.
174         (cp_parser_decl_specifier_seq): Parse RID_THIS only if
175         CP_PARSER_FLAGS_PARAMETER is set in flags.
176         (cp_parser_parameter_declaration): Or in CP_PARSER_FLAGS_PARAMETER
177         when calling cp_parser_decl_specifier_seq.
179 2024-02-06  Marek Polacek  <polacek@redhat.com>
181         * method.cc (early_check_defaulted_comparison): Add
182         auto_diagnostic_group.
184 2024-02-06  Jason Merrill  <jason@redhat.com>
186         PR c++/107291
187         * method.cc (early_check_defaulted_comparison): Fail if not friend.
189 2024-02-05  Jason Merrill  <jason@redhat.com>
191         PR c++/111286
192         * tree.cc (rvalue): Don't drop cv-quals from an array.
194 2024-02-03  Patrick Palka  <ppalka@redhat.com>
196         PR c++/110006
197         PR c++/112769
198         * constraint.cc (subst_info::quiet): Accomodate non-diagnostic
199         tsubst flags.
200         (tsubst_valid_expression_requirement): Likewise.
201         (tsubst_simple_requirement): Return a substituted _REQ node when
202         processing_template_decl.
203         (tsubst_type_requirement_1): Accomodate non-diagnostic tsubst
204         flags.
205         (tsubst_type_requirement): Return a substituted _REQ node when
206         processing_template_decl.
207         (tsubst_compound_requirement): Likewise.  Accomodate non-diagnostic
208         tsubst flags.
209         (tsubst_nested_requirement): Likewise.
210         (tsubst_requires_expr): Don't defer partial substitution when
211         processing_constraint_expression_p is true, in which case return
212         a substituted REQUIRES_EXPR.
213         * pt.cc (tsubst_expr) <case REQUIRES_EXPR>: Accomodate
214         non-diagnostic tsubst flags.
216 2024-02-02  Jason Merrill  <jason@redhat.com>
218         PR c++/110084
219         * pt.cc (tsubst_function_decl): Only check a function defaulted
220         outside the class if the class is complete.
222 2024-02-02  Jason Merrill  <jason@redhat.com>
224         PR c++/112439
225         * constexpr.cc (cxx_eval_store_expression): Check empty_base
226         before marking a CONSTRUCTOR readonly.
228 2024-02-02  Jason Merrill  <jason@redhat.com>
230         PR c++/113638
231         * cp-tree.h: Adjust comment.
232         * pt.cc (instantiate_template): Set VAR_HAD_UNKNOWN_BOUND for
233         variable template.
235 2024-02-01  Marek Polacek  <polacek@redhat.com>
237         * call.cc (reference_like_class_p): Consider even non-templates for
238         std::span-like classes.
240 2024-02-01  Patrick Palka  <ppalka@redhat.com>
242         PR c++/112737
243         * pt.cc (iterative_hash_template_arg) <case TEMPLATE_DECL>:
244         Adjust hashing to match cp_tree_equal.
245         (ctp_hasher::hash): Also hash CLASS_PLACEHOLDER_TEMPLATE.
246         * tree.cc (cp_tree_equal) <case TEMPLATE_DECL>: Return true
247         for ttp TEMPLATE_DECLs if their TEMPLATE_TEMPLATE_PARMs are
248         equivalent.
249         * typeck.cc (structural_comptypes) <case TEMPLATE_TYPE_PARM>:
250         Use cp_tree_equal to compare CLASS_PLACEHOLDER_TEMPLATE.
252 2024-02-01  Marek Polacek  <polacek@redhat.com>
254         PR c++/112437
255         * typeck.cc (treat_lvalue_as_rvalue_p): Bail out on sk_namespace in
256         the move on throw of parms loop.
258 2024-01-30  Marek Polacek  <polacek@redhat.com>
260         PR c++/110358
261         PR c++/109640
262         * call.cc (reference_like_class_p): Don't warn for std::span-like
263         classes.
265 2024-01-30  Patrick Palka  <ppalka@redhat.com>
267         PR c++/113640
268         * call.cc (keep_unused_object_arg): Punt for an xobj member
269         function.
271 2024-01-30  Patrick Palka  <ppalka@redhat.com>
273         PR c++/113644
274         * pt.cc (unify) <case INTEGER_CST>: Handle NULL_TREE type.
276 2024-01-30  Nathaniel Shead  <nathanieloshead@gmail.com>
278         PR c++/107594
279         * module.cc (get_module): Bail on empty name.
281 2024-01-29  Jason Merrill  <jason@redhat.com>
283         PR c++/113544
284         * pt.cc (instantiate_class_template): Don't partially instantiate.
285         (tsubst_stmt): Likewise.
287 2024-01-26  Nathaniel Shead  <nathanieloshead@gmail.com>
289         PR c++/113580
290         * module.cc (struct post_process_data): Create.
291         (trees_in::post_decls): Use.
292         (trees_in::post_process): Return entire vector at once.
293         Change overload to take post_process_data instead of tree.
294         (trees_out::write_function_def): Write needed flags from
295         DECL_STRUCT_FUNCTION.
296         (trees_in::read_function_def): Read them and pass to
297         post_process.
298         (module_state::read_cluster): Write flags into cfun.
300 2024-01-26  Nathaniel Shead  <nathanieloshead@gmail.com>
302         PR c++/112899
303         * cp-tree.h (note_variable_template_instantiation): Rename to...
304         (note_vague_linkage_variable): ...this.
305         * decl2.cc (note_variable_template_instantiation): Rename to...
306         (note_vague_linkage_variable): ...this.
307         * pt.cc (instantiate_decl): Rename usage of above function.
308         * module.cc (trees_in::read_var_def): Remember pending statics
309         that we stream in.
311 2024-01-25  Jakub Jelinek  <jakub@redhat.com>
313         PR c++/113599
314         * typeck2.cc (build_m_component_ref): Use convert instead of
315         cp_convert for pointer conversion.
317 2024-01-25  Jason Merrill  <jason@redhat.com>
319         PR c++/113598
320         * init.cc (build_vec_init): Don't use {} for PMF.
322 2024-01-25  Jason Merrill  <jason@redhat.com>
324         PR c++/109227
325         * coroutines.cc (build_co_await): Use cxx_maybe_build_cleanup.
326         (build_actor_fn, process_conditional, maybe_promote_temps)
327         (morph_fn_to_coro): Likewise.
328         (expand_one_await_expression): Use build_cleanup.
330 2024-01-25  Nathaniel Shead  <nathanieloshead@gmail.com>
332         PR c++/113405
333         * module.cc (set_defining_module): Track partial specialisations
334         for all declarations.
336 2024-01-25  Nathaniel Shead  <nathanieloshead@gmail.com>
338         PR c++/100707
339         * name-lookup.cc (add_imported_namespace): Don't mark namespaces
340         as imported.
342 2024-01-24  Patrick Palka  <ppalka@redhat.com>
344         PR c++/113529
345         * call.cc (add_operator_candidates): Propagate error_mark_node
346         result after recursing to find rewritten candidates.
348 2024-01-23  Marek Polacek  <polacek@redhat.com>
350         PR c++/113256
351         PR c++/111607
352         PR c++/109640
353         * call.cc (do_warn_dangling_reference): Don't warn if the temporary
354         is of lambda type.
356 2024-01-23  Nathaniel Shead  <nathanieloshead@gmail.com>
358         PR c++/112820
359         PR c++/102607
360         * module.cc (trees_out::lang_type_bools): Write interface_only
361         and interface_unknown.
362         (trees_in::lang_type_bools): Read the above flags.
363         (trees_in::decl_value): Reset CLASSTYPE_INTERFACE_* except for
364         extern templates.
365         (trees_in::read_class_def): Remove buggy extern template
366         handling.
368 2024-01-19  Jason Merrill  <jason@redhat.com>
370         PR c++/113498
371         * pt.cc (decl_template_info): New fn.
372         (get_template_info): Use it.
374 2024-01-19  Jason Merrill  <jason@redhat.com>
376         PR c++/112632
377         PR c++/112594
378         PR c++/111357
379         PR c++/104594
380         PR c++/67898
381         * cp-tree.h (IMPLICIT_CONV_EXPR_FORCED): New.
382         * pt.cc (expand_integer_pack): Remove 111357 workaround.
383         (maybe_convert_nontype_argument): Add force parm.
384         (convert_template_argument): Handle alias template args
385         specially.
386         (tsubst_expr): Don't ignore IMPLICIT_CONV_EXPR_NONTYPE_ARG.
387         * error.cc (dump_expr) [CASE_CONVERT]: Handle null optype.
389 2024-01-18  Marek Polacek  <polacek@redhat.com>
391         PR c++/113389
392         * decl.cc (grokdeclarator) <case cdk_function>: Set TREE_PURPOSE to
393         NULL_TREE when emitting an error.
395 2024-01-17  Nathaniel Shead  <nathanieloshead@gmail.com>
397         PR c++/112588
398         * module.cc (trees_in::read_function_def): Don't overwrite
399         arguments.
401 2024-01-17  Patrick Palka  <ppalka@redhat.com>
403         PR c++/113242
404         PR c++/99493
405         * pt.cc (invalid_tparm_referent_p) <case ADDR_EXPR>: Suppress
406         DECL_ARTIFICIAL rejection test for class NTTP objects.
408 2024-01-16  Nathaniel Shead  <nathanieloshead@gmail.com>
410         PR c++/113292
411         * decl2.cc (get_tls_wrapper_fn): Set DECL_CONTEXT.
412         (c_parse_final_cleanups): Suppress warning for no definition of
413         TLS wrapper functions in header modules.
414         * module.cc (trees_out::lang_decl_vals): Write wrapped variable
415         for TLS wrapper functions.
416         (trees_in::lang_decl_vals): Read it.
417         (trees_out::decl_value): Write TLS model for thread-local vars.
418         (trees_in::decl_value): Read it for new decls. Remember to emit
419         definitions of TLS wrapper functions later.
421 2024-01-16  Nathaniel Shead  <nathanieloshead@gmail.com>
423         * name-lookup.h (enum scope_kind): Add 'sk_count'.
424         * name-lookup.cc (cp_binding_level_descriptor): Add missing
425         scope kinds. Add assertion that the list is up to date. Fix
426         handling of explicit_spec_p.
428 2024-01-16  Marek Polacek  <polacek@redhat.com>
430         * decl.cc (grokdeclarator) <case cdk_function>: Tweak diagnostic
431         messages.
433 2024-01-16  Marek Polacek  <polacek@redhat.com>
435         PR c++/113340
436         * decl.cc (grokdeclarator) <case cdk_function>: Clear
437         is_xobj_member_function in case of an error.
439 2024-01-16  waffl3x  <waffl3x@protonmail.com>
441         PR c++/113307
442         * parser.cc (cp_parser_parameter_declaration): Reject packs
443         on xobj params.
445 2024-01-15  Marek Polacek  <polacek@redhat.com>
447         PR c++/110065
448         * parser.cc (cp_parser_template_type_arg): Add auto checking.
450 2024-01-15  Patrick Palka  <ppalka@redhat.com>
452         * parser.cc (cp_parser_check_access_in_redeclaration): Don't
453         check access for a partial or explicit specialization.
454         * pt.cc (maybe_new_partial_specialization): Don't set TREE_PRIVATE
455         or TREE_PROTECTED on the newly created partial specialization.
457 2024-01-15  Patrick Palka  <ppalka@redhat.com>
459         PR c++/104634
460         * pt.cc (maybe_new_partial_specialization): Propagate TREE_PUBLIC
461         to the newly created partial specialization.
463 2024-01-15  Patrick Palka  <ppalka@redhat.com>
465         PR c++/109899
466         * init.cc (build_vec_delete_1): Assume expr_noexcept_p returns
467         false in a template context.
469 2024-01-13  Jakub Jelinek  <jakub@redhat.com>
471         * mangle.cc (write_nested_name): Mangle explicit object
472         member functions with H as per
473         https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal.
475 2024-01-12  Jason Merrill  <jason@redhat.com>
477         PR c++/113038
478         * name-lookup.cc (lookup_elaborated_type): Look for bindings
479         in the global namespace in the ABI namespace.
481 2024-01-12  Jason Merrill  <jason@redhat.com>
483         * call.cc (reversed_match): New.
484         (enum class pmatch): New enum.
485         (cand_parms_match): Add match_kind parm.
486         (object_parms_correspond): Add fn parms.
487         (joust): Adjust.
488         * class.cc (xobj_iobj_parameters_correspond): Rename to...
489         (iobj_parm_corresponds_to): ...this.  Take the other
490         type instead of a second function.
491         (object_parms_correspond): Adjust.
492         * cp-tree.h (iobj_parm_corresponds_to): Declare.
494 2024-01-11  Jason Merrill  <jason@redhat.com>
496         PR c++/113191
497         * class.cc (xobj_iobj_parameters_correspond): Add context parm.
498         (object_parms_correspond): Factor out of...
499         (add_method): ...here.
500         * method.cc (defaulted_late_check): Use it.
501         * call.cc (class_of_implicit_object): New.
502         (object_parms_correspond): Overload taking two candidates.
503         (cand_parms_match): Use it.
504         (joust): Check reversed before comparing constraints.
505         * cp-tree.h (object_parms_correspond): Declare.
507 2024-01-10  Tamar Christina  <tamar.christina@arm.com>
509         * parser.cc (cp_parser_pragma): Initialize to false.
511 2024-01-09  Jason Merrill  <jason@redhat.com>
513         * semantics.cc (is_object_parameter): New.
514         * cp-tree.h (is_object_parameter): Declare.
515         * call.cc (maybe_warn_class_memaccess): Use it.
516         * search.cc (field_access_p): Use it.
517         (class_of_object_parm): New.
518         (field_accessor_p): Adjust for explicit object parms.
520 2024-01-09  Jason Merrill  <jason@redhat.com>
522         * call.cc (build_over_call): Refactor handle_arg lambda.
523         * class.cc (xobj_iobj_parameters_correspond): Fix FIXME.
524         * method.cc (defaulted_late_check): Adjust comments.
526 2024-01-09  waffl3x  <waffl3x@protonmail.com>
528         PR c++/102609
529         PR c++/102609
530         C++23 P0847R7 (deducing this) - CWG2586.
531         * decl.cc (copy_fn_p): Accept xobj copy assignment functions.
532         (move_signature_fn_p): Accept xobj move assignment functions.
533         * method.cc (do_build_copy_assign): Handle defaulted xobj member
534         functions.
535         (defaulted_late_check): Comment.
536         (defaultable_fn_check): Comment.
538 2024-01-09  waffl3x  <waffl3x@protonmail.com>
540         PR c++/102609
541         PR c++/102609
542         C++23 P0847R7 (deducing this) - xobj lambdas.
543         * lambda.cc (build_capture_proxy): Don't fold direct object types.
544         * parser.cc (cp_parser_lambda_declarator_opt): Handle xobj lambdas,
545         diagnostics.  Comments also updated.
546         * pt.cc (tsubst_function_decl): Handle xobj lambdas.  Check object
547         type of xobj lambda call operator, diagnose incorrect types.
548         (tsubst_lambda_expr): Update comment.
549         * semantics.cc (finish_decltype_type): Also consider by-value object
550         parameter qualifications.
552 2024-01-09  waffl3x  <waffl3x@protonmail.com>
554         PR c++/102609
555         PR c++/102609
556         C++23 P0847R7 (deducing this) - diagnostics.
557         * class.cc (resolve_address_of_overloaded_function): Diagnostics.
558         * cp-tree.h (TFF_XOBJ_FUNC): Define.
559         * decl.cc (grokfndecl): Diagnostics.
560         (grokdeclarator): Diagnostics.
561         * error.cc (dump_aggr_type): Pass TFF_XOBJ_FUNC.
562         (dump_lambda_function): Formatting for xobj lambda.
563         (dump_function_decl): Pass TFF_XOBJ_FUNC.
564         (dump_parameters): Formatting for xobj member functions.
565         (function_category): Formatting for xobj member functions.
566         * parser.cc (cp_parser_decl_specifier_seq): Diagnostics.
567         (cp_parser_parameter_declaration): Diagnostics.
568         * search.cc (look_for_overrides_here): Make xobj member functions
569         override.
570         (look_for_overrides_r): Reject an overriding xobj member function
571         and diagnose it.
572         * semantics.cc (finish_this_expr): Diagnostics.
573         * typeck.cc (cp_build_addr_expr_1): Diagnostics.
575 2024-01-09  waffl3x  <waffl3x@protonmail.com>
577         PR c++/102609
578         PR c++/102609
579         C++23 P0847R7 (deducing this) - initial functionality.
580         * class.cc (xobj_iobj_parameters_correspond): New function, checks
581         for corresponding object parameters between xobj and iobj member
582         functions.
583         (add_method): Handle object parameters of xobj member functions, use
584         xobj_iobj_parameters_correspond.
585         * call.cc (build_over_call): Refactor, handle xobj member functions.
586         (cand_parms_match): Handle object parameters of xobj and iobj member
587         functions, use xobj_iobj_parameters_correspond.
588         * cp-tree.h (enum cp_decl_spec): Add ds_this, add comments.
589         * decl.cc (grokfndecl): Add xobj_func_p parameter.  For xobj member
590         functions, Set xobj_flag, don't set static_function flag.
591         (grokdeclarator): Handle xobj member functions, tell grokfndecl.
592         (grok_op_properties): Don't error for xobj operators.
593         * parser.cc (cp_parser_decl_specifier_seq): Handle this specifier.
594         (cp_parser_parameter_declaration): Set default argument to
595         "this_identifier" for xobj parameters.
596         (set_and_check_decl_spec_loc): Add "this", add comments.
597         * tree.cc (build_min_non_dep_op_overload): Handle xobj operators.
598         * typeck.cc (cp_build_addr_expr_1): Handle address-of xobj member
599         functions.
601 2024-01-09  waffl3x  <waffl3x@protonmail.com>
602             Jason Merrill  <jason@redhat.com>
604         PR c++/102609
605         * cp-tree.h (struct lang_decl_fn): New data member.
606         (DECL_NONSTATIC_MEMBER_FUNCTION_P): Poison.
607         (DECL_IOBJ_MEMBER_FUNCTION_P): Define.
608         (DECL_FUNCTION_XOBJ_FLAG): Define.
609         (DECL_XOBJ_MEMBER_FUNCTION_P): Define.
610         (DECL_OBJECT_MEMBER_FUNCTION_P): Define.
611         (DECL_FUNCTION_MEMBER_P): Don't use
612         DECL_NONSTATIC_MEMBER_FUNCTION_P.
613         (DECL_CONST_MEMFUNC_P): Likewise.
614         (DECL_VOLATILE_MEMFUNC_P): Likewise.
615         (DECL_NONSTATIC_MEMBER_P): Likewise.
616         * module.cc (trees_out::lang_decl_bools): Handle xobj_flag.
617         (trees_in::lang_decl_bools): Handle xobj_flag.
618         * call.cc (build_this_conversion)
619         (add_function_candidate)
620         (add_template_candidate_real)
621         (add_candidates)
622         (maybe_warn_class_memaccess)
623         (cand_parms_match)
624         (joust)
625         (do_warn_dangling_reference)
626         * class.cc (finalize_literal_type_property)
627         (finish_struct)
628         (resolve_address_of_overloaded_function)
629         * constexpr.cc (is_valid_constexpr_fn)
630         (cxx_bind_parameters_in_call)
631         * contracts.cc (build_contract_condition_function)
632         * cp-objcp-common.cc (cp_decl_dwarf_attribute)
633         * cxx-pretty-print.cc (cxx_pretty_printer::postfix_expression)
634         (cxx_pretty_printer::declaration_specifiers)
635         (cxx_pretty_printer::direct_declarator)
636         * decl.cc (cp_finish_decl)
637         (grok_special_member_properties)
638         (start_preparsed_function)
639         (record_key_method_defined)
640         * decl2.cc (cp_handle_deprecated_or_unavailable)
641         * init.cc (find_uninit_fields_r)
642         (build_offset_ref)
643         * lambda.cc (lambda_expr_this_capture)
644         (maybe_generic_this_capture)
645         (nonlambda_method_basetype)
646         * mangle.cc (write_nested_name)
647         * method.cc (early_check_defaulted_comparison)
648         (skip_artificial_parms_for)
649         (num_artificial_parms_for)
650         * pt.cc (is_specialization_of_friend)
651         (determine_specialization)
652         (copy_default_args_to_explicit_spec)
653         (check_explicit_specialization)
654         (tsubst_contract_attribute)
655         (check_non_deducible_conversions)
656         (more_specialized_fn)
657         (maybe_instantiate_noexcept)
658         (register_parameter_specializations)
659         (value_dependent_expression_p)
660         * search.cc (shared_member_p)
661         (lookup_member)
662         (field_access_p)
663         * semantics.cc (finish_omp_declare_simd_methods)
664         * tree.cc (lvalue_kind)
665         * typeck.cc (invalid_nonstatic_memfn_p): Don't use
666         DECL_NONSTATIC_MEMBER_FUNCTION_P.
668 2024-01-09  Julian Brown  <julian@codesourcery.com>
670         * constexpr.cc (potential_consant_expression_1): Handle
671         OMP_ARRAY_SECTION.
672         * cp-tree.h (grok_omp_array_section, build_omp_array_section): Add
673         prototypes.
674         * decl2.cc (grok_omp_array_section): New function.
675         * error.cc (dump_expr): Handle OMP_ARRAY_SECTION.
676         * parser.cc (cp_parser_new): Initialize parser->omp_array_section_p.
677         (cp_parser_statement_expr): Disallow array sections.
678         (cp_parser_postfix_open_square_expression): Support OMP_ARRAY_SECTION
679         parsing.
680         (cp_parser_parenthesized_expression_list, cp_parser_lambda_expression,
681         cp_parser_braced_list): Disallow array sections.
682         (cp_parser_omp_var_list_no_open): Remove ALLOW_DEREF parameter, add
683         MAP_LVALUE in its place.  Support generalised lvalue parsing for
684         OpenMP map, to and from clauses.  Use OMP_ARRAY_SECTION
685         code instead of TREE_LIST to represent OpenMP array sections.
686         (cp_parser_omp_var_list): Remove ALLOW_DEREF parameter, add MAP_LVALUE.
687         Pass to cp_parser_omp_var_list_no_open.
688         (cp_parser_oacc_data_clause): Update call to cp_parser_omp_var_list.
689         (cp_parser_omp_clause_map): Add sk_omp scope around
690         cp_parser_omp_var_list_no_open call.
691         * parser.h (cp_parser): Add omp_array_section_p field.
692         * pt.cc (tsubst, tsubst_copy, tsubst_omp_clause_decl,
693         tsubst_copy_and_build): Add OMP_ARRAY_SECTION support.
694         * semantics.cc (handle_omp_array_sections_1, handle_omp_array_sections,
695         cp_oacc_check_attachments, finish_omp_clauses): Use OMP_ARRAY_SECTION
696         instead of TREE_LIST where appropriate.  Handle more types of map
697         expression.
698         * typeck.cc (build_omp_array_section): New function.
700 2024-01-07  Nathaniel Shead  <nathanieloshead@gmail.com>
702         * module.cc (trees_out::write_var_def): Only write initializers
703         in header modules.
705 2024-01-07  Nathaniel Shead  <nathanieloshead@gmail.com>
707         PR c++/109679
708         * module.cc (depset::hash::add_binding_entity): Don't skip names
709         in the GMF if they've been exported with a using declaration.
711 2024-01-07  Nathaniel Shead  <nathanieloshead@gmail.com>
713         PR c++/110808
714         * parser.cc (cp_parser_module_name): Rewrite to handle
715         module-names and module-partitions independently.
716         (cp_parser_module_partition): New function.
717         (cp_parser_module_declaration): Parse module partitions
718         explicitly. Don't change state if parsing module decl failed.
719         (cp_parser_import_declaration): Handle different kinds of
720         import-declarations locally.
722 2024-01-03  Patrick Palka  <ppalka@redhat.com>
724         PR c++/113064
725         * call.cc (reference_binding): Still try a conversion via a
726         temporary if a direct conversion was bad.
728 2024-01-03  Kwok Cheung Yeung  <kcy@codesourcery.com>
730         * parser.cc (cp_parser_omp_clause_name): Move handling of indirect
731         clause to correspond to alphabetical order.
734 Copyright (C) 2024 Free Software Foundation, Inc.
736 Copying and distribution of this file, with or without modification,
737 are permitted in any medium without royalty provided the copyright
738 notice and this notice are preserved.