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