ada: Fix spurious -Wstringop-overflow with link time optimization
[official-gcc.git] / gcc / cp / ChangeLog
blob3c216e67474567fb8a39925838b91c433d35bd34
1 2023-11-04  Jakub Jelinek  <jakub@redhat.com>
3         * parser.h (struct cp_parser): Adjust comment on omp_attrs_forbidden_p
4         member.
5         * parser.cc (cp_parser_omp_section_scan): Allow __directive__ spelling.
7 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
9         * call.cc: Update for changes to diagnostic_context.
10         * class.cc: Likewise.
11         * decl.cc: Likewise.
12         * error.cc: Likewise.
13         * except.cc: Likewise.
14         * pt.cc: Likewise.
16 2023-11-02  Jason Merrill  <jason@redhat.com>
18         * semantics.cc (nrv_data): Change visited to hash_set.
19         (finalize_nrv_r): Reorganize.
21 2023-11-02  Jason Merrill  <jason@redhat.com>
23         PR c++/112301
24         PR c++/102191
25         PR c++/33799
26         * except.cc (maybe_splice_retval_cleanup): Clear
27         current_retval_sentinel when destroying retval.
28         * semantics.cc (nrv_data): Add in_nrv_cleanup.
29         (finalize_nrv): Set it.
30         (finalize_nrv_r): Fix handling of throwing cleanups.
32 2023-11-02  Jakub Jelinek  <jakub@redhat.com>
34         PR c++/110342
35         * parser.cc: Implement C++26 P2361R6 - Unevaluated strings.
36         (uneval_string_attr): New enumerator.
37         (cp_parser_string_literal_common): Add UNEVAL argument.  If true,
38         pass CPP_UNEVAL_STRING rather than CPP_STRING to
39         cpp_interpret_string_notranslate.
40         (cp_parser_string_literal, cp_parser_userdef_string_literal): Adjust
41         callers of cp_parser_string_literal_common.
42         (cp_parser_unevaluated_string_literal): New function.
43         (cp_parser_parenthesized_expression_list): Handle uneval_string_attr.
44         (cp_parser_linkage_specification): Use
45         cp_parser_unevaluated_string_literal for C++26.
46         (cp_parser_static_assert): Likewise.
47         (cp_parser_std_attribute): Use uneval_string_attr for standard
48         deprecated and nodiscard attributes.
50 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
52         * module.cc (ordinary_loc_of): Update for removal of
53         MACRO_MAP_EXPANSION_POINT_LOCATION.
54         (module_state::note_location): Update for renaming of field.
55         (module_state::write_macro_maps): Likewise.
57 2023-10-27  Patrick Palka  <ppalka@redhat.com>
59         PR c++/111929
60         * init.cc (build_new_1): Remove unnecessary call to convert
61         on 'nelts'.  Use build2 instead of fold_build2 for
62         'outer_nelts_checks'.
64 2023-10-27  Patrick Palka  <ppalka@redhat.com>
66         * cp-tree.h (maybe_warn_unparenthesized_assignment): Declare.
67         * semantics.cc (is_assignment_op_expr_p): Generalize to return
68         true for any assignment operator expression, not just one that
69         has been resolved to an operator overload.
70         (maybe_warn_unparenthesized_assignment): Factored out from ...
71         (maybe_convert_cond): ... here.
72         (finish_parenthesized_expr): Mention
73         maybe_warn_unparenthesized_assignment.
74         * typeck.cc (convert_for_assignment): Replace -Wparentheses
75         warning logic with maybe_warn_unparenthesized_assignment.
77 2023-10-27  Lewis Hyatt  <lhyatt@gmail.com>
79         PR preprocessor/87299
80         * parser.cc (cp_lexer_new_main): Call c_reset_target_pragmas ()
81         after preprocessing is complete, before starting compilation.
83 2023-10-26  liuhongt  <hongtao.liu@intel.com>
85         * typeck.cc (build_vec_cmp): Pass type of arg0 to
86         truth_type_for.
88 2023-10-25  Jason Merrill  <jason@redhat.com>
90         * cp-tree.def: Improve OFFSET_REF comment.
91         * cp-gimplify.cc (cp_fold_immediate): Add to comment.
93 2023-10-25  Thomas Schwinge  <thomas@codesourcery.com>
95         * parser.cc (cp_parser_omp_clause_name): Return
96         'PRAGMA_OACC_CLAUSE_SELF' for "self".
97         (cp_parser_oacc_data_clause, OACC_UPDATE_CLAUSE_MASK): Adjust.
98         (cp_parser_oacc_all_clauses): Remove 'bool compute_p' formal
99         parameter, and instead locally determine whether we're called for
100         an OpenACC compute construct or OpenACC 'update' directive.
101         (cp_parser_oacc_compute): Adjust.
103 2023-10-25  Chung-Lin Tang  <cltang@codesourcery.com>
105         * parser.cc (cp_parser_oacc_compute_clause_self): New function.
106         (cp_parser_oacc_all_clauses): Add new 'bool compute_p = false'
107         parameter, add parsing of self clause when compute_p is true.
108         (OACC_KERNELS_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_SELF.
109         (OACC_PARALLEL_CLAUSE_MASK): Likewise,
110         (OACC_SERIAL_CLAUSE_MASK): Likewise.
111         (cp_parser_oacc_compute): Adjust call to c_parser_oacc_all_clauses to
112         set compute_p argument to true.
113         * pt.cc (tsubst_omp_clauses): Add OMP_CLAUSE_SELF case.
114         * semantics.cc (c_finish_omp_clauses): Add OMP_CLAUSE_SELF case, merged
115         with OMP_CLAUSE_IF case.
117 2023-10-25  Marek Polacek  <polacek@redhat.com>
119         PR c++/111895
120         * typeck.cc (build_static_cast_1): Call decay_conversion.
122 2023-10-24  Patrick Palka  <ppalka@redhat.com>
124         PR c++/111929
125         * init.cc (build_new_1): Use convert, build2, build3 and
126         cp_fully_fold instead of fold_convert, size_binop and
127         fold_build3 when building up 'size'.
129 2023-10-24  Patrick Palka  <ppalka@redhat.com>
131         PR c++/111919
132         * tree.cc (cp_stabilize_reference): Do nothing when
133         processing_template_decl.
135 2023-10-22  Patrick Palka  <ppalka@redhat.com>
137         PR objc++/111920
138         * pt.cc (tsubst_expr) <case AT_ENCODE_EXPR>: Use tsubst instead
139         of tsubst_expr.
141 2023-10-20  Jason Merrill  <jason@redhat.com>
143         * call.cc (implicit_conversion_1): Rename...
144         (implicit_conversion): ...to this.  Remove the old wrapper.
146 2023-10-20  Jason Merrill  <jason@redhat.com>
148         * call.cc (tourney): Only skip champ_compared_to_predecessor.
150 2023-10-20  Nathan Sidwell  <nathan@acm.org>
152         PR c++/105322
153         * module.cc (trees_out::core_vals): Stream CONSTRUCTOR operands
154         after the type.
155         (trees_in::core_vals): Likewise.
157 2023-10-20  Patrick Palka  <ppalka@redhat.com>
159         * cp-lang.cc (objcp_tsubst_copy_and_build): Rename to ...
160         (objcp_tsubst_expr): ... this.
161         * cp-objcp-common.h (objcp_tsubst_copy_and_build): Rename to ...
162         (objcp_tsubst_expr): ... this.
163         * cp-tree.h (tsubst_copy_and_build): Remove declaration.
164         * init.cc (maybe_instantiate_nsdmi_init): Use tsubst_expr
165         instead of tsubst_copy_and_build.
166         * pt.cc (expand_integer_pack): Likewise.
167         (instantiate_non_dependent_expr_internal): Likewise.
168         (instantiate_class_template): Use tsubst_stmt instead of
169         tsubst_expr for STATIC_ASSERT.
170         (tsubst_function_decl): Adjust tsubst_copy_and_build uses.
171         (tsubst_arg_types): Likewise.
172         (tsubst_exception_specification): Likewise.
173         (tsubst_tree_list): Likewise.
174         (tsubst): Likewise.
175         (tsubst_name): Likewise.
176         (tsubst_omp_clause_decl): Use tsubst_stmt instead of tsubst_expr.
177         (tsubst_omp_clauses): Likewise.
178         (tsubst_copy_asm_operands): Adjust tsubst_copy_and_build use.
179         (tsubst_omp_for_iterator): Use tsubst_stmt instead of tsubst_expr.
180         (tsubst_expr): Rename to ...
181         (tsubst_stmt): ... this.
182         <case CO_YIELD_EXPR, CO_AWAIT_EXPR>: Move to tsubst_expr.
183         (tsubst_omp_udr): Use tsubst_stmt instead of tsubst_expr.
184         (tsubst_non_call_postfix_expression): Adjust tsubst_copy_and_build
185         use.
186         (tsubst_lambda_expr): Likewise.  Use tsubst_stmt instead of
187         tsubst_expr for the body of a lambda.
188         (tsubst_copy_and_build_call_args): Rename to ...
189         (tsubst_call_args): ... this.  Adjust tsubst_copy_and_build use.
190         (tsubst_copy_and_build): Rename to tsubst_expr.  Adjust
191         tsubst_copy_and_build and tsubst_copy_and_build_call_args use.
192         <case TRANSACTION_EXPR>: Use tsubst_stmt instead of tsubst_expr.
193         (maybe_instantiate_noexcept): Adjust tsubst_copy_and_build use.
194         (instantiate_body): Use tsubst_stmt instead of tsubst_expr for
195         substituting the function body.
196         (tsubst_initializer_list): Adjust tsubst_copy_and_build use.
198 2023-10-20  Patrick Palka  <ppalka@redhat.com>
200         * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup.
201         * pt.cc (tsubst_pack_expansion): Use tsubst for substituting
202         BASES_TYPE.
203         (tsubst_decl) <case USING_DECL>: Use tsubst_name instead of
204         tsubst_copy.
205         (tsubst) <case TEMPLATE_TYPE_PARM>: Use tsubst_copy_and_build
206         instead of tsubst_copy for substituting
207         CLASS_PLACEHOLDER_TEMPLATE.
208         <case TYPENAME_TYPE>: Use tsubst_name instead of tsubst_copy for
209         substituting TYPENAME_TYPE_FULLNAME.
210         (tsubst_name): Define.
211         (tsubst_qualified_id): Use tsubst_name instead of tsubst_copy
212         for substituting the component name of a SCOPE_REF.
213         (tsubst_copy): Remove.
214         (tsubst_copy_and_build): Clear tf_no_name_lookup at the start,
215         and remember if it was set.  Call maybe_dependent_member_ref if
216         tf_no_name_lookup was not set.
217         <case IDENTIFIER_NODE>: Don't do name lookup if tf_no_name_lookup
218         was set.
219         <case TEMPLATE_ID_EXPR>: If tf_no_name_lookup was set, use
220         tsubst_name instead of tsubst_copy_and_build to substitute the
221         template and don't finish the template-id.
222         <case BIT_NOT_EXPR>: Handle identifier and type operand (if
223         tf_no_name_lookup was set).
224         <case SCOPE_REF>: Avoid trying to resolve a SCOPE_REF if
225         tf_no_name_lookup was set by calling build_qualified_name directly
226         instead of tsubst_qualified_id.
227         <case SIZEOF_EXPR>: Handling of sizeof...  copied from tsubst_copy.
228         <case CALL_EXPR>: Use tsubst_name instead of tsubst_copy to
229         substitute a TEMPLATE_ID_EXPR callee naming an unresolved template.
230         <case COMPONENT_REF>: Likewise to substitute the member.
231         <case FUNCTION_DECL>: Copied from tsubst_copy and merged with ...
232         <case VAR_DECL, PARM_DECL>: ... these.  Initial handling copied
233         from tsubst_copy.  Optimize local variable substitution by
234         trying retrieve_local_specialization before checking
235         uses_template_parms.
236         <case CONST_DECL>: Copied from tsubst_copy.
237         <case FIELD_DECL>: Likewise.
238         <case NAMESPACE_DECL>: Likewise.
239         <case OVERLOAD>: Likewise.
240         <case TEMPLATE_DECL>: Likewise.
241         <case TEMPLATE_PARM_INDEX>: Likewise.
242         <case TYPE_DECL>: Likewise.
243         <case CLEANUP_POINT_EXPR>: Likewise.
244         <case OFFSET_REF>: Likewise.
245         <case EXPR_PACK_EXPANSION>: Likewise.
246         <case NONTYPE_ARGUMENT_PACK>: Likewise.
247         <case *_CST>: Likewise.
248         <case *_*_FOLD_EXPR>: Likewise.
249         <case DEBUG_BEGIN_STMT>: Likewise.
250         <case CO_AWAIT_EXPR>: Likewise.
251         <case TRAIT_EXPR>: Use tsubst and tsubst_copy_and_build instead
252         of tsubst_copy.
253         <default>: Copied from tsubst_copy.
254         (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build
255         instead of tsubst_copy.
257 2023-10-20  Patrick Palka  <ppalka@redhat.com>
259         PR c++/106086
260         * parser.cc (cp_parser_postfix_expression): Consolidate three
261         calls to finish_call_expr, one to build_new_method_call and
262         one to build_min_nt_call_vec into one call to finish_call_expr.
263         Don't call maybe_generic_this_capture here.
264         * pt.cc (tsubst_copy_and_build) <case CALL_EXPR>: Remove
265         COMPONENT_REF callee handling.
266         (type_dependent_expression_p): Use t_d_object_e_p instead of
267         t_d_e_p for COMPONENT_REF and OFFSET_REF.
268         * semantics.cc (finish_call_expr): In the type-dependent case,
269         call maybe_generic_this_capture here instead.
271 2023-10-20  Patrick Palka  <ppalka@redhat.com>
273         * call.cc (build_new_method_call): Remove calls to
274         build_non_dependent_expr and/or make_args_non_dependent.
275         * coroutines.cc (finish_co_return_stmt): Likewise.
276         * cp-tree.h (build_non_dependent_expr): Remove.
277         (make_args_non_dependent): Remove.
278         * decl2.cc (grok_array_decl): Remove calls to
279         build_non_dependent_expr and/or make_args_non_dependent.
280         (build_offset_ref_call_from_tree): Likewise.
281         * init.cc (build_new): Likewise.
282         * pt.cc (make_args_non_dependent): Remove.
283         (test_build_non_dependent_expr): Remove.
284         (cp_pt_cc_tests): Adjust.
285         * semantics.cc (finish_expr_stmt): Remove calls to
286         build_non_dependent_expr and/or make_args_non_dependent.
287         (finish_for_expr): Likewise.
288         (finish_call_expr): Likewise.
289         (finish_omp_atomic): Likewise.
290         * typeck.cc (finish_class_member_access_expr): Likewise.
291         (build_x_indirect_ref): Likewise.
292         (build_x_binary_op): Likewise.
293         (build_x_array_ref): Likewise.
294         (build_x_vec_perm_expr): Likewise.
295         (build_x_shufflevector): Likewise.
296         (build_x_unary_op): Likewise.
297         (cp_build_addressof): Likewise.
298         (build_x_conditional_expr): Likewise.
299         (build_x_compound_expr): Likewise.
300         (build_static_cast): Likewise.
301         (build_x_modify_expr): Likewise.
302         (check_return_expr): Likewise.
303         * typeck2.cc (build_x_arrow): Likewise.
305 2023-10-20  Patrick Palka  <ppalka@redhat.com>
307         * class.cc (instantiate_type): Remove NON_DEPENDENT_EXPR
308         handling.
309         * constexpr.cc (cxx_eval_constant_expression): Likewise.
310         (potential_constant_expression_1): Likewise.
311         * coroutines.cc (coro_validate_builtin_call): Don't
312         expect ALIGNOF_EXPR to be wrapped in NON_DEPENDENT_EXPR.
313         * cp-objcp-common.cc (cp_common_init_ts): Remove
314         NON_DEPENDENT_EXPR handling.
315         * cp-tree.def (NON_DEPENDENT_EXPR): Remove.
316         * cp-tree.h (build_non_dependent_expr): Temporarily redefine as
317         the identity function.
318         * cvt.cc (maybe_warn_nodiscard): Handle type-dependent and
319         variable callee of CALL_EXPR.
320         * cxx-pretty-print.cc (cxx_pretty_printer::expression): Remove
321         NON_DEPENDENT_EXPR handling.
322         * error.cc (dump_decl): Likewise.
323         (dump_expr): Likewise.
324         * expr.cc (mark_use): Likewise.
325         (mark_exp_read): Likewise.
326         * pt.cc (build_non_dependent_expr): Remove.
327         * tree.cc (lvalue_kind): Remove NON_DEPENDENT_EXPR handling.
328         (cp_stabilize_reference): Likewise.
329         * typeck.cc (warn_for_null_address): Likewise.
330         (cp_build_binary_op): Handle type-dependent SIZEOF_EXPR operands.
331         (cp_build_unary_op) <case TRUTH_NOT_EXPR>: Don't fold inside a
332         template.
334 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
336         * decl.cc (push_throw_library_fn): Mark with ECF_XTHROW.
337         * except.cc (build_throw): Likewise __cxa_throw,
338         _ITM_cxa_throw, __cxa_rethrow.
340 2023-10-20  Nathaniel Shead  <nathanieloshead@gmail.com>
342         PR c++/101631
343         PR c++/102286
344         * call.cc (build_over_call): Fold more indirect refs for trivial
345         assignment op.
346         * class.cc (type_has_non_deleted_trivial_default_ctor): Create.
347         * constexpr.cc (cxx_eval_call_expression): Start lifetime of
348         union member before entering constructor.
349         (cxx_eval_component_reference): Check against first member of
350         value-initialised union.
351         (cxx_eval_store_expression): Activate member for
352         value-initialised union. Check for accessing inactive union
353         member indirectly.
354         * cp-tree.h (type_has_non_deleted_trivial_default_ctor):
355         Forward declare.
357 2023-10-20  Nathaniel Shead  <nathanieloshead@gmail.com>
359         * constexpr.cc (is_std_source_location_current): New.
360         (cxx_eval_constant_expression): Only ignore cast from void* for
361         specific cases and improve other diagnostics.
363 2023-10-19  Marek Polacek  <polacek@redhat.com>
365         * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value.
367 2023-10-19  Jason Merrill  <jason@redhat.com>
369         * typeck2.cc (check_narrowing): Adjust.
371 2023-10-19  Jason Merrill  <jason@redhat.com>
373         * parser.cc (cp_parser_primary_expression): Use G_.
374         (cp_parser_using_enum): Likewise.
375         * decl.cc (identify_goto): Likewise.
377 2023-10-18  Jason Merrill  <jason@redhat.com>
379         * typeck2.cc (check_narrowing): Use permerror.
381 2023-10-17  Marek Polacek  <polacek@redhat.com>
383         PR c++/111840
384         * parser.cc (cp_parser_simple_declaration): Do cp_parser_error
385         for FUNCTION_DECLs.
387 2023-10-17  Marek Polacek  <polacek@redhat.com>
389         PR c++/111660
390         * cp-gimplify.cc (cp_fold_immediate_r) <case COND_EXPR>: Don't
391         handle it here.
392         (cp_fold_r): Handle COND_EXPR here.
394 2023-10-17  Jason Merrill  <jason@redhat.com>
396         * mangle.cc (abi_check): New.
397         (write_prefix, write_unqualified_name, write_discriminator)
398         (write_type, write_member_name, write_expression)
399         (write_template_arg, write_template_param): Use it.
400         (start_mangling): Assign from {}.
401         * cp-tree.h: Update comment.
403 2023-10-17  Nathaniel Shead  <nathanieloshead@gmail.com>
405         * constexpr.cc (cxx_eval_dynamic_cast_fn): Add missing
406         auto_diagnostic_group.
407         (cxx_eval_call_expression): Likewise.
408         (diag_array_subscript): Likewise.
409         (outside_lifetime_error): Likewise.
410         (potential_constant_expression_1): Likewise.
412 2023-10-16  Jason Merrill  <jason@redhat.com>
414         * parser.cc (cp_parser_fold_expression): Track location range.
415         * semantics.cc (finish_unary_fold_expr)
416         (finish_left_unary_fold_expr, finish_right_unary_fold_expr)
417         (finish_binary_fold_expr): Add location parm.
418         * constraint.cc (finish_shorthand_constraint): Pass it.
419         * pt.cc (convert_generic_types_to_packs): Likewise.
420         * cp-tree.h: Adjust.
422 2023-10-16  Marek Polacek  <polacek@redhat.com>
424         PR c++/111272
425         * constexpr.cc (explain_invalid_constexpr_fn): Also check the body of
426         a constructor in C++14 and up.
428 2023-10-14  Jakub Jelinek  <jakub@redhat.com>
430         PR c/102989
431         * module.cc (trees_out::start, trees_in::start): Remove
432         TREE_INT_CST_OFFSET_NUNITS handling.
434 2023-10-10  Jason Merrill  <jason@redhat.com>
436         PR c++/109422
437         * mangle.cc (write_template_param): Also mangle level.
439 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
441         * module.cc (module_state::read_location): Update for renaming of
442         get_combined_adhoc_loc.
444 2023-10-03  David Malcolm  <dmalcolm@redhat.com>
446         * error.cc (print_instantiation_partial_context_line): Call
447         diagnostic_show_locus.
449 2023-10-03  David Malcolm  <dmalcolm@redhat.com>
451         * error.cc: Update for "m_" prefixes to text_info fields.
453 2023-09-30  Eugene Rozenfeld  <erozen@microsoft.com>
455         * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY
457 2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>
459         * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables.
461 2023-09-22  Jason Merrill  <jason@redhat.com>
463         PR c++/111357
464         * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR.
466 2023-09-22  Jason Merrill  <jason@redhat.com>
468         * constexpr.cc (free_constructor): Handle null ce->value.
470 2023-09-22  Jason Merrill  <jason@redhat.com>
472         PR c++/111529
473         * parser.cc (cp_parser_lambda_declarator_opt): Don't suggest
474         -std=c++14 for lambda templates.
475         * pt.cc (tsubst_expr): Move ANNOTATE_EXPR handling...
476         (tsubst_copy_and_build): ...here.
478 2023-09-22  Patrick Palka  <ppalka@redhat.com>
480         PR c++/111493
481         * decl2.cc (grok_array_decl): Guard diagnostic and backward
482         compatibility fallback code paths with tf_error.
484 2023-09-22  Patrick Palka  <ppalka@redhat.com>
486         PR c++/111485
487         * pt.cc (is_compatible_template_arg): New parameter 'args'.
488         Add the outer template arguments 'args' to 'new_args'.
489         (convert_template_argument): Pass 'args' to
490         is_compatible_template_arg.
492 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
494         * parser.cc (cp_parser_postfix_expression): Parse
495         __builtin_classify_type call with typename as argument.
496         * pt.cc (tsubst_copy_and_build): Handle __builtin_classify_type
497         with dependent typename as argument.
499 2023-09-20  Patrick Palka  <ppalka@redhat.com>
501         PR c++/111471
502         * cxx-pretty-print.cc (cxx_pretty_printer::expression)
503         <case VAR_DECL>: Handle class NTTP objects by printing
504         their type and value.
505         <case VIEW_CONVERT_EXPR>: Strip const VIEW_CONVERT_EXPR
506         wrappers for class NTTPs.
507         (pp_cxx_template_argument_list): Don't handle class NTTP
508         objects here.
510 2023-09-20  Patrick Palka  <ppalka@redhat.com>
512         * pt.cc (tsubst_function_decl): Don't bother computing 'argvec'
513         when 'lambda_fntype' is set.
514         (tsubst_template_decl): Make sure we return a TEMPLATE_DECL
515         during specialization lookup.  In the non-class non-function
516         template case, use tsubst_decl directly with use_spec_table=false,
517         update DECL_TI_ARGS and call register_specialization like
518         tsubst_decl would have done if use_spec_table=true.
520 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
522         PR c++/111392
523         * parser.h (struct cp_lexer): Add in_omp_decl_attribute member.
524         * cp-tree.h (cp_maybe_parse_omp_decl): Declare.
525         * parser.cc (cp_parser_handle_statement_omp_attributes): Diagnose
526         omp::decl attribute on statements.  Adjust diagnostic wording for
527         omp::decl.
528         (cp_parser_omp_directive_args): Add DECL_P argument, set TREE_PUBLIC
529         to it on the DEFERRED_PARSE tree.
530         (cp_parser_omp_sequence_args): Adjust caller.
531         (cp_parser_std_attribute): Handle omp::decl attribute.
532         (cp_parser_omp_var_list): If parser->lexer->in_omp_decl_attribute
533         don't expect any arguments, instead create clause or TREE_LIST for
534         that decl.
535         (cp_parser_late_parsing_omp_declare_simd): Adjust diagnostic wording
536         for omp::decl.
537         (cp_maybe_parse_omp_decl): New function.
538         (cp_parser_omp_declare_target): If
539         parser->lexer->in_omp_decl_attribute and first token isn't name or
540         comma invoke cp_parser_omp_var_list.
541         * decl2.cc (cplus_decl_attributes): Adjust diagnostic wording for
542         omp::decl.  Handle omp::decl on declarations.
543         * name-lookup.cc (finish_using_directive): Adjust diagnostic wording
544         for omp::decl.
546 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
548         * mapper-client.cc, mapper-client.h (open_module_client): Accept
549         dependency tracking and track module mapper files as
550         dependencies.
551         * module.cc (make_mapper, get_mapper): Pass the dependency
552         tracking class down.
554 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
556         * module.cc (do_import): Report imported CMI files as
557         dependencies.
559 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
561         * module.cc (preprocessed_module): Pass whether the module is
562         exported to dependency tracking.
564 2023-09-19  Javier Martinez  <javier.martinez.bugzilla@gmail.com>
566         * class.cc (propagate_class_warmth_attribute): New function.
567         (check_bases_and_members): propagate hot and cold attributes
568         to all FUNCTION_DECL when the record is marked hot or cold.
569         * cp-tree.h (maybe_propagate_warmth_attributes): New function.
570         * decl2.cc (maybe_propagate_warmth_attributes): New function.
571         * method.cc (lazily_declare_fn): propagate hot and cold
572         attributes to lazily declared functions when the record is
573         marked hot or cold.
575 2023-09-19  Patrick Palka  <ppalka@redhat.com>
577         * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC
578         test guarding TYPE_TEMPLATE_INFO.
580 2023-09-19  Jason Merrill  <jason@redhat.com>
582         DR 2799
583         * class.cc (add_implicit_default_ctor): Split out...
584         (add_implicitly_declared_members): ...from here.
585         Also call it when inheriting a default ctor.
587 2023-09-19  Marek Polacek  <polacek@redhat.com>
589         * call.cc (build_over_call): Set ADDR_EXPR_DENOTES_CALL_P.  Don't handle
590         immediate_invocation_p here.
591         * constexpr.cc (cxx_eval_call_expression): Use mce_true for
592         DECL_IMMEDIATE_FUNCTION_P.
593         (cxx_eval_conditional_expression): Call cp_fold_immediate.
594         * cp-gimplify.cc (enum fold_flags): Add ff_fold_immediate.
595         (maybe_replace_decl): Make static.
596         (cp_fold_r): Expand immediate invocations.
597         (cp_fold_immediate_r): New.
598         (cp_fold_immediate): New.
599         * cp-tree.h (ADDR_EXPR_DENOTES_CALL_P): Define.
600         (cp_fold_immediate): Declare.
601         * tree.cc (bot_replace): Don't handle immediate invocations here.
603 2023-09-19  Patrick Palka  <ppalka@redhat.com>
605         PR c++/111419
606         * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call
607         complete_type if the type is volatile.
608         <case VAR_DECL>: Likewise.
610 2023-09-19  Patrick Palka  <ppalka@redhat.com>
612         PR c++/99631
613         * semantics.cc (finish_decltype_type): For an NTTP object,
614         return its type modulo cv-quals.
616 2023-09-18  Patrick Palka  <ppalka@redhat.com>
618         PR c++/89231
619         * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality
620         test by not calling most_general_template.  Only unify the
621         innermost levels of template arguments.
622         (unify) <case CLASS_TYPE>: Only unify the innermost levels of
623         template arguments, and only if the template is primary.
625 2023-09-18  Patrick Palka  <ppalka@redhat.com>
627         PR c++/63198
628         PR c++/18474
629         * semantics.cc (maybe_convert_cond): Look through implicit
630         INDIRECT_REF when deciding whether to issue a -Wparentheses
631         warning, and consider templated assignment expressions as well.
632         (finish_parenthesized_expr): Look through implicit INDIRECT_REF
633         when suppressing -Wparentheses warning.
634         * typeck.cc (build_x_modify_expr): Check simple assignments
635         ahead time too, not just compound assignments.  Give the second
636         operand of MODOP_EXPR a non-null type so that it's not considered
637         always instantiation-dependent.  Don't call suppress_warning.
639 2023-09-18  Patrick Palka  <ppalka@redhat.com>
641         PR c++/108347
642         * pt.cc (unify): Return unify_success for identical dependent
643         DECL_P 'arg' and 'parm'.
644         <case CONST_DECL>: Remove handling.
646 2023-09-18  Patrick Palka  <ppalka@redhat.com>
648         * call.cc (add_template_candidate_real): Check arity even
649         when there are no explicit template arguments.  Combine the
650         two adjacent '!obj' tests into one.
652 2023-09-18  Patrick Palka  <ppalka@redhat.com>
654         * pt.cc (register_specialization): Remove now-unnecessary
655         early exit for FUNCTION_DECL partial instantiation.
656         (tsubst_template_decl): Pass use_spec_table=false to
657         tsubst_function_decl.  Set DECL_TI_ARGS of a non-lambda
658         FUNCTION_DECL specialization to the full set of arguments.
659         Simplify register_specialization call accordingly.
661 2023-09-18  Jason Merrill  <jason@redhat.com>
663         * class.cc (check_subobject_offset): Use similar_type_p.
665 2023-09-12  Jason Merrill  <jason@redhat.com>
667         PR c++/111357
668         * pt.cc (expand_integer_pack): Convert argument to int.
670 2023-09-12  Jason Merrill  <jason@redhat.com>
672         PR c++/107198
673         * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR
674         regardless of seen_error.
676 2023-09-08  Patrick Palka  <ppalka@redhat.com>
678         PR c++/99599
679         * pt.cc (check_non_deducible_conversions): Add bool parameter
680         passed down to check_non_deducible_conversion.
681         (fn_type_unification): Call check_non_deducible_conversions
682         an extra time before satisfaction with noninst_only_p=true.
683         (conversion_may_instantiate_p): Define.
684         (check_non_deducible_conversion): Add bool parameter controlling
685         whether to compute only conversions that are guaranteed to
686         not induce template instantiation.
688 2023-09-07  Sandra Loosemore  <sandra@codesourcery.com>
690         PR c++/111274
691         * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK.
693 2023-09-06  Jason Merrill  <jason@redhat.com>
695         * class.cc (check_subobject_offset): Check
696         same_type_ignoring_top_level_qualifiers_p.
698 2023-09-05  Marek Polacek  <polacek@redhat.com>
700         PR c++/91483
701         * constexpr.cc (verify_constant_explain_r): New.
702         (verify_constant): Call it.
704 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
706         PR c++/52953
707         * name-lookup.cc (check_local_shadow): Don't punt early for
708         DECL_EXTERNAL decls, instead just disable the shadowing of namespace
709         decls check for those and emit a pedwarn rather than error_at or
710         permerror for those.  Formatting fix.
712 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
714         PR c++/52953
715         * name-lookup.h (struct cp_binding_level): Add artificial bit-field.
716         Formatting fixes.
717         * name-lookup.cc (check_local_shadow): Skip artificial bindings when
718         checking if parameter scope is parent scope.  Don't special case
719         FUNCTION_NEEDS_BODY_BLOCK.  Diagnose the in_function_try_handler
720         cases in the b->kind == sk_function_parms test and verify no
721         non-artificial intervening scopes.  Add missing auto_diagnostic_group.
722         * decl.cc (begin_function_body): Set
723         current_binding_level->artificial.
724         * semantics.cc (begin_function_try_block): Likewise.
726 2023-09-05  Patrick Palka  <ppalka@redhat.com>
728         * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass
729         nullptr as non_constant_p to cp_parser_braced_list if our
730         non_constant_p is null.
731         (cp_parser_initializer_list): Likewise to
732         cp_parser_initializer_clause.  Avoid inspecting
733         clause_non_constant_p if it's uninitialized.
735 2023-09-05  Patrick Palka  <ppalka@redhat.com>
737         * call.cc (build_user_type_conversion): Free allocated
738         conversions.
739         (build_converted_constant_expr_internal): Use
740         conversion_obstack_sentinel instead.
741         (perform_dguide_overload_resolution): Likewise.
742         (build_new_function_call): Likewise.
743         (build_operator_new_call): Free allocated conversions.
744         (build_op_call): Use conversion_obstack_sentinel instead.
745         (build_conditional_expr): Use conversion_obstack_sentinel
746         instead, and hoist it out to the outermost scope.
747         (build_new_op): Use conversion_obstack_sentinel instead
748         and set it up before the first goto.  Remove second unneeded goto.
749         (build_op_subscript): Use conversion_obstack_sentinel instead.
750         (ref_conv_binds_to_temporary): Likewise.
751         (build_new_method_call): Likewise.
752         (can_convert_arg): Likewise.
753         (can_convert_arg_bad): Likewise.
754         (perform_implicit_conversion_flags): Likewise.
755         (perform_direct_initialization_if_possible): Likewise.
756         (initialize_reference): Likewise.
758 2023-09-01  Jakub Jelinek  <jakub@redhat.com>
760         PR c++/111069
761         * cp-tree.h (determine_local_discriminator): Add NAME argument with
762         NULL_TREE default.
763         (struct cp_decomp): New type.
764         (cp_finish_decl): Add DECOMP argument defaulted to nullptr.
765         (cp_maybe_mangle_decomp): Remove declaration.
766         (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned
767         args.
768         (cp_convert_range_for): Likewise.
769         * decl.cc (determine_local_discriminator): Add NAME argument, use it
770         if non-NULL, otherwise compute it the old way.
771         (maybe_commonize_var): Don't return early for structured bindings.
772         (cp_finish_decl): Add DECOMP argument, if non-NULL, call
773         cp_maybe_mangle_decomp.
774         (cp_maybe_mangle_decomp): Make it static with a forward declaration.
775         Call determine_local_discriminator.  Replace FIRST and COUNT arguments
776         with DECOMP argument.
777         (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP
778         argument.
779         * mangle.cc (find_decomp_unqualified_name): Remove.
780         (write_unqualified_name): Don't call find_decomp_unqualified_name.
781         (mangle_decomp): Handle mangling of static function/block scope
782         structured bindings.  Don't call decl_mangling_context twice.  Call
783         check_abi_tags, call write_abi_tags for abi version >= 19 and emit
784         -Wabi warnings if needed.
785         (write_guarded_var_name): Handle structured bindings.
786         (mangle_ref_init_variable): Use write_guarded_var_name.
787         * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction
788         and cp_convert_range_for callers.
789         (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and
790         DECOMP_CNT arguments with DECOMP.  Adjust cp_finish_decomp caller.
791         (cp_convert_range_for): Replace DECOMP_FIRST_NAME and
792         DECOMP_CNT arguments with DECOMP.  Don't call cp_maybe_mangle_decomp,
793         adjust cp_finish_decl and cp_finish_decomp callers.
794         (cp_parser_decomposition_declaration): Don't call
795         cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp
796         callers.
797         (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction
798         and cp_finish_decomp callers.
799         (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp,
800         adjust cp_finish_decl and cp_finish_decomp callers.
801         * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names
802         caller.
803         (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP.
804         (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust
805         tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and
806         cp_convert_range_for callers.
808 2023-08-30  Marek Polacek  <polacek@redhat.com>
810         PR c++/91319
811         * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT
812         when the designated initializer is of the .x{} form.
814 2023-08-30  Marek Polacek  <polacek@redhat.com>
816         PR c++/111173
817         * decl.cc (grokdeclarator): Disallow constinit on functions.
819 2023-08-29  Marek Polacek  <polacek@redhat.com>
821         * call.cc (convert_like_internal): Show where the conversion function
822         was declared.
823         (maybe_show_nonconverting_candidate): New.
824         * cp-tree.h (maybe_show_nonconverting_candidate): Declare.
825         * typeck.cc (convert_for_assignment): Call it.
827 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
829         * cp-tree.h (cp_convert_omp_range_for): Adjust declaration.
830         * parser.cc (struct omp_for_parse_data): New.
831         (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime
832         in intervening code.
833         (check_omp_intervening_code): New.
834         (cp_parser_statement_seq_opt): Special-case nested loops, blocks,
835         and other constructs for OpenMP loops.
836         (cp_parser_iteration_statement): Reject loops in intervening code.
837         (cp_parser_omp_for_loop_init): Expand comments and tweak the
838         interface slightly to better distinguish input/output parameters.
839         (cp_convert_omp_range_for): Likewise.
840         (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop
841         and largely rewritten.  Add more comments.
842         (insert_structured_blocks): New.
843         (find_structured_blocks): New.
844         (struct sit_data, substitute_in_tree_walker, substitute_in_tree):
845         New.
846         (fixup_blocks_walker): New.
847         (cp_parser_omp_for_loop): Rewrite to use recursive descent instead
848         of a loop.  Add logic to reshuffle the bits of code collected
849         during parsing so intervening code gets moved to the loop body.
850         (cp_parser_omp_loop): Remove call to finish_omp_for_block, which
851         is now redundant.
852         (cp_parser_omp_simd): Likewise.
853         (cp_parser_omp_for): Likewise.
854         (cp_parser_omp_distribute): Likewise.
855         (cp_parser_oacc_loop): Likewise.
856         (cp_parser_omp_taskloop): Likewise.
857         (cp_parser_pragma): Reject OpenMP pragmas in intervening code.
858         * parser.h (struct cp_parser): Add omp_for_parse_state field.
859         * pt.cc (tsubst_omp_for_iterator): Adjust call to
860         cp_convert_omp_range_for.
861         * semantics.cc (finish_omp_for): Try harder to preserve location
862         of loop variable init expression for use in diagnostics.
863         (struct fofb_data, finish_omp_for_block_walker): New.
864         (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR
865         nested inside BIND instead of directly in BIND itself.
867 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
869         * constexpr.cc (cxx_eval_constant_expression): Handle
870         OMP_STRUCTURED_BLOCK.
871         * pt.cc (tsubst_expr): Likewise.
873 2023-08-25  Uros Bizjak  <ubizjak@gmail.com>
875         * call.cc (build_conditional_expr):
876         Rename TRUE/FALSE to true/false.
877         (build_new_op): Ditto.
879 2023-08-22  Jason Merrill  <jason@redhat.com>
881         * pt.cc (outer_template_args): Handle non-template argument.
882         * constraint.cc (maybe_substitute_reqs_for): Pass decl to it.
883         * cp-tree.h (outer_template_args): Adjust.
885 2023-08-22  Jason Merrill  <jason@redhat.com>
887         PR c++/109751
888         * cp-tree.h (member_like_constrained_friend_p): Declare.
889         * decl.cc (member_like_constrained_friend_p): New.
890         (function_requirements_equivalent_p): Check it.
891         (duplicate_decls): Check it.
892         (grokfndecl): Check friend template constraints.
893         * mangle.cc (decl_mangling_context): Check it.
894         (write_unqualified_name): Check it.
895         * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends.
896         (tsubst_friend_function): Don't check satisfaction.
898 2023-08-22  Tobias Burnus  <tobias@codesourcery.com>
900         * parser.cc (cp_parser_omp_clause_defaultmap): Parse
901         'all' as category.
903 2023-08-15  Chung-Lin Tang  <cltang@codesourcery.com>
904             Thomas Schwinge  <thomas@codesourcery.com>
906         * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
908 2023-08-14  gnaggnoyil  <gnaggnoyil@gmail.com>
910         DR 2386
911         PR c++/110216
912         * decl.cc (get_tuple_size): Update implementation for DR 2386.
914 2023-08-14  Jason Merrill  <jason@redhat.com>
916         * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14
917         -fconcepts.
919 2023-08-12  Patrick Palka  <ppalka@redhat.com>
920             Jason Merrill  <jason@redhat.com>
922         PR c++/106604
923         * decl.cc (redeclaration_error_message): Remove special handling
924         for deduction guides.
925         (grokfndecl): Give deduction guides a dummy DECL_INITIAL.
927 2023-08-11  Patrick Palka  <ppalka@redhat.com>
929         PR c++/110927
930         * parser.cc (cp_parser_type_requirement): Pass
931         check_dependency_p=true instead of =false.
933 2023-08-11  Patrick Palka  <ppalka@redhat.com>
935         PR c++/71954
936         * decl.cc (grokdeclarator): Pass 'dname' instead of
937         'unqualified_id' as the name when building the VAR_DECL for a
938         static data member.  Call check_explicit_specialization for a
939         TEMPLATE_ID_EXPR such member.
940         * pt.cc (finish_member_template_decl): Return NULL_TREE
941         instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not
942         set.
944 2023-08-11  Patrick Palka  <ppalka@redhat.com>
946         * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and
947         TS_DECL_COMMON only when necessary.  Print DECL_TEMPLATE_INFO
948         for all decls that have it, not just VAR_DECL or FUNCTION_DECL.
949         Also print DECL_USE_TEMPLATE.
950         (cxx_print_type): Print TYPE_TEMPLATE_INFO.
951         <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS
952         anymore.
953         <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX
954         instead of printing the index, level and original level
955         individually.
957 2023-08-08  Marek Polacek  <polacek@redhat.com>
959         * parser.cc (cp_parser_postfix_expression): Adjust the call to
960         cp_parser_braced_list.
961         (cp_parser_postfix_open_square_expression): Likewise.
962         (cp_parser_new_initializer): Likewise.
963         (cp_parser_assignment_expression): Adjust the call to
964         cp_parser_initializer_clause.
965         (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer.
966         (cp_parser_range_for): Adjust the call to cp_parser_braced_list.
967         (cp_parser_jump_statement): Likewise.
968         (cp_parser_mem_initializer): Likewise.
969         (cp_parser_template_argument): Likewise.
970         (cp_parser_default_argument): Adjust the call to cp_parser_initializer.
971         (cp_parser_initializer): Handle null is_direct_init and non_constant_p
972         arguments.
973         (cp_parser_initializer_clause): Handle null non_constant_p argument.
974         (cp_parser_braced_list): Likewise.
975         (cp_parser_initializer_list): Likewise.
976         (cp_parser_member_declaration): Adjust the call to
977         cp_parser_initializer_clause and cp_parser_initializer.
978         (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list.
979         (cp_parser_functional_cast): Likewise.
980         (cp_parser_late_parse_one_default_arg): Adjust the call to
981         cp_parser_initializer.
982         (cp_parser_omp_for_loop_init): Likewise.
983         (cp_parser_omp_declare_reduction_exprs): Likewise.
985 2023-08-08  Nathaniel Shead  <nathanieloshead@gmail.com>
987         PR c++/100482
988         * parser.cc (cp_parser_decltype_expr): Report errors raised by
989         finish_id_expression.
991 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
993         * cp-tree.h (RANGE_FOR_NOVECTOR): New.
994         (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt,
995         finish_for_cond): Add novector param.
996         * init.cc (build_vec_init): Default novector to false.
997         * method.cc (build_comparison_op): Likewise.
998         * parser.cc (cp_parser_statement): Likewise.
999         (cp_parser_for, cp_parser_c_for, cp_parser_range_for,
1000         cp_convert_range_for, cp_parser_iteration_statement,
1001         cp_parser_omp_for_loop, cp_parser_pragma): Support novector.
1002         (cp_parser_pragma_novector): New.
1003         * pt.cc (tsubst_expr): Likewise.
1004         * semantics.cc (finish_while_stmt_cond, finish_do_stmt,
1005         finish_for_cond): Likewise.
1007 2023-08-01  Lewis Hyatt  <lhyatt@gmail.com>
1009         * parser.cc (c_init_preprocess): New function.
1010         (maybe_read_tokens_for_pragma_lex): New function.
1011         (pragma_lex): Support preprocess-only mode.
1012         (pragma_lex_discard_to_eol): New function.
1014 2023-07-31  Chung-Lin Tang  <cltang@codesourcery.com>
1016         * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC
1017         host_data construct to have an use_device clause.
1019 2023-07-28  Ng YongXiang  <yongxiangng@gmail.com>
1021         PR c++/110057
1022         PR ipa/83054
1023         * init.cc (build_vec_delete_1): Devirtualize array destruction.
1025 2023-07-27  Patrick Palka  <ppalka@redhat.com>
1027         PR c++/110197
1028         * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an
1029         empty subobject even if CONSTRUCTOR_NO_CLEARING is set.
1030         (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally
1031         whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx,
1032         i.e. whenever initializing an subobject of empty type.
1033         (cxx_eval_vec_init_1): Define 'no_slot' as above and use it
1034         accordingly.
1036 2023-07-27  Nathaniel Shead  <nathanieloshead@gmail.com>
1038         PR c++/103497
1039         * pt.cc (type_uses_auto): Check inside parameter packs.
1041 2023-07-26  Patrick Palka  <ppalka@redhat.com>
1043         PR c++/110566
1044         PR c++/108179
1045         * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO
1046         on the DECL_TEMPLATE_RESULT of the new ttp.
1047         (add_defaults_to_ttp): Make a copy of the original ttp's
1048         DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO
1049         as well.
1050         (coerce_template_template_parms): Make sure 'scope_args' has
1051         the right amount of levels for the ttp argument.
1052         (most_general_template): Handle template template parameters.
1053         (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the
1054         DECL_TEMPLATE_RESULT of the new ttp.
1056 2023-07-26  Patrick Palka  <ppalka@redhat.com>
1058         PR c++/110566
1059         PR c++/108179
1060         * pt.cc (coerce_template_template_parms): Simplify by using
1061         DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts.
1062         Always pass the parameters of the most general template to
1063         coerce_template_parms.
1065 2023-07-26  Patrick Palka  <ppalka@redhat.com>
1067         PR c++/110809
1068         * pt.cc (unify) <case INTEGER_CST>: Generalize to handle
1069         REAL_CST as well.
1071 2023-07-26  Marek Polacek  <polacek@redhat.com>
1073         * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be
1074         nullptr even when allow_non_constant_p is true.  Don't call
1075         _rvalue_constant_expression when not necessary.  Move local variable
1076         declarations closer to their first use.
1077         (cp_parser_static_assert): Don't pass a dummy down to
1078         cp_parser_constant_expression.
1080 2023-07-26  Jason Merrill  <jason@redhat.com>
1082         PR c++/106310
1083         * parser.cc (cp_parser_template_name): Skip non-member
1084         lookup after the template keyword.
1085         (cp_parser_lookup_name): Pass down template_keyword_p.
1087 2023-07-26  Nathaniel Shead  <nathanieloshead@gmail.com>
1089         PR c++/96630
1090         PR c++/98675
1091         PR c++/70331
1092         * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New
1093         function.
1094         (constexpr_global_ctx::get_value): Don't return expired values.
1095         (constexpr_global_ctx::get_value_ptr): Likewise.
1096         (constexpr_global_ctx::remove_value): Mark value outside
1097         lifetime.
1098         (outside_lifetime_error): New function.
1099         (cxx_eval_call_expression): No longer track save_exprs.
1100         (cxx_eval_loop_expr): Likewise.
1101         (cxx_eval_constant_expression): Add checks for outside lifetime
1102         values. Remove local variables at end of bind exprs, and
1103         temporaries after cleanup points.
1105 2023-07-26  Nathaniel Shead  <nathanieloshead@gmail.com>
1107         PR c++/110619
1108         * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to
1109         not return dangling pointers.
1110         * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag.
1111         (check_return_expr): Add a new parameter.
1112         * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR
1113         when referring to dangling pointer.
1114         * typeck.cc (check_return_expr): Disable transformation of
1115         dangling pointers, instead pass this information to caller.
1117 2023-07-26  Nathaniel Shead  <nathanieloshead@gmail.com>
1119         * constexpr.cc (modifying_const_object_error): Find the source
1120         location of the const object's declaration.
1121         (cxx_eval_constant_expression): Update input_location to the
1122         location of the currently evaluated expression, if possible.
1124 2023-07-25  Marek Polacek  <polacek@redhat.com>
1126         PR c++/108960
1127         * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial
1128         here.
1129         (instantiate_template): Reset all complain flags except
1130         tf_warning_or_error.
1132 2023-07-25  Marek Polacek  <polacek@redhat.com>
1134         PR c++/110382
1135         * constexpr.cc (cxx_eval_array_reference): Create a new constructor
1136         only when we don't already have a matching one.  Clear the object
1137         when the type is non-scalar.
1139 2023-07-21  Marek Polacek  <polacek@redhat.com>
1141         PR c++/110106
1142         * constexpr.cc (potential_constant_expression_1): Try to complete the
1143         type when !processing_template_decl.
1145 2023-07-20  Marek Polacek  <polacek@redhat.com>
1147         PR c++/110114
1148         * call.cc (implicit_conversion_1): Return early if the type isn't
1149         complete.
1151 2023-07-19  Marek Polacek  <polacek@redhat.com>
1153         PR c++/110745
1154         * error.cc (dump_simple_decl): Print base class name.
1156 2023-07-19  Marek Polacek  <polacek@redhat.com>
1158         PR c++/110064
1159         * typeck2.cc (process_init_constructor_record): Don't emit
1160         -Wmissing-field-initializers for empty classes.
1162 2023-07-19  Patrick Palka  <ppalka@redhat.com>
1164         * pt.cc (type_unification_real): Test for PARM_DECL instead
1165         of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
1166         template parameter pack.
1167         (type_targs_deducible_from): Likewise.
1169 2023-07-19  Patrick Palka  <ppalka@redhat.com>
1171         * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table'
1172         flag parameter.  Don't look up or insert into the specializations
1173         table if 'use_spec_table' is false.
1174         (tsubst_decl): Add defaulted 'use_spec_table' flag parameter.
1175         Check for error_mark_node.
1176         <case FUNCTION_DECL>: Pass 'use_spec_table' to
1177         tsubst_function_decl.
1178         <case TYPE/VAR_DECL>: Don't call coerce_template_parms.
1179         Don't look up or insert into the specializations table if
1180         'use_spec_table' is false.  Exit earlier if the substituted
1181         type is erroneous and we're not complaining, and do so for
1182         alias specializations as well.
1183         (instantiate_template): Pass false as 'use_spec_table'
1184         to tsubst_decl.  Call register_specialization afterwards.
1186 2023-07-18  Jason Merrill  <jason@redhat.com>
1188         * constexpr.cc (cxx_eval_bit_cast): Check that the result of
1189         native_interpret_aggregate doesn't need more evaluation.
1191 2023-07-18  Patrick Palka  <ppalka@redhat.com>
1193         * call.cc (add_template_conv_candidate): Don't check for
1194         non-empty 'candidates' here.
1195         (build_op_call): Check it here, before we've considered any
1196         conversion functions.
1198 2023-07-18  Patrick Palka  <ppalka@redhat.com>
1200         PR c++/110535
1201         * call.cc (add_conv_candidate): Check constraints.
1203 2023-07-17  Jason Merrill  <jason@redhat.com>
1205         * constexpr.cc (cxx_eval_call_expression): Only cache
1206         reduced_constant_expression_p results.
1207         (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type.
1208         (cxx_eval_constant_expression): Fold vectors here.
1209         (cxx_eval_bare_aggregate): Not here.
1211 2023-07-15  Patrick Palka  <ppalka@redhat.com>
1213         PR c++/110441
1214         * call.cc (keep_unused_object_arg): Use cp_build_compound_expr
1215         instead of building a COMPOUND_EXPR directly.
1217 2023-07-15  Patrick Palka  <ppalka@redhat.com>
1219         PR c++/110524
1220         * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
1221         whose template is already an IDENTIFIER_NODE.
1223 2023-07-14  Nathaniel Shead  <nathanieloshead@gmail.com>
1225         * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
1227 2023-07-14  Jason Merrill  <jason@redhat.com>
1229         PR c++/110344
1230         * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling
1231         after heap handling.
1232         * name-lookup.cc (get_cxx_dialect_name): Add C++26.
1234 2023-07-14  Marek Polacek  <polacek@redhat.com>
1235             Jason Merrill  <jason@redhat.com>
1237         PR c++/109876
1238         * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing
1239         an object of empty class type.
1240         * pt.cc (value_dependent_expression_p) <case VAR_DECL>: Treat a
1241         constexpr-declared non-constant variable as value-dependent.
1243 2023-07-11  Patrick Palka  <ppalka@redhat.com>
1245         PR c++/110580
1246         * pt.cc (lookup_template_variable): Pass all levels of arguments
1247         to coerce_template_parms, and use the parameters from the most
1248         general template.
1250 2023-07-10  Patrick Palka  <ppalka@redhat.com>
1252         PR c++/110523
1253         * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT
1254         assert, and downgrade it to a checking assert.
1256 2023-06-30  Patrick Palka  <ppalka@redhat.com>
1258         * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden.
1259         (TEMPLATE_TYPE_DESCENDANTS): Define.
1260         (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define.
1261         * pt.cc (reduce_template_parm_level): Revert
1262         r14-418-g0bc2a1dc327af9 change.
1263         (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P
1264         appropriately.
1265         (uses_outer_template_parms): Determine the outer depth of
1266         a template template parm without relying on DECL_CONTEXT.
1267         (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
1268         simple template template parm.  Consistently use 'code'.
1270 2023-06-29  Patrick Palka  <ppalka@redhat.com>
1272         PR c++/110468
1273         * init.cc (maybe_instantiate_nsdmi_init): Mask out all
1274         tsubst flags except for tf_warning_or_error.
1276 2023-06-29  Patrick Palka  <ppalka@redhat.com>
1278         PR c++/110463
1279         * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
1280         CONSTRUCTOR_MUTABLE_POISON.
1282 2023-06-29  Patrick Palka  <ppalka@redhat.com>
1284         * cp-tree.h (tree_template_info::partial): New data member.
1285         (TI_PARTIAL_INFO): New tree accessor.
1286         (most_specialized_partial_spec): Add defaulted bool parameter.
1287         * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream
1288         TI_PARTIAL_INFO.
1289         (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise.
1290         * parser.cc (specialization_of): Adjust after making
1291         most_specialized_partial_spec return TEMPLATE_INFO instead
1292         of TREE_LIST.
1293         * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO
1294         of 'decl' to point back to the partial TEMPLATE_DECL.  Likewise
1295         (and pass rechecking=true to most_specialization_partial_spec).
1296         (instantiate_class_template): Likewise.
1297         (instantiate_template): Set TI_PARTIAL_INFO to the result of
1298         most_specialization_partial_spec after forming a variable
1299         template specialization.
1300         (most_specialized_partial_spec): Add 'rechecking' parameter.
1301         Exit early if the template is not primary.  Use the TI_PARTIAL_INFO
1302         of the corresponding TEMPLATE_INFO as a cache unless 'rechecking'
1303         is true.  Don't bother setting TREE_TYPE of each TREE_LIST.
1304         (instantiate_decl): Adjust after making
1305         most_specialized_partial_spec return TEMPLATE_INFO instead of
1306         TREE_LIST.
1307         * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump
1308         TI_PARTIAL_INFO.
1310 2023-06-29  Eugene Rozenfeld  <erozen@microsoft.com>
1312         * Make-lang.in: Pass correct stage cc1plus when processing
1313         profile data collected while building target libraries
1315 2023-06-28  Patrick Palka  <ppalka@redhat.com>
1317         PR c++/89442
1318         PR c++/107437
1319         * cp-tree.h (lookup_template_variable): Add complain parameter.
1320         * parser.cc (cp_parser_template_id): Pass tf_warning_or_error
1321         to lookup_template_variable.
1322         * pt.cc (lookup_template_variable): Add complain parameter.
1323         Coerce template arguments here ...
1324         (finish_template_variable): ... instead of here.
1325         (lookup_and_finish_template_variable): Check for error_mark_node
1326         result from lookup_template_variable.
1327         (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to
1328         lookup_template_variable.
1329         (instantiate_template): Use build2 instead of
1330         lookup_template_variable to build a TEMPLATE_ID_EXPR
1331         for most_specialized_partial_spec.
1333 2023-06-28  Marek Polacek  <polacek@redhat.com>
1335         PR c++/110175
1336         * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
1338 2023-06-28  Jason Merrill  <jason@redhat.com>
1340         PR c++/110334
1341         * cp-tree.h (clone_attrs): Declare.
1342         * method.cc (implicitly_declare_fn): Use it for inherited
1343         constructor.
1344         * optimize.cc (clone_attrs): New.
1345         (maybe_clone_body): Use it.
1347 2023-06-28  Jason Merrill  <jason@redhat.com>
1349         PR c++/110344
1350         * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast
1351         from void* to the type of a pointed-to object.
1353 2023-06-23  David Malcolm  <dmalcolm@redhat.com>
1355         PR c++/110164
1356         * cp-name-hint.h (maybe_suggest_missing_header): New decl.
1357         * decl.cc: Define INCLUDE_MEMORY.  Add include of
1358         "cp/cp-name-hint.h".
1359         (start_decl_1): Call maybe_suggest_missing_header.
1360         * name-lookup.cc (maybe_suggest_missing_header): Remove "static".
1362 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
1364         * parser.cc (cp_parser_enum_specifier): Don't reject
1365         elaborated-type-specifier with enum-base, instead emit new
1366         Welaborated-enum-base warning.
1368 2023-06-14  Jason Merrill  <jason@redhat.com>
1370         DR 2327
1371         PR c++/86521
1372         * call.cc (joust_maybe_elide_copy): Don't change cand.
1373         (joust): Move the elided tiebreaker later.
1375 2023-06-13  David Malcolm  <dmalcolm@redhat.com>
1377         PR c/84890
1378         * name-lookup.cc (missing_std_header::~missing_std_header): Reword
1379         note to avoid negative tone of "forgetting".
1381 2023-06-13  Jason Merrill  <jason@redhat.com>
1383         * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
1385 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
1387         * parser.cc (cp_parser_omp_clause_map): Reword error message for
1388         clearness especially with 'omp target (enter/exit) data.'
1389         * semantics.cc (handle_omp_array_sections): Handle
1390         GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values.
1392 2023-06-12  Jason Merrill  <jason@redhat.com>
1394         PR c++/105838
1395         * call.cc (convert_like_internal) [ck_list]: Use
1396         maybe_init_list_as_array.
1397         * constexpr.cc (cxx_eval_vec_init_1): Init might have
1398         a different type.
1399         * tree.cc (build_vec_init_elt): Likewise.
1400         * init.cc (build_vec_init): Handle from_array from a
1401         TARGET_EXPR.  Retain TARGET_EXPR of a different type.
1403 2023-06-11  Patrick Palka  <ppalka@redhat.com>
1405         PR c++/110122
1406         * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted
1407         functions needed for constant evaluation.
1408         (instantiate_cx_fn_r): Likewise.
1410 2023-06-11  Patrick Palka  <ppalka@redhat.com>
1412         PR c++/110122
1413         * pt.cc (lookup_template_class): Extend shortcut for looking up the
1414         current class scope to consider outer class scopes too, and use
1415         current_nonlambda_class_type instead of current_class_type.  Only
1416         call coerce_template_parms when specializing a primary template.
1418 2023-06-10  Nathan Sidwell  <nathan@acm.org>
1420         PR c++/61663
1421         * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
1423 2023-06-09  Jason Merrill  <jason@redhat.com>
1425         PR c++/110185
1426         PR c++/58487
1427         * method.cc (build_comparison_op): Give retval a name.
1428         * typeck.cc (check_return_expr): Fix for nameless variables.
1430 2023-06-09  Jason Merrill  <jason@redhat.com>
1432         * parser.cc (cp_parser_simple_type_specifier): Check for auto
1433         in template argument.
1434         (cp_parser_template_type_arg): Remove auto checking.
1436 2023-06-09  Jason Merrill  <jason@redhat.com>
1438         PR c++/110102
1439         * call.cc (maybe_init_list_as_array): Check that the element type is
1440         copyable.
1442 2023-06-07  Jason Merrill  <jason@redhat.com>
1444         PR c++/58487
1445         PR c++/53637
1446         * cp-tree.h (INIT_EXPR_NRV_P): New.
1447         * semantics.cc (finalize_nrv_r): Check it.
1448         * name-lookup.h (decl_in_scope_p): Declare.
1449         * name-lookup.cc (decl_in_scope_p): New.
1450         * typeck.cc (check_return_expr): Allow non-NRV
1451         returns if the NRV is no longer in scope.
1453 2023-06-07  Jason Merrill  <jason@redhat.com>
1455         PR c++/58487
1456         * typeck.cc (want_nrvo_p): New.
1457         (check_return_expr): Handle -Wnrvo.
1459 2023-06-07  Jason Merrill  <jason@redhat.com>
1461         PR c++/51571
1462         PR c++/92407
1463         * decl.cc (finish_function): Simplify NRV handling.
1464         * except.cc (maybe_set_retval_sentinel): Also set if NRV.
1465         (maybe_splice_retval_cleanup): Don't add the cleanup region
1466         if we don't need it.
1467         * semantics.cc (nrv_data): Add simple field.
1468         (finalize_nrv): Set it.
1469         (finalize_nrv_r): Check it and retval sentinel.
1470         * cp-tree.h (finalize_nrv): Adjust declaration.
1471         * typeck.cc (check_return_expr): Remove named_labels check.
1473 2023-06-07  Jason Merrill  <jason@redhat.com>
1475         PR c++/92407
1476         * typeck.cc (check_return_expr): Prevent NRV in the presence of
1477         named labels.
1479 2023-06-07  Jason Merrill  <jason@redhat.com>
1481         PR c++/33799
1482         * except.cc (maybe_splice_retval_cleanup): Change
1483         recognition of function body and try scopes.
1484         * semantics.cc (do_poplevel): Call it after poplevel.
1485         (at_try_scope): New.
1486         * cp-tree.h (maybe_splice_retval_cleanup): Adjust.
1488 2023-06-07  Jason Merrill  <jason@redhat.com>
1490         * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
1491         INIT_EXPR.
1493 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
1494             Tobias Burnus  <tobias@codesourcery.com>
1496         * parser.cc (cp_parser_omp_clause_defaultmap,
1497         cp_parser_omp_clause_map): Parse 'present'.
1498         (cp_parser_omp_clause_from_to): New; parse to/from
1499         clauses with optional 'present' modifier.
1500         (cp_parser_omp_all_clauses): Update call.
1501         (cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
1502         cp_parser_omp_target_exit_data): Handle new enum value for
1503         'present' mapping.
1504         * semantics.cc (finish_omp_target): Likewise.
1506 2023-06-04  Jason Merrill  <jason@redhat.com>
1508         PR c++/97720
1509         * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN.
1510         (call_terminate_fn): New macro.
1511         * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it.
1512         * except.cc (init_exception_processing): Set it.
1513         (cp_protect_cleanup_actions): Return it.
1515 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1517         PR c++/109923
1518         * pt.cc (is_specialization_of_friend): Fix overbroad check for
1519         a non-template member function of a class template.
1521 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1523         * pt.cc (iterative_hash_template_arg): Don't hash
1524         TEMPLATE_TEMPLATE_PARM specially.
1526 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1528         * class.cc (build_base_path): Check in_template_context instead
1529         of in_template_function.
1530         (resolves_to_fixed_type_p): Likewise.
1531         * cp-tree.h (in_template_context): Define.
1532         (in_template_function): Remove.
1533         * decl.cc (cp_make_fname_decl): Check current_function_decl
1534         and in_template_context instead of in_template_function.
1535         * decl2.cc (mark_used): Check in_template_context instead of
1536         in_template_function.
1537         * pt.cc (in_template_function): Remove.
1538         * semantics.cc (enforce_access): Check in_template_context
1539         instead of current_template_parms directly.
1541 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1543         PR c++/70790
1544         * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
1546 2023-06-02  Jason Merrill  <jason@redhat.com>
1548         DR 2735
1549         PR c++/109247
1550         * call.cc (sfk_copy_or_move): New.
1551         (joust): Add tiebreaker for explicit conv and copy ctor.
1553 2023-06-02  Jason Merrill  <jason@redhat.com>
1555         PR c++/110070
1556         PR c++/105838
1557         * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE.
1558         (convert_like_internal) [ck_list]: Set it.
1559         (set_up_extended_ref_temp): Copy it.
1560         * tree.cc (handle_no_unique_addr_attribute): Set it.
1562 2023-06-01  Jason Merrill  <jason@redhat.com>
1564         * typeck2.cc (check_narrowing): Check flag_permissive.
1566 2023-05-30  Tobias Burnus  <tobias@codesourcery.com>
1568         PR c/109999
1569         * parser.cc (cp_parser_oacc_all_clauses,
1570         cp_parser_omp_all_clauses): Improve error wording.
1572 2023-05-19  Andrew Pinski  <apinski@marvell.com>
1574         PR driver/33980
1575         * lang-specs.h ("@c++-header"): Add %w after
1576         the --output-pch.
1577         ("@c++-system-header"): Likewise.
1578         ("@c++-user-header"): Likewise.
1580 2023-05-19  Patrick Palka  <ppalka@redhat.com>
1582         * constraint.cc (normalize_concept_check): Avoid having to do
1583         two norm_cache lookups.  Remove unnecessary early exit for an
1584         ill-formed concept definition.
1586 2023-05-19  Patrick Palka  <ppalka@redhat.com>
1588         PR c++/97340
1589         * pt.cc (lookup_and_finish_template_variable): Don't call
1590         convert_from_reference.
1591         (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
1592         convert_from_reference on the result of
1593         lookup_and_finish_template_variable.
1595 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1597         * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h.
1598         (build_conditional_expr): Ditto.
1599         (convert_like_internal): Ditto.
1600         (convert_arg_to_ellipsis): Ditto.
1601         (build_over_call): Ditto.
1602         (compare_ics): Ditto.
1603         * class.cc (is_empty_base_ref): Ditto.
1604         * coroutines.cc (rewrite_param_uses): Ditto.
1605         * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto.
1606         (ARITHMETIC_TYPE_P): Ditto.
1607         * cvt.cc (ocp_convert): Ditto.
1608         * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto.
1609         * decl.cc (layout_var_decl): Ditto.
1610         (get_tuple_size): Ditto.
1611         * error.cc (dump_simple_decl): Ditto.
1612         * lambda.cc (start_lambda_scope): Ditto.
1613         * mangle.cc (write_template_arg): Ditto.
1614         * method.cc (spaceship_comp_cat): Ditto.
1615         * module.cc (node_template_info): Ditto.
1616         (trees_out::start): Ditto.
1617         (trees_out::decl_node): Ditto.
1618         (trees_in::read_var_def): Ditto.
1619         (set_instantiating_module): Ditto.
1620         * name-lookup.cc (maybe_record_mergeable_decl): Ditto.
1621         (consider_decl): Ditto.
1622         (maybe_add_fuzzy_decl): Ditto.
1623         * pt.cc (convert_nontype_argument): Ditto.
1624         * semantics.cc (handle_omp_array_sections_1): Ditto.
1625         (finish_omp_clauses): Ditto.
1626         (finish_omp_target_clauses_r): Ditto.
1627         (is_this_parameter): Ditto.
1628         * tree.cc (build_cplus_array_type): Ditto.
1629         (is_this_expression): Ditto.
1630         * typeck.cc (do_warn_enum_conversions): Ditto.
1631         * typeck2.cc (store_init_value): Ditto.
1632         (check_narrowing): Ditto.
1634 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
1636         PR c++/109868
1637         * init.cc (build_zero_init_1): Don't initialize zero-width bitfields.
1638         For unions only initialize the first FIELD_DECL.
1640 2023-05-16  Marek Polacek  <polacek@redhat.com>
1642         PR c++/109774
1643         * typeck.cc (check_return_expr): In a template, return only after
1644         suppressing -Wdangling-reference.
1646 2023-05-16  Patrick Palka  <ppalka@redhat.com>
1648         PR c++/109871
1649         * call.cc (add_list_candidates): Check for invalid designated
1650         initialization sooner and even for types that have a list
1651         constructor.
1653 2023-05-11  Patrick Palka  <ppalka@redhat.com>
1655         PR c++/109745
1656         * typeck2.cc (poison_mutable_constructors): Define.
1657         (store_init_value): Use it instead of setting
1658         CONSTRUCTOR_MUTABLE_POISON directly.
1660 2023-05-11  Patrick Palka  <ppalka@redhat.com>
1661             Jonathan Wakely  <jwakely@redhat.com>
1663         PR c++/83258
1664         PR c++/80488
1665         PR c++/97700
1666         * pt.cc (convert_nontype_argument_function): Remove linkage
1667         requirement for C++17 and later.
1668         (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict
1669         DECL_ARTIFICIAL rejection test to VAR_DECL.
1671 2023-05-10  Marek Polacek  <polacek@redhat.com>
1673         PR c++/109680
1674         * method.cc (build_trait_object): New.
1675         (assignable_expr): Use it.
1676         (ref_xes_from_temporary): Likewise.
1677         (is_convertible_helper): Likewise.  Check FUNC_OR_METHOD_TYPE_P.
1679 2023-05-10  Jason Merrill  <jason@redhat.com>
1681         * call.cc (convert_like_internal): Share ck_ref_bind handling
1682         between all bad conversions.
1684 2023-05-10  Jason Merrill  <jason@redhat.com>
1686         DR 2543
1687         * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve
1688         TARGET_EXPR flags.
1689         (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P.
1690         * typeck2.cc (store_init_value): Diagnose constinit sooner.
1692 2023-05-10  Jason Merrill  <jason@redhat.com>
1694         * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
1695         for address of immediate fn.
1696         (maybe_constant_init_1): Evaluate PTRMEM_CST.
1698 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
1700         PR c++/109756
1701         * parser.cc (cp_parser_std_attribute): For unknown attributes with
1702         arguments set TREE_VALUE (attribute) to error_mark_node after skipping
1703         the balanced tokens.
1704         (cp_parser_std_attribute_list): If ... is used after attribute without
1705         arguments, diagnose it and return error_mark_node.  If
1706         TREE_VALUE (attribute) is error_mark_node, don't call
1707         make_pack_expansion nor return early error_mark_node.
1709 2023-05-09  Patrick Palka  <ppalka@redhat.com>
1711         PR c++/109752
1712         * constraint.cc (satisfaction_cache::satisfaction_cache): In the
1713         unexpected case of evaluating an atom for the first time noisily,
1714         remove the cache slot that we inserted.
1716 2023-05-09  Patrick Palka  <ppalka@redhat.com>
1718         PR c++/109761
1719         * parser.cc (cp_parser_class_specifier): Don't pass a class
1720         context to noexcept_override_late_checks.
1721         (noexcept_override_late_checks): Remove 'type' parameter
1722         and use DECL_CONTEXT of 'fndecl' instead.
1724 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
1726         PR c++/109756
1727         * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
1728         expansion of assume attribute.
1730 2023-05-08  Patrick Palka  <ppalka@redhat.com>
1732         PR c++/106214
1733         PR c++/93107
1734         * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context
1735         calls to happen before do_class_deduction.  Add some
1736         error_mark_node tests.
1738 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1740         PR c++/85979
1741         * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
1742         <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
1743         * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
1745 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1747         DR 2256
1748         PR c++/103091
1749         * decl.cc (decl_jump_unsafe): Return bool instead of int.
1750         Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
1751         (check_previous_goto_1): Simplify now that decl_jump_unsafe
1752         returns bool instead of int.
1753         (check_goto): Likewise.
1755 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1757         * pt.cc (instantiate_alias_template): Exit early upon
1758         error from coerce_template_parms.  Remove dependence test
1759         guarding constraints_satisfied_p.
1761 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1763         * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via
1764         TEMPLATE_TYPE_PARM_CHECK.
1765         (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK.
1766         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via
1767         TEMPLATE_TEMPLATE_PARM_CHECK.
1768         * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier):
1769         Guard PLACEHOLDER_TYPE_CONSTRAINTS access.
1770         * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate
1771         variable to store CLASS_PLACEHOLDER_TEMPLATE result.
1772         * pt.cc (outer_template_args): Use strip_innermost_template_args.
1773         (any_type_dependent_arguments_p): Exit early if
1774         !processing_template_decl.  Use range-based for.
1775         (any_dependent_template_arguments_p): Likewise.
1777 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1779         PR c++/98283
1780         * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
1781         REF_PARENTHESIZED_P more generally via force_paren_expr.
1782         * semantics.cc (force_paren_expr): Document default argument.
1784 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1786         PR c++/109651
1787         * pt.cc (coerce_template_args_for_ttp): Mention we can hit the
1788         current_template_parms fallback when level-lowering a bound ttp.
1789         (tsubst_template_decl): Add lambda_tparms parameter.  Prefer to
1790         use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS.
1791         (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms
1792         to tsubst_template_decl.
1793         (tsubst_lambda_expr): For a generic lambda, substitute
1794         DECL_TEMPLATE_PARMS and set current_template_parms to it
1795         before substituting the function type.  Pass the substituted
1796         DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl.
1798 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1800         PR c++/109480
1801         * semantics.cc (enforce_access): Check current_template_parms
1802         instead of processing_template_decl when deciding whether to
1803         defer the access check.
1805 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1807         PR c++/109480
1808         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
1809         Reorganize to call get_fns sooner.  Remove special handling of
1810         the object argument of a non-static member function call.  Remove
1811         dead store to 'fun'.
1813 2023-05-05  Jason Merrill  <jason@redhat.com>
1815         Revert:
1816         2023-04-27  Jason Merrill  <jason@redhat.com>
1818         PR c++/61445
1819         * pt.cc (instantiate_decl): Assert !defer_ok for local
1820         class members.
1822 2023-05-03  Jason Merrill  <jason@redhat.com>
1824         PR c++/91618
1825         PR c++/109649
1826         * friend.cc (do_friend): Don't call check_explicit_specialization if
1827         DECL_TEMPLATE_INFO is already set.
1828         * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO.
1829         * name-lookup.cc (set_decl_namespace): Likewise.
1831 2023-05-03  Jakub Jelinek  <jakub@redhat.com>
1833         * cp-gimplify.cc (cp_fold_data): Move definition earlier.
1834         (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false
1835         constructed data rather than &pset to cp_walk_tree with cp_fold_r.
1837 2023-05-03  Jason Merrill  <jason@redhat.com>
1839         * pt.cc (reduce_template_parm_level): Fix comparison of
1840         template template parm to cached version.
1842 2023-05-02  Jason Merrill  <jason@redhat.com>
1844         * pt.cc (instantiate_class_template): Skip the RECORD_TYPE
1845         of a class template.
1846         (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE.
1848 2023-05-02  Jason Merrill  <jason@redhat.com>
1850         * name-lookup.cc (pop_from_top_level): Don't
1851         invalidate_class_lookup_cache.
1853 2023-05-02  Jason Merrill  <jason@redhat.com>
1855         PR c++/109678
1856         * cp-tree.h (lookup_base): Add offset parm.
1857         * constexpr.cc (cxx_fold_indirect_ref_1): Pass it.
1858         * search.cc (struct lookup_base_data_s): Add offset.
1859         (dfs_lookup_base): Handle it.
1860         (lookup_base): Pass it.
1862 2023-05-02  Jason Merrill  <jason@redhat.com>
1864         PR c++/109678
1865         * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
1867 2023-05-01  Jason Merrill  <jason@redhat.com>
1869         PR c++/109666
1870         * name-lookup.cc (maybe_push_to_top_level)
1871         (maybe_pop_from_top_level): Split out...
1872         * pt.cc (instantiate_body): ...from here.
1873         * init.cc (maybe_instantiate_nsdmi_init): Use them.
1874         * name-lookup.h: Declare them..
1876 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
1878         * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
1880 2023-04-27  Jason Merrill  <jason@redhat.com>
1882         * call.cc (print_conversion_rejection): Use iloc_sentinel.
1884 2023-04-27  Jason Merrill  <jason@redhat.com>
1886         PR c++/61445
1887         * pt.cc (instantiate_decl): Assert !defer_ok for local
1888         class members.
1890 2023-04-26  Jason Merrill  <jason@redhat.com>
1892         * init.cc (nsdmi_inst): Remove.
1893         (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
1895 2023-04-26  Jason Merrill  <jason@redhat.com>
1897         PR c++/109241
1898         * pt.cc (instantiate_class_template): Do partially instantiate.
1899         (tsubst_expr): Do call complete_type for partial instantiations.
1901 2023-04-26  Jason Merrill  <jason@redhat.com>
1903         PR c++/69836
1904         * pt.cc (regenerate_decl_from_template): Skip unique friends.
1906 2023-04-26  Patrick Palka  <ppalka@redhat.com>
1908         * pt.cc (most_specialized_partial_spec): Exit early when
1909         DECL_TEMPLATE_SPECIALIZATIONS is empty.  Move local variable
1910         declarations closer to their first use.  Remove redundant
1911         flag_concepts test.  Remove redundant forward declaration.
1913 2023-04-25  Patrick Palka  <ppalka@redhat.com>
1915         PR c++/108975
1916         * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
1917         Suppress conservative early exit for reference variables
1918         when DECL_HAS_VALUE_EXPR_P.
1920 2023-04-25  Tobias Burnus  <tobias@codesourcery.com>
1922         * parser.cc (cp_parser_omp_scan_loop_body): Handle
1923         zero exec statements before/after 'omp scan'.
1925 2023-04-24  Patrick Palka  <ppalka@redhat.com>
1927         * cp-tree.h (cp_expr_location): Define here.
1928         * tree.cc (cp_expr_location): Don't define here.
1930 2023-04-21  Jason Merrill  <jason@redhat.com>
1932         PR c++/108099
1933         * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned
1934         typedef' pedwarn.  Use c_common_signed_or_unsigned_type.  Also
1935         handle 'signed typedef'.
1937 2023-04-21  Patrick Palka  <ppalka@redhat.com>
1939         * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
1940         <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
1941         <case ALIGNOF_EXPR etc>: Likewise.
1943 2023-04-20  Patrick Palka  <ppalka@redhat.com>
1945         * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: Don't recurse when
1946         level lowering a cv-qualified type template parameter.  Remove
1947         recursive loop breaker in the level lowering case for constrained
1948         autos.  Use the TEMPLATE_PARM_DESCENDANTS cache in this case as
1949         well.
1951 2023-04-20  Patrick Palka  <ppalka@redhat.com>
1953         * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC
1954         of arguments into a TREE_LIST for sake of pretty printing.
1955         * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC
1956         instead of TREE_LIST of trailing variadic trait arguments.
1957         * method.cc (constructible_expr): Likewise.
1958         (is_xible_helper): Likewise.
1959         * parser.cc (cp_parser_trait): Represent trailing variadic trait
1960         arguments as a TREE_VEC instead of TREE_LIST.
1961         * pt.cc (value_dependent_expression_p): Handle TREE_VEC
1962         instead of TREE_LIST of trailing variadic trait arguments.
1963         * semantics.cc (finish_type_pack_element): Likewise.
1964         (check_trait_type): Likewise.
1966 2023-04-20  Patrick Palka  <ppalka@redhat.com>
1968         * tree.cc (strip_typedefs): Move TREE_LIST handling to
1969         strip_typedefs_expr.  Dispatch to strip_typedefs_expr for
1970         non-type 't'.
1971         <case TYPENAME_TYPE>: Remove manual dispatching to
1972         strip_typedefs_expr.
1973         <case TRAIT_TYPE>: Likewise.
1974         (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
1975         with strip_typedefs throughout.  Don't dispatch to strip_typedefs
1976         for type 't'.
1977         <case TREE_LIST>: Replace this with the better version from
1978         strip_typedefs.
1980 2023-04-19  Patrick Palka  <ppalka@redhat.com>
1981             Jonathan Wakely  <jwakely@redhat.com>
1983         PR c++/100157
1984         * cp-trait.def (TYPE_PACK_ELEMENT): Define.
1985         * cp-tree.h (finish_trait_type): Add complain parameter.
1986         * cxx-pretty-print.cc (pp_cxx_trait): Handle
1987         CPTK_TYPE_PACK_ELEMENT.
1988         * parser.cc (cp_parser_constant_expression): Document default
1989         arguments.
1990         (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT.  Pass
1991         tf_warning_or_error to finish_trait_type.
1992         * pt.cc (tsubst) <case TRAIT_TYPE>: Handle non-type first
1993         argument.  Pass complain to finish_trait_type.
1994         * semantics.cc (finish_type_pack_element): Define.
1995         (finish_trait_type): Add complain parameter.  Handle
1996         CPTK_TYPE_PACK_ELEMENT.
1997         * tree.cc (strip_typedefs): Handle non-type first argument.
1998         Pass tf_warning_or_error to finish_trait_type.
1999         * typeck.cc (structural_comptypes) <case TRAIT_TYPE>: Use
2000         cp_tree_equal instead of same_type_p for the first argument.
2002 2023-04-19  Patrick Palka  <ppalka@redhat.com>
2004         PR c++/109556
2005         * pt.cc (try_class_unification): Don't ggc_free the copy of
2006         'targs'.
2008 2023-04-19  Jason Merrill  <jason@redhat.com>
2010         PR c++/108099
2011         * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
2013 2023-04-17  Patrick Palka  <ppalka@redhat.com>
2015         PR c++/109531
2016         * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
2017         In the level-lowering case just use lookup_template_class
2018         to rebuild the bound ttp.
2020 2023-04-15  Jason Merrill  <jason@redhat.com>
2022         PR c++/109357
2023         * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
2024         Check for complex initializer.
2026 2023-04-13  Patrick Palka  <ppalka@redhat.com>
2028         PR c++/109420
2029         * decl.cc (make_typename_type): Also ignore non-types during the
2030         lookup if tag_type corresponds to an elaborated-type-specifier.
2031         * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or
2032         enum_type as tag_type to make_typename_type accordingly instead
2033         of always passing typename_type.
2035 2023-04-13  Jason Merrill  <jason@redhat.com>
2037         PR c++/109277
2038         * semantics.cc (check_trait_type): Handle incomplete type directly.
2039         * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert.
2041 2023-04-13  Jason Merrill  <jason@redhat.com>
2043         * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
2044         * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
2046 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
2048         * Make-lang.in (s-cp-module-version): New target.
2049         (cp/module.o): Depend on it.
2050         (MODULE_VERSION): Remove variable.
2051         (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just
2052         cat s-cp-module-version.
2054 2023-04-09  Iain Sandoe  <iain@sandoe.co.uk>
2056         * coroutines.cc (coro_rewrite_function_body): Ensure that added
2057         bind expressions have scope blocks.
2059 2023-04-04  Jason Merrill  <jason@redhat.com>
2061         PR c++/107484
2062         * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
2064 2023-04-03  Patrick Palka  <ppalka@redhat.com>
2066         PR c++/109300
2067         * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
2068         with no initializer, instead of asserting.
2070 2023-04-01  Patrick Palka  <ppalka@redhat.com>
2072         PR c++/109160
2073         * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter.
2074         * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to
2075         do_auto_deduction.
2076         (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
2077         'in_decl' to coerce_template_parms.
2078         (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE
2079         as 'tmpl' to do_auto_deduction.
2080         (do_auto_deduction): Document default arguments.  Rename local
2081         variable 'tmpl' to 'ctmpl'.  Use 'tmpl' to obtain a full set of
2082         template arguments for satisfaction in the adc_unify case.
2084 2023-04-01  Patrick Palka  <ppalka@redhat.com>
2086         PR c++/53164
2087         PR c++/105848
2088         * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of
2089         FUNCTION_DECL.
2090         (instantiate_class_template): Call mark_template_arguments_used.
2091         (tsubst_copy_and_build) <case CALL_EXPR>: Revert r13-995 change.
2092         (mark_template_arguments_used): Define.
2093         (instantiate_body): Call mark_template_arguments_used.
2095 2023-04-01  Iain Sandoe  <iain@sandoe.co.uk>
2097         PR c++/101118
2098         * coroutines.cc (flatten_await_stmt): Use the current count of
2099         promoted temporaries to build a unique name for the frame entries.
2101 2023-03-30  Jason Merrill  <jason@redhat.com>
2103         PR c++/105452
2104         * search.cc (type_context_for_name_lookup): New.
2105         (accessible_p): Handle anonymous union.
2106         * init.cc (maybe_instantiate_nsdmi_init): Use
2107         type_context_for_name_lookup.
2108         * parser.cc (cp_parser_class_specifier): Likewise.
2109         * cp-tree.h (type_context_for_name_lookup): Declare.
2111 2023-03-30  Jason Merrill  <jason@redhat.com>
2113         PR c++/105221
2114         * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
2115         conversions.
2117 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
2119         PR c++/109319
2120         * decl2.cc (grok_array_decl): After emitting a pedwarn for
2121         -Wcomma-subscript, if processing_template_decl set orig_index_exp
2122         to compound expr from orig_index_exp_list.
2124 2023-03-30  Jason Merrill  <jason@redhat.com>
2126         PR c++/107897
2127         PR c++/108887
2128         * decl2.cc (record_mangling): Use symtab_node::reset.
2130 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
2132         PR c++/109278
2133         * call.cc (convert_like_internal): If pedwarn for extended float
2134         type conversions doesn't report anything, avoid calling
2135         maybe_inform_about_fndecl_for_bogus_argument_init.
2137 2023-03-29  Jason Merrill  <jason@redhat.com>
2139         PR c++/109321
2140         PR c++/109320
2141         * pt.cc (alias_ctad_tweaks): Rewrite deduced args.
2142         (type_targs_deducible_from): Handle null pack deduction.
2144 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
2146         PR c/107002
2147         * parser.cc (cp_parser_binary_expression): Update for new param of
2148         check_for_xor_used_as_pow.
2150 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
2152         PR c++/109309
2153         * contracts.cc: Include intl.h.
2154         (check_postcondition_result): Don't form diagnostics from two halves
2155         of an English message to allow translations.
2157 2023-03-24  Patrick Palka  <ppalka@redhat.com>
2159         PR c++/106969
2160         * parser.cc (cp_parser_class_specifier): Clear current_class_ptr
2161         and current_class_ref sooner, before parsing a class definition.
2163 2023-03-24  Jason Merrill  <jason@redhat.com>
2165         PR c++/105481
2166         * pt.cc (type_unification_real): Adjust for partial ordering.
2168 2023-03-23  Jason Merrill  <jason@redhat.com>
2170         PR c++/105996
2171         * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
2172         and location wrappers.
2174 2023-03-23  Marek Polacek  <polacek@redhat.com>
2176         PR c++/107532
2177         * call.cc (class_has_reference_member_p): New.
2178         (class_has_reference_member_p_r): New.
2179         (reference_like_class_p): Don't look for a specific constructor.
2180         Use a DFS walk with class_has_reference_member_p_r.
2182 2023-03-23  Jason Merrill  <jason@redhat.com>
2184         PR c++/109241
2185         * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
2187 2023-03-22  Jason Merrill  <jason@redhat.com>
2189         PR c++/108390
2190         * pt.cc (unify): Use fold of build_nop instead of fold_convert.
2192 2023-03-22  Jason Merrill  <jason@redhat.com>
2194         PR c++/108795
2195         * semantics.cc (finish_id_expression_1): Check scope before
2196         returning id_expression.
2198 2023-03-22  Alex Coplan  <alex.coplan@arm.com>
2200         PR c++/109177
2201         * call.cc (build_over_call): Use make_temp_override to suppress
2202         both unavailable and deprecated warnings when calling
2203         build_addr_func.
2205 2023-03-21  Jason Merrill  <jason@redhat.com>
2207         PR c++/106890
2208         * init.cc (maybe_instantiate_nsdmi_init): Don't leave
2209         current_function_decl set to a constructor.
2211 2023-03-20  Marek Polacek  <polacek@redhat.com>
2213         PR c++/109159
2214         * call.cc (add_template_candidate_real): Add explicit decls to the
2215         set of candidates when the initializer is a braced-init-list.
2217 2023-03-20  Jakub Jelinek  <jakub@redhat.com>
2219         PR c++/109164
2220         * cp-tree.h (var_needs_tls_wrapper): Declare.
2221         * decl2.cc (var_needs_tls_wrapper): No longer static.
2222         * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables
2223         for which a TLS wrapper will be needed.
2225 2023-03-17  Jason Merrill  <jason@redhat.com>
2227         PR c++/108975
2228         * lambda.cc (prune_lambda_captures): Don't bother in a template.
2230 2023-03-17  Jason Merrill  <jason@redhat.com>
2232         PR c++/109172
2233         * except.cc (build_throw): Check dtor access.
2235 2023-03-17  Jason Merrill  <jason@redhat.com>
2237         PR c++/69410
2238         * friend.cc (do_friend): Handle namespace as scope argument.
2239         * decl.cc (grokdeclarator): Pass down in_namespace.
2241 2023-03-16  Jason Merrill  <jason@redhat.com>
2243         PR c++/105809
2244         * init.cc (get_nsdmi): Split out...
2245         (maybe_instantiate_nsdmi_init): ...this function.
2246         * cp-tree.h: Declare it.
2247         * pt.cc (tsubst_expr): Use it.
2249 2023-03-16  Jason Merrill  <jason@redhat.com>
2251         PR c++/108242
2252         * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
2254 2023-03-16  Jason Merrill  <jason@redhat.com>
2256         PR c++/101869
2257         * semantics.cc (finish_qualified_id_expr): Don't try to build a
2258         pointer-to-member if the scope is an enumeration.
2260 2023-03-16  Patrick Palka  <ppalka@redhat.com>
2262         PR c++/109030
2263         * constexpr.cc (maybe_constant_init_1): For an unevaluated
2264         non-manifestly-constant operand, don't constant evaluate
2265         and instead call fold_to_constant as in maybe_constant_value.
2267 2023-03-16  Patrick Palka  <ppalka@redhat.com>
2269         PR c++/100288
2270         * constraint.cc (satisfaction_cache::get): Relax overly strict
2271         checking assert in the constraint recursion case.
2273 2023-03-16  Jason Merrill  <jason@redhat.com>
2275         PR c++/105406
2276         * coroutines.cc (build_co_await): Handle lvalue 'o'.
2278 2023-03-15  Jason Merrill  <jason@redhat.com>
2280         PR c++/103871
2281         PR c++/98056
2282         * typeck.cc (cp_build_modify_expr): Allow array initialization of
2283         DECL_ARTIFICIAL variable.
2285 2023-03-15  Marek Polacek  <polacek@redhat.com>
2287         PR c++/107280
2288         * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
2290 2023-03-15  Jason Merrill  <jason@redhat.com>
2292         PR c++/58538
2293         * semantics.cc (check_template_template_default_arg): Check
2294         maybe_get_template_decl_from_type_decl.
2296 2023-03-15  Jason Merrill  <jason@redhat.com>
2298         PR c++/108179
2299         PR c++/104107
2300         PR c++/95036
2301         * pt.cc (coerce_template_template_parms): Use args from
2302         DECL_CONTEXT (arg_tmpl) instead of outer_args.
2304 2023-03-15  Jason Merrill  <jason@redhat.com>
2306         PR c++/108179
2307         * pt.cc (coerce_template_template_parms): Take the arg and parm
2308         templates directly.
2309         (coerce_template_template_parm): Adjust.
2310         (template_template_parm_bindings_ok_p): Adjust.
2311         (convert_template_argument): Adjust.
2313 2023-03-14  Patrick Palka  <ppalka@redhat.com>
2315         PR c++/96830
2316         * pt.cc (push_inline_template_parms_recursive): Set
2317         TEMPLATE_PARMS_CONSTRAINTS.
2318         (push_template_decl): For an out-of-line declaration, verify
2319         constraints for each enclosing template scope match those of the
2320         original template declaratation.
2322 2023-03-14  Patrick Palka  <ppalka@redhat.com>
2324         PR c++/96830
2325         * pt.cc (redeclare_class_template): Add missing "of" in
2326         constraint mismatch diagnostic.
2327         (tsubst_friend_class): For an already declared class template,
2328         substitute and pass the friend declaration's constraints to
2329         redeclare_class_template instead of passing the existing
2330         template's constraints.
2332 2023-03-14  Jason Merrill  <jason@redhat.com>
2334         PR c++/108468
2335         * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
2336         is non-null.
2338 2023-03-14  Jason Merrill  <jason@redhat.com>
2340         PR c++/107310
2341         * cp-gimplify.cc (genericize_if_stmt): Restore folding
2342         of constant conditions.
2344 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
2346         PR c++/109096
2347         * tree.cc (record_has_unique_obj_representations): Ignore unnamed
2348         bitfields.
2350 2023-03-13  Jason Merrill  <jason@redhat.com>
2352         PR c++/107128
2353         * parser.cc (cp_parser_set_decl_spec_type): Use
2354         redefined_builtin_type for extended_float_type_p.
2356 2023-03-13  Marek Polacek  <polacek@redhat.com>
2358         PR c++/107532
2359         * call.cc (reference_like_class_p): Check for std::span.
2361 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
2363         PR c++/107558
2364         * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on
2365         automatic non-aggregate variables just because of
2366         -fmerge-all-constants.
2368 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
2370         PR c++/109039
2371         * class.cc (end_of_class): For bit-fields, instead of computing
2372         offset as sum of byte_position (field) and DECL_SIZE_UNIT (field),
2373         compute it as sum of bit_position (field) and DECL_SIZE (field)
2374         divided by BITS_PER_UNIT rounded up.
2376 2023-03-10  Jason Merrill  <jason@redhat.com>
2378         PR c++/108972
2379         * lambda.cc (compare_lambda_template_head): Check more
2380         for error_mark_node.
2382 2023-03-10  Jason Merrill  <jason@redhat.com>
2384         PR c++/108566
2385         * mangle.cc (anon_aggr_naming_decl): New.
2386         (write_unqualified_name): Use it.
2388 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
2390         PR c/108079
2391         * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
2392         after diagnosing it.
2394 2023-03-10  Jason Merrill  <jason@redhat.com>
2396         PR c++/108099
2397         * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
2399 2023-03-10  Jason Merrill  <jason@redhat.com>
2401         PR c++/108542
2402         * class.cc (instantiate_type): Strip location wrapper.
2404 2023-03-09  Jason Merrill  <jason@redhat.com>
2406         PR c++/108773
2407         * init.cc (find_allocator_temps_r): New.
2408         (combine_allocator_temps): Replace find_allocator_temp.
2409         (build_vec_init): Adjust.
2411 2023-03-09  Jason Merrill  <jason@redhat.com>
2413         DR 2664
2414         PR c++/102529
2415         * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
2417 2023-03-09  Jason Merrill  <jason@redhat.com>
2418             Michael Spertus  <mike@spertus.com>
2420         PR c++/105841
2421         * pt.cc (corresponding_template_parameter_list): Split out...
2422         (corresponding_template_parameter): ...from here.
2423         (find_template_parameters): Factor out...
2424         (find_template_parameter_info::find_in): ...this function.
2425         (find_template_parameter_info::find_in_recursive): New.
2426         (find_template_parameter_info::found): New.
2427         (alias_ctad_tweaks): Only add parms used in the deduced args.
2429 2023-03-09  Jason Merrill  <jason@redhat.com>
2431         * cp-trait.def (IS_DEDUCIBLE): Add space to name.
2433 2023-03-09  Jason Merrill  <jason@redhat.com>
2435         PR c++/105841
2436         * cp-trait.def (IS_DEDUCIBLE): New.
2437         * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type.
2438         * parser.cc (cp_parser_trait): Likewise.
2439         * tree.cc (cp_tree_equal): Likewise.
2440         * pt.cc (tsubst_copy_and_build): Likewise.
2441         (type_targs_deducible_from): New.
2442         (alias_ctad_tweaks): Use it.
2443         * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE.
2444         (finish_trait_expr): Likewise.
2445         * constraint.cc (diagnose_trait_expr): Likewise.
2446         * cp-tree.h (type_targs_deducible_from): Declare.
2448 2023-03-07  Jason Merrill  <jason@redhat.com>
2450         PR c++/108526
2451         PR c++/106651
2452         * pt.cc (tsubst_function_decl): Don't replace the closure
2453         parameter if DECL_STATIC_FUNCTION_P.
2455 2023-03-07  Marek Polacek  <polacek@redhat.com>
2457         PR c++/107532
2458         * call.cc (reference_like_class_p): New.
2459         (do_warn_dangling_reference): Add new bool parameter.  See through
2460         reference_like_class_p.
2462 2023-03-07  Jakub Jelinek  <jakub@redhat.com>
2464         PR c++/109042
2465         * rtti.cc (emit_support_tinfo_1): Don't assert that last
2466         unemitted_tinfo_decls element is tinfo, instead pop from it only in
2467         that case.
2468         * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl
2469         for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL.
2471 2023-03-07  Marek Polacek  <polacek@redhat.com>
2473         PR c++/109030
2474         * constexpr.cc (cxx_eval_call_expression): Relax assert.
2476 2023-03-07  Marek Polacek  <polacek@redhat.com>
2478         PR c++/107939
2479         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
2480         'any' when recursing on a VAR_DECL and not a pointer to function.
2482 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
2484         PR c++/108702
2485         * constexpr.cc: Include toplev.h.
2486         (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a local
2487         static initialized by constant expression outside of a constexpr
2488         function which has been deferred by make_rtl_for_nonlocal_decl,
2489         call rest_of_decl_compilation on it.
2491 2023-03-03  Patrick Palka  <ppalka@redhat.com>
2493         PR c++/108998
2494         * pt.cc (el_data::skipped_trees): New data member.
2495         (extract_locals_r): Push to skipped_trees any unevaluated
2496         contexts that we skipped over.
2497         (extract_local_specs): For the second walk, start from each
2498         tree in skipped_trees.
2500 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
2502         * typeck.cc (cp_build_binary_op): Suppress redundant warning
2503         for pfn null test in pmfn test with vbit-in-delta.
2505 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
2507         PR target/108883
2508         * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE
2509         enumerators.
2510         (fallback_dfloat32_type, fallback_dfloat64_type,
2511         fallback_dfloat128_type): Remove.
2512         * rtti.cc (emit_support_tinfo_1): If not emitted already, call
2513         emit_tinfo_decl and remove from unemitted_tinfo_decls right away.
2514         (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array
2515         into new fundamentals_with_fallback array.  Call emit_support_tinfo_1
2516         on elements of that array too, with the difference that if
2517         the type is NULL, use a fallback REAL_TYPE for it temporarily.
2518         Drop the !targetm.decimal_float_supported_p () handling.  Call
2519         targetm.emit_support_tinfos at the end.
2520         * mangle.cc (write_builtin_type): Remove references to
2521         fallback_dfloat*_type.  Handle bfloat16_type_node mangling.
2523 2023-03-02  Patrick Palka  <ppalka@redhat.com>
2525         PR c++/108243
2526         PR c++/97553
2527         * cp-gimplify.cc (cp_fully_fold): Add an internal overload that
2528         additionally takes and propagate an mce_value parameter, and
2529         define the existing public overload in terms of it.
2530         (cp_fully_fold_init): Pass mce_false to cp_fully_fold.
2532 2023-03-02  Patrick Palka  <ppalka@redhat.com>
2534         PR c++/108243
2535         * constexpr.cc (maybe_constant_init_1): Override
2536         manifestly_const_eval to true if is_static.
2538 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
2540         PR debug/108716
2541         * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
2542         DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
2543         of USING_STMT or input_location.
2545 2023-03-02  Marek Polacek  <polacek@redhat.com>
2547         PR c++/106259
2548         * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first
2549         lookup of SPEC didn't find anything, try to look for
2550         most_general_template.
2552 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
2554         PR c++/105839
2555         * parser.cc (cp_convert_omp_range_for): Allow in assert
2556         decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has
2557         error_mark_node type.
2558         (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back
2559         on decls which have error_mark_node type.
2561 2023-03-01  Marek Polacek  <polacek@redhat.com>
2563         PR c++/107574
2564         * constexpr.cc (cxx_eval_constant_expression): Emit an error when
2565         a PTRMEM_CST cannot be evaluated.
2567 2023-03-01  Patrick Palka  <ppalka@redhat.com>
2569         * pt.cc (tsubst_scope): Define.
2570         (tsubst_decl) <case USING_DECL>: Call tsubst_scope instead of
2571         calling tsubst_scope with tf_qualifying_scope set.
2572         (tsubst_qualified_id): Call tsubst_scope instead of
2573         calling tsubst with tf_qualifying_scope set.
2574         (tsubst_copy): Immediately delegate to tsubst for all TYPE_P
2575         trees.  Remove tf_qualifying_scope manipulation.
2576         <case SCOPE_REF>: Call tsubst_scope instead of calling
2577         tsubst with tf_qualifying_scope set.
2579 2023-03-01  Patrick Palka  <ppalka@redhat.com>
2580             Jason Merrill  <jason@redhat.com>
2582         PR c++/108219
2583         PR c++/108218
2584         * constexpr.cc (fold_to_constant): Define.
2585         (maybe_constant_value): Move up early exit test for unevaluated
2586         operands.  Try reducing an unevaluated operand to a constant via
2587         fold_to_constant.
2588         (fold_non_dependent_expr_template): Add early exit test for
2589         CONSTANT_CLASS_P nodes.  Try reducing an unevaluated operand
2590         to a constant via fold_to_constant.
2591         * cp-tree.h (fold_to_constant): Declare.
2593 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
2595         PR c++/108606
2596         * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
2597         Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
2598         just return true.
2600 2023-02-28  Patrick Palka  <ppalka@redhat.com>
2602         PR c++/108848
2603         * pt.cc (finish_template_variable): Move dependence check
2604         to here from ...
2605         (lookup_and_finish_template_variable): ... here.
2606         * semantics.cc (finish_id_expression_1): Call
2607         finish_template_variable sooner, before (and regardless of) the
2608         type_dependent_expression_p test.
2610 2023-02-28  Marek Polacek  <polacek@redhat.com>
2612         PR c++/108550
2613         * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
2615 2023-02-20  Marek Polacek  <polacek@redhat.com>
2617         PR c++/101073
2618         * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
2619         constructor/op= with a checking assert.
2621 2023-02-20  Marek Polacek  <polacek@redhat.com>
2623         PR c++/108829
2624         * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P.
2625         (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to
2626         prepend_one_capture.
2628 2023-02-18  Jason Merrill  <jason@redhat.com>
2630         DR 2518
2631         PR c++/52809
2632         PR c++/53638
2633         PR c++/87389
2634         PR c++/89741
2635         PR c++/92099
2636         PR c++/104041
2637         PR c++/104691
2638         * semantics.cc (finish_static_assert): Don't diagnose in
2639         template context.
2641 2023-02-17  Patrick Palka  <ppalka@redhat.com>
2643         PR c++/108243
2644         PR c++/97553
2645         * cp-gimplify.cc (enum fold_flags): Define.
2646         (fold_flags_t): Declare.
2647         (cp_fold_data::genericize): Replace this data member with ...
2648         (cp_fold_data::fold_flags): ... this.
2649         (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold.
2650         (cp_fold_function): Likewise.
2651         (cp_fold_maybe_rvalue): Add an internal overload that
2652         additionally takes and propagates a fold_flags_t parameter, and
2653         define the existing public overload in terms of it.
2654         (cp_fold_rvalue): Likewise.
2655         (cp_fully_fold_init): Adjust use of cp_fold_data.
2656         (fold_cache): Replace with ...
2657         (fold_caches): ... this 2-element array of caches.
2658         (get_fold_cache): Define.
2659         (clear_fold_cache): Adjust.
2660         (cp_fold): Add fold_flags_t parameter.  Use get_fold_cache.
2661         Pass flags to calls to cp_fold, cp_fold_rvalue and
2662         cp_fold_maybe_rvalue.
2663         <case CALL_EXPR>: If ff_mce_false is set, fold
2664         __builtin_is_constant_evaluated to false and pass mce_false to
2665         maybe_constant_value.
2667 2023-02-17  Patrick Palka  <ppalka@redhat.com>
2669         * constexpr.cc (constexpr_call::manifestly_const_eval): Give
2670         it type int instead of bool.
2671         (constexpr_ctx::manifestly_const_eval): Give it type mce_value
2672         instead of bool.
2673         (cxx_eval_builtin_function_call): Adjust after making
2674         manifestly_const_eval tri-state.
2675         (cxx_eval_call_expression): Likewise.
2676         (cxx_eval_binary_expression): Likewise.
2677         (cxx_eval_conditional_expression): Likewise.
2678         (cxx_eval_constant_expression): Likewise.
2679         (cxx_eval_outermost_constant_expr): Likewise.
2680         (cxx_constant_value): Likewise.
2681         (cxx_constant_dtor): Likewise.
2682         (maybe_constant_value): Give manifestly_const_eval parameter
2683         type mce_value instead of bool and adjust accordingly.
2684         (fold_non_dependent_expr_template): Adjust call
2685         to cxx_eval_outermost_constant_expr.
2686         (fold_non_dependent_expr): Likewise.
2687         (maybe_constant_init_1): Likewise.
2688         * constraint.cc (satisfy_atom): Adjust call to
2689         maybe_constant_value.
2690         * cp-tree.h (enum class mce_value): Define.
2691         (maybe_constant_value): Adjust manifestly_const_eval parameter
2692         type and default argument.
2693         * decl.cc (compute_array_index_type_loc): Adjust call to
2694         maybe_constant_value.
2695         * pt.cc (convert_nontype_argument): Likewise.
2697 2023-02-16  Patrick Palka  <ppalka@redhat.com>
2699         PR c++/107773
2700         * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope.
2701         * decl.cc (make_typename_type): Use lookup_member instead of
2702         lookup_field.  If tf_qualifying_scope is set, pass want_type=true
2703         instead of =false to lookup_member.  Generalize format specifier
2704         in diagnostic to handle both type and non-type bindings.
2705         * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope.  Tidy
2706         the function.
2707         (tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when
2708         substituting USING_DECL_SCOPE.
2709         (tsubst): Clear tf_qualifying_scope right away and remember if
2710         it was set.  Do the same for tf_tst_ok sooner.
2711         <case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting
2712         TYPE_CONTEXT.  Pass tf_qualifying_scope to make_typename_type
2713         if it was set.
2714         (tsubst_qualified_id): Set tf_qualifying_scope when substituting
2715         the scope.
2716         (tsubst_copy): Clear tf_qualifying_scope and remember if it was
2717         set.
2718         <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
2719         scope.
2720         <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
2721         * search.cc (lookup_member): Document default argument.
2723 2023-02-16  Patrick Palka  <ppalka@redhat.com>
2725         * cp-tree.h: Mechanically drop static from static inline
2726         functions via s/^static inline/inline/g.
2728 2023-02-15  Marek Polacek  <polacek@redhat.com>
2730         PR c++/106675
2731         * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
2733 2023-02-10  Marek Polacek  <polacek@redhat.com>
2735         PR c++/107079
2736         * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
2738 2023-02-09  Tobias Burnus  <tobias@codesourcery.com>
2740         * parser.cc (cp_parser_omp_allocate): Parse align
2741         clause and check for restrictions.
2743 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
2745         PR c++/108698
2746         * mangle.cc (write_expression, write_template_arg): Handle
2747         EXCESS_PRECISION_EXPR with REAL_CST operand as
2748         write_template_arg_literal on fold_convert of the REAL_CST
2749         to EXCESS_PRECISION_EXPR type.
2751 2023-02-06  Patrick Palka  <ppalka@redhat.com>
2753         PR c++/107461
2754         * cp-tree.h (call_expr_dependent_name): Declare.
2755         * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: Use
2756         call_expr_dependent_name instead of dependent_name.
2757         * tree.cc (call_expr_dependent_name): Define.
2758         (called_fns_equal): Adjust to take two CALL_EXPRs instead of
2759         CALL_EXPR_FNs thereof.  Use call_expr_dependent_name instead
2760         of dependent_name.
2761         (cp_tree_equal) <case CALL_EXPR>: Adjust call to called_fns_equal.
2763 2023-02-03  Marek Polacek  <polacek@redhat.com>
2765         PR c++/108158
2766         * constexpr.cc (cxx_eval_array_reference): Don't replace
2767         new_ctx.object.
2769 2023-02-03  Patrick Palka  <ppalka@redhat.com>
2771         PR c++/107461
2772         * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
2773         the selected callee during overload set pruning.
2775 2023-02-03  Patrick Palka  <ppalka@redhat.com>
2777         PR c++/96745
2778         * class.cc (check_methods): Diagnose an unviable OVERLOAD
2779         set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one.
2780         Then prune the OVERLOAD to a single function.
2781         (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being
2782         an OVERLOAD when calling deduce_noexcept_on_destructor.
2783         Document why it has to be called before check_methods.
2785 2023-02-03  Patrick Palka  <ppalka@redhat.com>
2787         PR c++/108579
2788         * class.cc (check_methods): Swap order of constraints_satisfied_p
2789         and copy/move_fn_p tests.
2791 2023-02-01  Marek Polacek  <polacek@redhat.com>
2793         PR c++/107755
2794         * call.cc (build_new_op): Don't call warn_logical_operator when
2795         processing a template.
2797 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
2799         PR c++/108607
2800         * constexpr.cc (cxx_eval_constant_expression): Handle OMP_*
2801         and OACC_* constructs as non-constant.
2802         (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE.
2804 2023-02-01  Jason Merrill  <jason@redhat.com>
2806         * class.cc (note_name_declared_in_class): Change from permerror to
2807         -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases.
2809 2023-01-31  Jason Merrill  <jason@redhat.com>
2811         PR c++/108559
2812         * cp-gimplify.cc (any_non_eliding_target_exprs): New.
2813         (cp_genericize_init): Check it.
2815 2023-01-31  Marek Polacek  <polacek@redhat.com>
2817         PR c++/107593
2818         PR c++/108597
2819         * cp-tree.h (instantiation_dependent_expression_p): Don't
2820         declare here.
2822 2023-01-26  Marek Polacek  <polacek@redhat.com>
2824         PR c++/105300
2825         * parser.cc: Remove unnecessary forward declarations.
2826         (cp_parser_string_literal): New wrapper.
2827         (cp_parser_string_literal_common): Renamed from
2828         cp_parser_string_literal.  Add a bool parameter.  Give an error when
2829         UDLs are not permitted.
2830         (cp_parser_userdef_string_literal): New wrapper.
2831         (finish_userdef_string_literal): Renamed from
2832         cp_parser_userdef_string_literal.
2833         (cp_parser_primary_expression): Call cp_parser_userdef_string_literal
2834         instead of cp_parser_string_literal.
2835         (cp_parser_linkage_specification): Move a variable declaration closer
2836         to its first use.
2837         (cp_parser_static_assert): Likewise.
2838         (cp_parser_operator): Call cp_parser_userdef_string_literal instead of
2839         cp_parser_string_literal.
2840         (cp_parser_asm_definition): Move a variable declaration closer to its
2841         first use.
2842         (cp_parser_asm_specification_opt): Move variable declarations closer to
2843         their first use.
2844         (cp_parser_asm_operand_list): Likewise.
2845         (cp_parser_asm_clobber_list): Likewise.
2847 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
2849         PR c++/108503
2850         * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been
2851         called in !processing_template_decl with processing_template_decl
2852         temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily.
2853         (cp_finish_omp_range_for): And set it back again here.
2855 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
2857         PR c++/108525
2858         * mangle.cc (write_closure_type_name): Don't assume all
2859         lambda operator() fns are methods.
2861 2023-01-24  Jason Merrill  <jason@redhat.com>
2863         PR c++/108504
2864         * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
2865         token, too.
2867 2023-01-24  Jason Merrill  <jason@redhat.com>
2869         PR c++/108526
2870         * pt.cc (tsubst_function_decl): Handle static lambda.
2872 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
2874         PR c++/108474
2875         * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
2877 2023-01-24  Jason Merrill  <jason@redhat.com>
2879         PR c++/107303
2880         PR c++/107329
2881         * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double
2882         TARGET_EXPR, keep the outer one instead of the inner one.
2883         (maybe_replace_decl): New.
2885 2023-01-23  Jason Merrill  <jason@redhat.com>
2887         PR c++/107267
2888         * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
2889         of trivial types.
2891 2023-01-23  Marek Polacek  <polacek@redhat.com>
2893         PR c++/107797
2894         * cvt.cc (ocp_convert): copy_warning when creating a new
2895         COMPOUND_EXPR.
2896         * init.cc (build_new_1): Suppress -Wunused-value on
2897         compiler-generated COMPOUND_EXPRs.
2899 2023-01-23  Jason Merrill  <jason@redhat.com>
2901         PR c++/108195
2902         * call.cc (build_user_type_conversion_1): Check whether the
2903         iterators also find a list ctor.
2905 2023-01-23  Jason Merrill  <jason@redhat.com>
2907         PR c++/108496
2908         * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
2909         set.
2911 2023-01-23  Jason Merrill  <jason@redhat.com>
2913         PR c++/53288
2914         DR 1299
2915         * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
2917 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
2919         PR c++/108437
2920         * cp-tree.h (keep_unused_object_arg): Declare.
2921         * call.cc (keep_unused_object_arg): No longer static.
2922         * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF
2923         with overload being static member function.
2925 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
2927         PR c++/53932
2928         * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace
2929         DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding
2930         DECL_VALUE_EXPR.
2932 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
2934         PR c++/105593
2935         * decl.cc (cp_finish_decl): Check warning_enabled_at
2936         at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead
2937         of warn_init_self.
2939 2023-01-14  Jakub Jelinek  <jakub@redhat.com>
2941         PR c++/108365
2942         * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
2943         division or modulo.
2945 2023-01-13  Jakub Jelinek  <jakub@redhat.com>
2947         PR c++/108285
2948         * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR
2949         use its operand except that for warning purposes use the original
2950         EXCESS_PRECISION_EXPR.
2951         * call.cc (convert_like_internal): Only look through
2952         EXCESS_PRECISION_EXPR when calling cp_convert, not when calling
2953         cp_convert_and_check.
2955 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
2957         PR c++/105838
2958         PR c++/108047
2959         PR c++/108266
2960         * call.cc (maybe_init_list_as_range): Always return NULL_TREE if
2961         processing_template_decl.
2963 2023-01-05  Patrick Palka  <ppalka@redhat.com>
2965         PR c++/108275
2966         * parser.cc (cp_parser_class_head): Use dk_deferred instead of
2967         dk_no_check when parsing the class name.
2969 2023-01-05  Jakub Jelinek  <jakub@redhat.com>
2971         PR c++/108286
2972         * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
2973         OMP_CLAUSE_MAP.
2975 2023-01-04  Patrick Palka  <ppalka@redhat.com>
2977         PR c++/108282
2978         * decl2.cc (mark_single_function): Ignore mark_used failure
2979         only in a non-SFINAE context rather than in a SFINAE one.
2981 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
2983         PR c++/108206
2984         * decl.cc (merge_default_template_args): Return false if either
2985         new_parm or old_parm are erroneous.
2988 Copyright (C) 2023 Free Software Foundation, Inc.
2990 Copying and distribution of this file, with or without modification,
2991 are permitted in any medium without royalty provided the copyright
2992 notice and this notice are preserved.