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