Daily bump.
[official-gcc.git] / gcc / cp / ChangeLog
blob3db03dbed763cf3a310a0e97e2dc2fed19a22ecd
1 2023-07-10  Patrick Palka  <ppalka@redhat.com>
3         PR c++/110523
4         * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT
5         assert, and downgrade it to a checking assert.
7 2023-06-30  Patrick Palka  <ppalka@redhat.com>
9         * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden.
10         (TEMPLATE_TYPE_DESCENDANTS): Define.
11         (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define.
12         * pt.cc (reduce_template_parm_level): Revert
13         r14-418-g0bc2a1dc327af9 change.
14         (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P
15         appropriately.
16         (uses_outer_template_parms): Determine the outer depth of
17         a template template parm without relying on DECL_CONTEXT.
18         (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
19         simple template template parm.  Consistently use 'code'.
21 2023-06-29  Patrick Palka  <ppalka@redhat.com>
23         PR c++/110468
24         * init.cc (maybe_instantiate_nsdmi_init): Mask out all
25         tsubst flags except for tf_warning_or_error.
27 2023-06-29  Patrick Palka  <ppalka@redhat.com>
29         PR c++/110463
30         * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
31         CONSTRUCTOR_MUTABLE_POISON.
33 2023-06-29  Patrick Palka  <ppalka@redhat.com>
35         * cp-tree.h (tree_template_info::partial): New data member.
36         (TI_PARTIAL_INFO): New tree accessor.
37         (most_specialized_partial_spec): Add defaulted bool parameter.
38         * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream
39         TI_PARTIAL_INFO.
40         (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise.
41         * parser.cc (specialization_of): Adjust after making
42         most_specialized_partial_spec return TEMPLATE_INFO instead
43         of TREE_LIST.
44         * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO
45         of 'decl' to point back to the partial TEMPLATE_DECL.  Likewise
46         (and pass rechecking=true to most_specialization_partial_spec).
47         (instantiate_class_template): Likewise.
48         (instantiate_template): Set TI_PARTIAL_INFO to the result of
49         most_specialization_partial_spec after forming a variable
50         template specialization.
51         (most_specialized_partial_spec): Add 'rechecking' parameter.
52         Exit early if the template is not primary.  Use the TI_PARTIAL_INFO
53         of the corresponding TEMPLATE_INFO as a cache unless 'rechecking'
54         is true.  Don't bother setting TREE_TYPE of each TREE_LIST.
55         (instantiate_decl): Adjust after making
56         most_specialized_partial_spec return TEMPLATE_INFO instead of
57         TREE_LIST.
58         * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump
59         TI_PARTIAL_INFO.
61 2023-06-29  Eugene Rozenfeld  <erozen@microsoft.com>
63         * Make-lang.in: Pass correct stage cc1plus when processing
64         profile data collected while building target libraries
66 2023-06-28  Patrick Palka  <ppalka@redhat.com>
68         PR c++/89442
69         PR c++/107437
70         * cp-tree.h (lookup_template_variable): Add complain parameter.
71         * parser.cc (cp_parser_template_id): Pass tf_warning_or_error
72         to lookup_template_variable.
73         * pt.cc (lookup_template_variable): Add complain parameter.
74         Coerce template arguments here ...
75         (finish_template_variable): ... instead of here.
76         (lookup_and_finish_template_variable): Check for error_mark_node
77         result from lookup_template_variable.
78         (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to
79         lookup_template_variable.
80         (instantiate_template): Use build2 instead of
81         lookup_template_variable to build a TEMPLATE_ID_EXPR
82         for most_specialized_partial_spec.
84 2023-06-28  Marek Polacek  <polacek@redhat.com>
86         PR c++/110175
87         * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
89 2023-06-28  Jason Merrill  <jason@redhat.com>
91         PR c++/110334
92         * cp-tree.h (clone_attrs): Declare.
93         * method.cc (implicitly_declare_fn): Use it for inherited
94         constructor.
95         * optimize.cc (clone_attrs): New.
96         (maybe_clone_body): Use it.
98 2023-06-28  Jason Merrill  <jason@redhat.com>
100         PR c++/110344
101         * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast
102         from void* to the type of a pointed-to object.
104 2023-06-23  David Malcolm  <dmalcolm@redhat.com>
106         PR c++/110164
107         * cp-name-hint.h (maybe_suggest_missing_header): New decl.
108         * decl.cc: Define INCLUDE_MEMORY.  Add include of
109         "cp/cp-name-hint.h".
110         (start_decl_1): Call maybe_suggest_missing_header.
111         * name-lookup.cc (maybe_suggest_missing_header): Remove "static".
113 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
115         * parser.cc (cp_parser_enum_specifier): Don't reject
116         elaborated-type-specifier with enum-base, instead emit new
117         Welaborated-enum-base warning.
119 2023-06-14  Jason Merrill  <jason@redhat.com>
121         DR 2327
122         PR c++/86521
123         * call.cc (joust_maybe_elide_copy): Don't change cand.
124         (joust): Move the elided tiebreaker later.
126 2023-06-13  David Malcolm  <dmalcolm@redhat.com>
128         PR c/84890
129         * name-lookup.cc (missing_std_header::~missing_std_header): Reword
130         note to avoid negative tone of "forgetting".
132 2023-06-13  Jason Merrill  <jason@redhat.com>
134         * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
136 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
138         * parser.cc (cp_parser_omp_clause_map): Reword error message for
139         clearness especially with 'omp target (enter/exit) data.'
140         * semantics.cc (handle_omp_array_sections): Handle
141         GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values.
143 2023-06-12  Jason Merrill  <jason@redhat.com>
145         PR c++/105838
146         * call.cc (convert_like_internal) [ck_list]: Use
147         maybe_init_list_as_array.
148         * constexpr.cc (cxx_eval_vec_init_1): Init might have
149         a different type.
150         * tree.cc (build_vec_init_elt): Likewise.
151         * init.cc (build_vec_init): Handle from_array from a
152         TARGET_EXPR.  Retain TARGET_EXPR of a different type.
154 2023-06-11  Patrick Palka  <ppalka@redhat.com>
156         PR c++/110122
157         * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted
158         functions needed for constant evaluation.
159         (instantiate_cx_fn_r): Likewise.
161 2023-06-11  Patrick Palka  <ppalka@redhat.com>
163         PR c++/110122
164         * pt.cc (lookup_template_class): Extend shortcut for looking up the
165         current class scope to consider outer class scopes too, and use
166         current_nonlambda_class_type instead of current_class_type.  Only
167         call coerce_template_parms when specializing a primary template.
169 2023-06-10  Nathan Sidwell  <nathan@acm.org>
171         PR c++/61663
172         * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
174 2023-06-09  Jason Merrill  <jason@redhat.com>
176         PR c++/110185
177         PR c++/58487
178         * method.cc (build_comparison_op): Give retval a name.
179         * typeck.cc (check_return_expr): Fix for nameless variables.
181 2023-06-09  Jason Merrill  <jason@redhat.com>
183         * parser.cc (cp_parser_simple_type_specifier): Check for auto
184         in template argument.
185         (cp_parser_template_type_arg): Remove auto checking.
187 2023-06-09  Jason Merrill  <jason@redhat.com>
189         PR c++/110102
190         * call.cc (maybe_init_list_as_array): Check that the element type is
191         copyable.
193 2023-06-07  Jason Merrill  <jason@redhat.com>
195         PR c++/58487
196         PR c++/53637
197         * cp-tree.h (INIT_EXPR_NRV_P): New.
198         * semantics.cc (finalize_nrv_r): Check it.
199         * name-lookup.h (decl_in_scope_p): Declare.
200         * name-lookup.cc (decl_in_scope_p): New.
201         * typeck.cc (check_return_expr): Allow non-NRV
202         returns if the NRV is no longer in scope.
204 2023-06-07  Jason Merrill  <jason@redhat.com>
206         PR c++/58487
207         * typeck.cc (want_nrvo_p): New.
208         (check_return_expr): Handle -Wnrvo.
210 2023-06-07  Jason Merrill  <jason@redhat.com>
212         PR c++/51571
213         PR c++/92407
214         * decl.cc (finish_function): Simplify NRV handling.
215         * except.cc (maybe_set_retval_sentinel): Also set if NRV.
216         (maybe_splice_retval_cleanup): Don't add the cleanup region
217         if we don't need it.
218         * semantics.cc (nrv_data): Add simple field.
219         (finalize_nrv): Set it.
220         (finalize_nrv_r): Check it and retval sentinel.
221         * cp-tree.h (finalize_nrv): Adjust declaration.
222         * typeck.cc (check_return_expr): Remove named_labels check.
224 2023-06-07  Jason Merrill  <jason@redhat.com>
226         PR c++/92407
227         * typeck.cc (check_return_expr): Prevent NRV in the presence of
228         named labels.
230 2023-06-07  Jason Merrill  <jason@redhat.com>
232         PR c++/33799
233         * except.cc (maybe_splice_retval_cleanup): Change
234         recognition of function body and try scopes.
235         * semantics.cc (do_poplevel): Call it after poplevel.
236         (at_try_scope): New.
237         * cp-tree.h (maybe_splice_retval_cleanup): Adjust.
239 2023-06-07  Jason Merrill  <jason@redhat.com>
241         * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
242         INIT_EXPR.
244 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
245             Tobias Burnus  <tobias@codesourcery.com>
247         * parser.cc (cp_parser_omp_clause_defaultmap,
248         cp_parser_omp_clause_map): Parse 'present'.
249         (cp_parser_omp_clause_from_to): New; parse to/from
250         clauses with optional 'present' modifier.
251         (cp_parser_omp_all_clauses): Update call.
252         (cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
253         cp_parser_omp_target_exit_data): Handle new enum value for
254         'present' mapping.
255         * semantics.cc (finish_omp_target): Likewise.
257 2023-06-04  Jason Merrill  <jason@redhat.com>
259         PR c++/97720
260         * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN.
261         (call_terminate_fn): New macro.
262         * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it.
263         * except.cc (init_exception_processing): Set it.
264         (cp_protect_cleanup_actions): Return it.
266 2023-06-03  Patrick Palka  <ppalka@redhat.com>
268         PR c++/109923
269         * pt.cc (is_specialization_of_friend): Fix overbroad check for
270         a non-template member function of a class template.
272 2023-06-03  Patrick Palka  <ppalka@redhat.com>
274         * pt.cc (iterative_hash_template_arg): Don't hash
275         TEMPLATE_TEMPLATE_PARM specially.
277 2023-06-03  Patrick Palka  <ppalka@redhat.com>
279         * class.cc (build_base_path): Check in_template_context instead
280         of in_template_function.
281         (resolves_to_fixed_type_p): Likewise.
282         * cp-tree.h (in_template_context): Define.
283         (in_template_function): Remove.
284         * decl.cc (cp_make_fname_decl): Check current_function_decl
285         and in_template_context instead of in_template_function.
286         * decl2.cc (mark_used): Check in_template_context instead of
287         in_template_function.
288         * pt.cc (in_template_function): Remove.
289         * semantics.cc (enforce_access): Check in_template_context
290         instead of current_template_parms directly.
292 2023-06-03  Patrick Palka  <ppalka@redhat.com>
294         PR c++/70790
295         * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
297 2023-06-02  Jason Merrill  <jason@redhat.com>
299         DR 2735
300         PR c++/109247
301         * call.cc (sfk_copy_or_move): New.
302         (joust): Add tiebreaker for explicit conv and copy ctor.
304 2023-06-02  Jason Merrill  <jason@redhat.com>
306         PR c++/110070
307         PR c++/105838
308         * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE.
309         (convert_like_internal) [ck_list]: Set it.
310         (set_up_extended_ref_temp): Copy it.
311         * tree.cc (handle_no_unique_addr_attribute): Set it.
313 2023-06-01  Jason Merrill  <jason@redhat.com>
315         * typeck2.cc (check_narrowing): Check flag_permissive.
317 2023-05-30  Tobias Burnus  <tobias@codesourcery.com>
319         PR c/109999
320         * parser.cc (cp_parser_oacc_all_clauses,
321         cp_parser_omp_all_clauses): Improve error wording.
323 2023-05-19  Andrew Pinski  <apinski@marvell.com>
325         PR driver/33980
326         * lang-specs.h ("@c++-header"): Add %w after
327         the --output-pch.
328         ("@c++-system-header"): Likewise.
329         ("@c++-user-header"): Likewise.
331 2023-05-19  Patrick Palka  <ppalka@redhat.com>
333         * constraint.cc (normalize_concept_check): Avoid having to do
334         two norm_cache lookups.  Remove unnecessary early exit for an
335         ill-formed concept definition.
337 2023-05-19  Patrick Palka  <ppalka@redhat.com>
339         PR c++/97340
340         * pt.cc (lookup_and_finish_template_variable): Don't call
341         convert_from_reference.
342         (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
343         convert_from_reference on the result of
344         lookup_and_finish_template_variable.
346 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
348         * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h.
349         (build_conditional_expr): Ditto.
350         (convert_like_internal): Ditto.
351         (convert_arg_to_ellipsis): Ditto.
352         (build_over_call): Ditto.
353         (compare_ics): Ditto.
354         * class.cc (is_empty_base_ref): Ditto.
355         * coroutines.cc (rewrite_param_uses): Ditto.
356         * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto.
357         (ARITHMETIC_TYPE_P): Ditto.
358         * cvt.cc (ocp_convert): Ditto.
359         * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto.
360         * decl.cc (layout_var_decl): Ditto.
361         (get_tuple_size): Ditto.
362         * error.cc (dump_simple_decl): Ditto.
363         * lambda.cc (start_lambda_scope): Ditto.
364         * mangle.cc (write_template_arg): Ditto.
365         * method.cc (spaceship_comp_cat): Ditto.
366         * module.cc (node_template_info): Ditto.
367         (trees_out::start): Ditto.
368         (trees_out::decl_node): Ditto.
369         (trees_in::read_var_def): Ditto.
370         (set_instantiating_module): Ditto.
371         * name-lookup.cc (maybe_record_mergeable_decl): Ditto.
372         (consider_decl): Ditto.
373         (maybe_add_fuzzy_decl): Ditto.
374         * pt.cc (convert_nontype_argument): Ditto.
375         * semantics.cc (handle_omp_array_sections_1): Ditto.
376         (finish_omp_clauses): Ditto.
377         (finish_omp_target_clauses_r): Ditto.
378         (is_this_parameter): Ditto.
379         * tree.cc (build_cplus_array_type): Ditto.
380         (is_this_expression): Ditto.
381         * typeck.cc (do_warn_enum_conversions): Ditto.
382         * typeck2.cc (store_init_value): Ditto.
383         (check_narrowing): Ditto.
385 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
387         PR c++/109868
388         * init.cc (build_zero_init_1): Don't initialize zero-width bitfields.
389         For unions only initialize the first FIELD_DECL.
391 2023-05-16  Marek Polacek  <polacek@redhat.com>
393         PR c++/109774
394         * typeck.cc (check_return_expr): In a template, return only after
395         suppressing -Wdangling-reference.
397 2023-05-16  Patrick Palka  <ppalka@redhat.com>
399         PR c++/109871
400         * call.cc (add_list_candidates): Check for invalid designated
401         initialization sooner and even for types that have a list
402         constructor.
404 2023-05-11  Patrick Palka  <ppalka@redhat.com>
406         PR c++/109745
407         * typeck2.cc (poison_mutable_constructors): Define.
408         (store_init_value): Use it instead of setting
409         CONSTRUCTOR_MUTABLE_POISON directly.
411 2023-05-11  Patrick Palka  <ppalka@redhat.com>
412             Jonathan Wakely  <jwakely@redhat.com>
414         PR c++/83258
415         PR c++/80488
416         PR c++/97700
417         * pt.cc (convert_nontype_argument_function): Remove linkage
418         requirement for C++17 and later.
419         (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict
420         DECL_ARTIFICIAL rejection test to VAR_DECL.
422 2023-05-10  Marek Polacek  <polacek@redhat.com>
424         PR c++/109680
425         * method.cc (build_trait_object): New.
426         (assignable_expr): Use it.
427         (ref_xes_from_temporary): Likewise.
428         (is_convertible_helper): Likewise.  Check FUNC_OR_METHOD_TYPE_P.
430 2023-05-10  Jason Merrill  <jason@redhat.com>
432         * call.cc (convert_like_internal): Share ck_ref_bind handling
433         between all bad conversions.
435 2023-05-10  Jason Merrill  <jason@redhat.com>
437         DR 2543
438         * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve
439         TARGET_EXPR flags.
440         (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P.
441         * typeck2.cc (store_init_value): Diagnose constinit sooner.
443 2023-05-10  Jason Merrill  <jason@redhat.com>
445         * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
446         for address of immediate fn.
447         (maybe_constant_init_1): Evaluate PTRMEM_CST.
449 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
451         PR c++/109756
452         * parser.cc (cp_parser_std_attribute): For unknown attributes with
453         arguments set TREE_VALUE (attribute) to error_mark_node after skipping
454         the balanced tokens.
455         (cp_parser_std_attribute_list): If ... is used after attribute without
456         arguments, diagnose it and return error_mark_node.  If
457         TREE_VALUE (attribute) is error_mark_node, don't call
458         make_pack_expansion nor return early error_mark_node.
460 2023-05-09  Patrick Palka  <ppalka@redhat.com>
462         PR c++/109752
463         * constraint.cc (satisfaction_cache::satisfaction_cache): In the
464         unexpected case of evaluating an atom for the first time noisily,
465         remove the cache slot that we inserted.
467 2023-05-09  Patrick Palka  <ppalka@redhat.com>
469         PR c++/109761
470         * parser.cc (cp_parser_class_specifier): Don't pass a class
471         context to noexcept_override_late_checks.
472         (noexcept_override_late_checks): Remove 'type' parameter
473         and use DECL_CONTEXT of 'fndecl' instead.
475 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
477         PR c++/109756
478         * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
479         expansion of assume attribute.
481 2023-05-08  Patrick Palka  <ppalka@redhat.com>
483         PR c++/106214
484         PR c++/93107
485         * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context
486         calls to happen before do_class_deduction.  Add some
487         error_mark_node tests.
489 2023-05-07  Patrick Palka  <ppalka@redhat.com>
491         PR c++/85979
492         * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
493         <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
494         * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
496 2023-05-07  Patrick Palka  <ppalka@redhat.com>
498         DR 2256
499         PR c++/103091
500         * decl.cc (decl_jump_unsafe): Return bool instead of int.
501         Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
502         (check_previous_goto_1): Simplify now that decl_jump_unsafe
503         returns bool instead of int.
504         (check_goto): Likewise.
506 2023-05-07  Patrick Palka  <ppalka@redhat.com>
508         * pt.cc (instantiate_alias_template): Exit early upon
509         error from coerce_template_parms.  Remove dependence test
510         guarding constraints_satisfied_p.
512 2023-05-07  Patrick Palka  <ppalka@redhat.com>
514         * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via
515         TEMPLATE_TYPE_PARM_CHECK.
516         (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK.
517         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via
518         TEMPLATE_TEMPLATE_PARM_CHECK.
519         * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier):
520         Guard PLACEHOLDER_TYPE_CONSTRAINTS access.
521         * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate
522         variable to store CLASS_PLACEHOLDER_TEMPLATE result.
523         * pt.cc (outer_template_args): Use strip_innermost_template_args.
524         (any_type_dependent_arguments_p): Exit early if
525         !processing_template_decl.  Use range-based for.
526         (any_dependent_template_arguments_p): Likewise.
528 2023-05-07  Patrick Palka  <ppalka@redhat.com>
530         PR c++/98283
531         * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
532         REF_PARENTHESIZED_P more generally via force_paren_expr.
533         * semantics.cc (force_paren_expr): Document default argument.
535 2023-05-07  Patrick Palka  <ppalka@redhat.com>
537         PR c++/109651
538         * pt.cc (coerce_template_args_for_ttp): Mention we can hit the
539         current_template_parms fallback when level-lowering a bound ttp.
540         (tsubst_template_decl): Add lambda_tparms parameter.  Prefer to
541         use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS.
542         (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms
543         to tsubst_template_decl.
544         (tsubst_lambda_expr): For a generic lambda, substitute
545         DECL_TEMPLATE_PARMS and set current_template_parms to it
546         before substituting the function type.  Pass the substituted
547         DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl.
549 2023-05-07  Patrick Palka  <ppalka@redhat.com>
551         PR c++/109480
552         * semantics.cc (enforce_access): Check current_template_parms
553         instead of processing_template_decl when deciding whether to
554         defer the access check.
556 2023-05-07  Patrick Palka  <ppalka@redhat.com>
558         PR c++/109480
559         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
560         Reorganize to call get_fns sooner.  Remove special handling of
561         the object argument of a non-static member function call.  Remove
562         dead store to 'fun'.
564 2023-05-05  Jason Merrill  <jason@redhat.com>
566         Revert:
567         2023-04-27  Jason Merrill  <jason@redhat.com>
569         PR c++/61445
570         * pt.cc (instantiate_decl): Assert !defer_ok for local
571         class members.
573 2023-05-03  Jason Merrill  <jason@redhat.com>
575         PR c++/91618
576         PR c++/109649
577         * friend.cc (do_friend): Don't call check_explicit_specialization if
578         DECL_TEMPLATE_INFO is already set.
579         * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO.
580         * name-lookup.cc (set_decl_namespace): Likewise.
582 2023-05-03  Jakub Jelinek  <jakub@redhat.com>
584         * cp-gimplify.cc (cp_fold_data): Move definition earlier.
585         (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false
586         constructed data rather than &pset to cp_walk_tree with cp_fold_r.
588 2023-05-03  Jason Merrill  <jason@redhat.com>
590         * pt.cc (reduce_template_parm_level): Fix comparison of
591         template template parm to cached version.
593 2023-05-02  Jason Merrill  <jason@redhat.com>
595         * pt.cc (instantiate_class_template): Skip the RECORD_TYPE
596         of a class template.
597         (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE.
599 2023-05-02  Jason Merrill  <jason@redhat.com>
601         * name-lookup.cc (pop_from_top_level): Don't
602         invalidate_class_lookup_cache.
604 2023-05-02  Jason Merrill  <jason@redhat.com>
606         PR c++/109678
607         * cp-tree.h (lookup_base): Add offset parm.
608         * constexpr.cc (cxx_fold_indirect_ref_1): Pass it.
609         * search.cc (struct lookup_base_data_s): Add offset.
610         (dfs_lookup_base): Handle it.
611         (lookup_base): Pass it.
613 2023-05-02  Jason Merrill  <jason@redhat.com>
615         PR c++/109678
616         * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
618 2023-05-01  Jason Merrill  <jason@redhat.com>
620         PR c++/109666
621         * name-lookup.cc (maybe_push_to_top_level)
622         (maybe_pop_from_top_level): Split out...
623         * pt.cc (instantiate_body): ...from here.
624         * init.cc (maybe_instantiate_nsdmi_init): Use them.
625         * name-lookup.h: Declare them..
627 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
629         * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
631 2023-04-27  Jason Merrill  <jason@redhat.com>
633         * call.cc (print_conversion_rejection): Use iloc_sentinel.
635 2023-04-27  Jason Merrill  <jason@redhat.com>
637         PR c++/61445
638         * pt.cc (instantiate_decl): Assert !defer_ok for local
639         class members.
641 2023-04-26  Jason Merrill  <jason@redhat.com>
643         * init.cc (nsdmi_inst): Remove.
644         (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
646 2023-04-26  Jason Merrill  <jason@redhat.com>
648         PR c++/109241
649         * pt.cc (instantiate_class_template): Do partially instantiate.
650         (tsubst_expr): Do call complete_type for partial instantiations.
652 2023-04-26  Jason Merrill  <jason@redhat.com>
654         PR c++/69836
655         * pt.cc (regenerate_decl_from_template): Skip unique friends.
657 2023-04-26  Patrick Palka  <ppalka@redhat.com>
659         * pt.cc (most_specialized_partial_spec): Exit early when
660         DECL_TEMPLATE_SPECIALIZATIONS is empty.  Move local variable
661         declarations closer to their first use.  Remove redundant
662         flag_concepts test.  Remove redundant forward declaration.
664 2023-04-25  Patrick Palka  <ppalka@redhat.com>
666         PR c++/108975
667         * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
668         Suppress conservative early exit for reference variables
669         when DECL_HAS_VALUE_EXPR_P.
671 2023-04-25  Tobias Burnus  <tobias@codesourcery.com>
673         * parser.cc (cp_parser_omp_scan_loop_body): Handle
674         zero exec statements before/after 'omp scan'.
676 2023-04-24  Patrick Palka  <ppalka@redhat.com>
678         * cp-tree.h (cp_expr_location): Define here.
679         * tree.cc (cp_expr_location): Don't define here.
681 2023-04-21  Jason Merrill  <jason@redhat.com>
683         PR c++/108099
684         * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned
685         typedef' pedwarn.  Use c_common_signed_or_unsigned_type.  Also
686         handle 'signed typedef'.
688 2023-04-21  Patrick Palka  <ppalka@redhat.com>
690         * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
691         <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
692         <case ALIGNOF_EXPR etc>: Likewise.
694 2023-04-20  Patrick Palka  <ppalka@redhat.com>
696         * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: Don't recurse when
697         level lowering a cv-qualified type template parameter.  Remove
698         recursive loop breaker in the level lowering case for constrained
699         autos.  Use the TEMPLATE_PARM_DESCENDANTS cache in this case as
700         well.
702 2023-04-20  Patrick Palka  <ppalka@redhat.com>
704         * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC
705         of arguments into a TREE_LIST for sake of pretty printing.
706         * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC
707         instead of TREE_LIST of trailing variadic trait arguments.
708         * method.cc (constructible_expr): Likewise.
709         (is_xible_helper): Likewise.
710         * parser.cc (cp_parser_trait): Represent trailing variadic trait
711         arguments as a TREE_VEC instead of TREE_LIST.
712         * pt.cc (value_dependent_expression_p): Handle TREE_VEC
713         instead of TREE_LIST of trailing variadic trait arguments.
714         * semantics.cc (finish_type_pack_element): Likewise.
715         (check_trait_type): Likewise.
717 2023-04-20  Patrick Palka  <ppalka@redhat.com>
719         * tree.cc (strip_typedefs): Move TREE_LIST handling to
720         strip_typedefs_expr.  Dispatch to strip_typedefs_expr for
721         non-type 't'.
722         <case TYPENAME_TYPE>: Remove manual dispatching to
723         strip_typedefs_expr.
724         <case TRAIT_TYPE>: Likewise.
725         (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
726         with strip_typedefs throughout.  Don't dispatch to strip_typedefs
727         for type 't'.
728         <case TREE_LIST>: Replace this with the better version from
729         strip_typedefs.
731 2023-04-19  Patrick Palka  <ppalka@redhat.com>
732             Jonathan Wakely  <jwakely@redhat.com>
734         PR c++/100157
735         * cp-trait.def (TYPE_PACK_ELEMENT): Define.
736         * cp-tree.h (finish_trait_type): Add complain parameter.
737         * cxx-pretty-print.cc (pp_cxx_trait): Handle
738         CPTK_TYPE_PACK_ELEMENT.
739         * parser.cc (cp_parser_constant_expression): Document default
740         arguments.
741         (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT.  Pass
742         tf_warning_or_error to finish_trait_type.
743         * pt.cc (tsubst) <case TRAIT_TYPE>: Handle non-type first
744         argument.  Pass complain to finish_trait_type.
745         * semantics.cc (finish_type_pack_element): Define.
746         (finish_trait_type): Add complain parameter.  Handle
747         CPTK_TYPE_PACK_ELEMENT.
748         * tree.cc (strip_typedefs): Handle non-type first argument.
749         Pass tf_warning_or_error to finish_trait_type.
750         * typeck.cc (structural_comptypes) <case TRAIT_TYPE>: Use
751         cp_tree_equal instead of same_type_p for the first argument.
753 2023-04-19  Patrick Palka  <ppalka@redhat.com>
755         PR c++/109556
756         * pt.cc (try_class_unification): Don't ggc_free the copy of
757         'targs'.
759 2023-04-19  Jason Merrill  <jason@redhat.com>
761         PR c++/108099
762         * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
764 2023-04-17  Patrick Palka  <ppalka@redhat.com>
766         PR c++/109531
767         * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
768         In the level-lowering case just use lookup_template_class
769         to rebuild the bound ttp.
771 2023-04-15  Jason Merrill  <jason@redhat.com>
773         PR c++/109357
774         * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
775         Check for complex initializer.
777 2023-04-13  Patrick Palka  <ppalka@redhat.com>
779         PR c++/109420
780         * decl.cc (make_typename_type): Also ignore non-types during the
781         lookup if tag_type corresponds to an elaborated-type-specifier.
782         * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or
783         enum_type as tag_type to make_typename_type accordingly instead
784         of always passing typename_type.
786 2023-04-13  Jason Merrill  <jason@redhat.com>
788         PR c++/109277
789         * semantics.cc (check_trait_type): Handle incomplete type directly.
790         * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert.
792 2023-04-13  Jason Merrill  <jason@redhat.com>
794         * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
795         * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
797 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
799         * Make-lang.in (s-cp-module-version): New target.
800         (cp/module.o): Depend on it.
801         (MODULE_VERSION): Remove variable.
802         (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just
803         cat s-cp-module-version.
805 2023-04-09  Iain Sandoe  <iain@sandoe.co.uk>
807         * coroutines.cc (coro_rewrite_function_body): Ensure that added
808         bind expressions have scope blocks.
810 2023-04-04  Jason Merrill  <jason@redhat.com>
812         PR c++/107484
813         * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
815 2023-04-03  Patrick Palka  <ppalka@redhat.com>
817         PR c++/109300
818         * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
819         with no initializer, instead of asserting.
821 2023-04-01  Patrick Palka  <ppalka@redhat.com>
823         PR c++/109160
824         * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter.
825         * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to
826         do_auto_deduction.
827         (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
828         'in_decl' to coerce_template_parms.
829         (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE
830         as 'tmpl' to do_auto_deduction.
831         (do_auto_deduction): Document default arguments.  Rename local
832         variable 'tmpl' to 'ctmpl'.  Use 'tmpl' to obtain a full set of
833         template arguments for satisfaction in the adc_unify case.
835 2023-04-01  Patrick Palka  <ppalka@redhat.com>
837         PR c++/53164
838         PR c++/105848
839         * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of
840         FUNCTION_DECL.
841         (instantiate_class_template): Call mark_template_arguments_used.
842         (tsubst_copy_and_build) <case CALL_EXPR>: Revert r13-995 change.
843         (mark_template_arguments_used): Define.
844         (instantiate_body): Call mark_template_arguments_used.
846 2023-04-01  Iain Sandoe  <iain@sandoe.co.uk>
848         PR c++/101118
849         * coroutines.cc (flatten_await_stmt): Use the current count of
850         promoted temporaries to build a unique name for the frame entries.
852 2023-03-30  Jason Merrill  <jason@redhat.com>
854         PR c++/105452
855         * search.cc (type_context_for_name_lookup): New.
856         (accessible_p): Handle anonymous union.
857         * init.cc (maybe_instantiate_nsdmi_init): Use
858         type_context_for_name_lookup.
859         * parser.cc (cp_parser_class_specifier): Likewise.
860         * cp-tree.h (type_context_for_name_lookup): Declare.
862 2023-03-30  Jason Merrill  <jason@redhat.com>
864         PR c++/105221
865         * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
866         conversions.
868 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
870         PR c++/109319
871         * decl2.cc (grok_array_decl): After emitting a pedwarn for
872         -Wcomma-subscript, if processing_template_decl set orig_index_exp
873         to compound expr from orig_index_exp_list.
875 2023-03-30  Jason Merrill  <jason@redhat.com>
877         PR c++/107897
878         PR c++/108887
879         * decl2.cc (record_mangling): Use symtab_node::reset.
881 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
883         PR c++/109278
884         * call.cc (convert_like_internal): If pedwarn for extended float
885         type conversions doesn't report anything, avoid calling
886         maybe_inform_about_fndecl_for_bogus_argument_init.
888 2023-03-29  Jason Merrill  <jason@redhat.com>
890         PR c++/109321
891         PR c++/109320
892         * pt.cc (alias_ctad_tweaks): Rewrite deduced args.
893         (type_targs_deducible_from): Handle null pack deduction.
895 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
897         PR c/107002
898         * parser.cc (cp_parser_binary_expression): Update for new param of
899         check_for_xor_used_as_pow.
901 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
903         PR c++/109309
904         * contracts.cc: Include intl.h.
905         (check_postcondition_result): Don't form diagnostics from two halves
906         of an English message to allow translations.
908 2023-03-24  Patrick Palka  <ppalka@redhat.com>
910         PR c++/106969
911         * parser.cc (cp_parser_class_specifier): Clear current_class_ptr
912         and current_class_ref sooner, before parsing a class definition.
914 2023-03-24  Jason Merrill  <jason@redhat.com>
916         PR c++/105481
917         * pt.cc (type_unification_real): Adjust for partial ordering.
919 2023-03-23  Jason Merrill  <jason@redhat.com>
921         PR c++/105996
922         * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
923         and location wrappers.
925 2023-03-23  Marek Polacek  <polacek@redhat.com>
927         PR c++/107532
928         * call.cc (class_has_reference_member_p): New.
929         (class_has_reference_member_p_r): New.
930         (reference_like_class_p): Don't look for a specific constructor.
931         Use a DFS walk with class_has_reference_member_p_r.
933 2023-03-23  Jason Merrill  <jason@redhat.com>
935         PR c++/109241
936         * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
938 2023-03-22  Jason Merrill  <jason@redhat.com>
940         PR c++/108390
941         * pt.cc (unify): Use fold of build_nop instead of fold_convert.
943 2023-03-22  Jason Merrill  <jason@redhat.com>
945         PR c++/108795
946         * semantics.cc (finish_id_expression_1): Check scope before
947         returning id_expression.
949 2023-03-22  Alex Coplan  <alex.coplan@arm.com>
951         PR c++/109177
952         * call.cc (build_over_call): Use make_temp_override to suppress
953         both unavailable and deprecated warnings when calling
954         build_addr_func.
956 2023-03-21  Jason Merrill  <jason@redhat.com>
958         PR c++/106890
959         * init.cc (maybe_instantiate_nsdmi_init): Don't leave
960         current_function_decl set to a constructor.
962 2023-03-20  Marek Polacek  <polacek@redhat.com>
964         PR c++/109159
965         * call.cc (add_template_candidate_real): Add explicit decls to the
966         set of candidates when the initializer is a braced-init-list.
968 2023-03-20  Jakub Jelinek  <jakub@redhat.com>
970         PR c++/109164
971         * cp-tree.h (var_needs_tls_wrapper): Declare.
972         * decl2.cc (var_needs_tls_wrapper): No longer static.
973         * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables
974         for which a TLS wrapper will be needed.
976 2023-03-17  Jason Merrill  <jason@redhat.com>
978         PR c++/108975
979         * lambda.cc (prune_lambda_captures): Don't bother in a template.
981 2023-03-17  Jason Merrill  <jason@redhat.com>
983         PR c++/109172
984         * except.cc (build_throw): Check dtor access.
986 2023-03-17  Jason Merrill  <jason@redhat.com>
988         PR c++/69410
989         * friend.cc (do_friend): Handle namespace as scope argument.
990         * decl.cc (grokdeclarator): Pass down in_namespace.
992 2023-03-16  Jason Merrill  <jason@redhat.com>
994         PR c++/105809
995         * init.cc (get_nsdmi): Split out...
996         (maybe_instantiate_nsdmi_init): ...this function.
997         * cp-tree.h: Declare it.
998         * pt.cc (tsubst_expr): Use it.
1000 2023-03-16  Jason Merrill  <jason@redhat.com>
1002         PR c++/108242
1003         * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
1005 2023-03-16  Jason Merrill  <jason@redhat.com>
1007         PR c++/101869
1008         * semantics.cc (finish_qualified_id_expr): Don't try to build a
1009         pointer-to-member if the scope is an enumeration.
1011 2023-03-16  Patrick Palka  <ppalka@redhat.com>
1013         PR c++/109030
1014         * constexpr.cc (maybe_constant_init_1): For an unevaluated
1015         non-manifestly-constant operand, don't constant evaluate
1016         and instead call fold_to_constant as in maybe_constant_value.
1018 2023-03-16  Patrick Palka  <ppalka@redhat.com>
1020         PR c++/100288
1021         * constraint.cc (satisfaction_cache::get): Relax overly strict
1022         checking assert in the constraint recursion case.
1024 2023-03-16  Jason Merrill  <jason@redhat.com>
1026         PR c++/105406
1027         * coroutines.cc (build_co_await): Handle lvalue 'o'.
1029 2023-03-15  Jason Merrill  <jason@redhat.com>
1031         PR c++/103871
1032         PR c++/98056
1033         * typeck.cc (cp_build_modify_expr): Allow array initialization of
1034         DECL_ARTIFICIAL variable.
1036 2023-03-15  Marek Polacek  <polacek@redhat.com>
1038         PR c++/107280
1039         * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
1041 2023-03-15  Jason Merrill  <jason@redhat.com>
1043         PR c++/58538
1044         * semantics.cc (check_template_template_default_arg): Check
1045         maybe_get_template_decl_from_type_decl.
1047 2023-03-15  Jason Merrill  <jason@redhat.com>
1049         PR c++/108179
1050         PR c++/104107
1051         PR c++/95036
1052         * pt.cc (coerce_template_template_parms): Use args from
1053         DECL_CONTEXT (arg_tmpl) instead of outer_args.
1055 2023-03-15  Jason Merrill  <jason@redhat.com>
1057         PR c++/108179
1058         * pt.cc (coerce_template_template_parms): Take the arg and parm
1059         templates directly.
1060         (coerce_template_template_parm): Adjust.
1061         (template_template_parm_bindings_ok_p): Adjust.
1062         (convert_template_argument): Adjust.
1064 2023-03-14  Patrick Palka  <ppalka@redhat.com>
1066         PR c++/96830
1067         * pt.cc (push_inline_template_parms_recursive): Set
1068         TEMPLATE_PARMS_CONSTRAINTS.
1069         (push_template_decl): For an out-of-line declaration, verify
1070         constraints for each enclosing template scope match those of the
1071         original template declaratation.
1073 2023-03-14  Patrick Palka  <ppalka@redhat.com>
1075         PR c++/96830
1076         * pt.cc (redeclare_class_template): Add missing "of" in
1077         constraint mismatch diagnostic.
1078         (tsubst_friend_class): For an already declared class template,
1079         substitute and pass the friend declaration's constraints to
1080         redeclare_class_template instead of passing the existing
1081         template's constraints.
1083 2023-03-14  Jason Merrill  <jason@redhat.com>
1085         PR c++/108468
1086         * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
1087         is non-null.
1089 2023-03-14  Jason Merrill  <jason@redhat.com>
1091         PR c++/107310
1092         * cp-gimplify.cc (genericize_if_stmt): Restore folding
1093         of constant conditions.
1095 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
1097         PR c++/109096
1098         * tree.cc (record_has_unique_obj_representations): Ignore unnamed
1099         bitfields.
1101 2023-03-13  Jason Merrill  <jason@redhat.com>
1103         PR c++/107128
1104         * parser.cc (cp_parser_set_decl_spec_type): Use
1105         redefined_builtin_type for extended_float_type_p.
1107 2023-03-13  Marek Polacek  <polacek@redhat.com>
1109         PR c++/107532
1110         * call.cc (reference_like_class_p): Check for std::span.
1112 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1114         PR c++/107558
1115         * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on
1116         automatic non-aggregate variables just because of
1117         -fmerge-all-constants.
1119 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1121         PR c++/109039
1122         * class.cc (end_of_class): For bit-fields, instead of computing
1123         offset as sum of byte_position (field) and DECL_SIZE_UNIT (field),
1124         compute it as sum of bit_position (field) and DECL_SIZE (field)
1125         divided by BITS_PER_UNIT rounded up.
1127 2023-03-10  Jason Merrill  <jason@redhat.com>
1129         PR c++/108972
1130         * lambda.cc (compare_lambda_template_head): Check more
1131         for error_mark_node.
1133 2023-03-10  Jason Merrill  <jason@redhat.com>
1135         PR c++/108566
1136         * mangle.cc (anon_aggr_naming_decl): New.
1137         (write_unqualified_name): Use it.
1139 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1141         PR c/108079
1142         * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
1143         after diagnosing it.
1145 2023-03-10  Jason Merrill  <jason@redhat.com>
1147         PR c++/108099
1148         * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
1150 2023-03-10  Jason Merrill  <jason@redhat.com>
1152         PR c++/108542
1153         * class.cc (instantiate_type): Strip location wrapper.
1155 2023-03-09  Jason Merrill  <jason@redhat.com>
1157         PR c++/108773
1158         * init.cc (find_allocator_temps_r): New.
1159         (combine_allocator_temps): Replace find_allocator_temp.
1160         (build_vec_init): Adjust.
1162 2023-03-09  Jason Merrill  <jason@redhat.com>
1164         DR 2664
1165         PR c++/102529
1166         * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
1168 2023-03-09  Jason Merrill  <jason@redhat.com>
1169             Michael Spertus  <mike@spertus.com>
1171         PR c++/105841
1172         * pt.cc (corresponding_template_parameter_list): Split out...
1173         (corresponding_template_parameter): ...from here.
1174         (find_template_parameters): Factor out...
1175         (find_template_parameter_info::find_in): ...this function.
1176         (find_template_parameter_info::find_in_recursive): New.
1177         (find_template_parameter_info::found): New.
1178         (alias_ctad_tweaks): Only add parms used in the deduced args.
1180 2023-03-09  Jason Merrill  <jason@redhat.com>
1182         * cp-trait.def (IS_DEDUCIBLE): Add space to name.
1184 2023-03-09  Jason Merrill  <jason@redhat.com>
1186         PR c++/105841
1187         * cp-trait.def (IS_DEDUCIBLE): New.
1188         * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type.
1189         * parser.cc (cp_parser_trait): Likewise.
1190         * tree.cc (cp_tree_equal): Likewise.
1191         * pt.cc (tsubst_copy_and_build): Likewise.
1192         (type_targs_deducible_from): New.
1193         (alias_ctad_tweaks): Use it.
1194         * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE.
1195         (finish_trait_expr): Likewise.
1196         * constraint.cc (diagnose_trait_expr): Likewise.
1197         * cp-tree.h (type_targs_deducible_from): Declare.
1199 2023-03-07  Jason Merrill  <jason@redhat.com>
1201         PR c++/108526
1202         PR c++/106651
1203         * pt.cc (tsubst_function_decl): Don't replace the closure
1204         parameter if DECL_STATIC_FUNCTION_P.
1206 2023-03-07  Marek Polacek  <polacek@redhat.com>
1208         PR c++/107532
1209         * call.cc (reference_like_class_p): New.
1210         (do_warn_dangling_reference): Add new bool parameter.  See through
1211         reference_like_class_p.
1213 2023-03-07  Jakub Jelinek  <jakub@redhat.com>
1215         PR c++/109042
1216         * rtti.cc (emit_support_tinfo_1): Don't assert that last
1217         unemitted_tinfo_decls element is tinfo, instead pop from it only in
1218         that case.
1219         * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl
1220         for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL.
1222 2023-03-07  Marek Polacek  <polacek@redhat.com>
1224         PR c++/109030
1225         * constexpr.cc (cxx_eval_call_expression): Relax assert.
1227 2023-03-07  Marek Polacek  <polacek@redhat.com>
1229         PR c++/107939
1230         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
1231         'any' when recursing on a VAR_DECL and not a pointer to function.
1233 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
1235         PR c++/108702
1236         * constexpr.cc: Include toplev.h.
1237         (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a local
1238         static initialized by constant expression outside of a constexpr
1239         function which has been deferred by make_rtl_for_nonlocal_decl,
1240         call rest_of_decl_compilation on it.
1242 2023-03-03  Patrick Palka  <ppalka@redhat.com>
1244         PR c++/108998
1245         * pt.cc (el_data::skipped_trees): New data member.
1246         (extract_locals_r): Push to skipped_trees any unevaluated
1247         contexts that we skipped over.
1248         (extract_local_specs): For the second walk, start from each
1249         tree in skipped_trees.
1251 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
1253         * typeck.cc (cp_build_binary_op): Suppress redundant warning
1254         for pfn null test in pmfn test with vbit-in-delta.
1256 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
1258         PR target/108883
1259         * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE
1260         enumerators.
1261         (fallback_dfloat32_type, fallback_dfloat64_type,
1262         fallback_dfloat128_type): Remove.
1263         * rtti.cc (emit_support_tinfo_1): If not emitted already, call
1264         emit_tinfo_decl and remove from unemitted_tinfo_decls right away.
1265         (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array
1266         into new fundamentals_with_fallback array.  Call emit_support_tinfo_1
1267         on elements of that array too, with the difference that if
1268         the type is NULL, use a fallback REAL_TYPE for it temporarily.
1269         Drop the !targetm.decimal_float_supported_p () handling.  Call
1270         targetm.emit_support_tinfos at the end.
1271         * mangle.cc (write_builtin_type): Remove references to
1272         fallback_dfloat*_type.  Handle bfloat16_type_node mangling.
1274 2023-03-02  Patrick Palka  <ppalka@redhat.com>
1276         PR c++/108243
1277         PR c++/97553
1278         * cp-gimplify.cc (cp_fully_fold): Add an internal overload that
1279         additionally takes and propagate an mce_value parameter, and
1280         define the existing public overload in terms of it.
1281         (cp_fully_fold_init): Pass mce_false to cp_fully_fold.
1283 2023-03-02  Patrick Palka  <ppalka@redhat.com>
1285         PR c++/108243
1286         * constexpr.cc (maybe_constant_init_1): Override
1287         manifestly_const_eval to true if is_static.
1289 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
1291         PR debug/108716
1292         * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
1293         DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
1294         of USING_STMT or input_location.
1296 2023-03-02  Marek Polacek  <polacek@redhat.com>
1298         PR c++/106259
1299         * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first
1300         lookup of SPEC didn't find anything, try to look for
1301         most_general_template.
1303 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
1305         PR c++/105839
1306         * parser.cc (cp_convert_omp_range_for): Allow in assert
1307         decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has
1308         error_mark_node type.
1309         (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back
1310         on decls which have error_mark_node type.
1312 2023-03-01  Marek Polacek  <polacek@redhat.com>
1314         PR c++/107574
1315         * constexpr.cc (cxx_eval_constant_expression): Emit an error when
1316         a PTRMEM_CST cannot be evaluated.
1318 2023-03-01  Patrick Palka  <ppalka@redhat.com>
1320         * pt.cc (tsubst_scope): Define.
1321         (tsubst_decl) <case USING_DECL>: Call tsubst_scope instead of
1322         calling tsubst_scope with tf_qualifying_scope set.
1323         (tsubst_qualified_id): Call tsubst_scope instead of
1324         calling tsubst with tf_qualifying_scope set.
1325         (tsubst_copy): Immediately delegate to tsubst for all TYPE_P
1326         trees.  Remove tf_qualifying_scope manipulation.
1327         <case SCOPE_REF>: Call tsubst_scope instead of calling
1328         tsubst with tf_qualifying_scope set.
1330 2023-03-01  Patrick Palka  <ppalka@redhat.com>
1331             Jason Merrill  <jason@redhat.com>
1333         PR c++/108219
1334         PR c++/108218
1335         * constexpr.cc (fold_to_constant): Define.
1336         (maybe_constant_value): Move up early exit test for unevaluated
1337         operands.  Try reducing an unevaluated operand to a constant via
1338         fold_to_constant.
1339         (fold_non_dependent_expr_template): Add early exit test for
1340         CONSTANT_CLASS_P nodes.  Try reducing an unevaluated operand
1341         to a constant via fold_to_constant.
1342         * cp-tree.h (fold_to_constant): Declare.
1344 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
1346         PR c++/108606
1347         * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
1348         Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
1349         just return true.
1351 2023-02-28  Patrick Palka  <ppalka@redhat.com>
1353         PR c++/108848
1354         * pt.cc (finish_template_variable): Move dependence check
1355         to here from ...
1356         (lookup_and_finish_template_variable): ... here.
1357         * semantics.cc (finish_id_expression_1): Call
1358         finish_template_variable sooner, before (and regardless of) the
1359         type_dependent_expression_p test.
1361 2023-02-28  Marek Polacek  <polacek@redhat.com>
1363         PR c++/108550
1364         * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
1366 2023-02-20  Marek Polacek  <polacek@redhat.com>
1368         PR c++/101073
1369         * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
1370         constructor/op= with a checking assert.
1372 2023-02-20  Marek Polacek  <polacek@redhat.com>
1374         PR c++/108829
1375         * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P.
1376         (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to
1377         prepend_one_capture.
1379 2023-02-18  Jason Merrill  <jason@redhat.com>
1381         DR 2518
1382         PR c++/52809
1383         PR c++/53638
1384         PR c++/87389
1385         PR c++/89741
1386         PR c++/92099
1387         PR c++/104041
1388         PR c++/104691
1389         * semantics.cc (finish_static_assert): Don't diagnose in
1390         template context.
1392 2023-02-17  Patrick Palka  <ppalka@redhat.com>
1394         PR c++/108243
1395         PR c++/97553
1396         * cp-gimplify.cc (enum fold_flags): Define.
1397         (fold_flags_t): Declare.
1398         (cp_fold_data::genericize): Replace this data member with ...
1399         (cp_fold_data::fold_flags): ... this.
1400         (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold.
1401         (cp_fold_function): Likewise.
1402         (cp_fold_maybe_rvalue): Add an internal overload that
1403         additionally takes and propagates a fold_flags_t parameter, and
1404         define the existing public overload in terms of it.
1405         (cp_fold_rvalue): Likewise.
1406         (cp_fully_fold_init): Adjust use of cp_fold_data.
1407         (fold_cache): Replace with ...
1408         (fold_caches): ... this 2-element array of caches.
1409         (get_fold_cache): Define.
1410         (clear_fold_cache): Adjust.
1411         (cp_fold): Add fold_flags_t parameter.  Use get_fold_cache.
1412         Pass flags to calls to cp_fold, cp_fold_rvalue and
1413         cp_fold_maybe_rvalue.
1414         <case CALL_EXPR>: If ff_mce_false is set, fold
1415         __builtin_is_constant_evaluated to false and pass mce_false to
1416         maybe_constant_value.
1418 2023-02-17  Patrick Palka  <ppalka@redhat.com>
1420         * constexpr.cc (constexpr_call::manifestly_const_eval): Give
1421         it type int instead of bool.
1422         (constexpr_ctx::manifestly_const_eval): Give it type mce_value
1423         instead of bool.
1424         (cxx_eval_builtin_function_call): Adjust after making
1425         manifestly_const_eval tri-state.
1426         (cxx_eval_call_expression): Likewise.
1427         (cxx_eval_binary_expression): Likewise.
1428         (cxx_eval_conditional_expression): Likewise.
1429         (cxx_eval_constant_expression): Likewise.
1430         (cxx_eval_outermost_constant_expr): Likewise.
1431         (cxx_constant_value): Likewise.
1432         (cxx_constant_dtor): Likewise.
1433         (maybe_constant_value): Give manifestly_const_eval parameter
1434         type mce_value instead of bool and adjust accordingly.
1435         (fold_non_dependent_expr_template): Adjust call
1436         to cxx_eval_outermost_constant_expr.
1437         (fold_non_dependent_expr): Likewise.
1438         (maybe_constant_init_1): Likewise.
1439         * constraint.cc (satisfy_atom): Adjust call to
1440         maybe_constant_value.
1441         * cp-tree.h (enum class mce_value): Define.
1442         (maybe_constant_value): Adjust manifestly_const_eval parameter
1443         type and default argument.
1444         * decl.cc (compute_array_index_type_loc): Adjust call to
1445         maybe_constant_value.
1446         * pt.cc (convert_nontype_argument): Likewise.
1448 2023-02-16  Patrick Palka  <ppalka@redhat.com>
1450         PR c++/107773
1451         * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope.
1452         * decl.cc (make_typename_type): Use lookup_member instead of
1453         lookup_field.  If tf_qualifying_scope is set, pass want_type=true
1454         instead of =false to lookup_member.  Generalize format specifier
1455         in diagnostic to handle both type and non-type bindings.
1456         * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope.  Tidy
1457         the function.
1458         (tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when
1459         substituting USING_DECL_SCOPE.
1460         (tsubst): Clear tf_qualifying_scope right away and remember if
1461         it was set.  Do the same for tf_tst_ok sooner.
1462         <case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting
1463         TYPE_CONTEXT.  Pass tf_qualifying_scope to make_typename_type
1464         if it was set.
1465         (tsubst_qualified_id): Set tf_qualifying_scope when substituting
1466         the scope.
1467         (tsubst_copy): Clear tf_qualifying_scope and remember if it was
1468         set.
1469         <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
1470         scope.
1471         <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
1472         * search.cc (lookup_member): Document default argument.
1474 2023-02-16  Patrick Palka  <ppalka@redhat.com>
1476         * cp-tree.h: Mechanically drop static from static inline
1477         functions via s/^static inline/inline/g.
1479 2023-02-15  Marek Polacek  <polacek@redhat.com>
1481         PR c++/106675
1482         * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
1484 2023-02-10  Marek Polacek  <polacek@redhat.com>
1486         PR c++/107079
1487         * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
1489 2023-02-09  Tobias Burnus  <tobias@codesourcery.com>
1491         * parser.cc (cp_parser_omp_allocate): Parse align
1492         clause and check for restrictions.
1494 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
1496         PR c++/108698
1497         * mangle.cc (write_expression, write_template_arg): Handle
1498         EXCESS_PRECISION_EXPR with REAL_CST operand as
1499         write_template_arg_literal on fold_convert of the REAL_CST
1500         to EXCESS_PRECISION_EXPR type.
1502 2023-02-06  Patrick Palka  <ppalka@redhat.com>
1504         PR c++/107461
1505         * cp-tree.h (call_expr_dependent_name): Declare.
1506         * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: Use
1507         call_expr_dependent_name instead of dependent_name.
1508         * tree.cc (call_expr_dependent_name): Define.
1509         (called_fns_equal): Adjust to take two CALL_EXPRs instead of
1510         CALL_EXPR_FNs thereof.  Use call_expr_dependent_name instead
1511         of dependent_name.
1512         (cp_tree_equal) <case CALL_EXPR>: Adjust call to called_fns_equal.
1514 2023-02-03  Marek Polacek  <polacek@redhat.com>
1516         PR c++/108158
1517         * constexpr.cc (cxx_eval_array_reference): Don't replace
1518         new_ctx.object.
1520 2023-02-03  Patrick Palka  <ppalka@redhat.com>
1522         PR c++/107461
1523         * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
1524         the selected callee during overload set pruning.
1526 2023-02-03  Patrick Palka  <ppalka@redhat.com>
1528         PR c++/96745
1529         * class.cc (check_methods): Diagnose an unviable OVERLOAD
1530         set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one.
1531         Then prune the OVERLOAD to a single function.
1532         (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being
1533         an OVERLOAD when calling deduce_noexcept_on_destructor.
1534         Document why it has to be called before check_methods.
1536 2023-02-03  Patrick Palka  <ppalka@redhat.com>
1538         PR c++/108579
1539         * class.cc (check_methods): Swap order of constraints_satisfied_p
1540         and copy/move_fn_p tests.
1542 2023-02-01  Marek Polacek  <polacek@redhat.com>
1544         PR c++/107755
1545         * call.cc (build_new_op): Don't call warn_logical_operator when
1546         processing a template.
1548 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
1550         PR c++/108607
1551         * constexpr.cc (cxx_eval_constant_expression): Handle OMP_*
1552         and OACC_* constructs as non-constant.
1553         (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE.
1555 2023-02-01  Jason Merrill  <jason@redhat.com>
1557         * class.cc (note_name_declared_in_class): Change from permerror to
1558         -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases.
1560 2023-01-31  Jason Merrill  <jason@redhat.com>
1562         PR c++/108559
1563         * cp-gimplify.cc (any_non_eliding_target_exprs): New.
1564         (cp_genericize_init): Check it.
1566 2023-01-31  Marek Polacek  <polacek@redhat.com>
1568         PR c++/107593
1569         PR c++/108597
1570         * cp-tree.h (instantiation_dependent_expression_p): Don't
1571         declare here.
1573 2023-01-26  Marek Polacek  <polacek@redhat.com>
1575         PR c++/105300
1576         * parser.cc: Remove unnecessary forward declarations.
1577         (cp_parser_string_literal): New wrapper.
1578         (cp_parser_string_literal_common): Renamed from
1579         cp_parser_string_literal.  Add a bool parameter.  Give an error when
1580         UDLs are not permitted.
1581         (cp_parser_userdef_string_literal): New wrapper.
1582         (finish_userdef_string_literal): Renamed from
1583         cp_parser_userdef_string_literal.
1584         (cp_parser_primary_expression): Call cp_parser_userdef_string_literal
1585         instead of cp_parser_string_literal.
1586         (cp_parser_linkage_specification): Move a variable declaration closer
1587         to its first use.
1588         (cp_parser_static_assert): Likewise.
1589         (cp_parser_operator): Call cp_parser_userdef_string_literal instead of
1590         cp_parser_string_literal.
1591         (cp_parser_asm_definition): Move a variable declaration closer to its
1592         first use.
1593         (cp_parser_asm_specification_opt): Move variable declarations closer to
1594         their first use.
1595         (cp_parser_asm_operand_list): Likewise.
1596         (cp_parser_asm_clobber_list): Likewise.
1598 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
1600         PR c++/108503
1601         * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been
1602         called in !processing_template_decl with processing_template_decl
1603         temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily.
1604         (cp_finish_omp_range_for): And set it back again here.
1606 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
1608         PR c++/108525
1609         * mangle.cc (write_closure_type_name): Don't assume all
1610         lambda operator() fns are methods.
1612 2023-01-24  Jason Merrill  <jason@redhat.com>
1614         PR c++/108504
1615         * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
1616         token, too.
1618 2023-01-24  Jason Merrill  <jason@redhat.com>
1620         PR c++/108526
1621         * pt.cc (tsubst_function_decl): Handle static lambda.
1623 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
1625         PR c++/108474
1626         * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
1628 2023-01-24  Jason Merrill  <jason@redhat.com>
1630         PR c++/107303
1631         PR c++/107329
1632         * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double
1633         TARGET_EXPR, keep the outer one instead of the inner one.
1634         (maybe_replace_decl): New.
1636 2023-01-23  Jason Merrill  <jason@redhat.com>
1638         PR c++/107267
1639         * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
1640         of trivial types.
1642 2023-01-23  Marek Polacek  <polacek@redhat.com>
1644         PR c++/107797
1645         * cvt.cc (ocp_convert): copy_warning when creating a new
1646         COMPOUND_EXPR.
1647         * init.cc (build_new_1): Suppress -Wunused-value on
1648         compiler-generated COMPOUND_EXPRs.
1650 2023-01-23  Jason Merrill  <jason@redhat.com>
1652         PR c++/108195
1653         * call.cc (build_user_type_conversion_1): Check whether the
1654         iterators also find a list ctor.
1656 2023-01-23  Jason Merrill  <jason@redhat.com>
1658         PR c++/108496
1659         * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
1660         set.
1662 2023-01-23  Jason Merrill  <jason@redhat.com>
1664         PR c++/53288
1665         DR 1299
1666         * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
1668 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
1670         PR c++/108437
1671         * cp-tree.h (keep_unused_object_arg): Declare.
1672         * call.cc (keep_unused_object_arg): No longer static.
1673         * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF
1674         with overload being static member function.
1676 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
1678         PR c++/53932
1679         * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace
1680         DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding
1681         DECL_VALUE_EXPR.
1683 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
1685         PR c++/105593
1686         * decl.cc (cp_finish_decl): Check warning_enabled_at
1687         at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead
1688         of warn_init_self.
1690 2023-01-14  Jakub Jelinek  <jakub@redhat.com>
1692         PR c++/108365
1693         * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
1694         division or modulo.
1696 2023-01-13  Jakub Jelinek  <jakub@redhat.com>
1698         PR c++/108285
1699         * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR
1700         use its operand except that for warning purposes use the original
1701         EXCESS_PRECISION_EXPR.
1702         * call.cc (convert_like_internal): Only look through
1703         EXCESS_PRECISION_EXPR when calling cp_convert, not when calling
1704         cp_convert_and_check.
1706 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
1708         PR c++/105838
1709         PR c++/108047
1710         PR c++/108266
1711         * call.cc (maybe_init_list_as_range): Always return NULL_TREE if
1712         processing_template_decl.
1714 2023-01-05  Patrick Palka  <ppalka@redhat.com>
1716         PR c++/108275
1717         * parser.cc (cp_parser_class_head): Use dk_deferred instead of
1718         dk_no_check when parsing the class name.
1720 2023-01-05  Jakub Jelinek  <jakub@redhat.com>
1722         PR c++/108286
1723         * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
1724         OMP_CLAUSE_MAP.
1726 2023-01-04  Patrick Palka  <ppalka@redhat.com>
1728         PR c++/108282
1729         * decl2.cc (mark_single_function): Ignore mark_used failure
1730         only in a non-SFINAE context rather than in a SFINAE one.
1732 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
1734         PR c++/108206
1735         * decl.cc (merge_default_template_args): Return false if either
1736         new_parm or old_parm are erroneous.
1739 Copyright (C) 2023 Free Software Foundation, Inc.
1741 Copying and distribution of this file, with or without modification,
1742 are permitted in any medium without royalty provided the copyright
1743 notice and this notice are preserved.