Require target lra in gcc.dg/pr108095.c
[official-gcc.git] / gcc / cp / ChangeLog
blobba092fe1ae6bb42fe1305c75b02680972e2f6b6b
1 2023-09-30  Eugene Rozenfeld  <erozen@microsoft.com>
3         * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY
5 2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>
7         * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables.
9 2023-09-22  Jason Merrill  <jason@redhat.com>
11         PR c++/111357
12         * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR.
14 2023-09-22  Jason Merrill  <jason@redhat.com>
16         * constexpr.cc (free_constructor): Handle null ce->value.
18 2023-09-22  Jason Merrill  <jason@redhat.com>
20         PR c++/111529
21         * parser.cc (cp_parser_lambda_declarator_opt): Don't suggest
22         -std=c++14 for lambda templates.
23         * pt.cc (tsubst_expr): Move ANNOTATE_EXPR handling...
24         (tsubst_copy_and_build): ...here.
26 2023-09-22  Patrick Palka  <ppalka@redhat.com>
28         PR c++/111493
29         * decl2.cc (grok_array_decl): Guard diagnostic and backward
30         compatibility fallback code paths with tf_error.
32 2023-09-22  Patrick Palka  <ppalka@redhat.com>
34         PR c++/111485
35         * pt.cc (is_compatible_template_arg): New parameter 'args'.
36         Add the outer template arguments 'args' to 'new_args'.
37         (convert_template_argument): Pass 'args' to
38         is_compatible_template_arg.
40 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
42         * parser.cc (cp_parser_postfix_expression): Parse
43         __builtin_classify_type call with typename as argument.
44         * pt.cc (tsubst_copy_and_build): Handle __builtin_classify_type
45         with dependent typename as argument.
47 2023-09-20  Patrick Palka  <ppalka@redhat.com>
49         PR c++/111471
50         * cxx-pretty-print.cc (cxx_pretty_printer::expression)
51         <case VAR_DECL>: Handle class NTTP objects by printing
52         their type and value.
53         <case VIEW_CONVERT_EXPR>: Strip const VIEW_CONVERT_EXPR
54         wrappers for class NTTPs.
55         (pp_cxx_template_argument_list): Don't handle class NTTP
56         objects here.
58 2023-09-20  Patrick Palka  <ppalka@redhat.com>
60         * pt.cc (tsubst_function_decl): Don't bother computing 'argvec'
61         when 'lambda_fntype' is set.
62         (tsubst_template_decl): Make sure we return a TEMPLATE_DECL
63         during specialization lookup.  In the non-class non-function
64         template case, use tsubst_decl directly with use_spec_table=false,
65         update DECL_TI_ARGS and call register_specialization like
66         tsubst_decl would have done if use_spec_table=true.
68 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
70         PR c++/111392
71         * parser.h (struct cp_lexer): Add in_omp_decl_attribute member.
72         * cp-tree.h (cp_maybe_parse_omp_decl): Declare.
73         * parser.cc (cp_parser_handle_statement_omp_attributes): Diagnose
74         omp::decl attribute on statements.  Adjust diagnostic wording for
75         omp::decl.
76         (cp_parser_omp_directive_args): Add DECL_P argument, set TREE_PUBLIC
77         to it on the DEFERRED_PARSE tree.
78         (cp_parser_omp_sequence_args): Adjust caller.
79         (cp_parser_std_attribute): Handle omp::decl attribute.
80         (cp_parser_omp_var_list): If parser->lexer->in_omp_decl_attribute
81         don't expect any arguments, instead create clause or TREE_LIST for
82         that decl.
83         (cp_parser_late_parsing_omp_declare_simd): Adjust diagnostic wording
84         for omp::decl.
85         (cp_maybe_parse_omp_decl): New function.
86         (cp_parser_omp_declare_target): If
87         parser->lexer->in_omp_decl_attribute and first token isn't name or
88         comma invoke cp_parser_omp_var_list.
89         * decl2.cc (cplus_decl_attributes): Adjust diagnostic wording for
90         omp::decl.  Handle omp::decl on declarations.
91         * name-lookup.cc (finish_using_directive): Adjust diagnostic wording
92         for omp::decl.
94 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
96         * mapper-client.cc, mapper-client.h (open_module_client): Accept
97         dependency tracking and track module mapper files as
98         dependencies.
99         * module.cc (make_mapper, get_mapper): Pass the dependency
100         tracking class down.
102 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
104         * module.cc (do_import): Report imported CMI files as
105         dependencies.
107 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
109         * module.cc (preprocessed_module): Pass whether the module is
110         exported to dependency tracking.
112 2023-09-19  Javier Martinez  <javier.martinez.bugzilla@gmail.com>
114         * class.cc (propagate_class_warmth_attribute): New function.
115         (check_bases_and_members): propagate hot and cold attributes
116         to all FUNCTION_DECL when the record is marked hot or cold.
117         * cp-tree.h (maybe_propagate_warmth_attributes): New function.
118         * decl2.cc (maybe_propagate_warmth_attributes): New function.
119         * method.cc (lazily_declare_fn): propagate hot and cold
120         attributes to lazily declared functions when the record is
121         marked hot or cold.
123 2023-09-19  Patrick Palka  <ppalka@redhat.com>
125         * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC
126         test guarding TYPE_TEMPLATE_INFO.
128 2023-09-19  Jason Merrill  <jason@redhat.com>
130         DR 2799
131         * class.cc (add_implicit_default_ctor): Split out...
132         (add_implicitly_declared_members): ...from here.
133         Also call it when inheriting a default ctor.
135 2023-09-19  Marek Polacek  <polacek@redhat.com>
137         * call.cc (build_over_call): Set ADDR_EXPR_DENOTES_CALL_P.  Don't handle
138         immediate_invocation_p here.
139         * constexpr.cc (cxx_eval_call_expression): Use mce_true for
140         DECL_IMMEDIATE_FUNCTION_P.
141         (cxx_eval_conditional_expression): Call cp_fold_immediate.
142         * cp-gimplify.cc (enum fold_flags): Add ff_fold_immediate.
143         (maybe_replace_decl): Make static.
144         (cp_fold_r): Expand immediate invocations.
145         (cp_fold_immediate_r): New.
146         (cp_fold_immediate): New.
147         * cp-tree.h (ADDR_EXPR_DENOTES_CALL_P): Define.
148         (cp_fold_immediate): Declare.
149         * tree.cc (bot_replace): Don't handle immediate invocations here.
151 2023-09-19  Patrick Palka  <ppalka@redhat.com>
153         PR c++/111419
154         * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call
155         complete_type if the type is volatile.
156         <case VAR_DECL>: Likewise.
158 2023-09-19  Patrick Palka  <ppalka@redhat.com>
160         PR c++/99631
161         * semantics.cc (finish_decltype_type): For an NTTP object,
162         return its type modulo cv-quals.
164 2023-09-18  Patrick Palka  <ppalka@redhat.com>
166         PR c++/89231
167         * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality
168         test by not calling most_general_template.  Only unify the
169         innermost levels of template arguments.
170         (unify) <case CLASS_TYPE>: Only unify the innermost levels of
171         template arguments, and only if the template is primary.
173 2023-09-18  Patrick Palka  <ppalka@redhat.com>
175         PR c++/63198
176         PR c++/18474
177         * semantics.cc (maybe_convert_cond): Look through implicit
178         INDIRECT_REF when deciding whether to issue a -Wparentheses
179         warning, and consider templated assignment expressions as well.
180         (finish_parenthesized_expr): Look through implicit INDIRECT_REF
181         when suppressing -Wparentheses warning.
182         * typeck.cc (build_x_modify_expr): Check simple assignments
183         ahead time too, not just compound assignments.  Give the second
184         operand of MODOP_EXPR a non-null type so that it's not considered
185         always instantiation-dependent.  Don't call suppress_warning.
187 2023-09-18  Patrick Palka  <ppalka@redhat.com>
189         PR c++/108347
190         * pt.cc (unify): Return unify_success for identical dependent
191         DECL_P 'arg' and 'parm'.
192         <case CONST_DECL>: Remove handling.
194 2023-09-18  Patrick Palka  <ppalka@redhat.com>
196         * call.cc (add_template_candidate_real): Check arity even
197         when there are no explicit template arguments.  Combine the
198         two adjacent '!obj' tests into one.
200 2023-09-18  Patrick Palka  <ppalka@redhat.com>
202         * pt.cc (register_specialization): Remove now-unnecessary
203         early exit for FUNCTION_DECL partial instantiation.
204         (tsubst_template_decl): Pass use_spec_table=false to
205         tsubst_function_decl.  Set DECL_TI_ARGS of a non-lambda
206         FUNCTION_DECL specialization to the full set of arguments.
207         Simplify register_specialization call accordingly.
209 2023-09-18  Jason Merrill  <jason@redhat.com>
211         * class.cc (check_subobject_offset): Use similar_type_p.
213 2023-09-12  Jason Merrill  <jason@redhat.com>
215         PR c++/111357
216         * pt.cc (expand_integer_pack): Convert argument to int.
218 2023-09-12  Jason Merrill  <jason@redhat.com>
220         PR c++/107198
221         * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR
222         regardless of seen_error.
224 2023-09-08  Patrick Palka  <ppalka@redhat.com>
226         PR c++/99599
227         * pt.cc (check_non_deducible_conversions): Add bool parameter
228         passed down to check_non_deducible_conversion.
229         (fn_type_unification): Call check_non_deducible_conversions
230         an extra time before satisfaction with noninst_only_p=true.
231         (conversion_may_instantiate_p): Define.
232         (check_non_deducible_conversion): Add bool parameter controlling
233         whether to compute only conversions that are guaranteed to
234         not induce template instantiation.
236 2023-09-07  Sandra Loosemore  <sandra@codesourcery.com>
238         PR c++/111274
239         * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK.
241 2023-09-06  Jason Merrill  <jason@redhat.com>
243         * class.cc (check_subobject_offset): Check
244         same_type_ignoring_top_level_qualifiers_p.
246 2023-09-05  Marek Polacek  <polacek@redhat.com>
248         PR c++/91483
249         * constexpr.cc (verify_constant_explain_r): New.
250         (verify_constant): Call it.
252 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
254         PR c++/52953
255         * name-lookup.cc (check_local_shadow): Don't punt early for
256         DECL_EXTERNAL decls, instead just disable the shadowing of namespace
257         decls check for those and emit a pedwarn rather than error_at or
258         permerror for those.  Formatting fix.
260 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
262         PR c++/52953
263         * name-lookup.h (struct cp_binding_level): Add artificial bit-field.
264         Formatting fixes.
265         * name-lookup.cc (check_local_shadow): Skip artificial bindings when
266         checking if parameter scope is parent scope.  Don't special case
267         FUNCTION_NEEDS_BODY_BLOCK.  Diagnose the in_function_try_handler
268         cases in the b->kind == sk_function_parms test and verify no
269         non-artificial intervening scopes.  Add missing auto_diagnostic_group.
270         * decl.cc (begin_function_body): Set
271         current_binding_level->artificial.
272         * semantics.cc (begin_function_try_block): Likewise.
274 2023-09-05  Patrick Palka  <ppalka@redhat.com>
276         * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass
277         nullptr as non_constant_p to cp_parser_braced_list if our
278         non_constant_p is null.
279         (cp_parser_initializer_list): Likewise to
280         cp_parser_initializer_clause.  Avoid inspecting
281         clause_non_constant_p if it's uninitialized.
283 2023-09-05  Patrick Palka  <ppalka@redhat.com>
285         * call.cc (build_user_type_conversion): Free allocated
286         conversions.
287         (build_converted_constant_expr_internal): Use
288         conversion_obstack_sentinel instead.
289         (perform_dguide_overload_resolution): Likewise.
290         (build_new_function_call): Likewise.
291         (build_operator_new_call): Free allocated conversions.
292         (build_op_call): Use conversion_obstack_sentinel instead.
293         (build_conditional_expr): Use conversion_obstack_sentinel
294         instead, and hoist it out to the outermost scope.
295         (build_new_op): Use conversion_obstack_sentinel instead
296         and set it up before the first goto.  Remove second unneeded goto.
297         (build_op_subscript): Use conversion_obstack_sentinel instead.
298         (ref_conv_binds_to_temporary): Likewise.
299         (build_new_method_call): Likewise.
300         (can_convert_arg): Likewise.
301         (can_convert_arg_bad): Likewise.
302         (perform_implicit_conversion_flags): Likewise.
303         (perform_direct_initialization_if_possible): Likewise.
304         (initialize_reference): Likewise.
306 2023-09-01  Jakub Jelinek  <jakub@redhat.com>
308         PR c++/111069
309         * cp-tree.h (determine_local_discriminator): Add NAME argument with
310         NULL_TREE default.
311         (struct cp_decomp): New type.
312         (cp_finish_decl): Add DECOMP argument defaulted to nullptr.
313         (cp_maybe_mangle_decomp): Remove declaration.
314         (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned
315         args.
316         (cp_convert_range_for): Likewise.
317         * decl.cc (determine_local_discriminator): Add NAME argument, use it
318         if non-NULL, otherwise compute it the old way.
319         (maybe_commonize_var): Don't return early for structured bindings.
320         (cp_finish_decl): Add DECOMP argument, if non-NULL, call
321         cp_maybe_mangle_decomp.
322         (cp_maybe_mangle_decomp): Make it static with a forward declaration.
323         Call determine_local_discriminator.  Replace FIRST and COUNT arguments
324         with DECOMP argument.
325         (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP
326         argument.
327         * mangle.cc (find_decomp_unqualified_name): Remove.
328         (write_unqualified_name): Don't call find_decomp_unqualified_name.
329         (mangle_decomp): Handle mangling of static function/block scope
330         structured bindings.  Don't call decl_mangling_context twice.  Call
331         check_abi_tags, call write_abi_tags for abi version >= 19 and emit
332         -Wabi warnings if needed.
333         (write_guarded_var_name): Handle structured bindings.
334         (mangle_ref_init_variable): Use write_guarded_var_name.
335         * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction
336         and cp_convert_range_for callers.
337         (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and
338         DECOMP_CNT arguments with DECOMP.  Adjust cp_finish_decomp caller.
339         (cp_convert_range_for): Replace DECOMP_FIRST_NAME and
340         DECOMP_CNT arguments with DECOMP.  Don't call cp_maybe_mangle_decomp,
341         adjust cp_finish_decl and cp_finish_decomp callers.
342         (cp_parser_decomposition_declaration): Don't call
343         cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp
344         callers.
345         (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction
346         and cp_finish_decomp callers.
347         (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp,
348         adjust cp_finish_decl and cp_finish_decomp callers.
349         * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names
350         caller.
351         (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP.
352         (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust
353         tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and
354         cp_convert_range_for callers.
356 2023-08-30  Marek Polacek  <polacek@redhat.com>
358         PR c++/91319
359         * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT
360         when the designated initializer is of the .x{} form.
362 2023-08-30  Marek Polacek  <polacek@redhat.com>
364         PR c++/111173
365         * decl.cc (grokdeclarator): Disallow constinit on functions.
367 2023-08-29  Marek Polacek  <polacek@redhat.com>
369         * call.cc (convert_like_internal): Show where the conversion function
370         was declared.
371         (maybe_show_nonconverting_candidate): New.
372         * cp-tree.h (maybe_show_nonconverting_candidate): Declare.
373         * typeck.cc (convert_for_assignment): Call it.
375 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
377         * cp-tree.h (cp_convert_omp_range_for): Adjust declaration.
378         * parser.cc (struct omp_for_parse_data): New.
379         (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime
380         in intervening code.
381         (check_omp_intervening_code): New.
382         (cp_parser_statement_seq_opt): Special-case nested loops, blocks,
383         and other constructs for OpenMP loops.
384         (cp_parser_iteration_statement): Reject loops in intervening code.
385         (cp_parser_omp_for_loop_init): Expand comments and tweak the
386         interface slightly to better distinguish input/output parameters.
387         (cp_convert_omp_range_for): Likewise.
388         (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop
389         and largely rewritten.  Add more comments.
390         (insert_structured_blocks): New.
391         (find_structured_blocks): New.
392         (struct sit_data, substitute_in_tree_walker, substitute_in_tree):
393         New.
394         (fixup_blocks_walker): New.
395         (cp_parser_omp_for_loop): Rewrite to use recursive descent instead
396         of a loop.  Add logic to reshuffle the bits of code collected
397         during parsing so intervening code gets moved to the loop body.
398         (cp_parser_omp_loop): Remove call to finish_omp_for_block, which
399         is now redundant.
400         (cp_parser_omp_simd): Likewise.
401         (cp_parser_omp_for): Likewise.
402         (cp_parser_omp_distribute): Likewise.
403         (cp_parser_oacc_loop): Likewise.
404         (cp_parser_omp_taskloop): Likewise.
405         (cp_parser_pragma): Reject OpenMP pragmas in intervening code.
406         * parser.h (struct cp_parser): Add omp_for_parse_state field.
407         * pt.cc (tsubst_omp_for_iterator): Adjust call to
408         cp_convert_omp_range_for.
409         * semantics.cc (finish_omp_for): Try harder to preserve location
410         of loop variable init expression for use in diagnostics.
411         (struct fofb_data, finish_omp_for_block_walker): New.
412         (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR
413         nested inside BIND instead of directly in BIND itself.
415 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
417         * constexpr.cc (cxx_eval_constant_expression): Handle
418         OMP_STRUCTURED_BLOCK.
419         * pt.cc (tsubst_expr): Likewise.
421 2023-08-25  Uros Bizjak  <ubizjak@gmail.com>
423         * call.cc (build_conditional_expr):
424         Rename TRUE/FALSE to true/false.
425         (build_new_op): Ditto.
427 2023-08-22  Jason Merrill  <jason@redhat.com>
429         * pt.cc (outer_template_args): Handle non-template argument.
430         * constraint.cc (maybe_substitute_reqs_for): Pass decl to it.
431         * cp-tree.h (outer_template_args): Adjust.
433 2023-08-22  Jason Merrill  <jason@redhat.com>
435         PR c++/109751
436         * cp-tree.h (member_like_constrained_friend_p): Declare.
437         * decl.cc (member_like_constrained_friend_p): New.
438         (function_requirements_equivalent_p): Check it.
439         (duplicate_decls): Check it.
440         (grokfndecl): Check friend template constraints.
441         * mangle.cc (decl_mangling_context): Check it.
442         (write_unqualified_name): Check it.
443         * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends.
444         (tsubst_friend_function): Don't check satisfaction.
446 2023-08-22  Tobias Burnus  <tobias@codesourcery.com>
448         * parser.cc (cp_parser_omp_clause_defaultmap): Parse
449         'all' as category.
451 2023-08-15  Chung-Lin Tang  <cltang@codesourcery.com>
452             Thomas Schwinge  <thomas@codesourcery.com>
454         * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
456 2023-08-14  gnaggnoyil  <gnaggnoyil@gmail.com>
458         DR 2386
459         PR c++/110216
460         * decl.cc (get_tuple_size): Update implementation for DR 2386.
462 2023-08-14  Jason Merrill  <jason@redhat.com>
464         * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14
465         -fconcepts.
467 2023-08-12  Patrick Palka  <ppalka@redhat.com>
468             Jason Merrill  <jason@redhat.com>
470         PR c++/106604
471         * decl.cc (redeclaration_error_message): Remove special handling
472         for deduction guides.
473         (grokfndecl): Give deduction guides a dummy DECL_INITIAL.
475 2023-08-11  Patrick Palka  <ppalka@redhat.com>
477         PR c++/110927
478         * parser.cc (cp_parser_type_requirement): Pass
479         check_dependency_p=true instead of =false.
481 2023-08-11  Patrick Palka  <ppalka@redhat.com>
483         PR c++/71954
484         * decl.cc (grokdeclarator): Pass 'dname' instead of
485         'unqualified_id' as the name when building the VAR_DECL for a
486         static data member.  Call check_explicit_specialization for a
487         TEMPLATE_ID_EXPR such member.
488         * pt.cc (finish_member_template_decl): Return NULL_TREE
489         instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not
490         set.
492 2023-08-11  Patrick Palka  <ppalka@redhat.com>
494         * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and
495         TS_DECL_COMMON only when necessary.  Print DECL_TEMPLATE_INFO
496         for all decls that have it, not just VAR_DECL or FUNCTION_DECL.
497         Also print DECL_USE_TEMPLATE.
498         (cxx_print_type): Print TYPE_TEMPLATE_INFO.
499         <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS
500         anymore.
501         <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX
502         instead of printing the index, level and original level
503         individually.
505 2023-08-08  Marek Polacek  <polacek@redhat.com>
507         * parser.cc (cp_parser_postfix_expression): Adjust the call to
508         cp_parser_braced_list.
509         (cp_parser_postfix_open_square_expression): Likewise.
510         (cp_parser_new_initializer): Likewise.
511         (cp_parser_assignment_expression): Adjust the call to
512         cp_parser_initializer_clause.
513         (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer.
514         (cp_parser_range_for): Adjust the call to cp_parser_braced_list.
515         (cp_parser_jump_statement): Likewise.
516         (cp_parser_mem_initializer): Likewise.
517         (cp_parser_template_argument): Likewise.
518         (cp_parser_default_argument): Adjust the call to cp_parser_initializer.
519         (cp_parser_initializer): Handle null is_direct_init and non_constant_p
520         arguments.
521         (cp_parser_initializer_clause): Handle null non_constant_p argument.
522         (cp_parser_braced_list): Likewise.
523         (cp_parser_initializer_list): Likewise.
524         (cp_parser_member_declaration): Adjust the call to
525         cp_parser_initializer_clause and cp_parser_initializer.
526         (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list.
527         (cp_parser_functional_cast): Likewise.
528         (cp_parser_late_parse_one_default_arg): Adjust the call to
529         cp_parser_initializer.
530         (cp_parser_omp_for_loop_init): Likewise.
531         (cp_parser_omp_declare_reduction_exprs): Likewise.
533 2023-08-08  Nathaniel Shead  <nathanieloshead@gmail.com>
535         PR c++/100482
536         * parser.cc (cp_parser_decltype_expr): Report errors raised by
537         finish_id_expression.
539 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
541         * cp-tree.h (RANGE_FOR_NOVECTOR): New.
542         (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt,
543         finish_for_cond): Add novector param.
544         * init.cc (build_vec_init): Default novector to false.
545         * method.cc (build_comparison_op): Likewise.
546         * parser.cc (cp_parser_statement): Likewise.
547         (cp_parser_for, cp_parser_c_for, cp_parser_range_for,
548         cp_convert_range_for, cp_parser_iteration_statement,
549         cp_parser_omp_for_loop, cp_parser_pragma): Support novector.
550         (cp_parser_pragma_novector): New.
551         * pt.cc (tsubst_expr): Likewise.
552         * semantics.cc (finish_while_stmt_cond, finish_do_stmt,
553         finish_for_cond): Likewise.
555 2023-08-01  Lewis Hyatt  <lhyatt@gmail.com>
557         * parser.cc (c_init_preprocess): New function.
558         (maybe_read_tokens_for_pragma_lex): New function.
559         (pragma_lex): Support preprocess-only mode.
560         (pragma_lex_discard_to_eol): New function.
562 2023-07-31  Chung-Lin Tang  <cltang@codesourcery.com>
564         * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC
565         host_data construct to have an use_device clause.
567 2023-07-28  Ng YongXiang  <yongxiangng@gmail.com>
569         PR c++/110057
570         PR ipa/83054
571         * init.cc (build_vec_delete_1): Devirtualize array destruction.
573 2023-07-27  Patrick Palka  <ppalka@redhat.com>
575         PR c++/110197
576         * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an
577         empty subobject even if CONSTRUCTOR_NO_CLEARING is set.
578         (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally
579         whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx,
580         i.e. whenever initializing an subobject of empty type.
581         (cxx_eval_vec_init_1): Define 'no_slot' as above and use it
582         accordingly.
584 2023-07-27  Nathaniel Shead  <nathanieloshead@gmail.com>
586         PR c++/103497
587         * pt.cc (type_uses_auto): Check inside parameter packs.
589 2023-07-26  Patrick Palka  <ppalka@redhat.com>
591         PR c++/110566
592         PR c++/108179
593         * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO
594         on the DECL_TEMPLATE_RESULT of the new ttp.
595         (add_defaults_to_ttp): Make a copy of the original ttp's
596         DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO
597         as well.
598         (coerce_template_template_parms): Make sure 'scope_args' has
599         the right amount of levels for the ttp argument.
600         (most_general_template): Handle template template parameters.
601         (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the
602         DECL_TEMPLATE_RESULT of the new ttp.
604 2023-07-26  Patrick Palka  <ppalka@redhat.com>
606         PR c++/110566
607         PR c++/108179
608         * pt.cc (coerce_template_template_parms): Simplify by using
609         DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts.
610         Always pass the parameters of the most general template to
611         coerce_template_parms.
613 2023-07-26  Patrick Palka  <ppalka@redhat.com>
615         PR c++/110809
616         * pt.cc (unify) <case INTEGER_CST>: Generalize to handle
617         REAL_CST as well.
619 2023-07-26  Marek Polacek  <polacek@redhat.com>
621         * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be
622         nullptr even when allow_non_constant_p is true.  Don't call
623         _rvalue_constant_expression when not necessary.  Move local variable
624         declarations closer to their first use.
625         (cp_parser_static_assert): Don't pass a dummy down to
626         cp_parser_constant_expression.
628 2023-07-26  Jason Merrill  <jason@redhat.com>
630         PR c++/106310
631         * parser.cc (cp_parser_template_name): Skip non-member
632         lookup after the template keyword.
633         (cp_parser_lookup_name): Pass down template_keyword_p.
635 2023-07-26  Nathaniel Shead  <nathanieloshead@gmail.com>
637         PR c++/96630
638         PR c++/98675
639         PR c++/70331
640         * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New
641         function.
642         (constexpr_global_ctx::get_value): Don't return expired values.
643         (constexpr_global_ctx::get_value_ptr): Likewise.
644         (constexpr_global_ctx::remove_value): Mark value outside
645         lifetime.
646         (outside_lifetime_error): New function.
647         (cxx_eval_call_expression): No longer track save_exprs.
648         (cxx_eval_loop_expr): Likewise.
649         (cxx_eval_constant_expression): Add checks for outside lifetime
650         values. Remove local variables at end of bind exprs, and
651         temporaries after cleanup points.
653 2023-07-26  Nathaniel Shead  <nathanieloshead@gmail.com>
655         PR c++/110619
656         * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to
657         not return dangling pointers.
658         * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag.
659         (check_return_expr): Add a new parameter.
660         * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR
661         when referring to dangling pointer.
662         * typeck.cc (check_return_expr): Disable transformation of
663         dangling pointers, instead pass this information to caller.
665 2023-07-26  Nathaniel Shead  <nathanieloshead@gmail.com>
667         * constexpr.cc (modifying_const_object_error): Find the source
668         location of the const object's declaration.
669         (cxx_eval_constant_expression): Update input_location to the
670         location of the currently evaluated expression, if possible.
672 2023-07-25  Marek Polacek  <polacek@redhat.com>
674         PR c++/108960
675         * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial
676         here.
677         (instantiate_template): Reset all complain flags except
678         tf_warning_or_error.
680 2023-07-25  Marek Polacek  <polacek@redhat.com>
682         PR c++/110382
683         * constexpr.cc (cxx_eval_array_reference): Create a new constructor
684         only when we don't already have a matching one.  Clear the object
685         when the type is non-scalar.
687 2023-07-21  Marek Polacek  <polacek@redhat.com>
689         PR c++/110106
690         * constexpr.cc (potential_constant_expression_1): Try to complete the
691         type when !processing_template_decl.
693 2023-07-20  Marek Polacek  <polacek@redhat.com>
695         PR c++/110114
696         * call.cc (implicit_conversion_1): Return early if the type isn't
697         complete.
699 2023-07-19  Marek Polacek  <polacek@redhat.com>
701         PR c++/110745
702         * error.cc (dump_simple_decl): Print base class name.
704 2023-07-19  Marek Polacek  <polacek@redhat.com>
706         PR c++/110064
707         * typeck2.cc (process_init_constructor_record): Don't emit
708         -Wmissing-field-initializers for empty classes.
710 2023-07-19  Patrick Palka  <ppalka@redhat.com>
712         * pt.cc (type_unification_real): Test for PARM_DECL instead
713         of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
714         template parameter pack.
715         (type_targs_deducible_from): Likewise.
717 2023-07-19  Patrick Palka  <ppalka@redhat.com>
719         * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table'
720         flag parameter.  Don't look up or insert into the specializations
721         table if 'use_spec_table' is false.
722         (tsubst_decl): Add defaulted 'use_spec_table' flag parameter.
723         Check for error_mark_node.
724         <case FUNCTION_DECL>: Pass 'use_spec_table' to
725         tsubst_function_decl.
726         <case TYPE/VAR_DECL>: Don't call coerce_template_parms.
727         Don't look up or insert into the specializations table if
728         'use_spec_table' is false.  Exit earlier if the substituted
729         type is erroneous and we're not complaining, and do so for
730         alias specializations as well.
731         (instantiate_template): Pass false as 'use_spec_table'
732         to tsubst_decl.  Call register_specialization afterwards.
734 2023-07-18  Jason Merrill  <jason@redhat.com>
736         * constexpr.cc (cxx_eval_bit_cast): Check that the result of
737         native_interpret_aggregate doesn't need more evaluation.
739 2023-07-18  Patrick Palka  <ppalka@redhat.com>
741         * call.cc (add_template_conv_candidate): Don't check for
742         non-empty 'candidates' here.
743         (build_op_call): Check it here, before we've considered any
744         conversion functions.
746 2023-07-18  Patrick Palka  <ppalka@redhat.com>
748         PR c++/110535
749         * call.cc (add_conv_candidate): Check constraints.
751 2023-07-17  Jason Merrill  <jason@redhat.com>
753         * constexpr.cc (cxx_eval_call_expression): Only cache
754         reduced_constant_expression_p results.
755         (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type.
756         (cxx_eval_constant_expression): Fold vectors here.
757         (cxx_eval_bare_aggregate): Not here.
759 2023-07-15  Patrick Palka  <ppalka@redhat.com>
761         PR c++/110441
762         * call.cc (keep_unused_object_arg): Use cp_build_compound_expr
763         instead of building a COMPOUND_EXPR directly.
765 2023-07-15  Patrick Palka  <ppalka@redhat.com>
767         PR c++/110524
768         * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
769         whose template is already an IDENTIFIER_NODE.
771 2023-07-14  Nathaniel Shead  <nathanieloshead@gmail.com>
773         * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
775 2023-07-14  Jason Merrill  <jason@redhat.com>
777         PR c++/110344
778         * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling
779         after heap handling.
780         * name-lookup.cc (get_cxx_dialect_name): Add C++26.
782 2023-07-14  Marek Polacek  <polacek@redhat.com>
783             Jason Merrill  <jason@redhat.com>
785         PR c++/109876
786         * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing
787         an object of empty class type.
788         * pt.cc (value_dependent_expression_p) <case VAR_DECL>: Treat a
789         constexpr-declared non-constant variable as value-dependent.
791 2023-07-11  Patrick Palka  <ppalka@redhat.com>
793         PR c++/110580
794         * pt.cc (lookup_template_variable): Pass all levels of arguments
795         to coerce_template_parms, and use the parameters from the most
796         general template.
798 2023-07-10  Patrick Palka  <ppalka@redhat.com>
800         PR c++/110523
801         * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT
802         assert, and downgrade it to a checking assert.
804 2023-06-30  Patrick Palka  <ppalka@redhat.com>
806         * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden.
807         (TEMPLATE_TYPE_DESCENDANTS): Define.
808         (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define.
809         * pt.cc (reduce_template_parm_level): Revert
810         r14-418-g0bc2a1dc327af9 change.
811         (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P
812         appropriately.
813         (uses_outer_template_parms): Determine the outer depth of
814         a template template parm without relying on DECL_CONTEXT.
815         (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
816         simple template template parm.  Consistently use 'code'.
818 2023-06-29  Patrick Palka  <ppalka@redhat.com>
820         PR c++/110468
821         * init.cc (maybe_instantiate_nsdmi_init): Mask out all
822         tsubst flags except for tf_warning_or_error.
824 2023-06-29  Patrick Palka  <ppalka@redhat.com>
826         PR c++/110463
827         * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
828         CONSTRUCTOR_MUTABLE_POISON.
830 2023-06-29  Patrick Palka  <ppalka@redhat.com>
832         * cp-tree.h (tree_template_info::partial): New data member.
833         (TI_PARTIAL_INFO): New tree accessor.
834         (most_specialized_partial_spec): Add defaulted bool parameter.
835         * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream
836         TI_PARTIAL_INFO.
837         (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise.
838         * parser.cc (specialization_of): Adjust after making
839         most_specialized_partial_spec return TEMPLATE_INFO instead
840         of TREE_LIST.
841         * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO
842         of 'decl' to point back to the partial TEMPLATE_DECL.  Likewise
843         (and pass rechecking=true to most_specialization_partial_spec).
844         (instantiate_class_template): Likewise.
845         (instantiate_template): Set TI_PARTIAL_INFO to the result of
846         most_specialization_partial_spec after forming a variable
847         template specialization.
848         (most_specialized_partial_spec): Add 'rechecking' parameter.
849         Exit early if the template is not primary.  Use the TI_PARTIAL_INFO
850         of the corresponding TEMPLATE_INFO as a cache unless 'rechecking'
851         is true.  Don't bother setting TREE_TYPE of each TREE_LIST.
852         (instantiate_decl): Adjust after making
853         most_specialized_partial_spec return TEMPLATE_INFO instead of
854         TREE_LIST.
855         * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump
856         TI_PARTIAL_INFO.
858 2023-06-29  Eugene Rozenfeld  <erozen@microsoft.com>
860         * Make-lang.in: Pass correct stage cc1plus when processing
861         profile data collected while building target libraries
863 2023-06-28  Patrick Palka  <ppalka@redhat.com>
865         PR c++/89442
866         PR c++/107437
867         * cp-tree.h (lookup_template_variable): Add complain parameter.
868         * parser.cc (cp_parser_template_id): Pass tf_warning_or_error
869         to lookup_template_variable.
870         * pt.cc (lookup_template_variable): Add complain parameter.
871         Coerce template arguments here ...
872         (finish_template_variable): ... instead of here.
873         (lookup_and_finish_template_variable): Check for error_mark_node
874         result from lookup_template_variable.
875         (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to
876         lookup_template_variable.
877         (instantiate_template): Use build2 instead of
878         lookup_template_variable to build a TEMPLATE_ID_EXPR
879         for most_specialized_partial_spec.
881 2023-06-28  Marek Polacek  <polacek@redhat.com>
883         PR c++/110175
884         * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
886 2023-06-28  Jason Merrill  <jason@redhat.com>
888         PR c++/110334
889         * cp-tree.h (clone_attrs): Declare.
890         * method.cc (implicitly_declare_fn): Use it for inherited
891         constructor.
892         * optimize.cc (clone_attrs): New.
893         (maybe_clone_body): Use it.
895 2023-06-28  Jason Merrill  <jason@redhat.com>
897         PR c++/110344
898         * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast
899         from void* to the type of a pointed-to object.
901 2023-06-23  David Malcolm  <dmalcolm@redhat.com>
903         PR c++/110164
904         * cp-name-hint.h (maybe_suggest_missing_header): New decl.
905         * decl.cc: Define INCLUDE_MEMORY.  Add include of
906         "cp/cp-name-hint.h".
907         (start_decl_1): Call maybe_suggest_missing_header.
908         * name-lookup.cc (maybe_suggest_missing_header): Remove "static".
910 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
912         * parser.cc (cp_parser_enum_specifier): Don't reject
913         elaborated-type-specifier with enum-base, instead emit new
914         Welaborated-enum-base warning.
916 2023-06-14  Jason Merrill  <jason@redhat.com>
918         DR 2327
919         PR c++/86521
920         * call.cc (joust_maybe_elide_copy): Don't change cand.
921         (joust): Move the elided tiebreaker later.
923 2023-06-13  David Malcolm  <dmalcolm@redhat.com>
925         PR c/84890
926         * name-lookup.cc (missing_std_header::~missing_std_header): Reword
927         note to avoid negative tone of "forgetting".
929 2023-06-13  Jason Merrill  <jason@redhat.com>
931         * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
933 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
935         * parser.cc (cp_parser_omp_clause_map): Reword error message for
936         clearness especially with 'omp target (enter/exit) data.'
937         * semantics.cc (handle_omp_array_sections): Handle
938         GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values.
940 2023-06-12  Jason Merrill  <jason@redhat.com>
942         PR c++/105838
943         * call.cc (convert_like_internal) [ck_list]: Use
944         maybe_init_list_as_array.
945         * constexpr.cc (cxx_eval_vec_init_1): Init might have
946         a different type.
947         * tree.cc (build_vec_init_elt): Likewise.
948         * init.cc (build_vec_init): Handle from_array from a
949         TARGET_EXPR.  Retain TARGET_EXPR of a different type.
951 2023-06-11  Patrick Palka  <ppalka@redhat.com>
953         PR c++/110122
954         * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted
955         functions needed for constant evaluation.
956         (instantiate_cx_fn_r): Likewise.
958 2023-06-11  Patrick Palka  <ppalka@redhat.com>
960         PR c++/110122
961         * pt.cc (lookup_template_class): Extend shortcut for looking up the
962         current class scope to consider outer class scopes too, and use
963         current_nonlambda_class_type instead of current_class_type.  Only
964         call coerce_template_parms when specializing a primary template.
966 2023-06-10  Nathan Sidwell  <nathan@acm.org>
968         PR c++/61663
969         * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
971 2023-06-09  Jason Merrill  <jason@redhat.com>
973         PR c++/110185
974         PR c++/58487
975         * method.cc (build_comparison_op): Give retval a name.
976         * typeck.cc (check_return_expr): Fix for nameless variables.
978 2023-06-09  Jason Merrill  <jason@redhat.com>
980         * parser.cc (cp_parser_simple_type_specifier): Check for auto
981         in template argument.
982         (cp_parser_template_type_arg): Remove auto checking.
984 2023-06-09  Jason Merrill  <jason@redhat.com>
986         PR c++/110102
987         * call.cc (maybe_init_list_as_array): Check that the element type is
988         copyable.
990 2023-06-07  Jason Merrill  <jason@redhat.com>
992         PR c++/58487
993         PR c++/53637
994         * cp-tree.h (INIT_EXPR_NRV_P): New.
995         * semantics.cc (finalize_nrv_r): Check it.
996         * name-lookup.h (decl_in_scope_p): Declare.
997         * name-lookup.cc (decl_in_scope_p): New.
998         * typeck.cc (check_return_expr): Allow non-NRV
999         returns if the NRV is no longer in scope.
1001 2023-06-07  Jason Merrill  <jason@redhat.com>
1003         PR c++/58487
1004         * typeck.cc (want_nrvo_p): New.
1005         (check_return_expr): Handle -Wnrvo.
1007 2023-06-07  Jason Merrill  <jason@redhat.com>
1009         PR c++/51571
1010         PR c++/92407
1011         * decl.cc (finish_function): Simplify NRV handling.
1012         * except.cc (maybe_set_retval_sentinel): Also set if NRV.
1013         (maybe_splice_retval_cleanup): Don't add the cleanup region
1014         if we don't need it.
1015         * semantics.cc (nrv_data): Add simple field.
1016         (finalize_nrv): Set it.
1017         (finalize_nrv_r): Check it and retval sentinel.
1018         * cp-tree.h (finalize_nrv): Adjust declaration.
1019         * typeck.cc (check_return_expr): Remove named_labels check.
1021 2023-06-07  Jason Merrill  <jason@redhat.com>
1023         PR c++/92407
1024         * typeck.cc (check_return_expr): Prevent NRV in the presence of
1025         named labels.
1027 2023-06-07  Jason Merrill  <jason@redhat.com>
1029         PR c++/33799
1030         * except.cc (maybe_splice_retval_cleanup): Change
1031         recognition of function body and try scopes.
1032         * semantics.cc (do_poplevel): Call it after poplevel.
1033         (at_try_scope): New.
1034         * cp-tree.h (maybe_splice_retval_cleanup): Adjust.
1036 2023-06-07  Jason Merrill  <jason@redhat.com>
1038         * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
1039         INIT_EXPR.
1041 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
1042             Tobias Burnus  <tobias@codesourcery.com>
1044         * parser.cc (cp_parser_omp_clause_defaultmap,
1045         cp_parser_omp_clause_map): Parse 'present'.
1046         (cp_parser_omp_clause_from_to): New; parse to/from
1047         clauses with optional 'present' modifier.
1048         (cp_parser_omp_all_clauses): Update call.
1049         (cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
1050         cp_parser_omp_target_exit_data): Handle new enum value for
1051         'present' mapping.
1052         * semantics.cc (finish_omp_target): Likewise.
1054 2023-06-04  Jason Merrill  <jason@redhat.com>
1056         PR c++/97720
1057         * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN.
1058         (call_terminate_fn): New macro.
1059         * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it.
1060         * except.cc (init_exception_processing): Set it.
1061         (cp_protect_cleanup_actions): Return it.
1063 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1065         PR c++/109923
1066         * pt.cc (is_specialization_of_friend): Fix overbroad check for
1067         a non-template member function of a class template.
1069 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1071         * pt.cc (iterative_hash_template_arg): Don't hash
1072         TEMPLATE_TEMPLATE_PARM specially.
1074 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1076         * class.cc (build_base_path): Check in_template_context instead
1077         of in_template_function.
1078         (resolves_to_fixed_type_p): Likewise.
1079         * cp-tree.h (in_template_context): Define.
1080         (in_template_function): Remove.
1081         * decl.cc (cp_make_fname_decl): Check current_function_decl
1082         and in_template_context instead of in_template_function.
1083         * decl2.cc (mark_used): Check in_template_context instead of
1084         in_template_function.
1085         * pt.cc (in_template_function): Remove.
1086         * semantics.cc (enforce_access): Check in_template_context
1087         instead of current_template_parms directly.
1089 2023-06-03  Patrick Palka  <ppalka@redhat.com>
1091         PR c++/70790
1092         * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
1094 2023-06-02  Jason Merrill  <jason@redhat.com>
1096         DR 2735
1097         PR c++/109247
1098         * call.cc (sfk_copy_or_move): New.
1099         (joust): Add tiebreaker for explicit conv and copy ctor.
1101 2023-06-02  Jason Merrill  <jason@redhat.com>
1103         PR c++/110070
1104         PR c++/105838
1105         * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE.
1106         (convert_like_internal) [ck_list]: Set it.
1107         (set_up_extended_ref_temp): Copy it.
1108         * tree.cc (handle_no_unique_addr_attribute): Set it.
1110 2023-06-01  Jason Merrill  <jason@redhat.com>
1112         * typeck2.cc (check_narrowing): Check flag_permissive.
1114 2023-05-30  Tobias Burnus  <tobias@codesourcery.com>
1116         PR c/109999
1117         * parser.cc (cp_parser_oacc_all_clauses,
1118         cp_parser_omp_all_clauses): Improve error wording.
1120 2023-05-19  Andrew Pinski  <apinski@marvell.com>
1122         PR driver/33980
1123         * lang-specs.h ("@c++-header"): Add %w after
1124         the --output-pch.
1125         ("@c++-system-header"): Likewise.
1126         ("@c++-user-header"): Likewise.
1128 2023-05-19  Patrick Palka  <ppalka@redhat.com>
1130         * constraint.cc (normalize_concept_check): Avoid having to do
1131         two norm_cache lookups.  Remove unnecessary early exit for an
1132         ill-formed concept definition.
1134 2023-05-19  Patrick Palka  <ppalka@redhat.com>
1136         PR c++/97340
1137         * pt.cc (lookup_and_finish_template_variable): Don't call
1138         convert_from_reference.
1139         (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
1140         convert_from_reference on the result of
1141         lookup_and_finish_template_variable.
1143 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1145         * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h.
1146         (build_conditional_expr): Ditto.
1147         (convert_like_internal): Ditto.
1148         (convert_arg_to_ellipsis): Ditto.
1149         (build_over_call): Ditto.
1150         (compare_ics): Ditto.
1151         * class.cc (is_empty_base_ref): Ditto.
1152         * coroutines.cc (rewrite_param_uses): Ditto.
1153         * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto.
1154         (ARITHMETIC_TYPE_P): Ditto.
1155         * cvt.cc (ocp_convert): Ditto.
1156         * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto.
1157         * decl.cc (layout_var_decl): Ditto.
1158         (get_tuple_size): Ditto.
1159         * error.cc (dump_simple_decl): Ditto.
1160         * lambda.cc (start_lambda_scope): Ditto.
1161         * mangle.cc (write_template_arg): Ditto.
1162         * method.cc (spaceship_comp_cat): Ditto.
1163         * module.cc (node_template_info): Ditto.
1164         (trees_out::start): Ditto.
1165         (trees_out::decl_node): Ditto.
1166         (trees_in::read_var_def): Ditto.
1167         (set_instantiating_module): Ditto.
1168         * name-lookup.cc (maybe_record_mergeable_decl): Ditto.
1169         (consider_decl): Ditto.
1170         (maybe_add_fuzzy_decl): Ditto.
1171         * pt.cc (convert_nontype_argument): Ditto.
1172         * semantics.cc (handle_omp_array_sections_1): Ditto.
1173         (finish_omp_clauses): Ditto.
1174         (finish_omp_target_clauses_r): Ditto.
1175         (is_this_parameter): Ditto.
1176         * tree.cc (build_cplus_array_type): Ditto.
1177         (is_this_expression): Ditto.
1178         * typeck.cc (do_warn_enum_conversions): Ditto.
1179         * typeck2.cc (store_init_value): Ditto.
1180         (check_narrowing): Ditto.
1182 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
1184         PR c++/109868
1185         * init.cc (build_zero_init_1): Don't initialize zero-width bitfields.
1186         For unions only initialize the first FIELD_DECL.
1188 2023-05-16  Marek Polacek  <polacek@redhat.com>
1190         PR c++/109774
1191         * typeck.cc (check_return_expr): In a template, return only after
1192         suppressing -Wdangling-reference.
1194 2023-05-16  Patrick Palka  <ppalka@redhat.com>
1196         PR c++/109871
1197         * call.cc (add_list_candidates): Check for invalid designated
1198         initialization sooner and even for types that have a list
1199         constructor.
1201 2023-05-11  Patrick Palka  <ppalka@redhat.com>
1203         PR c++/109745
1204         * typeck2.cc (poison_mutable_constructors): Define.
1205         (store_init_value): Use it instead of setting
1206         CONSTRUCTOR_MUTABLE_POISON directly.
1208 2023-05-11  Patrick Palka  <ppalka@redhat.com>
1209             Jonathan Wakely  <jwakely@redhat.com>
1211         PR c++/83258
1212         PR c++/80488
1213         PR c++/97700
1214         * pt.cc (convert_nontype_argument_function): Remove linkage
1215         requirement for C++17 and later.
1216         (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict
1217         DECL_ARTIFICIAL rejection test to VAR_DECL.
1219 2023-05-10  Marek Polacek  <polacek@redhat.com>
1221         PR c++/109680
1222         * method.cc (build_trait_object): New.
1223         (assignable_expr): Use it.
1224         (ref_xes_from_temporary): Likewise.
1225         (is_convertible_helper): Likewise.  Check FUNC_OR_METHOD_TYPE_P.
1227 2023-05-10  Jason Merrill  <jason@redhat.com>
1229         * call.cc (convert_like_internal): Share ck_ref_bind handling
1230         between all bad conversions.
1232 2023-05-10  Jason Merrill  <jason@redhat.com>
1234         DR 2543
1235         * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve
1236         TARGET_EXPR flags.
1237         (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P.
1238         * typeck2.cc (store_init_value): Diagnose constinit sooner.
1240 2023-05-10  Jason Merrill  <jason@redhat.com>
1242         * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
1243         for address of immediate fn.
1244         (maybe_constant_init_1): Evaluate PTRMEM_CST.
1246 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
1248         PR c++/109756
1249         * parser.cc (cp_parser_std_attribute): For unknown attributes with
1250         arguments set TREE_VALUE (attribute) to error_mark_node after skipping
1251         the balanced tokens.
1252         (cp_parser_std_attribute_list): If ... is used after attribute without
1253         arguments, diagnose it and return error_mark_node.  If
1254         TREE_VALUE (attribute) is error_mark_node, don't call
1255         make_pack_expansion nor return early error_mark_node.
1257 2023-05-09  Patrick Palka  <ppalka@redhat.com>
1259         PR c++/109752
1260         * constraint.cc (satisfaction_cache::satisfaction_cache): In the
1261         unexpected case of evaluating an atom for the first time noisily,
1262         remove the cache slot that we inserted.
1264 2023-05-09  Patrick Palka  <ppalka@redhat.com>
1266         PR c++/109761
1267         * parser.cc (cp_parser_class_specifier): Don't pass a class
1268         context to noexcept_override_late_checks.
1269         (noexcept_override_late_checks): Remove 'type' parameter
1270         and use DECL_CONTEXT of 'fndecl' instead.
1272 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
1274         PR c++/109756
1275         * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
1276         expansion of assume attribute.
1278 2023-05-08  Patrick Palka  <ppalka@redhat.com>
1280         PR c++/106214
1281         PR c++/93107
1282         * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context
1283         calls to happen before do_class_deduction.  Add some
1284         error_mark_node tests.
1286 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1288         PR c++/85979
1289         * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
1290         <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
1291         * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
1293 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1295         DR 2256
1296         PR c++/103091
1297         * decl.cc (decl_jump_unsafe): Return bool instead of int.
1298         Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
1299         (check_previous_goto_1): Simplify now that decl_jump_unsafe
1300         returns bool instead of int.
1301         (check_goto): Likewise.
1303 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1305         * pt.cc (instantiate_alias_template): Exit early upon
1306         error from coerce_template_parms.  Remove dependence test
1307         guarding constraints_satisfied_p.
1309 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1311         * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via
1312         TEMPLATE_TYPE_PARM_CHECK.
1313         (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK.
1314         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via
1315         TEMPLATE_TEMPLATE_PARM_CHECK.
1316         * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier):
1317         Guard PLACEHOLDER_TYPE_CONSTRAINTS access.
1318         * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate
1319         variable to store CLASS_PLACEHOLDER_TEMPLATE result.
1320         * pt.cc (outer_template_args): Use strip_innermost_template_args.
1321         (any_type_dependent_arguments_p): Exit early if
1322         !processing_template_decl.  Use range-based for.
1323         (any_dependent_template_arguments_p): Likewise.
1325 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1327         PR c++/98283
1328         * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
1329         REF_PARENTHESIZED_P more generally via force_paren_expr.
1330         * semantics.cc (force_paren_expr): Document default argument.
1332 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1334         PR c++/109651
1335         * pt.cc (coerce_template_args_for_ttp): Mention we can hit the
1336         current_template_parms fallback when level-lowering a bound ttp.
1337         (tsubst_template_decl): Add lambda_tparms parameter.  Prefer to
1338         use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS.
1339         (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms
1340         to tsubst_template_decl.
1341         (tsubst_lambda_expr): For a generic lambda, substitute
1342         DECL_TEMPLATE_PARMS and set current_template_parms to it
1343         before substituting the function type.  Pass the substituted
1344         DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl.
1346 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1348         PR c++/109480
1349         * semantics.cc (enforce_access): Check current_template_parms
1350         instead of processing_template_decl when deciding whether to
1351         defer the access check.
1353 2023-05-07  Patrick Palka  <ppalka@redhat.com>
1355         PR c++/109480
1356         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
1357         Reorganize to call get_fns sooner.  Remove special handling of
1358         the object argument of a non-static member function call.  Remove
1359         dead store to 'fun'.
1361 2023-05-05  Jason Merrill  <jason@redhat.com>
1363         Revert:
1364         2023-04-27  Jason Merrill  <jason@redhat.com>
1366         PR c++/61445
1367         * pt.cc (instantiate_decl): Assert !defer_ok for local
1368         class members.
1370 2023-05-03  Jason Merrill  <jason@redhat.com>
1372         PR c++/91618
1373         PR c++/109649
1374         * friend.cc (do_friend): Don't call check_explicit_specialization if
1375         DECL_TEMPLATE_INFO is already set.
1376         * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO.
1377         * name-lookup.cc (set_decl_namespace): Likewise.
1379 2023-05-03  Jakub Jelinek  <jakub@redhat.com>
1381         * cp-gimplify.cc (cp_fold_data): Move definition earlier.
1382         (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false
1383         constructed data rather than &pset to cp_walk_tree with cp_fold_r.
1385 2023-05-03  Jason Merrill  <jason@redhat.com>
1387         * pt.cc (reduce_template_parm_level): Fix comparison of
1388         template template parm to cached version.
1390 2023-05-02  Jason Merrill  <jason@redhat.com>
1392         * pt.cc (instantiate_class_template): Skip the RECORD_TYPE
1393         of a class template.
1394         (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE.
1396 2023-05-02  Jason Merrill  <jason@redhat.com>
1398         * name-lookup.cc (pop_from_top_level): Don't
1399         invalidate_class_lookup_cache.
1401 2023-05-02  Jason Merrill  <jason@redhat.com>
1403         PR c++/109678
1404         * cp-tree.h (lookup_base): Add offset parm.
1405         * constexpr.cc (cxx_fold_indirect_ref_1): Pass it.
1406         * search.cc (struct lookup_base_data_s): Add offset.
1407         (dfs_lookup_base): Handle it.
1408         (lookup_base): Pass it.
1410 2023-05-02  Jason Merrill  <jason@redhat.com>
1412         PR c++/109678
1413         * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
1415 2023-05-01  Jason Merrill  <jason@redhat.com>
1417         PR c++/109666
1418         * name-lookup.cc (maybe_push_to_top_level)
1419         (maybe_pop_from_top_level): Split out...
1420         * pt.cc (instantiate_body): ...from here.
1421         * init.cc (maybe_instantiate_nsdmi_init): Use them.
1422         * name-lookup.h: Declare them..
1424 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
1426         * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
1428 2023-04-27  Jason Merrill  <jason@redhat.com>
1430         * call.cc (print_conversion_rejection): Use iloc_sentinel.
1432 2023-04-27  Jason Merrill  <jason@redhat.com>
1434         PR c++/61445
1435         * pt.cc (instantiate_decl): Assert !defer_ok for local
1436         class members.
1438 2023-04-26  Jason Merrill  <jason@redhat.com>
1440         * init.cc (nsdmi_inst): Remove.
1441         (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
1443 2023-04-26  Jason Merrill  <jason@redhat.com>
1445         PR c++/109241
1446         * pt.cc (instantiate_class_template): Do partially instantiate.
1447         (tsubst_expr): Do call complete_type for partial instantiations.
1449 2023-04-26  Jason Merrill  <jason@redhat.com>
1451         PR c++/69836
1452         * pt.cc (regenerate_decl_from_template): Skip unique friends.
1454 2023-04-26  Patrick Palka  <ppalka@redhat.com>
1456         * pt.cc (most_specialized_partial_spec): Exit early when
1457         DECL_TEMPLATE_SPECIALIZATIONS is empty.  Move local variable
1458         declarations closer to their first use.  Remove redundant
1459         flag_concepts test.  Remove redundant forward declaration.
1461 2023-04-25  Patrick Palka  <ppalka@redhat.com>
1463         PR c++/108975
1464         * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
1465         Suppress conservative early exit for reference variables
1466         when DECL_HAS_VALUE_EXPR_P.
1468 2023-04-25  Tobias Burnus  <tobias@codesourcery.com>
1470         * parser.cc (cp_parser_omp_scan_loop_body): Handle
1471         zero exec statements before/after 'omp scan'.
1473 2023-04-24  Patrick Palka  <ppalka@redhat.com>
1475         * cp-tree.h (cp_expr_location): Define here.
1476         * tree.cc (cp_expr_location): Don't define here.
1478 2023-04-21  Jason Merrill  <jason@redhat.com>
1480         PR c++/108099
1481         * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned
1482         typedef' pedwarn.  Use c_common_signed_or_unsigned_type.  Also
1483         handle 'signed typedef'.
1485 2023-04-21  Patrick Palka  <ppalka@redhat.com>
1487         * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
1488         <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
1489         <case ALIGNOF_EXPR etc>: Likewise.
1491 2023-04-20  Patrick Palka  <ppalka@redhat.com>
1493         * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: Don't recurse when
1494         level lowering a cv-qualified type template parameter.  Remove
1495         recursive loop breaker in the level lowering case for constrained
1496         autos.  Use the TEMPLATE_PARM_DESCENDANTS cache in this case as
1497         well.
1499 2023-04-20  Patrick Palka  <ppalka@redhat.com>
1501         * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC
1502         of arguments into a TREE_LIST for sake of pretty printing.
1503         * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC
1504         instead of TREE_LIST of trailing variadic trait arguments.
1505         * method.cc (constructible_expr): Likewise.
1506         (is_xible_helper): Likewise.
1507         * parser.cc (cp_parser_trait): Represent trailing variadic trait
1508         arguments as a TREE_VEC instead of TREE_LIST.
1509         * pt.cc (value_dependent_expression_p): Handle TREE_VEC
1510         instead of TREE_LIST of trailing variadic trait arguments.
1511         * semantics.cc (finish_type_pack_element): Likewise.
1512         (check_trait_type): Likewise.
1514 2023-04-20  Patrick Palka  <ppalka@redhat.com>
1516         * tree.cc (strip_typedefs): Move TREE_LIST handling to
1517         strip_typedefs_expr.  Dispatch to strip_typedefs_expr for
1518         non-type 't'.
1519         <case TYPENAME_TYPE>: Remove manual dispatching to
1520         strip_typedefs_expr.
1521         <case TRAIT_TYPE>: Likewise.
1522         (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
1523         with strip_typedefs throughout.  Don't dispatch to strip_typedefs
1524         for type 't'.
1525         <case TREE_LIST>: Replace this with the better version from
1526         strip_typedefs.
1528 2023-04-19  Patrick Palka  <ppalka@redhat.com>
1529             Jonathan Wakely  <jwakely@redhat.com>
1531         PR c++/100157
1532         * cp-trait.def (TYPE_PACK_ELEMENT): Define.
1533         * cp-tree.h (finish_trait_type): Add complain parameter.
1534         * cxx-pretty-print.cc (pp_cxx_trait): Handle
1535         CPTK_TYPE_PACK_ELEMENT.
1536         * parser.cc (cp_parser_constant_expression): Document default
1537         arguments.
1538         (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT.  Pass
1539         tf_warning_or_error to finish_trait_type.
1540         * pt.cc (tsubst) <case TRAIT_TYPE>: Handle non-type first
1541         argument.  Pass complain to finish_trait_type.
1542         * semantics.cc (finish_type_pack_element): Define.
1543         (finish_trait_type): Add complain parameter.  Handle
1544         CPTK_TYPE_PACK_ELEMENT.
1545         * tree.cc (strip_typedefs): Handle non-type first argument.
1546         Pass tf_warning_or_error to finish_trait_type.
1547         * typeck.cc (structural_comptypes) <case TRAIT_TYPE>: Use
1548         cp_tree_equal instead of same_type_p for the first argument.
1550 2023-04-19  Patrick Palka  <ppalka@redhat.com>
1552         PR c++/109556
1553         * pt.cc (try_class_unification): Don't ggc_free the copy of
1554         'targs'.
1556 2023-04-19  Jason Merrill  <jason@redhat.com>
1558         PR c++/108099
1559         * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
1561 2023-04-17  Patrick Palka  <ppalka@redhat.com>
1563         PR c++/109531
1564         * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
1565         In the level-lowering case just use lookup_template_class
1566         to rebuild the bound ttp.
1568 2023-04-15  Jason Merrill  <jason@redhat.com>
1570         PR c++/109357
1571         * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
1572         Check for complex initializer.
1574 2023-04-13  Patrick Palka  <ppalka@redhat.com>
1576         PR c++/109420
1577         * decl.cc (make_typename_type): Also ignore non-types during the
1578         lookup if tag_type corresponds to an elaborated-type-specifier.
1579         * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or
1580         enum_type as tag_type to make_typename_type accordingly instead
1581         of always passing typename_type.
1583 2023-04-13  Jason Merrill  <jason@redhat.com>
1585         PR c++/109277
1586         * semantics.cc (check_trait_type): Handle incomplete type directly.
1587         * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert.
1589 2023-04-13  Jason Merrill  <jason@redhat.com>
1591         * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
1592         * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
1594 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
1596         * Make-lang.in (s-cp-module-version): New target.
1597         (cp/module.o): Depend on it.
1598         (MODULE_VERSION): Remove variable.
1599         (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just
1600         cat s-cp-module-version.
1602 2023-04-09  Iain Sandoe  <iain@sandoe.co.uk>
1604         * coroutines.cc (coro_rewrite_function_body): Ensure that added
1605         bind expressions have scope blocks.
1607 2023-04-04  Jason Merrill  <jason@redhat.com>
1609         PR c++/107484
1610         * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
1612 2023-04-03  Patrick Palka  <ppalka@redhat.com>
1614         PR c++/109300
1615         * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
1616         with no initializer, instead of asserting.
1618 2023-04-01  Patrick Palka  <ppalka@redhat.com>
1620         PR c++/109160
1621         * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter.
1622         * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to
1623         do_auto_deduction.
1624         (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
1625         'in_decl' to coerce_template_parms.
1626         (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE
1627         as 'tmpl' to do_auto_deduction.
1628         (do_auto_deduction): Document default arguments.  Rename local
1629         variable 'tmpl' to 'ctmpl'.  Use 'tmpl' to obtain a full set of
1630         template arguments for satisfaction in the adc_unify case.
1632 2023-04-01  Patrick Palka  <ppalka@redhat.com>
1634         PR c++/53164
1635         PR c++/105848
1636         * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of
1637         FUNCTION_DECL.
1638         (instantiate_class_template): Call mark_template_arguments_used.
1639         (tsubst_copy_and_build) <case CALL_EXPR>: Revert r13-995 change.
1640         (mark_template_arguments_used): Define.
1641         (instantiate_body): Call mark_template_arguments_used.
1643 2023-04-01  Iain Sandoe  <iain@sandoe.co.uk>
1645         PR c++/101118
1646         * coroutines.cc (flatten_await_stmt): Use the current count of
1647         promoted temporaries to build a unique name for the frame entries.
1649 2023-03-30  Jason Merrill  <jason@redhat.com>
1651         PR c++/105452
1652         * search.cc (type_context_for_name_lookup): New.
1653         (accessible_p): Handle anonymous union.
1654         * init.cc (maybe_instantiate_nsdmi_init): Use
1655         type_context_for_name_lookup.
1656         * parser.cc (cp_parser_class_specifier): Likewise.
1657         * cp-tree.h (type_context_for_name_lookup): Declare.
1659 2023-03-30  Jason Merrill  <jason@redhat.com>
1661         PR c++/105221
1662         * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
1663         conversions.
1665 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
1667         PR c++/109319
1668         * decl2.cc (grok_array_decl): After emitting a pedwarn for
1669         -Wcomma-subscript, if processing_template_decl set orig_index_exp
1670         to compound expr from orig_index_exp_list.
1672 2023-03-30  Jason Merrill  <jason@redhat.com>
1674         PR c++/107897
1675         PR c++/108887
1676         * decl2.cc (record_mangling): Use symtab_node::reset.
1678 2023-03-30  Jakub Jelinek  <jakub@redhat.com>
1680         PR c++/109278
1681         * call.cc (convert_like_internal): If pedwarn for extended float
1682         type conversions doesn't report anything, avoid calling
1683         maybe_inform_about_fndecl_for_bogus_argument_init.
1685 2023-03-29  Jason Merrill  <jason@redhat.com>
1687         PR c++/109321
1688         PR c++/109320
1689         * pt.cc (alias_ctad_tweaks): Rewrite deduced args.
1690         (type_targs_deducible_from): Handle null pack deduction.
1692 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
1694         PR c/107002
1695         * parser.cc (cp_parser_binary_expression): Update for new param of
1696         check_for_xor_used_as_pow.
1698 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
1700         PR c++/109309
1701         * contracts.cc: Include intl.h.
1702         (check_postcondition_result): Don't form diagnostics from two halves
1703         of an English message to allow translations.
1705 2023-03-24  Patrick Palka  <ppalka@redhat.com>
1707         PR c++/106969
1708         * parser.cc (cp_parser_class_specifier): Clear current_class_ptr
1709         and current_class_ref sooner, before parsing a class definition.
1711 2023-03-24  Jason Merrill  <jason@redhat.com>
1713         PR c++/105481
1714         * pt.cc (type_unification_real): Adjust for partial ordering.
1716 2023-03-23  Jason Merrill  <jason@redhat.com>
1718         PR c++/105996
1719         * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
1720         and location wrappers.
1722 2023-03-23  Marek Polacek  <polacek@redhat.com>
1724         PR c++/107532
1725         * call.cc (class_has_reference_member_p): New.
1726         (class_has_reference_member_p_r): New.
1727         (reference_like_class_p): Don't look for a specific constructor.
1728         Use a DFS walk with class_has_reference_member_p_r.
1730 2023-03-23  Jason Merrill  <jason@redhat.com>
1732         PR c++/109241
1733         * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
1735 2023-03-22  Jason Merrill  <jason@redhat.com>
1737         PR c++/108390
1738         * pt.cc (unify): Use fold of build_nop instead of fold_convert.
1740 2023-03-22  Jason Merrill  <jason@redhat.com>
1742         PR c++/108795
1743         * semantics.cc (finish_id_expression_1): Check scope before
1744         returning id_expression.
1746 2023-03-22  Alex Coplan  <alex.coplan@arm.com>
1748         PR c++/109177
1749         * call.cc (build_over_call): Use make_temp_override to suppress
1750         both unavailable and deprecated warnings when calling
1751         build_addr_func.
1753 2023-03-21  Jason Merrill  <jason@redhat.com>
1755         PR c++/106890
1756         * init.cc (maybe_instantiate_nsdmi_init): Don't leave
1757         current_function_decl set to a constructor.
1759 2023-03-20  Marek Polacek  <polacek@redhat.com>
1761         PR c++/109159
1762         * call.cc (add_template_candidate_real): Add explicit decls to the
1763         set of candidates when the initializer is a braced-init-list.
1765 2023-03-20  Jakub Jelinek  <jakub@redhat.com>
1767         PR c++/109164
1768         * cp-tree.h (var_needs_tls_wrapper): Declare.
1769         * decl2.cc (var_needs_tls_wrapper): No longer static.
1770         * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables
1771         for which a TLS wrapper will be needed.
1773 2023-03-17  Jason Merrill  <jason@redhat.com>
1775         PR c++/108975
1776         * lambda.cc (prune_lambda_captures): Don't bother in a template.
1778 2023-03-17  Jason Merrill  <jason@redhat.com>
1780         PR c++/109172
1781         * except.cc (build_throw): Check dtor access.
1783 2023-03-17  Jason Merrill  <jason@redhat.com>
1785         PR c++/69410
1786         * friend.cc (do_friend): Handle namespace as scope argument.
1787         * decl.cc (grokdeclarator): Pass down in_namespace.
1789 2023-03-16  Jason Merrill  <jason@redhat.com>
1791         PR c++/105809
1792         * init.cc (get_nsdmi): Split out...
1793         (maybe_instantiate_nsdmi_init): ...this function.
1794         * cp-tree.h: Declare it.
1795         * pt.cc (tsubst_expr): Use it.
1797 2023-03-16  Jason Merrill  <jason@redhat.com>
1799         PR c++/108242
1800         * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
1802 2023-03-16  Jason Merrill  <jason@redhat.com>
1804         PR c++/101869
1805         * semantics.cc (finish_qualified_id_expr): Don't try to build a
1806         pointer-to-member if the scope is an enumeration.
1808 2023-03-16  Patrick Palka  <ppalka@redhat.com>
1810         PR c++/109030
1811         * constexpr.cc (maybe_constant_init_1): For an unevaluated
1812         non-manifestly-constant operand, don't constant evaluate
1813         and instead call fold_to_constant as in maybe_constant_value.
1815 2023-03-16  Patrick Palka  <ppalka@redhat.com>
1817         PR c++/100288
1818         * constraint.cc (satisfaction_cache::get): Relax overly strict
1819         checking assert in the constraint recursion case.
1821 2023-03-16  Jason Merrill  <jason@redhat.com>
1823         PR c++/105406
1824         * coroutines.cc (build_co_await): Handle lvalue 'o'.
1826 2023-03-15  Jason Merrill  <jason@redhat.com>
1828         PR c++/103871
1829         PR c++/98056
1830         * typeck.cc (cp_build_modify_expr): Allow array initialization of
1831         DECL_ARTIFICIAL variable.
1833 2023-03-15  Marek Polacek  <polacek@redhat.com>
1835         PR c++/107280
1836         * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
1838 2023-03-15  Jason Merrill  <jason@redhat.com>
1840         PR c++/58538
1841         * semantics.cc (check_template_template_default_arg): Check
1842         maybe_get_template_decl_from_type_decl.
1844 2023-03-15  Jason Merrill  <jason@redhat.com>
1846         PR c++/108179
1847         PR c++/104107
1848         PR c++/95036
1849         * pt.cc (coerce_template_template_parms): Use args from
1850         DECL_CONTEXT (arg_tmpl) instead of outer_args.
1852 2023-03-15  Jason Merrill  <jason@redhat.com>
1854         PR c++/108179
1855         * pt.cc (coerce_template_template_parms): Take the arg and parm
1856         templates directly.
1857         (coerce_template_template_parm): Adjust.
1858         (template_template_parm_bindings_ok_p): Adjust.
1859         (convert_template_argument): Adjust.
1861 2023-03-14  Patrick Palka  <ppalka@redhat.com>
1863         PR c++/96830
1864         * pt.cc (push_inline_template_parms_recursive): Set
1865         TEMPLATE_PARMS_CONSTRAINTS.
1866         (push_template_decl): For an out-of-line declaration, verify
1867         constraints for each enclosing template scope match those of the
1868         original template declaratation.
1870 2023-03-14  Patrick Palka  <ppalka@redhat.com>
1872         PR c++/96830
1873         * pt.cc (redeclare_class_template): Add missing "of" in
1874         constraint mismatch diagnostic.
1875         (tsubst_friend_class): For an already declared class template,
1876         substitute and pass the friend declaration's constraints to
1877         redeclare_class_template instead of passing the existing
1878         template's constraints.
1880 2023-03-14  Jason Merrill  <jason@redhat.com>
1882         PR c++/108468
1883         * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
1884         is non-null.
1886 2023-03-14  Jason Merrill  <jason@redhat.com>
1888         PR c++/107310
1889         * cp-gimplify.cc (genericize_if_stmt): Restore folding
1890         of constant conditions.
1892 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
1894         PR c++/109096
1895         * tree.cc (record_has_unique_obj_representations): Ignore unnamed
1896         bitfields.
1898 2023-03-13  Jason Merrill  <jason@redhat.com>
1900         PR c++/107128
1901         * parser.cc (cp_parser_set_decl_spec_type): Use
1902         redefined_builtin_type for extended_float_type_p.
1904 2023-03-13  Marek Polacek  <polacek@redhat.com>
1906         PR c++/107532
1907         * call.cc (reference_like_class_p): Check for std::span.
1909 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1911         PR c++/107558
1912         * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on
1913         automatic non-aggregate variables just because of
1914         -fmerge-all-constants.
1916 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1918         PR c++/109039
1919         * class.cc (end_of_class): For bit-fields, instead of computing
1920         offset as sum of byte_position (field) and DECL_SIZE_UNIT (field),
1921         compute it as sum of bit_position (field) and DECL_SIZE (field)
1922         divided by BITS_PER_UNIT rounded up.
1924 2023-03-10  Jason Merrill  <jason@redhat.com>
1926         PR c++/108972
1927         * lambda.cc (compare_lambda_template_head): Check more
1928         for error_mark_node.
1930 2023-03-10  Jason Merrill  <jason@redhat.com>
1932         PR c++/108566
1933         * mangle.cc (anon_aggr_naming_decl): New.
1934         (write_unqualified_name): Use it.
1936 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
1938         PR c/108079
1939         * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
1940         after diagnosing it.
1942 2023-03-10  Jason Merrill  <jason@redhat.com>
1944         PR c++/108099
1945         * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
1947 2023-03-10  Jason Merrill  <jason@redhat.com>
1949         PR c++/108542
1950         * class.cc (instantiate_type): Strip location wrapper.
1952 2023-03-09  Jason Merrill  <jason@redhat.com>
1954         PR c++/108773
1955         * init.cc (find_allocator_temps_r): New.
1956         (combine_allocator_temps): Replace find_allocator_temp.
1957         (build_vec_init): Adjust.
1959 2023-03-09  Jason Merrill  <jason@redhat.com>
1961         DR 2664
1962         PR c++/102529
1963         * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
1965 2023-03-09  Jason Merrill  <jason@redhat.com>
1966             Michael Spertus  <mike@spertus.com>
1968         PR c++/105841
1969         * pt.cc (corresponding_template_parameter_list): Split out...
1970         (corresponding_template_parameter): ...from here.
1971         (find_template_parameters): Factor out...
1972         (find_template_parameter_info::find_in): ...this function.
1973         (find_template_parameter_info::find_in_recursive): New.
1974         (find_template_parameter_info::found): New.
1975         (alias_ctad_tweaks): Only add parms used in the deduced args.
1977 2023-03-09  Jason Merrill  <jason@redhat.com>
1979         * cp-trait.def (IS_DEDUCIBLE): Add space to name.
1981 2023-03-09  Jason Merrill  <jason@redhat.com>
1983         PR c++/105841
1984         * cp-trait.def (IS_DEDUCIBLE): New.
1985         * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type.
1986         * parser.cc (cp_parser_trait): Likewise.
1987         * tree.cc (cp_tree_equal): Likewise.
1988         * pt.cc (tsubst_copy_and_build): Likewise.
1989         (type_targs_deducible_from): New.
1990         (alias_ctad_tweaks): Use it.
1991         * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE.
1992         (finish_trait_expr): Likewise.
1993         * constraint.cc (diagnose_trait_expr): Likewise.
1994         * cp-tree.h (type_targs_deducible_from): Declare.
1996 2023-03-07  Jason Merrill  <jason@redhat.com>
1998         PR c++/108526
1999         PR c++/106651
2000         * pt.cc (tsubst_function_decl): Don't replace the closure
2001         parameter if DECL_STATIC_FUNCTION_P.
2003 2023-03-07  Marek Polacek  <polacek@redhat.com>
2005         PR c++/107532
2006         * call.cc (reference_like_class_p): New.
2007         (do_warn_dangling_reference): Add new bool parameter.  See through
2008         reference_like_class_p.
2010 2023-03-07  Jakub Jelinek  <jakub@redhat.com>
2012         PR c++/109042
2013         * rtti.cc (emit_support_tinfo_1): Don't assert that last
2014         unemitted_tinfo_decls element is tinfo, instead pop from it only in
2015         that case.
2016         * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl
2017         for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL.
2019 2023-03-07  Marek Polacek  <polacek@redhat.com>
2021         PR c++/109030
2022         * constexpr.cc (cxx_eval_call_expression): Relax assert.
2024 2023-03-07  Marek Polacek  <polacek@redhat.com>
2026         PR c++/107939
2027         * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
2028         'any' when recursing on a VAR_DECL and not a pointer to function.
2030 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
2032         PR c++/108702
2033         * constexpr.cc: Include toplev.h.
2034         (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a local
2035         static initialized by constant expression outside of a constexpr
2036         function which has been deferred by make_rtl_for_nonlocal_decl,
2037         call rest_of_decl_compilation on it.
2039 2023-03-03  Patrick Palka  <ppalka@redhat.com>
2041         PR c++/108998
2042         * pt.cc (el_data::skipped_trees): New data member.
2043         (extract_locals_r): Push to skipped_trees any unevaluated
2044         contexts that we skipped over.
2045         (extract_local_specs): For the second walk, start from each
2046         tree in skipped_trees.
2048 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
2050         * typeck.cc (cp_build_binary_op): Suppress redundant warning
2051         for pfn null test in pmfn test with vbit-in-delta.
2053 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
2055         PR target/108883
2056         * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE
2057         enumerators.
2058         (fallback_dfloat32_type, fallback_dfloat64_type,
2059         fallback_dfloat128_type): Remove.
2060         * rtti.cc (emit_support_tinfo_1): If not emitted already, call
2061         emit_tinfo_decl and remove from unemitted_tinfo_decls right away.
2062         (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array
2063         into new fundamentals_with_fallback array.  Call emit_support_tinfo_1
2064         on elements of that array too, with the difference that if
2065         the type is NULL, use a fallback REAL_TYPE for it temporarily.
2066         Drop the !targetm.decimal_float_supported_p () handling.  Call
2067         targetm.emit_support_tinfos at the end.
2068         * mangle.cc (write_builtin_type): Remove references to
2069         fallback_dfloat*_type.  Handle bfloat16_type_node mangling.
2071 2023-03-02  Patrick Palka  <ppalka@redhat.com>
2073         PR c++/108243
2074         PR c++/97553
2075         * cp-gimplify.cc (cp_fully_fold): Add an internal overload that
2076         additionally takes and propagate an mce_value parameter, and
2077         define the existing public overload in terms of it.
2078         (cp_fully_fold_init): Pass mce_false to cp_fully_fold.
2080 2023-03-02  Patrick Palka  <ppalka@redhat.com>
2082         PR c++/108243
2083         * constexpr.cc (maybe_constant_init_1): Override
2084         manifestly_const_eval to true if is_static.
2086 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
2088         PR debug/108716
2089         * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
2090         DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
2091         of USING_STMT or input_location.
2093 2023-03-02  Marek Polacek  <polacek@redhat.com>
2095         PR c++/106259
2096         * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first
2097         lookup of SPEC didn't find anything, try to look for
2098         most_general_template.
2100 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
2102         PR c++/105839
2103         * parser.cc (cp_convert_omp_range_for): Allow in assert
2104         decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has
2105         error_mark_node type.
2106         (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back
2107         on decls which have error_mark_node type.
2109 2023-03-01  Marek Polacek  <polacek@redhat.com>
2111         PR c++/107574
2112         * constexpr.cc (cxx_eval_constant_expression): Emit an error when
2113         a PTRMEM_CST cannot be evaluated.
2115 2023-03-01  Patrick Palka  <ppalka@redhat.com>
2117         * pt.cc (tsubst_scope): Define.
2118         (tsubst_decl) <case USING_DECL>: Call tsubst_scope instead of
2119         calling tsubst_scope with tf_qualifying_scope set.
2120         (tsubst_qualified_id): Call tsubst_scope instead of
2121         calling tsubst with tf_qualifying_scope set.
2122         (tsubst_copy): Immediately delegate to tsubst for all TYPE_P
2123         trees.  Remove tf_qualifying_scope manipulation.
2124         <case SCOPE_REF>: Call tsubst_scope instead of calling
2125         tsubst with tf_qualifying_scope set.
2127 2023-03-01  Patrick Palka  <ppalka@redhat.com>
2128             Jason Merrill  <jason@redhat.com>
2130         PR c++/108219
2131         PR c++/108218
2132         * constexpr.cc (fold_to_constant): Define.
2133         (maybe_constant_value): Move up early exit test for unevaluated
2134         operands.  Try reducing an unevaluated operand to a constant via
2135         fold_to_constant.
2136         (fold_non_dependent_expr_template): Add early exit test for
2137         CONSTANT_CLASS_P nodes.  Try reducing an unevaluated operand
2138         to a constant via fold_to_constant.
2139         * cp-tree.h (fold_to_constant): Declare.
2141 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
2143         PR c++/108606
2144         * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
2145         Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
2146         just return true.
2148 2023-02-28  Patrick Palka  <ppalka@redhat.com>
2150         PR c++/108848
2151         * pt.cc (finish_template_variable): Move dependence check
2152         to here from ...
2153         (lookup_and_finish_template_variable): ... here.
2154         * semantics.cc (finish_id_expression_1): Call
2155         finish_template_variable sooner, before (and regardless of) the
2156         type_dependent_expression_p test.
2158 2023-02-28  Marek Polacek  <polacek@redhat.com>
2160         PR c++/108550
2161         * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
2163 2023-02-20  Marek Polacek  <polacek@redhat.com>
2165         PR c++/101073
2166         * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
2167         constructor/op= with a checking assert.
2169 2023-02-20  Marek Polacek  <polacek@redhat.com>
2171         PR c++/108829
2172         * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P.
2173         (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to
2174         prepend_one_capture.
2176 2023-02-18  Jason Merrill  <jason@redhat.com>
2178         DR 2518
2179         PR c++/52809
2180         PR c++/53638
2181         PR c++/87389
2182         PR c++/89741
2183         PR c++/92099
2184         PR c++/104041
2185         PR c++/104691
2186         * semantics.cc (finish_static_assert): Don't diagnose in
2187         template context.
2189 2023-02-17  Patrick Palka  <ppalka@redhat.com>
2191         PR c++/108243
2192         PR c++/97553
2193         * cp-gimplify.cc (enum fold_flags): Define.
2194         (fold_flags_t): Declare.
2195         (cp_fold_data::genericize): Replace this data member with ...
2196         (cp_fold_data::fold_flags): ... this.
2197         (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold.
2198         (cp_fold_function): Likewise.
2199         (cp_fold_maybe_rvalue): Add an internal overload that
2200         additionally takes and propagates a fold_flags_t parameter, and
2201         define the existing public overload in terms of it.
2202         (cp_fold_rvalue): Likewise.
2203         (cp_fully_fold_init): Adjust use of cp_fold_data.
2204         (fold_cache): Replace with ...
2205         (fold_caches): ... this 2-element array of caches.
2206         (get_fold_cache): Define.
2207         (clear_fold_cache): Adjust.
2208         (cp_fold): Add fold_flags_t parameter.  Use get_fold_cache.
2209         Pass flags to calls to cp_fold, cp_fold_rvalue and
2210         cp_fold_maybe_rvalue.
2211         <case CALL_EXPR>: If ff_mce_false is set, fold
2212         __builtin_is_constant_evaluated to false and pass mce_false to
2213         maybe_constant_value.
2215 2023-02-17  Patrick Palka  <ppalka@redhat.com>
2217         * constexpr.cc (constexpr_call::manifestly_const_eval): Give
2218         it type int instead of bool.
2219         (constexpr_ctx::manifestly_const_eval): Give it type mce_value
2220         instead of bool.
2221         (cxx_eval_builtin_function_call): Adjust after making
2222         manifestly_const_eval tri-state.
2223         (cxx_eval_call_expression): Likewise.
2224         (cxx_eval_binary_expression): Likewise.
2225         (cxx_eval_conditional_expression): Likewise.
2226         (cxx_eval_constant_expression): Likewise.
2227         (cxx_eval_outermost_constant_expr): Likewise.
2228         (cxx_constant_value): Likewise.
2229         (cxx_constant_dtor): Likewise.
2230         (maybe_constant_value): Give manifestly_const_eval parameter
2231         type mce_value instead of bool and adjust accordingly.
2232         (fold_non_dependent_expr_template): Adjust call
2233         to cxx_eval_outermost_constant_expr.
2234         (fold_non_dependent_expr): Likewise.
2235         (maybe_constant_init_1): Likewise.
2236         * constraint.cc (satisfy_atom): Adjust call to
2237         maybe_constant_value.
2238         * cp-tree.h (enum class mce_value): Define.
2239         (maybe_constant_value): Adjust manifestly_const_eval parameter
2240         type and default argument.
2241         * decl.cc (compute_array_index_type_loc): Adjust call to
2242         maybe_constant_value.
2243         * pt.cc (convert_nontype_argument): Likewise.
2245 2023-02-16  Patrick Palka  <ppalka@redhat.com>
2247         PR c++/107773
2248         * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope.
2249         * decl.cc (make_typename_type): Use lookup_member instead of
2250         lookup_field.  If tf_qualifying_scope is set, pass want_type=true
2251         instead of =false to lookup_member.  Generalize format specifier
2252         in diagnostic to handle both type and non-type bindings.
2253         * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope.  Tidy
2254         the function.
2255         (tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when
2256         substituting USING_DECL_SCOPE.
2257         (tsubst): Clear tf_qualifying_scope right away and remember if
2258         it was set.  Do the same for tf_tst_ok sooner.
2259         <case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting
2260         TYPE_CONTEXT.  Pass tf_qualifying_scope to make_typename_type
2261         if it was set.
2262         (tsubst_qualified_id): Set tf_qualifying_scope when substituting
2263         the scope.
2264         (tsubst_copy): Clear tf_qualifying_scope and remember if it was
2265         set.
2266         <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
2267         scope.
2268         <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
2269         * search.cc (lookup_member): Document default argument.
2271 2023-02-16  Patrick Palka  <ppalka@redhat.com>
2273         * cp-tree.h: Mechanically drop static from static inline
2274         functions via s/^static inline/inline/g.
2276 2023-02-15  Marek Polacek  <polacek@redhat.com>
2278         PR c++/106675
2279         * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
2281 2023-02-10  Marek Polacek  <polacek@redhat.com>
2283         PR c++/107079
2284         * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
2286 2023-02-09  Tobias Burnus  <tobias@codesourcery.com>
2288         * parser.cc (cp_parser_omp_allocate): Parse align
2289         clause and check for restrictions.
2291 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
2293         PR c++/108698
2294         * mangle.cc (write_expression, write_template_arg): Handle
2295         EXCESS_PRECISION_EXPR with REAL_CST operand as
2296         write_template_arg_literal on fold_convert of the REAL_CST
2297         to EXCESS_PRECISION_EXPR type.
2299 2023-02-06  Patrick Palka  <ppalka@redhat.com>
2301         PR c++/107461
2302         * cp-tree.h (call_expr_dependent_name): Declare.
2303         * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: Use
2304         call_expr_dependent_name instead of dependent_name.
2305         * tree.cc (call_expr_dependent_name): Define.
2306         (called_fns_equal): Adjust to take two CALL_EXPRs instead of
2307         CALL_EXPR_FNs thereof.  Use call_expr_dependent_name instead
2308         of dependent_name.
2309         (cp_tree_equal) <case CALL_EXPR>: Adjust call to called_fns_equal.
2311 2023-02-03  Marek Polacek  <polacek@redhat.com>
2313         PR c++/108158
2314         * constexpr.cc (cxx_eval_array_reference): Don't replace
2315         new_ctx.object.
2317 2023-02-03  Patrick Palka  <ppalka@redhat.com>
2319         PR c++/107461
2320         * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
2321         the selected callee during overload set pruning.
2323 2023-02-03  Patrick Palka  <ppalka@redhat.com>
2325         PR c++/96745
2326         * class.cc (check_methods): Diagnose an unviable OVERLOAD
2327         set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one.
2328         Then prune the OVERLOAD to a single function.
2329         (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being
2330         an OVERLOAD when calling deduce_noexcept_on_destructor.
2331         Document why it has to be called before check_methods.
2333 2023-02-03  Patrick Palka  <ppalka@redhat.com>
2335         PR c++/108579
2336         * class.cc (check_methods): Swap order of constraints_satisfied_p
2337         and copy/move_fn_p tests.
2339 2023-02-01  Marek Polacek  <polacek@redhat.com>
2341         PR c++/107755
2342         * call.cc (build_new_op): Don't call warn_logical_operator when
2343         processing a template.
2345 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
2347         PR c++/108607
2348         * constexpr.cc (cxx_eval_constant_expression): Handle OMP_*
2349         and OACC_* constructs as non-constant.
2350         (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE.
2352 2023-02-01  Jason Merrill  <jason@redhat.com>
2354         * class.cc (note_name_declared_in_class): Change from permerror to
2355         -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases.
2357 2023-01-31  Jason Merrill  <jason@redhat.com>
2359         PR c++/108559
2360         * cp-gimplify.cc (any_non_eliding_target_exprs): New.
2361         (cp_genericize_init): Check it.
2363 2023-01-31  Marek Polacek  <polacek@redhat.com>
2365         PR c++/107593
2366         PR c++/108597
2367         * cp-tree.h (instantiation_dependent_expression_p): Don't
2368         declare here.
2370 2023-01-26  Marek Polacek  <polacek@redhat.com>
2372         PR c++/105300
2373         * parser.cc: Remove unnecessary forward declarations.
2374         (cp_parser_string_literal): New wrapper.
2375         (cp_parser_string_literal_common): Renamed from
2376         cp_parser_string_literal.  Add a bool parameter.  Give an error when
2377         UDLs are not permitted.
2378         (cp_parser_userdef_string_literal): New wrapper.
2379         (finish_userdef_string_literal): Renamed from
2380         cp_parser_userdef_string_literal.
2381         (cp_parser_primary_expression): Call cp_parser_userdef_string_literal
2382         instead of cp_parser_string_literal.
2383         (cp_parser_linkage_specification): Move a variable declaration closer
2384         to its first use.
2385         (cp_parser_static_assert): Likewise.
2386         (cp_parser_operator): Call cp_parser_userdef_string_literal instead of
2387         cp_parser_string_literal.
2388         (cp_parser_asm_definition): Move a variable declaration closer to its
2389         first use.
2390         (cp_parser_asm_specification_opt): Move variable declarations closer to
2391         their first use.
2392         (cp_parser_asm_operand_list): Likewise.
2393         (cp_parser_asm_clobber_list): Likewise.
2395 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
2397         PR c++/108503
2398         * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been
2399         called in !processing_template_decl with processing_template_decl
2400         temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily.
2401         (cp_finish_omp_range_for): And set it back again here.
2403 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
2405         PR c++/108525
2406         * mangle.cc (write_closure_type_name): Don't assume all
2407         lambda operator() fns are methods.
2409 2023-01-24  Jason Merrill  <jason@redhat.com>
2411         PR c++/108504
2412         * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
2413         token, too.
2415 2023-01-24  Jason Merrill  <jason@redhat.com>
2417         PR c++/108526
2418         * pt.cc (tsubst_function_decl): Handle static lambda.
2420 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
2422         PR c++/108474
2423         * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
2425 2023-01-24  Jason Merrill  <jason@redhat.com>
2427         PR c++/107303
2428         PR c++/107329
2429         * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double
2430         TARGET_EXPR, keep the outer one instead of the inner one.
2431         (maybe_replace_decl): New.
2433 2023-01-23  Jason Merrill  <jason@redhat.com>
2435         PR c++/107267
2436         * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
2437         of trivial types.
2439 2023-01-23  Marek Polacek  <polacek@redhat.com>
2441         PR c++/107797
2442         * cvt.cc (ocp_convert): copy_warning when creating a new
2443         COMPOUND_EXPR.
2444         * init.cc (build_new_1): Suppress -Wunused-value on
2445         compiler-generated COMPOUND_EXPRs.
2447 2023-01-23  Jason Merrill  <jason@redhat.com>
2449         PR c++/108195
2450         * call.cc (build_user_type_conversion_1): Check whether the
2451         iterators also find a list ctor.
2453 2023-01-23  Jason Merrill  <jason@redhat.com>
2455         PR c++/108496
2456         * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
2457         set.
2459 2023-01-23  Jason Merrill  <jason@redhat.com>
2461         PR c++/53288
2462         DR 1299
2463         * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
2465 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
2467         PR c++/108437
2468         * cp-tree.h (keep_unused_object_arg): Declare.
2469         * call.cc (keep_unused_object_arg): No longer static.
2470         * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF
2471         with overload being static member function.
2473 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
2475         PR c++/53932
2476         * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace
2477         DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding
2478         DECL_VALUE_EXPR.
2480 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
2482         PR c++/105593
2483         * decl.cc (cp_finish_decl): Check warning_enabled_at
2484         at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead
2485         of warn_init_self.
2487 2023-01-14  Jakub Jelinek  <jakub@redhat.com>
2489         PR c++/108365
2490         * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
2491         division or modulo.
2493 2023-01-13  Jakub Jelinek  <jakub@redhat.com>
2495         PR c++/108285
2496         * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR
2497         use its operand except that for warning purposes use the original
2498         EXCESS_PRECISION_EXPR.
2499         * call.cc (convert_like_internal): Only look through
2500         EXCESS_PRECISION_EXPR when calling cp_convert, not when calling
2501         cp_convert_and_check.
2503 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
2505         PR c++/105838
2506         PR c++/108047
2507         PR c++/108266
2508         * call.cc (maybe_init_list_as_range): Always return NULL_TREE if
2509         processing_template_decl.
2511 2023-01-05  Patrick Palka  <ppalka@redhat.com>
2513         PR c++/108275
2514         * parser.cc (cp_parser_class_head): Use dk_deferred instead of
2515         dk_no_check when parsing the class name.
2517 2023-01-05  Jakub Jelinek  <jakub@redhat.com>
2519         PR c++/108286
2520         * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
2521         OMP_CLAUSE_MAP.
2523 2023-01-04  Patrick Palka  <ppalka@redhat.com>
2525         PR c++/108282
2526         * decl2.cc (mark_single_function): Ignore mark_used failure
2527         only in a non-SFINAE context rather than in a SFINAE one.
2529 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
2531         PR c++/108206
2532         * decl.cc (merge_default_template_args): Return false if either
2533         new_parm or old_parm are erroneous.
2536 Copyright (C) 2023 Free Software Foundation, Inc.
2538 Copying and distribution of this file, with or without modification,
2539 are permitted in any medium without royalty provided the copyright
2540 notice and this notice are preserved.