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