1 2024-02-10 Marek Polacek <polacek@redhat.com>
6 * parser.cc (cp_parser_unqualified_id): Downgrade the DR2237 error to
8 (cp_parser_constructor_declarator_p): Likewise.
10 2024-02-10 Jakub Jelinek <jakub@redhat.com>
12 * tree.cc (debug_binfo): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld"
14 * pt.cc (print_template_statistics): Use HOST_SIZE_T_PRINT_DEC
15 and casts to fmt_size_t instead of "%ld" and casts to long.
16 * class.cc (dump_class_hierarchy_1): Use HOST_WIDE_INT_PRINT_UNSIGNED
17 instead of "%lu" and casts to unsigned long. For TYPE_ALIGN, use
18 %u instead of %lu and drop casts to unsigned long.
19 * parser.cc (cp_lexer_peek_nth_token): Use HOST_SIZE_T_PRINT_DEC
20 and casts to fmt_size_t instead of "%ld" and casts to long.
22 2024-02-09 Marek Polacek <polacek@redhat.com>
25 * semantics.cc (finish_type_pack_element): Perform range checking
28 2024-02-09 Marek Polacek <polacek@redhat.com>
31 * coroutines.cc (coro_rewrite_function_body): Pass tf_warning_or_error
33 (morph_fn_to_coro): Likewise.
34 * cp-tree.h (build_throw): Adjust.
35 * except.cc (expand_end_catch_block): Pass tf_warning_or_error to
37 (build_throw): Add a tsubst_flags_t parameter. Use it. Remove
38 redundant variable. Guard an inform call.
39 * parser.cc (cp_parser_throw_expression): Pass tf_warning_or_error
41 * pt.cc (tsubst_expr) <case THROW_EXPR>: Pass complain to build_throw.
43 2024-02-09 Patrick Palka <ppalka@redhat.com>
46 * module.cc (trees_in::read_class_def): When streaming in
47 an anonymous union field of an as-base class, don't overwrite
50 2024-02-08 Patrick Palka <ppalka@redhat.com>
53 * pt.cc (do_class_deduction): Add outer_targs parameter.
54 Substitute outer arguments into the CTAD template.
55 (do_auto_deduction): Pass outer_targs to do_class_deduction.
57 2024-02-08 Jason Merrill <jason@redhat.com>
59 * pt.cc (create_template_parm_object): Pass TARGET_EXPR to
62 2024-02-06 Jakub Jelinek <jakub@redhat.com>
65 * parser.cc (CP_PARSER_FLAGS_PARAMETER): New enumerator.
66 (cp_parser_decl_specifier_seq): Parse RID_THIS only if
67 CP_PARSER_FLAGS_PARAMETER is set in flags.
68 (cp_parser_parameter_declaration): Or in CP_PARSER_FLAGS_PARAMETER
69 when calling cp_parser_decl_specifier_seq.
71 2024-02-06 Marek Polacek <polacek@redhat.com>
73 * method.cc (early_check_defaulted_comparison): Add
74 auto_diagnostic_group.
76 2024-02-06 Jason Merrill <jason@redhat.com>
79 * method.cc (early_check_defaulted_comparison): Fail if not friend.
81 2024-02-05 Jason Merrill <jason@redhat.com>
84 * tree.cc (rvalue): Don't drop cv-quals from an array.
86 2024-02-03 Patrick Palka <ppalka@redhat.com>
90 * constraint.cc (subst_info::quiet): Accomodate non-diagnostic
92 (tsubst_valid_expression_requirement): Likewise.
93 (tsubst_simple_requirement): Return a substituted _REQ node when
94 processing_template_decl.
95 (tsubst_type_requirement_1): Accomodate non-diagnostic tsubst
97 (tsubst_type_requirement): Return a substituted _REQ node when
98 processing_template_decl.
99 (tsubst_compound_requirement): Likewise. Accomodate non-diagnostic
101 (tsubst_nested_requirement): Likewise.
102 (tsubst_requires_expr): Don't defer partial substitution when
103 processing_constraint_expression_p is true, in which case return
104 a substituted REQUIRES_EXPR.
105 * pt.cc (tsubst_expr) <case REQUIRES_EXPR>: Accomodate
106 non-diagnostic tsubst flags.
108 2024-02-02 Jason Merrill <jason@redhat.com>
111 * pt.cc (tsubst_function_decl): Only check a function defaulted
112 outside the class if the class is complete.
114 2024-02-02 Jason Merrill <jason@redhat.com>
117 * constexpr.cc (cxx_eval_store_expression): Check empty_base
118 before marking a CONSTRUCTOR readonly.
120 2024-02-02 Jason Merrill <jason@redhat.com>
123 * cp-tree.h: Adjust comment.
124 * pt.cc (instantiate_template): Set VAR_HAD_UNKNOWN_BOUND for
127 2024-02-01 Marek Polacek <polacek@redhat.com>
129 * call.cc (reference_like_class_p): Consider even non-templates for
130 std::span-like classes.
132 2024-02-01 Patrick Palka <ppalka@redhat.com>
135 * pt.cc (iterative_hash_template_arg) <case TEMPLATE_DECL>:
136 Adjust hashing to match cp_tree_equal.
137 (ctp_hasher::hash): Also hash CLASS_PLACEHOLDER_TEMPLATE.
138 * tree.cc (cp_tree_equal) <case TEMPLATE_DECL>: Return true
139 for ttp TEMPLATE_DECLs if their TEMPLATE_TEMPLATE_PARMs are
141 * typeck.cc (structural_comptypes) <case TEMPLATE_TYPE_PARM>:
142 Use cp_tree_equal to compare CLASS_PLACEHOLDER_TEMPLATE.
144 2024-02-01 Marek Polacek <polacek@redhat.com>
147 * typeck.cc (treat_lvalue_as_rvalue_p): Bail out on sk_namespace in
148 the move on throw of parms loop.
150 2024-01-30 Marek Polacek <polacek@redhat.com>
154 * call.cc (reference_like_class_p): Don't warn for std::span-like
157 2024-01-30 Patrick Palka <ppalka@redhat.com>
160 * call.cc (keep_unused_object_arg): Punt for an xobj member
163 2024-01-30 Patrick Palka <ppalka@redhat.com>
166 * pt.cc (unify) <case INTEGER_CST>: Handle NULL_TREE type.
168 2024-01-30 Nathaniel Shead <nathanieloshead@gmail.com>
171 * module.cc (get_module): Bail on empty name.
173 2024-01-29 Jason Merrill <jason@redhat.com>
176 * pt.cc (instantiate_class_template): Don't partially instantiate.
177 (tsubst_stmt): Likewise.
179 2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com>
182 * module.cc (struct post_process_data): Create.
183 (trees_in::post_decls): Use.
184 (trees_in::post_process): Return entire vector at once.
185 Change overload to take post_process_data instead of tree.
186 (trees_out::write_function_def): Write needed flags from
187 DECL_STRUCT_FUNCTION.
188 (trees_in::read_function_def): Read them and pass to
190 (module_state::read_cluster): Write flags into cfun.
192 2024-01-26 Nathaniel Shead <nathanieloshead@gmail.com>
195 * cp-tree.h (note_variable_template_instantiation): Rename to...
196 (note_vague_linkage_variable): ...this.
197 * decl2.cc (note_variable_template_instantiation): Rename to...
198 (note_vague_linkage_variable): ...this.
199 * pt.cc (instantiate_decl): Rename usage of above function.
200 * module.cc (trees_in::read_var_def): Remember pending statics
203 2024-01-25 Jakub Jelinek <jakub@redhat.com>
206 * typeck2.cc (build_m_component_ref): Use convert instead of
207 cp_convert for pointer conversion.
209 2024-01-25 Jason Merrill <jason@redhat.com>
212 * init.cc (build_vec_init): Don't use {} for PMF.
214 2024-01-25 Jason Merrill <jason@redhat.com>
217 * coroutines.cc (build_co_await): Use cxx_maybe_build_cleanup.
218 (build_actor_fn, process_conditional, maybe_promote_temps)
219 (morph_fn_to_coro): Likewise.
220 (expand_one_await_expression): Use build_cleanup.
222 2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
225 * module.cc (set_defining_module): Track partial specialisations
226 for all declarations.
228 2024-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
231 * name-lookup.cc (add_imported_namespace): Don't mark namespaces
234 2024-01-24 Patrick Palka <ppalka@redhat.com>
237 * call.cc (add_operator_candidates): Propagate error_mark_node
238 result after recursing to find rewritten candidates.
240 2024-01-23 Marek Polacek <polacek@redhat.com>
245 * call.cc (do_warn_dangling_reference): Don't warn if the temporary
248 2024-01-23 Nathaniel Shead <nathanieloshead@gmail.com>
252 * module.cc (trees_out::lang_type_bools): Write interface_only
253 and interface_unknown.
254 (trees_in::lang_type_bools): Read the above flags.
255 (trees_in::decl_value): Reset CLASSTYPE_INTERFACE_* except for
257 (trees_in::read_class_def): Remove buggy extern template
260 2024-01-19 Jason Merrill <jason@redhat.com>
263 * pt.cc (decl_template_info): New fn.
264 (get_template_info): Use it.
266 2024-01-19 Jason Merrill <jason@redhat.com>
273 * cp-tree.h (IMPLICIT_CONV_EXPR_FORCED): New.
274 * pt.cc (expand_integer_pack): Remove 111357 workaround.
275 (maybe_convert_nontype_argument): Add force parm.
276 (convert_template_argument): Handle alias template args
278 (tsubst_expr): Don't ignore IMPLICIT_CONV_EXPR_NONTYPE_ARG.
279 * error.cc (dump_expr) [CASE_CONVERT]: Handle null optype.
281 2024-01-18 Marek Polacek <polacek@redhat.com>
284 * decl.cc (grokdeclarator) <case cdk_function>: Set TREE_PURPOSE to
285 NULL_TREE when emitting an error.
287 2024-01-17 Nathaniel Shead <nathanieloshead@gmail.com>
290 * module.cc (trees_in::read_function_def): Don't overwrite
293 2024-01-17 Patrick Palka <ppalka@redhat.com>
297 * pt.cc (invalid_tparm_referent_p) <case ADDR_EXPR>: Suppress
298 DECL_ARTIFICIAL rejection test for class NTTP objects.
300 2024-01-16 Nathaniel Shead <nathanieloshead@gmail.com>
303 * decl2.cc (get_tls_wrapper_fn): Set DECL_CONTEXT.
304 (c_parse_final_cleanups): Suppress warning for no definition of
305 TLS wrapper functions in header modules.
306 * module.cc (trees_out::lang_decl_vals): Write wrapped variable
307 for TLS wrapper functions.
308 (trees_in::lang_decl_vals): Read it.
309 (trees_out::decl_value): Write TLS model for thread-local vars.
310 (trees_in::decl_value): Read it for new decls. Remember to emit
311 definitions of TLS wrapper functions later.
313 2024-01-16 Nathaniel Shead <nathanieloshead@gmail.com>
315 * name-lookup.h (enum scope_kind): Add 'sk_count'.
316 * name-lookup.cc (cp_binding_level_descriptor): Add missing
317 scope kinds. Add assertion that the list is up to date. Fix
318 handling of explicit_spec_p.
320 2024-01-16 Marek Polacek <polacek@redhat.com>
322 * decl.cc (grokdeclarator) <case cdk_function>: Tweak diagnostic
325 2024-01-16 Marek Polacek <polacek@redhat.com>
328 * decl.cc (grokdeclarator) <case cdk_function>: Clear
329 is_xobj_member_function in case of an error.
331 2024-01-16 waffl3x <waffl3x@protonmail.com>
334 * parser.cc (cp_parser_parameter_declaration): Reject packs
337 2024-01-15 Marek Polacek <polacek@redhat.com>
340 * parser.cc (cp_parser_template_type_arg): Add auto checking.
342 2024-01-15 Patrick Palka <ppalka@redhat.com>
344 * parser.cc (cp_parser_check_access_in_redeclaration): Don't
345 check access for a partial or explicit specialization.
346 * pt.cc (maybe_new_partial_specialization): Don't set TREE_PRIVATE
347 or TREE_PROTECTED on the newly created partial specialization.
349 2024-01-15 Patrick Palka <ppalka@redhat.com>
352 * pt.cc (maybe_new_partial_specialization): Propagate TREE_PUBLIC
353 to the newly created partial specialization.
355 2024-01-15 Patrick Palka <ppalka@redhat.com>
358 * init.cc (build_vec_delete_1): Assume expr_noexcept_p returns
359 false in a template context.
361 2024-01-13 Jakub Jelinek <jakub@redhat.com>
363 * mangle.cc (write_nested_name): Mangle explicit object
364 member functions with H as per
365 https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal.
367 2024-01-12 Jason Merrill <jason@redhat.com>
370 * name-lookup.cc (lookup_elaborated_type): Look for bindings
371 in the global namespace in the ABI namespace.
373 2024-01-12 Jason Merrill <jason@redhat.com>
375 * call.cc (reversed_match): New.
376 (enum class pmatch): New enum.
377 (cand_parms_match): Add match_kind parm.
378 (object_parms_correspond): Add fn parms.
380 * class.cc (xobj_iobj_parameters_correspond): Rename to...
381 (iobj_parm_corresponds_to): ...this. Take the other
382 type instead of a second function.
383 (object_parms_correspond): Adjust.
384 * cp-tree.h (iobj_parm_corresponds_to): Declare.
386 2024-01-11 Jason Merrill <jason@redhat.com>
389 * class.cc (xobj_iobj_parameters_correspond): Add context parm.
390 (object_parms_correspond): Factor out of...
391 (add_method): ...here.
392 * method.cc (defaulted_late_check): Use it.
393 * call.cc (class_of_implicit_object): New.
394 (object_parms_correspond): Overload taking two candidates.
395 (cand_parms_match): Use it.
396 (joust): Check reversed before comparing constraints.
397 * cp-tree.h (object_parms_correspond): Declare.
399 2024-01-10 Tamar Christina <tamar.christina@arm.com>
401 * parser.cc (cp_parser_pragma): Initialize to false.
403 2024-01-09 Jason Merrill <jason@redhat.com>
405 * semantics.cc (is_object_parameter): New.
406 * cp-tree.h (is_object_parameter): Declare.
407 * call.cc (maybe_warn_class_memaccess): Use it.
408 * search.cc (field_access_p): Use it.
409 (class_of_object_parm): New.
410 (field_accessor_p): Adjust for explicit object parms.
412 2024-01-09 Jason Merrill <jason@redhat.com>
414 * call.cc (build_over_call): Refactor handle_arg lambda.
415 * class.cc (xobj_iobj_parameters_correspond): Fix FIXME.
416 * method.cc (defaulted_late_check): Adjust comments.
418 2024-01-09 waffl3x <waffl3x@protonmail.com>
422 C++23 P0847R7 (deducing this) - CWG2586.
423 * decl.cc (copy_fn_p): Accept xobj copy assignment functions.
424 (move_signature_fn_p): Accept xobj move assignment functions.
425 * method.cc (do_build_copy_assign): Handle defaulted xobj member
427 (defaulted_late_check): Comment.
428 (defaultable_fn_check): Comment.
430 2024-01-09 waffl3x <waffl3x@protonmail.com>
434 C++23 P0847R7 (deducing this) - xobj lambdas.
435 * lambda.cc (build_capture_proxy): Don't fold direct object types.
436 * parser.cc (cp_parser_lambda_declarator_opt): Handle xobj lambdas,
437 diagnostics. Comments also updated.
438 * pt.cc (tsubst_function_decl): Handle xobj lambdas. Check object
439 type of xobj lambda call operator, diagnose incorrect types.
440 (tsubst_lambda_expr): Update comment.
441 * semantics.cc (finish_decltype_type): Also consider by-value object
442 parameter qualifications.
444 2024-01-09 waffl3x <waffl3x@protonmail.com>
448 C++23 P0847R7 (deducing this) - diagnostics.
449 * class.cc (resolve_address_of_overloaded_function): Diagnostics.
450 * cp-tree.h (TFF_XOBJ_FUNC): Define.
451 * decl.cc (grokfndecl): Diagnostics.
452 (grokdeclarator): Diagnostics.
453 * error.cc (dump_aggr_type): Pass TFF_XOBJ_FUNC.
454 (dump_lambda_function): Formatting for xobj lambda.
455 (dump_function_decl): Pass TFF_XOBJ_FUNC.
456 (dump_parameters): Formatting for xobj member functions.
457 (function_category): Formatting for xobj member functions.
458 * parser.cc (cp_parser_decl_specifier_seq): Diagnostics.
459 (cp_parser_parameter_declaration): Diagnostics.
460 * search.cc (look_for_overrides_here): Make xobj member functions
462 (look_for_overrides_r): Reject an overriding xobj member function
464 * semantics.cc (finish_this_expr): Diagnostics.
465 * typeck.cc (cp_build_addr_expr_1): Diagnostics.
467 2024-01-09 waffl3x <waffl3x@protonmail.com>
471 C++23 P0847R7 (deducing this) - initial functionality.
472 * class.cc (xobj_iobj_parameters_correspond): New function, checks
473 for corresponding object parameters between xobj and iobj member
475 (add_method): Handle object parameters of xobj member functions, use
476 xobj_iobj_parameters_correspond.
477 * call.cc (build_over_call): Refactor, handle xobj member functions.
478 (cand_parms_match): Handle object parameters of xobj and iobj member
479 functions, use xobj_iobj_parameters_correspond.
480 * cp-tree.h (enum cp_decl_spec): Add ds_this, add comments.
481 * decl.cc (grokfndecl): Add xobj_func_p parameter. For xobj member
482 functions, Set xobj_flag, don't set static_function flag.
483 (grokdeclarator): Handle xobj member functions, tell grokfndecl.
484 (grok_op_properties): Don't error for xobj operators.
485 * parser.cc (cp_parser_decl_specifier_seq): Handle this specifier.
486 (cp_parser_parameter_declaration): Set default argument to
487 "this_identifier" for xobj parameters.
488 (set_and_check_decl_spec_loc): Add "this", add comments.
489 * tree.cc (build_min_non_dep_op_overload): Handle xobj operators.
490 * typeck.cc (cp_build_addr_expr_1): Handle address-of xobj member
493 2024-01-09 waffl3x <waffl3x@protonmail.com>
494 Jason Merrill <jason@redhat.com>
497 * cp-tree.h (struct lang_decl_fn): New data member.
498 (DECL_NONSTATIC_MEMBER_FUNCTION_P): Poison.
499 (DECL_IOBJ_MEMBER_FUNCTION_P): Define.
500 (DECL_FUNCTION_XOBJ_FLAG): Define.
501 (DECL_XOBJ_MEMBER_FUNCTION_P): Define.
502 (DECL_OBJECT_MEMBER_FUNCTION_P): Define.
503 (DECL_FUNCTION_MEMBER_P): Don't use
504 DECL_NONSTATIC_MEMBER_FUNCTION_P.
505 (DECL_CONST_MEMFUNC_P): Likewise.
506 (DECL_VOLATILE_MEMFUNC_P): Likewise.
507 (DECL_NONSTATIC_MEMBER_P): Likewise.
508 * module.cc (trees_out::lang_decl_bools): Handle xobj_flag.
509 (trees_in::lang_decl_bools): Handle xobj_flag.
510 * call.cc (build_this_conversion)
511 (add_function_candidate)
512 (add_template_candidate_real)
514 (maybe_warn_class_memaccess)
517 (do_warn_dangling_reference)
518 * class.cc (finalize_literal_type_property)
520 (resolve_address_of_overloaded_function)
521 * constexpr.cc (is_valid_constexpr_fn)
522 (cxx_bind_parameters_in_call)
523 * contracts.cc (build_contract_condition_function)
524 * cp-objcp-common.cc (cp_decl_dwarf_attribute)
525 * cxx-pretty-print.cc (cxx_pretty_printer::postfix_expression)
526 (cxx_pretty_printer::declaration_specifiers)
527 (cxx_pretty_printer::direct_declarator)
528 * decl.cc (cp_finish_decl)
529 (grok_special_member_properties)
530 (start_preparsed_function)
531 (record_key_method_defined)
532 * decl2.cc (cp_handle_deprecated_or_unavailable)
533 * init.cc (find_uninit_fields_r)
535 * lambda.cc (lambda_expr_this_capture)
536 (maybe_generic_this_capture)
537 (nonlambda_method_basetype)
538 * mangle.cc (write_nested_name)
539 * method.cc (early_check_defaulted_comparison)
540 (skip_artificial_parms_for)
541 (num_artificial_parms_for)
542 * pt.cc (is_specialization_of_friend)
543 (determine_specialization)
544 (copy_default_args_to_explicit_spec)
545 (check_explicit_specialization)
546 (tsubst_contract_attribute)
547 (check_non_deducible_conversions)
548 (more_specialized_fn)
549 (maybe_instantiate_noexcept)
550 (register_parameter_specializations)
551 (value_dependent_expression_p)
552 * search.cc (shared_member_p)
555 * semantics.cc (finish_omp_declare_simd_methods)
556 * tree.cc (lvalue_kind)
557 * typeck.cc (invalid_nonstatic_memfn_p): Don't use
558 DECL_NONSTATIC_MEMBER_FUNCTION_P.
560 2024-01-09 Julian Brown <julian@codesourcery.com>
562 * constexpr.cc (potential_consant_expression_1): Handle
564 * cp-tree.h (grok_omp_array_section, build_omp_array_section): Add
566 * decl2.cc (grok_omp_array_section): New function.
567 * error.cc (dump_expr): Handle OMP_ARRAY_SECTION.
568 * parser.cc (cp_parser_new): Initialize parser->omp_array_section_p.
569 (cp_parser_statement_expr): Disallow array sections.
570 (cp_parser_postfix_open_square_expression): Support OMP_ARRAY_SECTION
572 (cp_parser_parenthesized_expression_list, cp_parser_lambda_expression,
573 cp_parser_braced_list): Disallow array sections.
574 (cp_parser_omp_var_list_no_open): Remove ALLOW_DEREF parameter, add
575 MAP_LVALUE in its place. Support generalised lvalue parsing for
576 OpenMP map, to and from clauses. Use OMP_ARRAY_SECTION
577 code instead of TREE_LIST to represent OpenMP array sections.
578 (cp_parser_omp_var_list): Remove ALLOW_DEREF parameter, add MAP_LVALUE.
579 Pass to cp_parser_omp_var_list_no_open.
580 (cp_parser_oacc_data_clause): Update call to cp_parser_omp_var_list.
581 (cp_parser_omp_clause_map): Add sk_omp scope around
582 cp_parser_omp_var_list_no_open call.
583 * parser.h (cp_parser): Add omp_array_section_p field.
584 * pt.cc (tsubst, tsubst_copy, tsubst_omp_clause_decl,
585 tsubst_copy_and_build): Add OMP_ARRAY_SECTION support.
586 * semantics.cc (handle_omp_array_sections_1, handle_omp_array_sections,
587 cp_oacc_check_attachments, finish_omp_clauses): Use OMP_ARRAY_SECTION
588 instead of TREE_LIST where appropriate. Handle more types of map
590 * typeck.cc (build_omp_array_section): New function.
592 2024-01-07 Nathaniel Shead <nathanieloshead@gmail.com>
594 * module.cc (trees_out::write_var_def): Only write initializers
597 2024-01-07 Nathaniel Shead <nathanieloshead@gmail.com>
600 * module.cc (depset::hash::add_binding_entity): Don't skip names
601 in the GMF if they've been exported with a using declaration.
603 2024-01-07 Nathaniel Shead <nathanieloshead@gmail.com>
606 * parser.cc (cp_parser_module_name): Rewrite to handle
607 module-names and module-partitions independently.
608 (cp_parser_module_partition): New function.
609 (cp_parser_module_declaration): Parse module partitions
610 explicitly. Don't change state if parsing module decl failed.
611 (cp_parser_import_declaration): Handle different kinds of
612 import-declarations locally.
614 2024-01-03 Patrick Palka <ppalka@redhat.com>
617 * call.cc (reference_binding): Still try a conversion via a
618 temporary if a direct conversion was bad.
620 2024-01-03 Kwok Cheung Yeung <kcy@codesourcery.com>
622 * parser.cc (cp_parser_omp_clause_name): Move handling of indirect
623 clause to correspond to alphabetical order.
626 Copyright (C) 2024 Free Software Foundation, Inc.
628 Copying and distribution of this file, with or without modification,
629 are permitted in any medium without royalty provided the copyright
630 notice and this notice are preserved.