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