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