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