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