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