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