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