Require target lra in gcc.c-torture/compile/asmgoto-6.c
[official-gcc.git] / gcc / cp / ChangeLog
blobdb9ce602f1a7596b89fc55d7570d968d60e0e3bd
1 2023-07-20  Marek Polacek  <polacek@redhat.com>
3         PR c++/110114
4         * call.cc (implicit_conversion_1): Return early if the type isn't
5         complete.
7 2023-07-19  Marek Polacek  <polacek@redhat.com>
9         PR c++/110745
10         * error.cc (dump_simple_decl): Print base class name.
12 2023-07-19  Marek Polacek  <polacek@redhat.com>
14         PR c++/110064
15         * typeck2.cc (process_init_constructor_record): Don't emit
16         -Wmissing-field-initializers for empty classes.
18 2023-07-19  Patrick Palka  <ppalka@redhat.com>
20         * pt.cc (type_unification_real): Test for PARM_DECL instead
21         of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
22         template parameter pack.
23         (type_targs_deducible_from): Likewise.
25 2023-07-19  Patrick Palka  <ppalka@redhat.com>
27         * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table'
28         flag parameter.  Don't look up or insert into the specializations
29         table if 'use_spec_table' is false.
30         (tsubst_decl): Add defaulted 'use_spec_table' flag parameter.
31         Check for error_mark_node.
32         <case FUNCTION_DECL>: Pass 'use_spec_table' to
33         tsubst_function_decl.
34         <case TYPE/VAR_DECL>: Don't call coerce_template_parms.
35         Don't look up or insert into the specializations table if
36         'use_spec_table' is false.  Exit earlier if the substituted
37         type is erroneous and we're not complaining, and do so for
38         alias specializations as well.
39         (instantiate_template): Pass false as 'use_spec_table'
40         to tsubst_decl.  Call register_specialization afterwards.
42 2023-07-18  Jason Merrill  <jason@redhat.com>
44         * constexpr.cc (cxx_eval_bit_cast): Check that the result of
45         native_interpret_aggregate doesn't need more evaluation.
47 2023-07-18  Patrick Palka  <ppalka@redhat.com>
49         * call.cc (add_template_conv_candidate): Don't check for
50         non-empty 'candidates' here.
51         (build_op_call): Check it here, before we've considered any
52         conversion functions.
54 2023-07-18  Patrick Palka  <ppalka@redhat.com>
56         PR c++/110535
57         * call.cc (add_conv_candidate): Check constraints.
59 2023-07-17  Jason Merrill  <jason@redhat.com>
61         * constexpr.cc (cxx_eval_call_expression): Only cache
62         reduced_constant_expression_p results.
63         (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type.
64         (cxx_eval_constant_expression): Fold vectors here.
65         (cxx_eval_bare_aggregate): Not here.
67 2023-07-15  Patrick Palka  <ppalka@redhat.com>
69         PR c++/110441
70         * call.cc (keep_unused_object_arg): Use cp_build_compound_expr
71         instead of building a COMPOUND_EXPR directly.
73 2023-07-15  Patrick Palka  <ppalka@redhat.com>
75         PR c++/110524
76         * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
77         whose template is already an IDENTIFIER_NODE.
79 2023-07-14  Nathaniel Shead  <nathanieloshead@gmail.com>
81         * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
83 2023-07-14  Jason Merrill  <jason@redhat.com>
85         PR c++/110344
86         * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling
87         after heap handling.
88         * name-lookup.cc (get_cxx_dialect_name): Add C++26.
90 2023-07-14  Marek Polacek  <polacek@redhat.com>
91             Jason Merrill  <jason@redhat.com>
93         PR c++/109876
94         * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing
95         an object of empty class type.
96         * pt.cc (value_dependent_expression_p) <case VAR_DECL>: Treat a
97         constexpr-declared non-constant variable as value-dependent.
99 2023-07-11  Patrick Palka  <ppalka@redhat.com>
101         PR c++/110580
102         * pt.cc (lookup_template_variable): Pass all levels of arguments
103         to coerce_template_parms, and use the parameters from the most
104         general template.
106 2023-07-10  Patrick Palka  <ppalka@redhat.com>
108         PR c++/110523
109         * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT
110         assert, and downgrade it to a checking assert.
112 2023-06-30  Patrick Palka  <ppalka@redhat.com>
114         * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden.
115         (TEMPLATE_TYPE_DESCENDANTS): Define.
116         (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define.
117         * pt.cc (reduce_template_parm_level): Revert
118         r14-418-g0bc2a1dc327af9 change.
119         (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P
120         appropriately.
121         (uses_outer_template_parms): Determine the outer depth of
122         a template template parm without relying on DECL_CONTEXT.
123         (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
124         simple template template parm.  Consistently use 'code'.
126 2023-06-29  Patrick Palka  <ppalka@redhat.com>
128         PR c++/110468
129         * init.cc (maybe_instantiate_nsdmi_init): Mask out all
130         tsubst flags except for tf_warning_or_error.
132 2023-06-29  Patrick Palka  <ppalka@redhat.com>
134         PR c++/110463
135         * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
136         CONSTRUCTOR_MUTABLE_POISON.
138 2023-06-29  Patrick Palka  <ppalka@redhat.com>
140         * cp-tree.h (tree_template_info::partial): New data member.
141         (TI_PARTIAL_INFO): New tree accessor.
142         (most_specialized_partial_spec): Add defaulted bool parameter.
143         * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream
144         TI_PARTIAL_INFO.
145         (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise.
146         * parser.cc (specialization_of): Adjust after making
147         most_specialized_partial_spec return TEMPLATE_INFO instead
148         of TREE_LIST.
149         * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO
150         of 'decl' to point back to the partial TEMPLATE_DECL.  Likewise
151         (and pass rechecking=true to most_specialization_partial_spec).
152         (instantiate_class_template): Likewise.
153         (instantiate_template): Set TI_PARTIAL_INFO to the result of
154         most_specialization_partial_spec after forming a variable
155         template specialization.
156         (most_specialized_partial_spec): Add 'rechecking' parameter.
157         Exit early if the template is not primary.  Use the TI_PARTIAL_INFO
158         of the corresponding TEMPLATE_INFO as a cache unless 'rechecking'
159         is true.  Don't bother setting TREE_TYPE of each TREE_LIST.
160         (instantiate_decl): Adjust after making
161         most_specialized_partial_spec return TEMPLATE_INFO instead of
162         TREE_LIST.
163         * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump
164         TI_PARTIAL_INFO.
166 2023-06-29  Eugene Rozenfeld  <erozen@microsoft.com>
168         * Make-lang.in: Pass correct stage cc1plus when processing
169         profile data collected while building target libraries
171 2023-06-28  Patrick Palka  <ppalka@redhat.com>
173         PR c++/89442
174         PR c++/107437
175         * cp-tree.h (lookup_template_variable): Add complain parameter.
176         * parser.cc (cp_parser_template_id): Pass tf_warning_or_error
177         to lookup_template_variable.
178         * pt.cc (lookup_template_variable): Add complain parameter.
179         Coerce template arguments here ...
180         (finish_template_variable): ... instead of here.
181         (lookup_and_finish_template_variable): Check for error_mark_node
182         result from lookup_template_variable.
183         (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to
184         lookup_template_variable.
185         (instantiate_template): Use build2 instead of
186         lookup_template_variable to build a TEMPLATE_ID_EXPR
187         for most_specialized_partial_spec.
189 2023-06-28  Marek Polacek  <polacek@redhat.com>
191         PR c++/110175
192         * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
194 2023-06-28  Jason Merrill  <jason@redhat.com>
196         PR c++/110334
197         * cp-tree.h (clone_attrs): Declare.
198         * method.cc (implicitly_declare_fn): Use it for inherited
199         constructor.
200         * optimize.cc (clone_attrs): New.
201         (maybe_clone_body): Use it.
203 2023-06-28  Jason Merrill  <jason@redhat.com>
205         PR c++/110344
206         * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast
207         from void* to the type of a pointed-to object.
209 2023-06-23  David Malcolm  <dmalcolm@redhat.com>
211         PR c++/110164
212         * cp-name-hint.h (maybe_suggest_missing_header): New decl.
213         * decl.cc: Define INCLUDE_MEMORY.  Add include of
214         "cp/cp-name-hint.h".
215         (start_decl_1): Call maybe_suggest_missing_header.
216         * name-lookup.cc (maybe_suggest_missing_header): Remove "static".
218 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
220         * parser.cc (cp_parser_enum_specifier): Don't reject
221         elaborated-type-specifier with enum-base, instead emit new
222         Welaborated-enum-base warning.
224 2023-06-14  Jason Merrill  <jason@redhat.com>
226         DR 2327
227         PR c++/86521
228         * call.cc (joust_maybe_elide_copy): Don't change cand.
229         (joust): Move the elided tiebreaker later.
231 2023-06-13  David Malcolm  <dmalcolm@redhat.com>
233         PR c/84890
234         * name-lookup.cc (missing_std_header::~missing_std_header): Reword
235         note to avoid negative tone of "forgetting".
237 2023-06-13  Jason Merrill  <jason@redhat.com>
239         * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
241 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
243         * parser.cc (cp_parser_omp_clause_map): Reword error message for
244         clearness especially with 'omp target (enter/exit) data.'
245         * semantics.cc (handle_omp_array_sections): Handle
246         GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values.
248 2023-06-12  Jason Merrill  <jason@redhat.com>
250         PR c++/105838
251         * call.cc (convert_like_internal) [ck_list]: Use
252         maybe_init_list_as_array.
253         * constexpr.cc (cxx_eval_vec_init_1): Init might have
254         a different type.
255         * tree.cc (build_vec_init_elt): Likewise.
256         * init.cc (build_vec_init): Handle from_array from a
257         TARGET_EXPR.  Retain TARGET_EXPR of a different type.
259 2023-06-11  Patrick Palka  <ppalka@redhat.com>
261         PR c++/110122
262         * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted
263         functions needed for constant evaluation.
264         (instantiate_cx_fn_r): Likewise.
266 2023-06-11  Patrick Palka  <ppalka@redhat.com>
268         PR c++/110122
269         * pt.cc (lookup_template_class): Extend shortcut for looking up the
270         current class scope to consider outer class scopes too, and use
271         current_nonlambda_class_type instead of current_class_type.  Only
272         call coerce_template_parms when specializing a primary template.
274 2023-06-10  Nathan Sidwell  <nathan@acm.org>
276         PR c++/61663
277         * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
279 2023-06-09  Jason Merrill  <jason@redhat.com>
281         PR c++/110185
282         PR c++/58487
283         * method.cc (build_comparison_op): Give retval a name.
284         * typeck.cc (check_return_expr): Fix for nameless variables.
286 2023-06-09  Jason Merrill  <jason@redhat.com>
288         * parser.cc (cp_parser_simple_type_specifier): Check for auto
289         in template argument.
290         (cp_parser_template_type_arg): Remove auto checking.
292 2023-06-09  Jason Merrill  <jason@redhat.com>
294         PR c++/110102
295         * call.cc (maybe_init_list_as_array): Check that the element type is
296         copyable.
298 2023-06-07  Jason Merrill  <jason@redhat.com>
300         PR c++/58487
301         PR c++/53637
302         * cp-tree.h (INIT_EXPR_NRV_P): New.
303         * semantics.cc (finalize_nrv_r): Check it.
304         * name-lookup.h (decl_in_scope_p): Declare.
305         * name-lookup.cc (decl_in_scope_p): New.
306         * typeck.cc (check_return_expr): Allow non-NRV
307         returns if the NRV is no longer in scope.
309 2023-06-07  Jason Merrill  <jason@redhat.com>
311         PR c++/58487
312         * typeck.cc (want_nrvo_p): New.
313         (check_return_expr): Handle -Wnrvo.
315 2023-06-07  Jason Merrill  <jason@redhat.com>
317         PR c++/51571
318         PR c++/92407
319         * decl.cc (finish_function): Simplify NRV handling.
320         * except.cc (maybe_set_retval_sentinel): Also set if NRV.
321         (maybe_splice_retval_cleanup): Don't add the cleanup region
322         if we don't need it.
323         * semantics.cc (nrv_data): Add simple field.
324         (finalize_nrv): Set it.
325         (finalize_nrv_r): Check it and retval sentinel.
326         * cp-tree.h (finalize_nrv): Adjust declaration.
327         * typeck.cc (check_return_expr): Remove named_labels check.
329 2023-06-07  Jason Merrill  <jason@redhat.com>
331         PR c++/92407
332         * typeck.cc (check_return_expr): Prevent NRV in the presence of
333         named labels.
335 2023-06-07  Jason Merrill  <jason@redhat.com>
337         PR c++/33799
338         * except.cc (maybe_splice_retval_cleanup): Change
339         recognition of function body and try scopes.
340         * semantics.cc (do_poplevel): Call it after poplevel.
341         (at_try_scope): New.
342         * cp-tree.h (maybe_splice_retval_cleanup): Adjust.
344 2023-06-07  Jason Merrill  <jason@redhat.com>
346         * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
347         INIT_EXPR.
349 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
350             Tobias Burnus  <tobias@codesourcery.com>
352         * parser.cc (cp_parser_omp_clause_defaultmap,
353         cp_parser_omp_clause_map): Parse 'present'.
354         (cp_parser_omp_clause_from_to): New; parse to/from
355         clauses with optional 'present' modifier.
356         (cp_parser_omp_all_clauses): Update call.
357         (cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
358         cp_parser_omp_target_exit_data): Handle new enum value for
359         'present' mapping.
360         * semantics.cc (finish_omp_target): Likewise.
362 2023-06-04  Jason Merrill  <jason@redhat.com>
364         PR c++/97720
365         * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN.
366         (call_terminate_fn): New macro.
367         * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it.
368         * except.cc (init_exception_processing): Set it.
369         (cp_protect_cleanup_actions): Return it.
371 2023-06-03  Patrick Palka  <ppalka@redhat.com>
373         PR c++/109923
374         * pt.cc (is_specialization_of_friend): Fix overbroad check for
375         a non-template member function of a class template.
377 2023-06-03  Patrick Palka  <ppalka@redhat.com>
379         * pt.cc (iterative_hash_template_arg): Don't hash
380         TEMPLATE_TEMPLATE_PARM specially.
382 2023-06-03  Patrick Palka  <ppalka@redhat.com>
384         * class.cc (build_base_path): Check in_template_context instead
385         of in_template_function.
386         (resolves_to_fixed_type_p): Likewise.
387         * cp-tree.h (in_template_context): Define.
388         (in_template_function): Remove.
389         * decl.cc (cp_make_fname_decl): Check current_function_decl
390         and in_template_context instead of in_template_function.
391         * decl2.cc (mark_used): Check in_template_context instead of
392         in_template_function.
393         * pt.cc (in_template_function): Remove.
394         * semantics.cc (enforce_access): Check in_template_context
395         instead of current_template_parms directly.
397 2023-06-03  Patrick Palka  <ppalka@redhat.com>
399         PR c++/70790
400         * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
402 2023-06-02  Jason Merrill  <jason@redhat.com>
404         DR 2735
405         PR c++/109247
406         * call.cc (sfk_copy_or_move): New.
407         (joust): Add tiebreaker for explicit conv and copy ctor.
409 2023-06-02  Jason Merrill  <jason@redhat.com>
411         PR c++/110070
412         PR c++/105838
413         * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE.
414         (convert_like_internal) [ck_list]: Set it.
415         (set_up_extended_ref_temp): Copy it.
416         * tree.cc (handle_no_unique_addr_attribute): Set it.
418 2023-06-01  Jason Merrill  <jason@redhat.com>
420         * typeck2.cc (check_narrowing): Check flag_permissive.
422 2023-05-30  Tobias Burnus  <tobias@codesourcery.com>
424         PR c/109999
425         * parser.cc (cp_parser_oacc_all_clauses,
426         cp_parser_omp_all_clauses): Improve error wording.
428 2023-05-19  Andrew Pinski  <apinski@marvell.com>
430         PR driver/33980
431         * lang-specs.h ("@c++-header"): Add %w after
432         the --output-pch.
433         ("@c++-system-header"): Likewise.
434         ("@c++-user-header"): Likewise.
436 2023-05-19  Patrick Palka  <ppalka@redhat.com>
438         * constraint.cc (normalize_concept_check): Avoid having to do
439         two norm_cache lookups.  Remove unnecessary early exit for an
440         ill-formed concept definition.
442 2023-05-19  Patrick Palka  <ppalka@redhat.com>
444         PR c++/97340
445         * pt.cc (lookup_and_finish_template_variable): Don't call
446         convert_from_reference.
447         (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
448         convert_from_reference on the result of
449         lookup_and_finish_template_variable.
451 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
453         * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h.
454         (build_conditional_expr): Ditto.
455         (convert_like_internal): Ditto.
456         (convert_arg_to_ellipsis): Ditto.
457         (build_over_call): Ditto.
458         (compare_ics): Ditto.
459         * class.cc (is_empty_base_ref): Ditto.
460         * coroutines.cc (rewrite_param_uses): Ditto.
461         * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto.
462         (ARITHMETIC_TYPE_P): Ditto.
463         * cvt.cc (ocp_convert): Ditto.
464         * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto.
465         * decl.cc (layout_var_decl): Ditto.
466         (get_tuple_size): Ditto.
467         * error.cc (dump_simple_decl): Ditto.
468         * lambda.cc (start_lambda_scope): Ditto.
469         * mangle.cc (write_template_arg): Ditto.
470         * method.cc (spaceship_comp_cat): Ditto.
471         * module.cc (node_template_info): Ditto.
472         (trees_out::start): Ditto.
473         (trees_out::decl_node): Ditto.
474         (trees_in::read_var_def): Ditto.
475         (set_instantiating_module): Ditto.
476         * name-lookup.cc (maybe_record_mergeable_decl): Ditto.
477         (consider_decl): Ditto.
478         (maybe_add_fuzzy_decl): Ditto.
479         * pt.cc (convert_nontype_argument): Ditto.
480         * semantics.cc (handle_omp_array_sections_1): Ditto.
481         (finish_omp_clauses): Ditto.
482         (finish_omp_target_clauses_r): Ditto.
483         (is_this_parameter): Ditto.
484         * tree.cc (build_cplus_array_type): Ditto.
485         (is_this_expression): Ditto.
486         * typeck.cc (do_warn_enum_conversions): Ditto.
487         * typeck2.cc (store_init_value): Ditto.
488         (check_narrowing): Ditto.
490 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
492         PR c++/109868
493         * init.cc (build_zero_init_1): Don't initialize zero-width bitfields.
494         For unions only initialize the first FIELD_DECL.
496 2023-05-16  Marek Polacek  <polacek@redhat.com>
498         PR c++/109774
499         * typeck.cc (check_return_expr): In a template, return only after
500         suppressing -Wdangling-reference.
502 2023-05-16  Patrick Palka  <ppalka@redhat.com>
504         PR c++/109871
505         * call.cc (add_list_candidates): Check for invalid designated
506         initialization sooner and even for types that have a list
507         constructor.
509 2023-05-11  Patrick Palka  <ppalka@redhat.com>
511         PR c++/109745
512         * typeck2.cc (poison_mutable_constructors): Define.
513         (store_init_value): Use it instead of setting
514         CONSTRUCTOR_MUTABLE_POISON directly.
516 2023-05-11  Patrick Palka  <ppalka@redhat.com>
517             Jonathan Wakely  <jwakely@redhat.com>
519         PR c++/83258
520         PR c++/80488
521         PR c++/97700
522         * pt.cc (convert_nontype_argument_function): Remove linkage
523         requirement for C++17 and later.
524         (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict
525         DECL_ARTIFICIAL rejection test to VAR_DECL.
527 2023-05-10  Marek Polacek  <polacek@redhat.com>
529         PR c++/109680
530         * method.cc (build_trait_object): New.
531         (assignable_expr): Use it.
532         (ref_xes_from_temporary): Likewise.
533         (is_convertible_helper): Likewise.  Check FUNC_OR_METHOD_TYPE_P.
535 2023-05-10  Jason Merrill  <jason@redhat.com>
537         * call.cc (convert_like_internal): Share ck_ref_bind handling
538         between all bad conversions.
540 2023-05-10  Jason Merrill  <jason@redhat.com>
542         DR 2543
543         * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve
544         TARGET_EXPR flags.
545         (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P.
546         * typeck2.cc (store_init_value): Diagnose constinit sooner.
548 2023-05-10  Jason Merrill  <jason@redhat.com>
550         * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
551         for address of immediate fn.
552         (maybe_constant_init_1): Evaluate PTRMEM_CST.
554 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
556         PR c++/109756
557         * parser.cc (cp_parser_std_attribute): For unknown attributes with
558         arguments set TREE_VALUE (attribute) to error_mark_node after skipping
559         the balanced tokens.
560         (cp_parser_std_attribute_list): If ... is used after attribute without
561         arguments, diagnose it and return error_mark_node.  If
562         TREE_VALUE (attribute) is error_mark_node, don't call
563         make_pack_expansion nor return early error_mark_node.
565 2023-05-09  Patrick Palka  <ppalka@redhat.com>
567         PR c++/109752
568         * constraint.cc (satisfaction_cache::satisfaction_cache): In the
569         unexpected case of evaluating an atom for the first time noisily,
570         remove the cache slot that we inserted.
572 2023-05-09  Patrick Palka  <ppalka@redhat.com>
574         PR c++/109761
575         * parser.cc (cp_parser_class_specifier): Don't pass a class
576         context to noexcept_override_late_checks.
577         (noexcept_override_late_checks): Remove 'type' parameter
578         and use DECL_CONTEXT of 'fndecl' instead.
580 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
582         PR c++/109756
583         * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
584         expansion of assume attribute.
586 2023-05-08  Patrick Palka  <ppalka@redhat.com>
588         PR c++/106214
589         PR c++/93107
590         * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context
591         calls to happen before do_class_deduction.  Add some
592         error_mark_node tests.
594 2023-05-07  Patrick Palka  <ppalka@redhat.com>
596         PR c++/85979
597         * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
598         <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
599         * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
601 2023-05-07  Patrick Palka  <ppalka@redhat.com>
603         DR 2256
604         PR c++/103091
605         * decl.cc (decl_jump_unsafe): Return bool instead of int.
606         Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
607         (check_previous_goto_1): Simplify now that decl_jump_unsafe
608         returns bool instead of int.
609         (check_goto): Likewise.
611 2023-05-07  Patrick Palka  <ppalka@redhat.com>
613         * pt.cc (instantiate_alias_template): Exit early upon
614         error from coerce_template_parms.  Remove dependence test
615         guarding constraints_satisfied_p.
617 2023-05-07  Patrick Palka  <ppalka@redhat.com>
619         * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via
620         TEMPLATE_TYPE_PARM_CHECK.
621         (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK.
622         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via
623         TEMPLATE_TEMPLATE_PARM_CHECK.
624         * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier):
625         Guard PLACEHOLDER_TYPE_CONSTRAINTS access.
626         * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate
627         variable to store CLASS_PLACEHOLDER_TEMPLATE result.
628         * pt.cc (outer_template_args): Use strip_innermost_template_args.
629         (any_type_dependent_arguments_p): Exit early if
630         !processing_template_decl.  Use range-based for.
631         (any_dependent_template_arguments_p): Likewise.
633 2023-05-07  Patrick Palka  <ppalka@redhat.com>
635         PR c++/98283
636         * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
637         REF_PARENTHESIZED_P more generally via force_paren_expr.
638         * semantics.cc (force_paren_expr): Document default argument.
640 2023-05-07  Patrick Palka  <ppalka@redhat.com>
642         PR c++/109651
643         * pt.cc (coerce_template_args_for_ttp): Mention we can hit the
644         current_template_parms fallback when level-lowering a bound ttp.
645         (tsubst_template_decl): Add lambda_tparms parameter.  Prefer to
646         use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS.
647         (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms
648         to tsubst_template_decl.
649         (tsubst_lambda_expr): For a generic lambda, substitute
650         DECL_TEMPLATE_PARMS and set current_template_parms to it
651         before substituting the function type.  Pass the substituted
652         DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl.
654 2023-05-07  Patrick Palka  <ppalka@redhat.com>
656         PR c++/109480
657         * semantics.cc (enforce_access): Check current_template_parms
658         instead of processing_template_decl when deciding whether to
659         defer the access check.
661 2023-05-07  Patrick Palka  <ppalka@redhat.com>
663         PR c++/109480
664         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
665         Reorganize to call get_fns sooner.  Remove special handling of
666         the object argument of a non-static member function call.  Remove
667         dead store to 'fun'.
669 2023-05-05  Jason Merrill  <jason@redhat.com>
671         Revert:
672         2023-04-27  Jason Merrill  <jason@redhat.com>
674         PR c++/61445
675         * pt.cc (instantiate_decl): Assert !defer_ok for local
676         class members.
678 2023-05-03  Jason Merrill  <jason@redhat.com>
680         PR c++/91618
681         PR c++/109649
682         * friend.cc (do_friend): Don't call check_explicit_specialization if
683         DECL_TEMPLATE_INFO is already set.
684         * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO.
685         * name-lookup.cc (set_decl_namespace): Likewise.
687 2023-05-03  Jakub Jelinek  <jakub@redhat.com>
689         * cp-gimplify.cc (cp_fold_data): Move definition earlier.
690         (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false
691         constructed data rather than &pset to cp_walk_tree with cp_fold_r.
693 2023-05-03  Jason Merrill  <jason@redhat.com>
695         * pt.cc (reduce_template_parm_level): Fix comparison of
696         template template parm to cached version.
698 2023-05-02  Jason Merrill  <jason@redhat.com>
700         * pt.cc (instantiate_class_template): Skip the RECORD_TYPE
701         of a class template.
702         (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE.
704 2023-05-02  Jason Merrill  <jason@redhat.com>
706         * name-lookup.cc (pop_from_top_level): Don't
707         invalidate_class_lookup_cache.
709 2023-05-02  Jason Merrill  <jason@redhat.com>
711         PR c++/109678
712         * cp-tree.h (lookup_base): Add offset parm.
713         * constexpr.cc (cxx_fold_indirect_ref_1): Pass it.
714         * search.cc (struct lookup_base_data_s): Add offset.
715         (dfs_lookup_base): Handle it.
716         (lookup_base): Pass it.
718 2023-05-02  Jason Merrill  <jason@redhat.com>
720         PR c++/109678
721         * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
723 2023-05-01  Jason Merrill  <jason@redhat.com>
725         PR c++/109666
726         * name-lookup.cc (maybe_push_to_top_level)
727         (maybe_pop_from_top_level): Split out...
728         * pt.cc (instantiate_body): ...from here.
729         * init.cc (maybe_instantiate_nsdmi_init): Use them.
730         * name-lookup.h: Declare them..
732 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
734         * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
736 2023-04-27  Jason Merrill  <jason@redhat.com>
738         * call.cc (print_conversion_rejection): Use iloc_sentinel.
740 2023-04-27  Jason Merrill  <jason@redhat.com>
742         PR c++/61445
743         * pt.cc (instantiate_decl): Assert !defer_ok for local
744         class members.
746 2023-04-26  Jason Merrill  <jason@redhat.com>
748         * init.cc (nsdmi_inst): Remove.
749         (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
751 2023-04-26  Jason Merrill  <jason@redhat.com>
753         PR c++/109241
754         * pt.cc (instantiate_class_template): Do partially instantiate.
755         (tsubst_expr): Do call complete_type for partial instantiations.
757 2023-04-26  Jason Merrill  <jason@redhat.com>
759         PR c++/69836
760         * pt.cc (regenerate_decl_from_template): Skip unique friends.
762 2023-04-26  Patrick Palka  <ppalka@redhat.com>
764         * pt.cc (most_specialized_partial_spec): Exit early when
765         DECL_TEMPLATE_SPECIALIZATIONS is empty.  Move local variable
766         declarations closer to their first use.  Remove redundant
767         flag_concepts test.  Remove redundant forward declaration.
769 2023-04-25  Patrick Palka  <ppalka@redhat.com>
771         PR c++/108975
772         * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
773         Suppress conservative early exit for reference variables
774         when DECL_HAS_VALUE_EXPR_P.
776 2023-04-25  Tobias Burnus  <tobias@codesourcery.com>
778         * parser.cc (cp_parser_omp_scan_loop_body): Handle
779         zero exec statements before/after 'omp scan'.
781 2023-04-24  Patrick Palka  <ppalka@redhat.com>
783         * cp-tree.h (cp_expr_location): Define here.
784         * tree.cc (cp_expr_location): Don't define here.
786 2023-04-21  Jason Merrill  <jason@redhat.com>
788         PR c++/108099
789         * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned
790         typedef' pedwarn.  Use c_common_signed_or_unsigned_type.  Also
791         handle 'signed typedef'.
793 2023-04-21  Patrick Palka  <ppalka@redhat.com>
795         * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
796         <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
797         <case ALIGNOF_EXPR etc>: Likewise.
799 2023-04-20  Patrick Palka  <ppalka@redhat.com>
801         * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: Don't recurse when
802         level lowering a cv-qualified type template parameter.  Remove
803         recursive loop breaker in the level lowering case for constrained
804         autos.  Use the TEMPLATE_PARM_DESCENDANTS cache in this case as
805         well.
807 2023-04-20  Patrick Palka  <ppalka@redhat.com>
809         * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC
810         of arguments into a TREE_LIST for sake of pretty printing.
811         * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC
812         instead of TREE_LIST of trailing variadic trait arguments.
813         * method.cc (constructible_expr): Likewise.
814         (is_xible_helper): Likewise.
815         * parser.cc (cp_parser_trait): Represent trailing variadic trait
816         arguments as a TREE_VEC instead of TREE_LIST.
817         * pt.cc (value_dependent_expression_p): Handle TREE_VEC
818         instead of TREE_LIST of trailing variadic trait arguments.
819         * semantics.cc (finish_type_pack_element): Likewise.
820         (check_trait_type): Likewise.
822 2023-04-20  Patrick Palka  <ppalka@redhat.com>
824         * tree.cc (strip_typedefs): Move TREE_LIST handling to
825         strip_typedefs_expr.  Dispatch to strip_typedefs_expr for
826         non-type 't'.
827         <case TYPENAME_TYPE>: Remove manual dispatching to
828         strip_typedefs_expr.
829         <case TRAIT_TYPE>: Likewise.
830         (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
831         with strip_typedefs throughout.  Don't dispatch to strip_typedefs
832         for type 't'.
833         <case TREE_LIST>: Replace this with the better version from
834         strip_typedefs.
836 2023-04-19  Patrick Palka  <ppalka@redhat.com>
837             Jonathan Wakely  <jwakely@redhat.com>
839         PR c++/100157
840         * cp-trait.def (TYPE_PACK_ELEMENT): Define.
841         * cp-tree.h (finish_trait_type): Add complain parameter.
842         * cxx-pretty-print.cc (pp_cxx_trait): Handle
843         CPTK_TYPE_PACK_ELEMENT.
844         * parser.cc (cp_parser_constant_expression): Document default
845         arguments.
846         (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT.  Pass
847         tf_warning_or_error to finish_trait_type.
848         * pt.cc (tsubst) <case TRAIT_TYPE>: Handle non-type first
849         argument.  Pass complain to finish_trait_type.
850         * semantics.cc (finish_type_pack_element): Define.
851         (finish_trait_type): Add complain parameter.  Handle
852         CPTK_TYPE_PACK_ELEMENT.
853         * tree.cc (strip_typedefs): Handle non-type first argument.
854         Pass tf_warning_or_error to finish_trait_type.
855         * typeck.cc (structural_comptypes) <case TRAIT_TYPE>: Use
856         cp_tree_equal instead of same_type_p for the first argument.
858 2023-04-19  Patrick Palka  <ppalka@redhat.com>
860         PR c++/109556
861         * pt.cc (try_class_unification): Don't ggc_free the copy of
862         'targs'.
864 2023-04-19  Jason Merrill  <jason@redhat.com>
866         PR c++/108099
867         * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
869 2023-04-17  Patrick Palka  <ppalka@redhat.com>
871         PR c++/109531
872         * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
873         In the level-lowering case just use lookup_template_class
874         to rebuild the bound ttp.
876 2023-04-15  Jason Merrill  <jason@redhat.com>
878         PR c++/109357
879         * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
880         Check for complex initializer.
882 2023-04-13  Patrick Palka  <ppalka@redhat.com>
884         PR c++/109420
885         * decl.cc (make_typename_type): Also ignore non-types during the
886         lookup if tag_type corresponds to an elaborated-type-specifier.
887         * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or
888         enum_type as tag_type to make_typename_type accordingly instead
889         of always passing typename_type.
891 2023-04-13  Jason Merrill  <jason@redhat.com>
893         PR c++/109277
894         * semantics.cc (check_trait_type): Handle incomplete type directly.
895         * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert.
897 2023-04-13  Jason Merrill  <jason@redhat.com>
899         * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
900         * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
902 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
904         * Make-lang.in (s-cp-module-version): New target.
905         (cp/module.o): Depend on it.
906         (MODULE_VERSION): Remove variable.
907         (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just
908         cat s-cp-module-version.
910 2023-04-09  Iain Sandoe  <iain@sandoe.co.uk>
912         * coroutines.cc (coro_rewrite_function_body): Ensure that added
913         bind expressions have scope blocks.
915 2023-04-04  Jason Merrill  <jason@redhat.com>
917         PR c++/107484
918         * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
920 2023-04-03  Patrick Palka  <ppalka@redhat.com>
922         PR c++/109300
923         * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
924         with no initializer, instead of asserting.
926 2023-04-01  Patrick Palka  <ppalka@redhat.com>
928         PR c++/109160
929         * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter.
930         * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to
931         do_auto_deduction.
932         (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
933         'in_decl' to coerce_template_parms.
934         (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE
935         as 'tmpl' to do_auto_deduction.
936         (do_auto_deduction): Document default arguments.  Rename local
937         variable 'tmpl' to 'ctmpl'.  Use 'tmpl' to obtain a full set of
938         template arguments for satisfaction in the adc_unify case.
940 2023-04-01  Patrick Palka  <ppalka@redhat.com>
942         PR c++/53164
943         PR c++/105848
944         * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of
945         FUNCTION_DECL.
946         (instantiate_class_template): Call mark_template_arguments_used.
947         (tsubst_copy_and_build) <case CALL_EXPR>: Revert r13-995 change.
948         (mark_template_arguments_used): Define.
949         (instantiate_body): Call mark_template_arguments_used.
951 2023-04-01  Iain Sandoe  <iain@sandoe.co.uk>
953         PR c++/101118
954         * coroutines.cc (flatten_await_stmt): Use the current count of
955         promoted temporaries to build a unique name for the frame entries.
957 2023-03-30  Jason Merrill  <jason@redhat.com>
959         PR c++/105452
960         * search.cc (type_context_for_name_lookup): New.
961         (accessible_p): Handle anonymous union.
962         * init.cc (maybe_instantiate_nsdmi_init): Use
963         type_context_for_name_lookup.
964         * parser.cc (cp_parser_class_specifier): Likewise.
965         * cp-tree.h (type_context_for_name_lookup): Declare.
967 2023-03-30  Jason Merrill  <jason@redhat.com>
969         PR c++/105221
970         * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
971         conversions.
973 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
975         PR c++/109319
976         * decl2.cc (grok_array_decl): After emitting a pedwarn for
977         -Wcomma-subscript, if processing_template_decl set orig_index_exp
978         to compound expr from orig_index_exp_list.
980 2023-03-30  Jason Merrill  <jason@redhat.com>
982         PR c++/107897
983         PR c++/108887
984         * decl2.cc (record_mangling): Use symtab_node::reset.
986 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
988         PR c++/109278
989         * call.cc (convert_like_internal): If pedwarn for extended float
990         type conversions doesn't report anything, avoid calling
991         maybe_inform_about_fndecl_for_bogus_argument_init.
993 2023-03-29  Jason Merrill  <jason@redhat.com>
995         PR c++/109321
996         PR c++/109320
997         * pt.cc (alias_ctad_tweaks): Rewrite deduced args.
998         (type_targs_deducible_from): Handle null pack deduction.
1000 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
1002         PR c/107002
1003         * parser.cc (cp_parser_binary_expression): Update for new param of
1004         check_for_xor_used_as_pow.
1006 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
1008         PR c++/109309
1009         * contracts.cc: Include intl.h.
1010         (check_postcondition_result): Don't form diagnostics from two halves
1011         of an English message to allow translations.
1013 2023-03-24  Patrick Palka  <ppalka@redhat.com>
1015         PR c++/106969
1016         * parser.cc (cp_parser_class_specifier): Clear current_class_ptr
1017         and current_class_ref sooner, before parsing a class definition.
1019 2023-03-24  Jason Merrill  <jason@redhat.com>
1021         PR c++/105481
1022         * pt.cc (type_unification_real): Adjust for partial ordering.
1024 2023-03-23  Jason Merrill  <jason@redhat.com>
1026         PR c++/105996
1027         * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
1028         and location wrappers.
1030 2023-03-23  Marek Polacek  <polacek@redhat.com>
1032         PR c++/107532
1033         * call.cc (class_has_reference_member_p): New.
1034         (class_has_reference_member_p_r): New.
1035         (reference_like_class_p): Don't look for a specific constructor.
1036         Use a DFS walk with class_has_reference_member_p_r.
1038 2023-03-23  Jason Merrill  <jason@redhat.com>
1040         PR c++/109241
1041         * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
1043 2023-03-22  Jason Merrill  <jason@redhat.com>
1045         PR c++/108390
1046         * pt.cc (unify): Use fold of build_nop instead of fold_convert.
1048 2023-03-22  Jason Merrill  <jason@redhat.com>
1050         PR c++/108795
1051         * semantics.cc (finish_id_expression_1): Check scope before
1052         returning id_expression.
1054 2023-03-22  Alex Coplan  <alex.coplan@arm.com>
1056         PR c++/109177
1057         * call.cc (build_over_call): Use make_temp_override to suppress
1058         both unavailable and deprecated warnings when calling
1059         build_addr_func.
1061 2023-03-21  Jason Merrill  <jason@redhat.com>
1063         PR c++/106890
1064         * init.cc (maybe_instantiate_nsdmi_init): Don't leave
1065         current_function_decl set to a constructor.
1067 2023-03-20  Marek Polacek  <polacek@redhat.com>
1069         PR c++/109159
1070         * call.cc (add_template_candidate_real): Add explicit decls to the
1071         set of candidates when the initializer is a braced-init-list.
1073 2023-03-20  Jakub Jelinek  <jakub@redhat.com>
1075         PR c++/109164
1076         * cp-tree.h (var_needs_tls_wrapper): Declare.
1077         * decl2.cc (var_needs_tls_wrapper): No longer static.
1078         * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables
1079         for which a TLS wrapper will be needed.
1081 2023-03-17  Jason Merrill  <jason@redhat.com>
1083         PR c++/108975
1084         * lambda.cc (prune_lambda_captures): Don't bother in a template.
1086 2023-03-17  Jason Merrill  <jason@redhat.com>
1088         PR c++/109172
1089         * except.cc (build_throw): Check dtor access.
1091 2023-03-17  Jason Merrill  <jason@redhat.com>
1093         PR c++/69410
1094         * friend.cc (do_friend): Handle namespace as scope argument.
1095         * decl.cc (grokdeclarator): Pass down in_namespace.
1097 2023-03-16  Jason Merrill  <jason@redhat.com>
1099         PR c++/105809
1100         * init.cc (get_nsdmi): Split out...
1101         (maybe_instantiate_nsdmi_init): ...this function.
1102         * cp-tree.h: Declare it.
1103         * pt.cc (tsubst_expr): Use it.
1105 2023-03-16  Jason Merrill  <jason@redhat.com>
1107         PR c++/108242
1108         * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
1110 2023-03-16  Jason Merrill  <jason@redhat.com>
1112         PR c++/101869
1113         * semantics.cc (finish_qualified_id_expr): Don't try to build a
1114         pointer-to-member if the scope is an enumeration.
1116 2023-03-16  Patrick Palka  <ppalka@redhat.com>
1118         PR c++/109030
1119         * constexpr.cc (maybe_constant_init_1): For an unevaluated
1120         non-manifestly-constant operand, don't constant evaluate
1121         and instead call fold_to_constant as in maybe_constant_value.
1123 2023-03-16  Patrick Palka  <ppalka@redhat.com>
1125         PR c++/100288
1126         * constraint.cc (satisfaction_cache::get): Relax overly strict
1127         checking assert in the constraint recursion case.
1129 2023-03-16  Jason Merrill  <jason@redhat.com>
1131         PR c++/105406
1132         * coroutines.cc (build_co_await): Handle lvalue 'o'.
1134 2023-03-15  Jason Merrill  <jason@redhat.com>
1136         PR c++/103871
1137         PR c++/98056
1138         * typeck.cc (cp_build_modify_expr): Allow array initialization of
1139         DECL_ARTIFICIAL variable.
1141 2023-03-15  Marek Polacek  <polacek@redhat.com>
1143         PR c++/107280
1144         * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
1146 2023-03-15  Jason Merrill  <jason@redhat.com>
1148         PR c++/58538
1149         * semantics.cc (check_template_template_default_arg): Check
1150         maybe_get_template_decl_from_type_decl.
1152 2023-03-15  Jason Merrill  <jason@redhat.com>
1154         PR c++/108179
1155         PR c++/104107
1156         PR c++/95036
1157         * pt.cc (coerce_template_template_parms): Use args from
1158         DECL_CONTEXT (arg_tmpl) instead of outer_args.
1160 2023-03-15  Jason Merrill  <jason@redhat.com>
1162         PR c++/108179
1163         * pt.cc (coerce_template_template_parms): Take the arg and parm
1164         templates directly.
1165         (coerce_template_template_parm): Adjust.
1166         (template_template_parm_bindings_ok_p): Adjust.
1167         (convert_template_argument): Adjust.
1169 2023-03-14  Patrick Palka  <ppalka@redhat.com>
1171         PR c++/96830
1172         * pt.cc (push_inline_template_parms_recursive): Set
1173         TEMPLATE_PARMS_CONSTRAINTS.
1174         (push_template_decl): For an out-of-line declaration, verify
1175         constraints for each enclosing template scope match those of the
1176         original template declaratation.
1178 2023-03-14  Patrick Palka  <ppalka@redhat.com>
1180         PR c++/96830
1181         * pt.cc (redeclare_class_template): Add missing "of" in
1182         constraint mismatch diagnostic.
1183         (tsubst_friend_class): For an already declared class template,
1184         substitute and pass the friend declaration's constraints to
1185         redeclare_class_template instead of passing the existing
1186         template's constraints.
1188 2023-03-14  Jason Merrill  <jason@redhat.com>
1190         PR c++/108468
1191         * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
1192         is non-null.
1194 2023-03-14  Jason Merrill  <jason@redhat.com>
1196         PR c++/107310
1197         * cp-gimplify.cc (genericize_if_stmt): Restore folding
1198         of constant conditions.
1200 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
1202         PR c++/109096
1203         * tree.cc (record_has_unique_obj_representations): Ignore unnamed
1204         bitfields.
1206 2023-03-13  Jason Merrill  <jason@redhat.com>
1208         PR c++/107128
1209         * parser.cc (cp_parser_set_decl_spec_type): Use
1210         redefined_builtin_type for extended_float_type_p.
1212 2023-03-13  Marek Polacek  <polacek@redhat.com>
1214         PR c++/107532
1215         * call.cc (reference_like_class_p): Check for std::span.
1217 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1219         PR c++/107558
1220         * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on
1221         automatic non-aggregate variables just because of
1222         -fmerge-all-constants.
1224 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1226         PR c++/109039
1227         * class.cc (end_of_class): For bit-fields, instead of computing
1228         offset as sum of byte_position (field) and DECL_SIZE_UNIT (field),
1229         compute it as sum of bit_position (field) and DECL_SIZE (field)
1230         divided by BITS_PER_UNIT rounded up.
1232 2023-03-10  Jason Merrill  <jason@redhat.com>
1234         PR c++/108972
1235         * lambda.cc (compare_lambda_template_head): Check more
1236         for error_mark_node.
1238 2023-03-10  Jason Merrill  <jason@redhat.com>
1240         PR c++/108566
1241         * mangle.cc (anon_aggr_naming_decl): New.
1242         (write_unqualified_name): Use it.
1244 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1246         PR c/108079
1247         * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
1248         after diagnosing it.
1250 2023-03-10  Jason Merrill  <jason@redhat.com>
1252         PR c++/108099
1253         * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
1255 2023-03-10  Jason Merrill  <jason@redhat.com>
1257         PR c++/108542
1258         * class.cc (instantiate_type): Strip location wrapper.
1260 2023-03-09  Jason Merrill  <jason@redhat.com>
1262         PR c++/108773
1263         * init.cc (find_allocator_temps_r): New.
1264         (combine_allocator_temps): Replace find_allocator_temp.
1265         (build_vec_init): Adjust.
1267 2023-03-09  Jason Merrill  <jason@redhat.com>
1269         DR 2664
1270         PR c++/102529
1271         * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
1273 2023-03-09  Jason Merrill  <jason@redhat.com>
1274             Michael Spertus  <mike@spertus.com>
1276         PR c++/105841
1277         * pt.cc (corresponding_template_parameter_list): Split out...
1278         (corresponding_template_parameter): ...from here.
1279         (find_template_parameters): Factor out...
1280         (find_template_parameter_info::find_in): ...this function.
1281         (find_template_parameter_info::find_in_recursive): New.
1282         (find_template_parameter_info::found): New.
1283         (alias_ctad_tweaks): Only add parms used in the deduced args.
1285 2023-03-09  Jason Merrill  <jason@redhat.com>
1287         * cp-trait.def (IS_DEDUCIBLE): Add space to name.
1289 2023-03-09  Jason Merrill  <jason@redhat.com>
1291         PR c++/105841
1292         * cp-trait.def (IS_DEDUCIBLE): New.
1293         * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type.
1294         * parser.cc (cp_parser_trait): Likewise.
1295         * tree.cc (cp_tree_equal): Likewise.
1296         * pt.cc (tsubst_copy_and_build): Likewise.
1297         (type_targs_deducible_from): New.
1298         (alias_ctad_tweaks): Use it.
1299         * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE.
1300         (finish_trait_expr): Likewise.
1301         * constraint.cc (diagnose_trait_expr): Likewise.
1302         * cp-tree.h (type_targs_deducible_from): Declare.
1304 2023-03-07  Jason Merrill  <jason@redhat.com>
1306         PR c++/108526
1307         PR c++/106651
1308         * pt.cc (tsubst_function_decl): Don't replace the closure
1309         parameter if DECL_STATIC_FUNCTION_P.
1311 2023-03-07  Marek Polacek  <polacek@redhat.com>
1313         PR c++/107532
1314         * call.cc (reference_like_class_p): New.
1315         (do_warn_dangling_reference): Add new bool parameter.  See through
1316         reference_like_class_p.
1318 2023-03-07  Jakub Jelinek  <jakub@redhat.com>
1320         PR c++/109042
1321         * rtti.cc (emit_support_tinfo_1): Don't assert that last
1322         unemitted_tinfo_decls element is tinfo, instead pop from it only in
1323         that case.
1324         * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl
1325         for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL.
1327 2023-03-07  Marek Polacek  <polacek@redhat.com>
1329         PR c++/109030
1330         * constexpr.cc (cxx_eval_call_expression): Relax assert.
1332 2023-03-07  Marek Polacek  <polacek@redhat.com>
1334         PR c++/107939
1335         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
1336         'any' when recursing on a VAR_DECL and not a pointer to function.
1338 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
1340         PR c++/108702
1341         * constexpr.cc: Include toplev.h.
1342         (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a local
1343         static initialized by constant expression outside of a constexpr
1344         function which has been deferred by make_rtl_for_nonlocal_decl,
1345         call rest_of_decl_compilation on it.
1347 2023-03-03  Patrick Palka  <ppalka@redhat.com>
1349         PR c++/108998
1350         * pt.cc (el_data::skipped_trees): New data member.
1351         (extract_locals_r): Push to skipped_trees any unevaluated
1352         contexts that we skipped over.
1353         (extract_local_specs): For the second walk, start from each
1354         tree in skipped_trees.
1356 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
1358         * typeck.cc (cp_build_binary_op): Suppress redundant warning
1359         for pfn null test in pmfn test with vbit-in-delta.
1361 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
1363         PR target/108883
1364         * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE
1365         enumerators.
1366         (fallback_dfloat32_type, fallback_dfloat64_type,
1367         fallback_dfloat128_type): Remove.
1368         * rtti.cc (emit_support_tinfo_1): If not emitted already, call
1369         emit_tinfo_decl and remove from unemitted_tinfo_decls right away.
1370         (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array
1371         into new fundamentals_with_fallback array.  Call emit_support_tinfo_1
1372         on elements of that array too, with the difference that if
1373         the type is NULL, use a fallback REAL_TYPE for it temporarily.
1374         Drop the !targetm.decimal_float_supported_p () handling.  Call
1375         targetm.emit_support_tinfos at the end.
1376         * mangle.cc (write_builtin_type): Remove references to
1377         fallback_dfloat*_type.  Handle bfloat16_type_node mangling.
1379 2023-03-02  Patrick Palka  <ppalka@redhat.com>
1381         PR c++/108243
1382         PR c++/97553
1383         * cp-gimplify.cc (cp_fully_fold): Add an internal overload that
1384         additionally takes and propagate an mce_value parameter, and
1385         define the existing public overload in terms of it.
1386         (cp_fully_fold_init): Pass mce_false to cp_fully_fold.
1388 2023-03-02  Patrick Palka  <ppalka@redhat.com>
1390         PR c++/108243
1391         * constexpr.cc (maybe_constant_init_1): Override
1392         manifestly_const_eval to true if is_static.
1394 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
1396         PR debug/108716
1397         * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
1398         DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
1399         of USING_STMT or input_location.
1401 2023-03-02  Marek Polacek  <polacek@redhat.com>
1403         PR c++/106259
1404         * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first
1405         lookup of SPEC didn't find anything, try to look for
1406         most_general_template.
1408 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
1410         PR c++/105839
1411         * parser.cc (cp_convert_omp_range_for): Allow in assert
1412         decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has
1413         error_mark_node type.
1414         (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back
1415         on decls which have error_mark_node type.
1417 2023-03-01  Marek Polacek  <polacek@redhat.com>
1419         PR c++/107574
1420         * constexpr.cc (cxx_eval_constant_expression): Emit an error when
1421         a PTRMEM_CST cannot be evaluated.
1423 2023-03-01  Patrick Palka  <ppalka@redhat.com>
1425         * pt.cc (tsubst_scope): Define.
1426         (tsubst_decl) <case USING_DECL>: Call tsubst_scope instead of
1427         calling tsubst_scope with tf_qualifying_scope set.
1428         (tsubst_qualified_id): Call tsubst_scope instead of
1429         calling tsubst with tf_qualifying_scope set.
1430         (tsubst_copy): Immediately delegate to tsubst for all TYPE_P
1431         trees.  Remove tf_qualifying_scope manipulation.
1432         <case SCOPE_REF>: Call tsubst_scope instead of calling
1433         tsubst with tf_qualifying_scope set.
1435 2023-03-01  Patrick Palka  <ppalka@redhat.com>
1436             Jason Merrill  <jason@redhat.com>
1438         PR c++/108219
1439         PR c++/108218
1440         * constexpr.cc (fold_to_constant): Define.
1441         (maybe_constant_value): Move up early exit test for unevaluated
1442         operands.  Try reducing an unevaluated operand to a constant via
1443         fold_to_constant.
1444         (fold_non_dependent_expr_template): Add early exit test for
1445         CONSTANT_CLASS_P nodes.  Try reducing an unevaluated operand
1446         to a constant via fold_to_constant.
1447         * cp-tree.h (fold_to_constant): Declare.
1449 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
1451         PR c++/108606
1452         * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
1453         Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
1454         just return true.
1456 2023-02-28  Patrick Palka  <ppalka@redhat.com>
1458         PR c++/108848
1459         * pt.cc (finish_template_variable): Move dependence check
1460         to here from ...
1461         (lookup_and_finish_template_variable): ... here.
1462         * semantics.cc (finish_id_expression_1): Call
1463         finish_template_variable sooner, before (and regardless of) the
1464         type_dependent_expression_p test.
1466 2023-02-28  Marek Polacek  <polacek@redhat.com>
1468         PR c++/108550
1469         * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
1471 2023-02-20  Marek Polacek  <polacek@redhat.com>
1473         PR c++/101073
1474         * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
1475         constructor/op= with a checking assert.
1477 2023-02-20  Marek Polacek  <polacek@redhat.com>
1479         PR c++/108829
1480         * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P.
1481         (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to
1482         prepend_one_capture.
1484 2023-02-18  Jason Merrill  <jason@redhat.com>
1486         DR 2518
1487         PR c++/52809
1488         PR c++/53638
1489         PR c++/87389
1490         PR c++/89741
1491         PR c++/92099
1492         PR c++/104041
1493         PR c++/104691
1494         * semantics.cc (finish_static_assert): Don't diagnose in
1495         template context.
1497 2023-02-17  Patrick Palka  <ppalka@redhat.com>
1499         PR c++/108243
1500         PR c++/97553
1501         * cp-gimplify.cc (enum fold_flags): Define.
1502         (fold_flags_t): Declare.
1503         (cp_fold_data::genericize): Replace this data member with ...
1504         (cp_fold_data::fold_flags): ... this.
1505         (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold.
1506         (cp_fold_function): Likewise.
1507         (cp_fold_maybe_rvalue): Add an internal overload that
1508         additionally takes and propagates a fold_flags_t parameter, and
1509         define the existing public overload in terms of it.
1510         (cp_fold_rvalue): Likewise.
1511         (cp_fully_fold_init): Adjust use of cp_fold_data.
1512         (fold_cache): Replace with ...
1513         (fold_caches): ... this 2-element array of caches.
1514         (get_fold_cache): Define.
1515         (clear_fold_cache): Adjust.
1516         (cp_fold): Add fold_flags_t parameter.  Use get_fold_cache.
1517         Pass flags to calls to cp_fold, cp_fold_rvalue and
1518         cp_fold_maybe_rvalue.
1519         <case CALL_EXPR>: If ff_mce_false is set, fold
1520         __builtin_is_constant_evaluated to false and pass mce_false to
1521         maybe_constant_value.
1523 2023-02-17  Patrick Palka  <ppalka@redhat.com>
1525         * constexpr.cc (constexpr_call::manifestly_const_eval): Give
1526         it type int instead of bool.
1527         (constexpr_ctx::manifestly_const_eval): Give it type mce_value
1528         instead of bool.
1529         (cxx_eval_builtin_function_call): Adjust after making
1530         manifestly_const_eval tri-state.
1531         (cxx_eval_call_expression): Likewise.
1532         (cxx_eval_binary_expression): Likewise.
1533         (cxx_eval_conditional_expression): Likewise.
1534         (cxx_eval_constant_expression): Likewise.
1535         (cxx_eval_outermost_constant_expr): Likewise.
1536         (cxx_constant_value): Likewise.
1537         (cxx_constant_dtor): Likewise.
1538         (maybe_constant_value): Give manifestly_const_eval parameter
1539         type mce_value instead of bool and adjust accordingly.
1540         (fold_non_dependent_expr_template): Adjust call
1541         to cxx_eval_outermost_constant_expr.
1542         (fold_non_dependent_expr): Likewise.
1543         (maybe_constant_init_1): Likewise.
1544         * constraint.cc (satisfy_atom): Adjust call to
1545         maybe_constant_value.
1546         * cp-tree.h (enum class mce_value): Define.
1547         (maybe_constant_value): Adjust manifestly_const_eval parameter
1548         type and default argument.
1549         * decl.cc (compute_array_index_type_loc): Adjust call to
1550         maybe_constant_value.
1551         * pt.cc (convert_nontype_argument): Likewise.
1553 2023-02-16  Patrick Palka  <ppalka@redhat.com>
1555         PR c++/107773
1556         * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope.
1557         * decl.cc (make_typename_type): Use lookup_member instead of
1558         lookup_field.  If tf_qualifying_scope is set, pass want_type=true
1559         instead of =false to lookup_member.  Generalize format specifier
1560         in diagnostic to handle both type and non-type bindings.
1561         * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope.  Tidy
1562         the function.
1563         (tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when
1564         substituting USING_DECL_SCOPE.
1565         (tsubst): Clear tf_qualifying_scope right away and remember if
1566         it was set.  Do the same for tf_tst_ok sooner.
1567         <case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting
1568         TYPE_CONTEXT.  Pass tf_qualifying_scope to make_typename_type
1569         if it was set.
1570         (tsubst_qualified_id): Set tf_qualifying_scope when substituting
1571         the scope.
1572         (tsubst_copy): Clear tf_qualifying_scope and remember if it was
1573         set.
1574         <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
1575         scope.
1576         <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
1577         * search.cc (lookup_member): Document default argument.
1579 2023-02-16  Patrick Palka  <ppalka@redhat.com>
1581         * cp-tree.h: Mechanically drop static from static inline
1582         functions via s/^static inline/inline/g.
1584 2023-02-15  Marek Polacek  <polacek@redhat.com>
1586         PR c++/106675
1587         * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
1589 2023-02-10  Marek Polacek  <polacek@redhat.com>
1591         PR c++/107079
1592         * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
1594 2023-02-09  Tobias Burnus  <tobias@codesourcery.com>
1596         * parser.cc (cp_parser_omp_allocate): Parse align
1597         clause and check for restrictions.
1599 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
1601         PR c++/108698
1602         * mangle.cc (write_expression, write_template_arg): Handle
1603         EXCESS_PRECISION_EXPR with REAL_CST operand as
1604         write_template_arg_literal on fold_convert of the REAL_CST
1605         to EXCESS_PRECISION_EXPR type.
1607 2023-02-06  Patrick Palka  <ppalka@redhat.com>
1609         PR c++/107461
1610         * cp-tree.h (call_expr_dependent_name): Declare.
1611         * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: Use
1612         call_expr_dependent_name instead of dependent_name.
1613         * tree.cc (call_expr_dependent_name): Define.
1614         (called_fns_equal): Adjust to take two CALL_EXPRs instead of
1615         CALL_EXPR_FNs thereof.  Use call_expr_dependent_name instead
1616         of dependent_name.
1617         (cp_tree_equal) <case CALL_EXPR>: Adjust call to called_fns_equal.
1619 2023-02-03  Marek Polacek  <polacek@redhat.com>
1621         PR c++/108158
1622         * constexpr.cc (cxx_eval_array_reference): Don't replace
1623         new_ctx.object.
1625 2023-02-03  Patrick Palka  <ppalka@redhat.com>
1627         PR c++/107461
1628         * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
1629         the selected callee during overload set pruning.
1631 2023-02-03  Patrick Palka  <ppalka@redhat.com>
1633         PR c++/96745
1634         * class.cc (check_methods): Diagnose an unviable OVERLOAD
1635         set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one.
1636         Then prune the OVERLOAD to a single function.
1637         (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being
1638         an OVERLOAD when calling deduce_noexcept_on_destructor.
1639         Document why it has to be called before check_methods.
1641 2023-02-03  Patrick Palka  <ppalka@redhat.com>
1643         PR c++/108579
1644         * class.cc (check_methods): Swap order of constraints_satisfied_p
1645         and copy/move_fn_p tests.
1647 2023-02-01  Marek Polacek  <polacek@redhat.com>
1649         PR c++/107755
1650         * call.cc (build_new_op): Don't call warn_logical_operator when
1651         processing a template.
1653 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
1655         PR c++/108607
1656         * constexpr.cc (cxx_eval_constant_expression): Handle OMP_*
1657         and OACC_* constructs as non-constant.
1658         (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE.
1660 2023-02-01  Jason Merrill  <jason@redhat.com>
1662         * class.cc (note_name_declared_in_class): Change from permerror to
1663         -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases.
1665 2023-01-31  Jason Merrill  <jason@redhat.com>
1667         PR c++/108559
1668         * cp-gimplify.cc (any_non_eliding_target_exprs): New.
1669         (cp_genericize_init): Check it.
1671 2023-01-31  Marek Polacek  <polacek@redhat.com>
1673         PR c++/107593
1674         PR c++/108597
1675         * cp-tree.h (instantiation_dependent_expression_p): Don't
1676         declare here.
1678 2023-01-26  Marek Polacek  <polacek@redhat.com>
1680         PR c++/105300
1681         * parser.cc: Remove unnecessary forward declarations.
1682         (cp_parser_string_literal): New wrapper.
1683         (cp_parser_string_literal_common): Renamed from
1684         cp_parser_string_literal.  Add a bool parameter.  Give an error when
1685         UDLs are not permitted.
1686         (cp_parser_userdef_string_literal): New wrapper.
1687         (finish_userdef_string_literal): Renamed from
1688         cp_parser_userdef_string_literal.
1689         (cp_parser_primary_expression): Call cp_parser_userdef_string_literal
1690         instead of cp_parser_string_literal.
1691         (cp_parser_linkage_specification): Move a variable declaration closer
1692         to its first use.
1693         (cp_parser_static_assert): Likewise.
1694         (cp_parser_operator): Call cp_parser_userdef_string_literal instead of
1695         cp_parser_string_literal.
1696         (cp_parser_asm_definition): Move a variable declaration closer to its
1697         first use.
1698         (cp_parser_asm_specification_opt): Move variable declarations closer to
1699         their first use.
1700         (cp_parser_asm_operand_list): Likewise.
1701         (cp_parser_asm_clobber_list): Likewise.
1703 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
1705         PR c++/108503
1706         * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been
1707         called in !processing_template_decl with processing_template_decl
1708         temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily.
1709         (cp_finish_omp_range_for): And set it back again here.
1711 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
1713         PR c++/108525
1714         * mangle.cc (write_closure_type_name): Don't assume all
1715         lambda operator() fns are methods.
1717 2023-01-24  Jason Merrill  <jason@redhat.com>
1719         PR c++/108504
1720         * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
1721         token, too.
1723 2023-01-24  Jason Merrill  <jason@redhat.com>
1725         PR c++/108526
1726         * pt.cc (tsubst_function_decl): Handle static lambda.
1728 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
1730         PR c++/108474
1731         * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
1733 2023-01-24  Jason Merrill  <jason@redhat.com>
1735         PR c++/107303
1736         PR c++/107329
1737         * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double
1738         TARGET_EXPR, keep the outer one instead of the inner one.
1739         (maybe_replace_decl): New.
1741 2023-01-23  Jason Merrill  <jason@redhat.com>
1743         PR c++/107267
1744         * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
1745         of trivial types.
1747 2023-01-23  Marek Polacek  <polacek@redhat.com>
1749         PR c++/107797
1750         * cvt.cc (ocp_convert): copy_warning when creating a new
1751         COMPOUND_EXPR.
1752         * init.cc (build_new_1): Suppress -Wunused-value on
1753         compiler-generated COMPOUND_EXPRs.
1755 2023-01-23  Jason Merrill  <jason@redhat.com>
1757         PR c++/108195
1758         * call.cc (build_user_type_conversion_1): Check whether the
1759         iterators also find a list ctor.
1761 2023-01-23  Jason Merrill  <jason@redhat.com>
1763         PR c++/108496
1764         * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
1765         set.
1767 2023-01-23  Jason Merrill  <jason@redhat.com>
1769         PR c++/53288
1770         DR 1299
1771         * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
1773 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
1775         PR c++/108437
1776         * cp-tree.h (keep_unused_object_arg): Declare.
1777         * call.cc (keep_unused_object_arg): No longer static.
1778         * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF
1779         with overload being static member function.
1781 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
1783         PR c++/53932
1784         * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace
1785         DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding
1786         DECL_VALUE_EXPR.
1788 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
1790         PR c++/105593
1791         * decl.cc (cp_finish_decl): Check warning_enabled_at
1792         at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead
1793         of warn_init_self.
1795 2023-01-14  Jakub Jelinek  <jakub@redhat.com>
1797         PR c++/108365
1798         * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
1799         division or modulo.
1801 2023-01-13  Jakub Jelinek  <jakub@redhat.com>
1803         PR c++/108285
1804         * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR
1805         use its operand except that for warning purposes use the original
1806         EXCESS_PRECISION_EXPR.
1807         * call.cc (convert_like_internal): Only look through
1808         EXCESS_PRECISION_EXPR when calling cp_convert, not when calling
1809         cp_convert_and_check.
1811 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
1813         PR c++/105838
1814         PR c++/108047
1815         PR c++/108266
1816         * call.cc (maybe_init_list_as_range): Always return NULL_TREE if
1817         processing_template_decl.
1819 2023-01-05  Patrick Palka  <ppalka@redhat.com>
1821         PR c++/108275
1822         * parser.cc (cp_parser_class_head): Use dk_deferred instead of
1823         dk_no_check when parsing the class name.
1825 2023-01-05  Jakub Jelinek  <jakub@redhat.com>
1827         PR c++/108286
1828         * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
1829         OMP_CLAUSE_MAP.
1831 2023-01-04  Patrick Palka  <ppalka@redhat.com>
1833         PR c++/108282
1834         * decl2.cc (mark_single_function): Ignore mark_used failure
1835         only in a non-SFINAE context rather than in a SFINAE one.
1837 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
1839         PR c++/108206
1840         * decl.cc (merge_default_template_args): Return false if either
1841         new_parm or old_parm are erroneous.
1844 Copyright (C) 2023 Free Software Foundation, Inc.
1846 Copying and distribution of this file, with or without modification,
1847 are permitted in any medium without royalty provided the copyright
1848 notice and this notice are preserved.