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