1 2023-09-18 Patrick Palka <ppalka@redhat.com>
4 * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality
5 test by not calling most_general_template. Only unify the
6 innermost levels of template arguments.
7 (unify) <case CLASS_TYPE>: Only unify the innermost levels of
8 template arguments, and only if the template is primary.
10 2023-09-18 Patrick Palka <ppalka@redhat.com>
14 * semantics.cc (maybe_convert_cond): Look through implicit
15 INDIRECT_REF when deciding whether to issue a -Wparentheses
16 warning, and consider templated assignment expressions as well.
17 (finish_parenthesized_expr): Look through implicit INDIRECT_REF
18 when suppressing -Wparentheses warning.
19 * typeck.cc (build_x_modify_expr): Check simple assignments
20 ahead time too, not just compound assignments. Give the second
21 operand of MODOP_EXPR a non-null type so that it's not considered
22 always instantiation-dependent. Don't call suppress_warning.
24 2023-09-18 Patrick Palka <ppalka@redhat.com>
27 * pt.cc (unify): Return unify_success for identical dependent
28 DECL_P 'arg' and 'parm'.
29 <case CONST_DECL>: Remove handling.
31 2023-09-18 Patrick Palka <ppalka@redhat.com>
33 * call.cc (add_template_candidate_real): Check arity even
34 when there are no explicit template arguments. Combine the
35 two adjacent '!obj' tests into one.
37 2023-09-18 Patrick Palka <ppalka@redhat.com>
39 * pt.cc (register_specialization): Remove now-unnecessary
40 early exit for FUNCTION_DECL partial instantiation.
41 (tsubst_template_decl): Pass use_spec_table=false to
42 tsubst_function_decl. Set DECL_TI_ARGS of a non-lambda
43 FUNCTION_DECL specialization to the full set of arguments.
44 Simplify register_specialization call accordingly.
46 2023-09-18 Jason Merrill <jason@redhat.com>
48 * class.cc (check_subobject_offset): Use similar_type_p.
50 2023-09-12 Jason Merrill <jason@redhat.com>
53 * pt.cc (expand_integer_pack): Convert argument to int.
55 2023-09-12 Jason Merrill <jason@redhat.com>
58 * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR
59 regardless of seen_error.
61 2023-09-08 Patrick Palka <ppalka@redhat.com>
64 * pt.cc (check_non_deducible_conversions): Add bool parameter
65 passed down to check_non_deducible_conversion.
66 (fn_type_unification): Call check_non_deducible_conversions
67 an extra time before satisfaction with noninst_only_p=true.
68 (conversion_may_instantiate_p): Define.
69 (check_non_deducible_conversion): Add bool parameter controlling
70 whether to compute only conversions that are guaranteed to
71 not induce template instantiation.
73 2023-09-07 Sandra Loosemore <sandra@codesourcery.com>
76 * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK.
78 2023-09-06 Jason Merrill <jason@redhat.com>
80 * class.cc (check_subobject_offset): Check
81 same_type_ignoring_top_level_qualifiers_p.
83 2023-09-05 Marek Polacek <polacek@redhat.com>
86 * constexpr.cc (verify_constant_explain_r): New.
87 (verify_constant): Call it.
89 2023-09-05 Jakub Jelinek <jakub@redhat.com>
92 * name-lookup.cc (check_local_shadow): Don't punt early for
93 DECL_EXTERNAL decls, instead just disable the shadowing of namespace
94 decls check for those and emit a pedwarn rather than error_at or
95 permerror for those. Formatting fix.
97 2023-09-05 Jakub Jelinek <jakub@redhat.com>
100 * name-lookup.h (struct cp_binding_level): Add artificial bit-field.
102 * name-lookup.cc (check_local_shadow): Skip artificial bindings when
103 checking if parameter scope is parent scope. Don't special case
104 FUNCTION_NEEDS_BODY_BLOCK. Diagnose the in_function_try_handler
105 cases in the b->kind == sk_function_parms test and verify no
106 non-artificial intervening scopes. Add missing auto_diagnostic_group.
107 * decl.cc (begin_function_body): Set
108 current_binding_level->artificial.
109 * semantics.cc (begin_function_try_block): Likewise.
111 2023-09-05 Patrick Palka <ppalka@redhat.com>
113 * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass
114 nullptr as non_constant_p to cp_parser_braced_list if our
115 non_constant_p is null.
116 (cp_parser_initializer_list): Likewise to
117 cp_parser_initializer_clause. Avoid inspecting
118 clause_non_constant_p if it's uninitialized.
120 2023-09-05 Patrick Palka <ppalka@redhat.com>
122 * call.cc (build_user_type_conversion): Free allocated
124 (build_converted_constant_expr_internal): Use
125 conversion_obstack_sentinel instead.
126 (perform_dguide_overload_resolution): Likewise.
127 (build_new_function_call): Likewise.
128 (build_operator_new_call): Free allocated conversions.
129 (build_op_call): Use conversion_obstack_sentinel instead.
130 (build_conditional_expr): Use conversion_obstack_sentinel
131 instead, and hoist it out to the outermost scope.
132 (build_new_op): Use conversion_obstack_sentinel instead
133 and set it up before the first goto. Remove second unneeded goto.
134 (build_op_subscript): Use conversion_obstack_sentinel instead.
135 (ref_conv_binds_to_temporary): Likewise.
136 (build_new_method_call): Likewise.
137 (can_convert_arg): Likewise.
138 (can_convert_arg_bad): Likewise.
139 (perform_implicit_conversion_flags): Likewise.
140 (perform_direct_initialization_if_possible): Likewise.
141 (initialize_reference): Likewise.
143 2023-09-01 Jakub Jelinek <jakub@redhat.com>
146 * cp-tree.h (determine_local_discriminator): Add NAME argument with
148 (struct cp_decomp): New type.
149 (cp_finish_decl): Add DECOMP argument defaulted to nullptr.
150 (cp_maybe_mangle_decomp): Remove declaration.
151 (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned
153 (cp_convert_range_for): Likewise.
154 * decl.cc (determine_local_discriminator): Add NAME argument, use it
155 if non-NULL, otherwise compute it the old way.
156 (maybe_commonize_var): Don't return early for structured bindings.
157 (cp_finish_decl): Add DECOMP argument, if non-NULL, call
158 cp_maybe_mangle_decomp.
159 (cp_maybe_mangle_decomp): Make it static with a forward declaration.
160 Call determine_local_discriminator. Replace FIRST and COUNT arguments
161 with DECOMP argument.
162 (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP
164 * mangle.cc (find_decomp_unqualified_name): Remove.
165 (write_unqualified_name): Don't call find_decomp_unqualified_name.
166 (mangle_decomp): Handle mangling of static function/block scope
167 structured bindings. Don't call decl_mangling_context twice. Call
168 check_abi_tags, call write_abi_tags for abi version >= 19 and emit
169 -Wabi warnings if needed.
170 (write_guarded_var_name): Handle structured bindings.
171 (mangle_ref_init_variable): Use write_guarded_var_name.
172 * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction
173 and cp_convert_range_for callers.
174 (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and
175 DECOMP_CNT arguments with DECOMP. Adjust cp_finish_decomp caller.
176 (cp_convert_range_for): Replace DECOMP_FIRST_NAME and
177 DECOMP_CNT arguments with DECOMP. Don't call cp_maybe_mangle_decomp,
178 adjust cp_finish_decl and cp_finish_decomp callers.
179 (cp_parser_decomposition_declaration): Don't call
180 cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp
182 (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction
183 and cp_finish_decomp callers.
184 (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp,
185 adjust cp_finish_decl and cp_finish_decomp callers.
186 * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names
188 (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP.
189 (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust
190 tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and
191 cp_convert_range_for callers.
193 2023-08-30 Marek Polacek <polacek@redhat.com>
196 * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT
197 when the designated initializer is of the .x{} form.
199 2023-08-30 Marek Polacek <polacek@redhat.com>
202 * decl.cc (grokdeclarator): Disallow constinit on functions.
204 2023-08-29 Marek Polacek <polacek@redhat.com>
206 * call.cc (convert_like_internal): Show where the conversion function
208 (maybe_show_nonconverting_candidate): New.
209 * cp-tree.h (maybe_show_nonconverting_candidate): Declare.
210 * typeck.cc (convert_for_assignment): Call it.
212 2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
214 * cp-tree.h (cp_convert_omp_range_for): Adjust declaration.
215 * parser.cc (struct omp_for_parse_data): New.
216 (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime
218 (check_omp_intervening_code): New.
219 (cp_parser_statement_seq_opt): Special-case nested loops, blocks,
220 and other constructs for OpenMP loops.
221 (cp_parser_iteration_statement): Reject loops in intervening code.
222 (cp_parser_omp_for_loop_init): Expand comments and tweak the
223 interface slightly to better distinguish input/output parameters.
224 (cp_convert_omp_range_for): Likewise.
225 (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop
226 and largely rewritten. Add more comments.
227 (insert_structured_blocks): New.
228 (find_structured_blocks): New.
229 (struct sit_data, substitute_in_tree_walker, substitute_in_tree):
231 (fixup_blocks_walker): New.
232 (cp_parser_omp_for_loop): Rewrite to use recursive descent instead
233 of a loop. Add logic to reshuffle the bits of code collected
234 during parsing so intervening code gets moved to the loop body.
235 (cp_parser_omp_loop): Remove call to finish_omp_for_block, which
237 (cp_parser_omp_simd): Likewise.
238 (cp_parser_omp_for): Likewise.
239 (cp_parser_omp_distribute): Likewise.
240 (cp_parser_oacc_loop): Likewise.
241 (cp_parser_omp_taskloop): Likewise.
242 (cp_parser_pragma): Reject OpenMP pragmas in intervening code.
243 * parser.h (struct cp_parser): Add omp_for_parse_state field.
244 * pt.cc (tsubst_omp_for_iterator): Adjust call to
245 cp_convert_omp_range_for.
246 * semantics.cc (finish_omp_for): Try harder to preserve location
247 of loop variable init expression for use in diagnostics.
248 (struct fofb_data, finish_omp_for_block_walker): New.
249 (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR
250 nested inside BIND instead of directly in BIND itself.
252 2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
254 * constexpr.cc (cxx_eval_constant_expression): Handle
255 OMP_STRUCTURED_BLOCK.
256 * pt.cc (tsubst_expr): Likewise.
258 2023-08-25 Uros Bizjak <ubizjak@gmail.com>
260 * call.cc (build_conditional_expr):
261 Rename TRUE/FALSE to true/false.
262 (build_new_op): Ditto.
264 2023-08-22 Jason Merrill <jason@redhat.com>
266 * pt.cc (outer_template_args): Handle non-template argument.
267 * constraint.cc (maybe_substitute_reqs_for): Pass decl to it.
268 * cp-tree.h (outer_template_args): Adjust.
270 2023-08-22 Jason Merrill <jason@redhat.com>
273 * cp-tree.h (member_like_constrained_friend_p): Declare.
274 * decl.cc (member_like_constrained_friend_p): New.
275 (function_requirements_equivalent_p): Check it.
276 (duplicate_decls): Check it.
277 (grokfndecl): Check friend template constraints.
278 * mangle.cc (decl_mangling_context): Check it.
279 (write_unqualified_name): Check it.
280 * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends.
281 (tsubst_friend_function): Don't check satisfaction.
283 2023-08-22 Tobias Burnus <tobias@codesourcery.com>
285 * parser.cc (cp_parser_omp_clause_defaultmap): Parse
288 2023-08-15 Chung-Lin Tang <cltang@codesourcery.com>
289 Thomas Schwinge <thomas@codesourcery.com>
291 * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
293 2023-08-14 gnaggnoyil <gnaggnoyil@gmail.com>
297 * decl.cc (get_tuple_size): Update implementation for DR 2386.
299 2023-08-14 Jason Merrill <jason@redhat.com>
301 * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14
304 2023-08-12 Patrick Palka <ppalka@redhat.com>
305 Jason Merrill <jason@redhat.com>
308 * decl.cc (redeclaration_error_message): Remove special handling
309 for deduction guides.
310 (grokfndecl): Give deduction guides a dummy DECL_INITIAL.
312 2023-08-11 Patrick Palka <ppalka@redhat.com>
315 * parser.cc (cp_parser_type_requirement): Pass
316 check_dependency_p=true instead of =false.
318 2023-08-11 Patrick Palka <ppalka@redhat.com>
321 * decl.cc (grokdeclarator): Pass 'dname' instead of
322 'unqualified_id' as the name when building the VAR_DECL for a
323 static data member. Call check_explicit_specialization for a
324 TEMPLATE_ID_EXPR such member.
325 * pt.cc (finish_member_template_decl): Return NULL_TREE
326 instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not
329 2023-08-11 Patrick Palka <ppalka@redhat.com>
331 * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and
332 TS_DECL_COMMON only when necessary. Print DECL_TEMPLATE_INFO
333 for all decls that have it, not just VAR_DECL or FUNCTION_DECL.
334 Also print DECL_USE_TEMPLATE.
335 (cxx_print_type): Print TYPE_TEMPLATE_INFO.
336 <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS
338 <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX
339 instead of printing the index, level and original level
342 2023-08-08 Marek Polacek <polacek@redhat.com>
344 * parser.cc (cp_parser_postfix_expression): Adjust the call to
345 cp_parser_braced_list.
346 (cp_parser_postfix_open_square_expression): Likewise.
347 (cp_parser_new_initializer): Likewise.
348 (cp_parser_assignment_expression): Adjust the call to
349 cp_parser_initializer_clause.
350 (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer.
351 (cp_parser_range_for): Adjust the call to cp_parser_braced_list.
352 (cp_parser_jump_statement): Likewise.
353 (cp_parser_mem_initializer): Likewise.
354 (cp_parser_template_argument): Likewise.
355 (cp_parser_default_argument): Adjust the call to cp_parser_initializer.
356 (cp_parser_initializer): Handle null is_direct_init and non_constant_p
358 (cp_parser_initializer_clause): Handle null non_constant_p argument.
359 (cp_parser_braced_list): Likewise.
360 (cp_parser_initializer_list): Likewise.
361 (cp_parser_member_declaration): Adjust the call to
362 cp_parser_initializer_clause and cp_parser_initializer.
363 (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list.
364 (cp_parser_functional_cast): Likewise.
365 (cp_parser_late_parse_one_default_arg): Adjust the call to
366 cp_parser_initializer.
367 (cp_parser_omp_for_loop_init): Likewise.
368 (cp_parser_omp_declare_reduction_exprs): Likewise.
370 2023-08-08 Nathaniel Shead <nathanieloshead@gmail.com>
373 * parser.cc (cp_parser_decltype_expr): Report errors raised by
374 finish_id_expression.
376 2023-08-04 Tamar Christina <tamar.christina@arm.com>
378 * cp-tree.h (RANGE_FOR_NOVECTOR): New.
379 (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt,
380 finish_for_cond): Add novector param.
381 * init.cc (build_vec_init): Default novector to false.
382 * method.cc (build_comparison_op): Likewise.
383 * parser.cc (cp_parser_statement): Likewise.
384 (cp_parser_for, cp_parser_c_for, cp_parser_range_for,
385 cp_convert_range_for, cp_parser_iteration_statement,
386 cp_parser_omp_for_loop, cp_parser_pragma): Support novector.
387 (cp_parser_pragma_novector): New.
388 * pt.cc (tsubst_expr): Likewise.
389 * semantics.cc (finish_while_stmt_cond, finish_do_stmt,
390 finish_for_cond): Likewise.
392 2023-08-01 Lewis Hyatt <lhyatt@gmail.com>
394 * parser.cc (c_init_preprocess): New function.
395 (maybe_read_tokens_for_pragma_lex): New function.
396 (pragma_lex): Support preprocess-only mode.
397 (pragma_lex_discard_to_eol): New function.
399 2023-07-31 Chung-Lin Tang <cltang@codesourcery.com>
401 * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC
402 host_data construct to have an use_device clause.
404 2023-07-28 Ng YongXiang <yongxiangng@gmail.com>
408 * init.cc (build_vec_delete_1): Devirtualize array destruction.
410 2023-07-27 Patrick Palka <ppalka@redhat.com>
413 * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an
414 empty subobject even if CONSTRUCTOR_NO_CLEARING is set.
415 (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally
416 whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx,
417 i.e. whenever initializing an subobject of empty type.
418 (cxx_eval_vec_init_1): Define 'no_slot' as above and use it
421 2023-07-27 Nathaniel Shead <nathanieloshead@gmail.com>
424 * pt.cc (type_uses_auto): Check inside parameter packs.
426 2023-07-26 Patrick Palka <ppalka@redhat.com>
430 * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO
431 on the DECL_TEMPLATE_RESULT of the new ttp.
432 (add_defaults_to_ttp): Make a copy of the original ttp's
433 DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO
435 (coerce_template_template_parms): Make sure 'scope_args' has
436 the right amount of levels for the ttp argument.
437 (most_general_template): Handle template template parameters.
438 (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the
439 DECL_TEMPLATE_RESULT of the new ttp.
441 2023-07-26 Patrick Palka <ppalka@redhat.com>
445 * pt.cc (coerce_template_template_parms): Simplify by using
446 DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts.
447 Always pass the parameters of the most general template to
448 coerce_template_parms.
450 2023-07-26 Patrick Palka <ppalka@redhat.com>
453 * pt.cc (unify) <case INTEGER_CST>: Generalize to handle
456 2023-07-26 Marek Polacek <polacek@redhat.com>
458 * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be
459 nullptr even when allow_non_constant_p is true. Don't call
460 _rvalue_constant_expression when not necessary. Move local variable
461 declarations closer to their first use.
462 (cp_parser_static_assert): Don't pass a dummy down to
463 cp_parser_constant_expression.
465 2023-07-26 Jason Merrill <jason@redhat.com>
468 * parser.cc (cp_parser_template_name): Skip non-member
469 lookup after the template keyword.
470 (cp_parser_lookup_name): Pass down template_keyword_p.
472 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
477 * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New
479 (constexpr_global_ctx::get_value): Don't return expired values.
480 (constexpr_global_ctx::get_value_ptr): Likewise.
481 (constexpr_global_ctx::remove_value): Mark value outside
483 (outside_lifetime_error): New function.
484 (cxx_eval_call_expression): No longer track save_exprs.
485 (cxx_eval_loop_expr): Likewise.
486 (cxx_eval_constant_expression): Add checks for outside lifetime
487 values. Remove local variables at end of bind exprs, and
488 temporaries after cleanup points.
490 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
493 * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to
494 not return dangling pointers.
495 * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag.
496 (check_return_expr): Add a new parameter.
497 * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR
498 when referring to dangling pointer.
499 * typeck.cc (check_return_expr): Disable transformation of
500 dangling pointers, instead pass this information to caller.
502 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
504 * constexpr.cc (modifying_const_object_error): Find the source
505 location of the const object's declaration.
506 (cxx_eval_constant_expression): Update input_location to the
507 location of the currently evaluated expression, if possible.
509 2023-07-25 Marek Polacek <polacek@redhat.com>
512 * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial
514 (instantiate_template): Reset all complain flags except
517 2023-07-25 Marek Polacek <polacek@redhat.com>
520 * constexpr.cc (cxx_eval_array_reference): Create a new constructor
521 only when we don't already have a matching one. Clear the object
522 when the type is non-scalar.
524 2023-07-21 Marek Polacek <polacek@redhat.com>
527 * constexpr.cc (potential_constant_expression_1): Try to complete the
528 type when !processing_template_decl.
530 2023-07-20 Marek Polacek <polacek@redhat.com>
533 * call.cc (implicit_conversion_1): Return early if the type isn't
536 2023-07-19 Marek Polacek <polacek@redhat.com>
539 * error.cc (dump_simple_decl): Print base class name.
541 2023-07-19 Marek Polacek <polacek@redhat.com>
544 * typeck2.cc (process_init_constructor_record): Don't emit
545 -Wmissing-field-initializers for empty classes.
547 2023-07-19 Patrick Palka <ppalka@redhat.com>
549 * pt.cc (type_unification_real): Test for PARM_DECL instead
550 of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
551 template parameter pack.
552 (type_targs_deducible_from): Likewise.
554 2023-07-19 Patrick Palka <ppalka@redhat.com>
556 * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table'
557 flag parameter. Don't look up or insert into the specializations
558 table if 'use_spec_table' is false.
559 (tsubst_decl): Add defaulted 'use_spec_table' flag parameter.
560 Check for error_mark_node.
561 <case FUNCTION_DECL>: Pass 'use_spec_table' to
562 tsubst_function_decl.
563 <case TYPE/VAR_DECL>: Don't call coerce_template_parms.
564 Don't look up or insert into the specializations table if
565 'use_spec_table' is false. Exit earlier if the substituted
566 type is erroneous and we're not complaining, and do so for
567 alias specializations as well.
568 (instantiate_template): Pass false as 'use_spec_table'
569 to tsubst_decl. Call register_specialization afterwards.
571 2023-07-18 Jason Merrill <jason@redhat.com>
573 * constexpr.cc (cxx_eval_bit_cast): Check that the result of
574 native_interpret_aggregate doesn't need more evaluation.
576 2023-07-18 Patrick Palka <ppalka@redhat.com>
578 * call.cc (add_template_conv_candidate): Don't check for
579 non-empty 'candidates' here.
580 (build_op_call): Check it here, before we've considered any
581 conversion functions.
583 2023-07-18 Patrick Palka <ppalka@redhat.com>
586 * call.cc (add_conv_candidate): Check constraints.
588 2023-07-17 Jason Merrill <jason@redhat.com>
590 * constexpr.cc (cxx_eval_call_expression): Only cache
591 reduced_constant_expression_p results.
592 (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type.
593 (cxx_eval_constant_expression): Fold vectors here.
594 (cxx_eval_bare_aggregate): Not here.
596 2023-07-15 Patrick Palka <ppalka@redhat.com>
599 * call.cc (keep_unused_object_arg): Use cp_build_compound_expr
600 instead of building a COMPOUND_EXPR directly.
602 2023-07-15 Patrick Palka <ppalka@redhat.com>
605 * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
606 whose template is already an IDENTIFIER_NODE.
608 2023-07-14 Nathaniel Shead <nathanieloshead@gmail.com>
610 * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
612 2023-07-14 Jason Merrill <jason@redhat.com>
615 * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling
617 * name-lookup.cc (get_cxx_dialect_name): Add C++26.
619 2023-07-14 Marek Polacek <polacek@redhat.com>
620 Jason Merrill <jason@redhat.com>
623 * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing
624 an object of empty class type.
625 * pt.cc (value_dependent_expression_p) <case VAR_DECL>: Treat a
626 constexpr-declared non-constant variable as value-dependent.
628 2023-07-11 Patrick Palka <ppalka@redhat.com>
631 * pt.cc (lookup_template_variable): Pass all levels of arguments
632 to coerce_template_parms, and use the parameters from the most
635 2023-07-10 Patrick Palka <ppalka@redhat.com>
638 * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT
639 assert, and downgrade it to a checking assert.
641 2023-06-30 Patrick Palka <ppalka@redhat.com>
643 * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden.
644 (TEMPLATE_TYPE_DESCENDANTS): Define.
645 (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define.
646 * pt.cc (reduce_template_parm_level): Revert
647 r14-418-g0bc2a1dc327af9 change.
648 (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P
650 (uses_outer_template_parms): Determine the outer depth of
651 a template template parm without relying on DECL_CONTEXT.
652 (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
653 simple template template parm. Consistently use 'code'.
655 2023-06-29 Patrick Palka <ppalka@redhat.com>
658 * init.cc (maybe_instantiate_nsdmi_init): Mask out all
659 tsubst flags except for tf_warning_or_error.
661 2023-06-29 Patrick Palka <ppalka@redhat.com>
664 * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
665 CONSTRUCTOR_MUTABLE_POISON.
667 2023-06-29 Patrick Palka <ppalka@redhat.com>
669 * cp-tree.h (tree_template_info::partial): New data member.
670 (TI_PARTIAL_INFO): New tree accessor.
671 (most_specialized_partial_spec): Add defaulted bool parameter.
672 * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream
674 (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise.
675 * parser.cc (specialization_of): Adjust after making
676 most_specialized_partial_spec return TEMPLATE_INFO instead
678 * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO
679 of 'decl' to point back to the partial TEMPLATE_DECL. Likewise
680 (and pass rechecking=true to most_specialization_partial_spec).
681 (instantiate_class_template): Likewise.
682 (instantiate_template): Set TI_PARTIAL_INFO to the result of
683 most_specialization_partial_spec after forming a variable
684 template specialization.
685 (most_specialized_partial_spec): Add 'rechecking' parameter.
686 Exit early if the template is not primary. Use the TI_PARTIAL_INFO
687 of the corresponding TEMPLATE_INFO as a cache unless 'rechecking'
688 is true. Don't bother setting TREE_TYPE of each TREE_LIST.
689 (instantiate_decl): Adjust after making
690 most_specialized_partial_spec return TEMPLATE_INFO instead of
692 * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump
695 2023-06-29 Eugene Rozenfeld <erozen@microsoft.com>
697 * Make-lang.in: Pass correct stage cc1plus when processing
698 profile data collected while building target libraries
700 2023-06-28 Patrick Palka <ppalka@redhat.com>
704 * cp-tree.h (lookup_template_variable): Add complain parameter.
705 * parser.cc (cp_parser_template_id): Pass tf_warning_or_error
706 to lookup_template_variable.
707 * pt.cc (lookup_template_variable): Add complain parameter.
708 Coerce template arguments here ...
709 (finish_template_variable): ... instead of here.
710 (lookup_and_finish_template_variable): Check for error_mark_node
711 result from lookup_template_variable.
712 (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to
713 lookup_template_variable.
714 (instantiate_template): Use build2 instead of
715 lookup_template_variable to build a TEMPLATE_ID_EXPR
716 for most_specialized_partial_spec.
718 2023-06-28 Marek Polacek <polacek@redhat.com>
721 * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
723 2023-06-28 Jason Merrill <jason@redhat.com>
726 * cp-tree.h (clone_attrs): Declare.
727 * method.cc (implicitly_declare_fn): Use it for inherited
729 * optimize.cc (clone_attrs): New.
730 (maybe_clone_body): Use it.
732 2023-06-28 Jason Merrill <jason@redhat.com>
735 * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast
736 from void* to the type of a pointed-to object.
738 2023-06-23 David Malcolm <dmalcolm@redhat.com>
741 * cp-name-hint.h (maybe_suggest_missing_header): New decl.
742 * decl.cc: Define INCLUDE_MEMORY. Add include of
744 (start_decl_1): Call maybe_suggest_missing_header.
745 * name-lookup.cc (maybe_suggest_missing_header): Remove "static".
747 2023-06-16 Alex Coplan <alex.coplan@arm.com>
749 * parser.cc (cp_parser_enum_specifier): Don't reject
750 elaborated-type-specifier with enum-base, instead emit new
751 Welaborated-enum-base warning.
753 2023-06-14 Jason Merrill <jason@redhat.com>
757 * call.cc (joust_maybe_elide_copy): Don't change cand.
758 (joust): Move the elided tiebreaker later.
760 2023-06-13 David Malcolm <dmalcolm@redhat.com>
763 * name-lookup.cc (missing_std_header::~missing_std_header): Reword
764 note to avoid negative tone of "forgetting".
766 2023-06-13 Jason Merrill <jason@redhat.com>
768 * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
770 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
772 * parser.cc (cp_parser_omp_clause_map): Reword error message for
773 clearness especially with 'omp target (enter/exit) data.'
774 * semantics.cc (handle_omp_array_sections): Handle
775 GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values.
777 2023-06-12 Jason Merrill <jason@redhat.com>
780 * call.cc (convert_like_internal) [ck_list]: Use
781 maybe_init_list_as_array.
782 * constexpr.cc (cxx_eval_vec_init_1): Init might have
784 * tree.cc (build_vec_init_elt): Likewise.
785 * init.cc (build_vec_init): Handle from_array from a
786 TARGET_EXPR. Retain TARGET_EXPR of a different type.
788 2023-06-11 Patrick Palka <ppalka@redhat.com>
791 * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted
792 functions needed for constant evaluation.
793 (instantiate_cx_fn_r): Likewise.
795 2023-06-11 Patrick Palka <ppalka@redhat.com>
798 * pt.cc (lookup_template_class): Extend shortcut for looking up the
799 current class scope to consider outer class scopes too, and use
800 current_nonlambda_class_type instead of current_class_type. Only
801 call coerce_template_parms when specializing a primary template.
803 2023-06-10 Nathan Sidwell <nathan@acm.org>
806 * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
808 2023-06-09 Jason Merrill <jason@redhat.com>
812 * method.cc (build_comparison_op): Give retval a name.
813 * typeck.cc (check_return_expr): Fix for nameless variables.
815 2023-06-09 Jason Merrill <jason@redhat.com>
817 * parser.cc (cp_parser_simple_type_specifier): Check for auto
818 in template argument.
819 (cp_parser_template_type_arg): Remove auto checking.
821 2023-06-09 Jason Merrill <jason@redhat.com>
824 * call.cc (maybe_init_list_as_array): Check that the element type is
827 2023-06-07 Jason Merrill <jason@redhat.com>
831 * cp-tree.h (INIT_EXPR_NRV_P): New.
832 * semantics.cc (finalize_nrv_r): Check it.
833 * name-lookup.h (decl_in_scope_p): Declare.
834 * name-lookup.cc (decl_in_scope_p): New.
835 * typeck.cc (check_return_expr): Allow non-NRV
836 returns if the NRV is no longer in scope.
838 2023-06-07 Jason Merrill <jason@redhat.com>
841 * typeck.cc (want_nrvo_p): New.
842 (check_return_expr): Handle -Wnrvo.
844 2023-06-07 Jason Merrill <jason@redhat.com>
848 * decl.cc (finish_function): Simplify NRV handling.
849 * except.cc (maybe_set_retval_sentinel): Also set if NRV.
850 (maybe_splice_retval_cleanup): Don't add the cleanup region
852 * semantics.cc (nrv_data): Add simple field.
853 (finalize_nrv): Set it.
854 (finalize_nrv_r): Check it and retval sentinel.
855 * cp-tree.h (finalize_nrv): Adjust declaration.
856 * typeck.cc (check_return_expr): Remove named_labels check.
858 2023-06-07 Jason Merrill <jason@redhat.com>
861 * typeck.cc (check_return_expr): Prevent NRV in the presence of
864 2023-06-07 Jason Merrill <jason@redhat.com>
867 * except.cc (maybe_splice_retval_cleanup): Change
868 recognition of function body and try scopes.
869 * semantics.cc (do_poplevel): Call it after poplevel.
871 * cp-tree.h (maybe_splice_retval_cleanup): Adjust.
873 2023-06-07 Jason Merrill <jason@redhat.com>
875 * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
878 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
879 Tobias Burnus <tobias@codesourcery.com>
881 * parser.cc (cp_parser_omp_clause_defaultmap,
882 cp_parser_omp_clause_map): Parse 'present'.
883 (cp_parser_omp_clause_from_to): New; parse to/from
884 clauses with optional 'present' modifier.
885 (cp_parser_omp_all_clauses): Update call.
886 (cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
887 cp_parser_omp_target_exit_data): Handle new enum value for
889 * semantics.cc (finish_omp_target): Likewise.
891 2023-06-04 Jason Merrill <jason@redhat.com>
894 * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN.
895 (call_terminate_fn): New macro.
896 * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it.
897 * except.cc (init_exception_processing): Set it.
898 (cp_protect_cleanup_actions): Return it.
900 2023-06-03 Patrick Palka <ppalka@redhat.com>
903 * pt.cc (is_specialization_of_friend): Fix overbroad check for
904 a non-template member function of a class template.
906 2023-06-03 Patrick Palka <ppalka@redhat.com>
908 * pt.cc (iterative_hash_template_arg): Don't hash
909 TEMPLATE_TEMPLATE_PARM specially.
911 2023-06-03 Patrick Palka <ppalka@redhat.com>
913 * class.cc (build_base_path): Check in_template_context instead
914 of in_template_function.
915 (resolves_to_fixed_type_p): Likewise.
916 * cp-tree.h (in_template_context): Define.
917 (in_template_function): Remove.
918 * decl.cc (cp_make_fname_decl): Check current_function_decl
919 and in_template_context instead of in_template_function.
920 * decl2.cc (mark_used): Check in_template_context instead of
921 in_template_function.
922 * pt.cc (in_template_function): Remove.
923 * semantics.cc (enforce_access): Check in_template_context
924 instead of current_template_parms directly.
926 2023-06-03 Patrick Palka <ppalka@redhat.com>
929 * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
931 2023-06-02 Jason Merrill <jason@redhat.com>
935 * call.cc (sfk_copy_or_move): New.
936 (joust): Add tiebreaker for explicit conv and copy ctor.
938 2023-06-02 Jason Merrill <jason@redhat.com>
942 * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE.
943 (convert_like_internal) [ck_list]: Set it.
944 (set_up_extended_ref_temp): Copy it.
945 * tree.cc (handle_no_unique_addr_attribute): Set it.
947 2023-06-01 Jason Merrill <jason@redhat.com>
949 * typeck2.cc (check_narrowing): Check flag_permissive.
951 2023-05-30 Tobias Burnus <tobias@codesourcery.com>
954 * parser.cc (cp_parser_oacc_all_clauses,
955 cp_parser_omp_all_clauses): Improve error wording.
957 2023-05-19 Andrew Pinski <apinski@marvell.com>
960 * lang-specs.h ("@c++-header"): Add %w after
962 ("@c++-system-header"): Likewise.
963 ("@c++-user-header"): Likewise.
965 2023-05-19 Patrick Palka <ppalka@redhat.com>
967 * constraint.cc (normalize_concept_check): Avoid having to do
968 two norm_cache lookups. Remove unnecessary early exit for an
969 ill-formed concept definition.
971 2023-05-19 Patrick Palka <ppalka@redhat.com>
974 * pt.cc (lookup_and_finish_template_variable): Don't call
975 convert_from_reference.
976 (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
977 convert_from_reference on the result of
978 lookup_and_finish_template_variable.
980 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
982 * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h.
983 (build_conditional_expr): Ditto.
984 (convert_like_internal): Ditto.
985 (convert_arg_to_ellipsis): Ditto.
986 (build_over_call): Ditto.
987 (compare_ics): Ditto.
988 * class.cc (is_empty_base_ref): Ditto.
989 * coroutines.cc (rewrite_param_uses): Ditto.
990 * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto.
991 (ARITHMETIC_TYPE_P): Ditto.
992 * cvt.cc (ocp_convert): Ditto.
993 * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto.
994 * decl.cc (layout_var_decl): Ditto.
995 (get_tuple_size): Ditto.
996 * error.cc (dump_simple_decl): Ditto.
997 * lambda.cc (start_lambda_scope): Ditto.
998 * mangle.cc (write_template_arg): Ditto.
999 * method.cc (spaceship_comp_cat): Ditto.
1000 * module.cc (node_template_info): Ditto.
1001 (trees_out::start): Ditto.
1002 (trees_out::decl_node): Ditto.
1003 (trees_in::read_var_def): Ditto.
1004 (set_instantiating_module): Ditto.
1005 * name-lookup.cc (maybe_record_mergeable_decl): Ditto.
1006 (consider_decl): Ditto.
1007 (maybe_add_fuzzy_decl): Ditto.
1008 * pt.cc (convert_nontype_argument): Ditto.
1009 * semantics.cc (handle_omp_array_sections_1): Ditto.
1010 (finish_omp_clauses): Ditto.
1011 (finish_omp_target_clauses_r): Ditto.
1012 (is_this_parameter): Ditto.
1013 * tree.cc (build_cplus_array_type): Ditto.
1014 (is_this_expression): Ditto.
1015 * typeck.cc (do_warn_enum_conversions): Ditto.
1016 * typeck2.cc (store_init_value): Ditto.
1017 (check_narrowing): Ditto.
1019 2023-05-17 Jakub Jelinek <jakub@redhat.com>
1022 * init.cc (build_zero_init_1): Don't initialize zero-width bitfields.
1023 For unions only initialize the first FIELD_DECL.
1025 2023-05-16 Marek Polacek <polacek@redhat.com>
1028 * typeck.cc (check_return_expr): In a template, return only after
1029 suppressing -Wdangling-reference.
1031 2023-05-16 Patrick Palka <ppalka@redhat.com>
1034 * call.cc (add_list_candidates): Check for invalid designated
1035 initialization sooner and even for types that have a list
1038 2023-05-11 Patrick Palka <ppalka@redhat.com>
1041 * typeck2.cc (poison_mutable_constructors): Define.
1042 (store_init_value): Use it instead of setting
1043 CONSTRUCTOR_MUTABLE_POISON directly.
1045 2023-05-11 Patrick Palka <ppalka@redhat.com>
1046 Jonathan Wakely <jwakely@redhat.com>
1051 * pt.cc (convert_nontype_argument_function): Remove linkage
1052 requirement for C++17 and later.
1053 (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict
1054 DECL_ARTIFICIAL rejection test to VAR_DECL.
1056 2023-05-10 Marek Polacek <polacek@redhat.com>
1059 * method.cc (build_trait_object): New.
1060 (assignable_expr): Use it.
1061 (ref_xes_from_temporary): Likewise.
1062 (is_convertible_helper): Likewise. Check FUNC_OR_METHOD_TYPE_P.
1064 2023-05-10 Jason Merrill <jason@redhat.com>
1066 * call.cc (convert_like_internal): Share ck_ref_bind handling
1067 between all bad conversions.
1069 2023-05-10 Jason Merrill <jason@redhat.com>
1072 * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve
1074 (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P.
1075 * typeck2.cc (store_init_value): Diagnose constinit sooner.
1077 2023-05-10 Jason Merrill <jason@redhat.com>
1079 * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
1080 for address of immediate fn.
1081 (maybe_constant_init_1): Evaluate PTRMEM_CST.
1083 2023-05-10 Jakub Jelinek <jakub@redhat.com>
1086 * parser.cc (cp_parser_std_attribute): For unknown attributes with
1087 arguments set TREE_VALUE (attribute) to error_mark_node after skipping
1088 the balanced tokens.
1089 (cp_parser_std_attribute_list): If ... is used after attribute without
1090 arguments, diagnose it and return error_mark_node. If
1091 TREE_VALUE (attribute) is error_mark_node, don't call
1092 make_pack_expansion nor return early error_mark_node.
1094 2023-05-09 Patrick Palka <ppalka@redhat.com>
1097 * constraint.cc (satisfaction_cache::satisfaction_cache): In the
1098 unexpected case of evaluating an atom for the first time noisily,
1099 remove the cache slot that we inserted.
1101 2023-05-09 Patrick Palka <ppalka@redhat.com>
1104 * parser.cc (cp_parser_class_specifier): Don't pass a class
1105 context to noexcept_override_late_checks.
1106 (noexcept_override_late_checks): Remove 'type' parameter
1107 and use DECL_CONTEXT of 'fndecl' instead.
1109 2023-05-09 Jakub Jelinek <jakub@redhat.com>
1112 * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
1113 expansion of assume attribute.
1115 2023-05-08 Patrick Palka <ppalka@redhat.com>
1119 * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context
1120 calls to happen before do_class_deduction. Add some
1121 error_mark_node tests.
1123 2023-05-07 Patrick Palka <ppalka@redhat.com>
1126 * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
1127 <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
1128 * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
1130 2023-05-07 Patrick Palka <ppalka@redhat.com>
1134 * decl.cc (decl_jump_unsafe): Return bool instead of int.
1135 Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
1136 (check_previous_goto_1): Simplify now that decl_jump_unsafe
1137 returns bool instead of int.
1138 (check_goto): Likewise.
1140 2023-05-07 Patrick Palka <ppalka@redhat.com>
1142 * pt.cc (instantiate_alias_template): Exit early upon
1143 error from coerce_template_parms. Remove dependence test
1144 guarding constraints_satisfied_p.
1146 2023-05-07 Patrick Palka <ppalka@redhat.com>
1148 * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via
1149 TEMPLATE_TYPE_PARM_CHECK.
1150 (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK.
1151 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via
1152 TEMPLATE_TEMPLATE_PARM_CHECK.
1153 * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier):
1154 Guard PLACEHOLDER_TYPE_CONSTRAINTS access.
1155 * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate
1156 variable to store CLASS_PLACEHOLDER_TEMPLATE result.
1157 * pt.cc (outer_template_args): Use strip_innermost_template_args.
1158 (any_type_dependent_arguments_p): Exit early if
1159 !processing_template_decl. Use range-based for.
1160 (any_dependent_template_arguments_p): Likewise.
1162 2023-05-07 Patrick Palka <ppalka@redhat.com>
1165 * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
1166 REF_PARENTHESIZED_P more generally via force_paren_expr.
1167 * semantics.cc (force_paren_expr): Document default argument.
1169 2023-05-07 Patrick Palka <ppalka@redhat.com>
1172 * pt.cc (coerce_template_args_for_ttp): Mention we can hit the
1173 current_template_parms fallback when level-lowering a bound ttp.
1174 (tsubst_template_decl): Add lambda_tparms parameter. Prefer to
1175 use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS.
1176 (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms
1177 to tsubst_template_decl.
1178 (tsubst_lambda_expr): For a generic lambda, substitute
1179 DECL_TEMPLATE_PARMS and set current_template_parms to it
1180 before substituting the function type. Pass the substituted
1181 DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl.
1183 2023-05-07 Patrick Palka <ppalka@redhat.com>
1186 * semantics.cc (enforce_access): Check current_template_parms
1187 instead of processing_template_decl when deciding whether to
1188 defer the access check.
1190 2023-05-07 Patrick Palka <ppalka@redhat.com>
1193 * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
1194 Reorganize to call get_fns sooner. Remove special handling of
1195 the object argument of a non-static member function call. Remove
1196 dead store to 'fun'.
1198 2023-05-05 Jason Merrill <jason@redhat.com>
1201 2023-04-27 Jason Merrill <jason@redhat.com>
1204 * pt.cc (instantiate_decl): Assert !defer_ok for local
1207 2023-05-03 Jason Merrill <jason@redhat.com>
1211 * friend.cc (do_friend): Don't call check_explicit_specialization if
1212 DECL_TEMPLATE_INFO is already set.
1213 * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO.
1214 * name-lookup.cc (set_decl_namespace): Likewise.
1216 2023-05-03 Jakub Jelinek <jakub@redhat.com>
1218 * cp-gimplify.cc (cp_fold_data): Move definition earlier.
1219 (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false
1220 constructed data rather than &pset to cp_walk_tree with cp_fold_r.
1222 2023-05-03 Jason Merrill <jason@redhat.com>
1224 * pt.cc (reduce_template_parm_level): Fix comparison of
1225 template template parm to cached version.
1227 2023-05-02 Jason Merrill <jason@redhat.com>
1229 * pt.cc (instantiate_class_template): Skip the RECORD_TYPE
1230 of a class template.
1231 (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE.
1233 2023-05-02 Jason Merrill <jason@redhat.com>
1235 * name-lookup.cc (pop_from_top_level): Don't
1236 invalidate_class_lookup_cache.
1238 2023-05-02 Jason Merrill <jason@redhat.com>
1241 * cp-tree.h (lookup_base): Add offset parm.
1242 * constexpr.cc (cxx_fold_indirect_ref_1): Pass it.
1243 * search.cc (struct lookup_base_data_s): Add offset.
1244 (dfs_lookup_base): Handle it.
1245 (lookup_base): Pass it.
1247 2023-05-02 Jason Merrill <jason@redhat.com>
1250 * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
1252 2023-05-01 Jason Merrill <jason@redhat.com>
1255 * name-lookup.cc (maybe_push_to_top_level)
1256 (maybe_pop_from_top_level): Split out...
1257 * pt.cc (instantiate_body): ...from here.
1258 * init.cc (maybe_instantiate_nsdmi_init): Use them.
1259 * name-lookup.h: Declare them..
1261 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
1263 * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
1265 2023-04-27 Jason Merrill <jason@redhat.com>
1267 * call.cc (print_conversion_rejection): Use iloc_sentinel.
1269 2023-04-27 Jason Merrill <jason@redhat.com>
1272 * pt.cc (instantiate_decl): Assert !defer_ok for local
1275 2023-04-26 Jason Merrill <jason@redhat.com>
1277 * init.cc (nsdmi_inst): Remove.
1278 (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
1280 2023-04-26 Jason Merrill <jason@redhat.com>
1283 * pt.cc (instantiate_class_template): Do partially instantiate.
1284 (tsubst_expr): Do call complete_type for partial instantiations.
1286 2023-04-26 Jason Merrill <jason@redhat.com>
1289 * pt.cc (regenerate_decl_from_template): Skip unique friends.
1291 2023-04-26 Patrick Palka <ppalka@redhat.com>
1293 * pt.cc (most_specialized_partial_spec): Exit early when
1294 DECL_TEMPLATE_SPECIALIZATIONS is empty. Move local variable
1295 declarations closer to their first use. Remove redundant
1296 flag_concepts test. Remove redundant forward declaration.
1298 2023-04-25 Patrick Palka <ppalka@redhat.com>
1301 * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
1302 Suppress conservative early exit for reference variables
1303 when DECL_HAS_VALUE_EXPR_P.
1305 2023-04-25 Tobias Burnus <tobias@codesourcery.com>
1307 * parser.cc (cp_parser_omp_scan_loop_body): Handle
1308 zero exec statements before/after 'omp scan'.
1310 2023-04-24 Patrick Palka <ppalka@redhat.com>
1312 * cp-tree.h (cp_expr_location): Define here.
1313 * tree.cc (cp_expr_location): Don't define here.
1315 2023-04-21 Jason Merrill <jason@redhat.com>
1318 * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned
1319 typedef' pedwarn. Use c_common_signed_or_unsigned_type. Also
1320 handle 'signed typedef'.
1322 2023-04-21 Patrick Palka <ppalka@redhat.com>
1324 * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
1325 <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
1326 <case ALIGNOF_EXPR etc>: Likewise.
1328 2023-04-20 Patrick Palka <ppalka@redhat.com>
1330 * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: Don't recurse when
1331 level lowering a cv-qualified type template parameter. Remove
1332 recursive loop breaker in the level lowering case for constrained
1333 autos. Use the TEMPLATE_PARM_DESCENDANTS cache in this case as
1336 2023-04-20 Patrick Palka <ppalka@redhat.com>
1338 * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC
1339 of arguments into a TREE_LIST for sake of pretty printing.
1340 * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC
1341 instead of TREE_LIST of trailing variadic trait arguments.
1342 * method.cc (constructible_expr): Likewise.
1343 (is_xible_helper): Likewise.
1344 * parser.cc (cp_parser_trait): Represent trailing variadic trait
1345 arguments as a TREE_VEC instead of TREE_LIST.
1346 * pt.cc (value_dependent_expression_p): Handle TREE_VEC
1347 instead of TREE_LIST of trailing variadic trait arguments.
1348 * semantics.cc (finish_type_pack_element): Likewise.
1349 (check_trait_type): Likewise.
1351 2023-04-20 Patrick Palka <ppalka@redhat.com>
1353 * tree.cc (strip_typedefs): Move TREE_LIST handling to
1354 strip_typedefs_expr. Dispatch to strip_typedefs_expr for
1356 <case TYPENAME_TYPE>: Remove manual dispatching to
1357 strip_typedefs_expr.
1358 <case TRAIT_TYPE>: Likewise.
1359 (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
1360 with strip_typedefs throughout. Don't dispatch to strip_typedefs
1362 <case TREE_LIST>: Replace this with the better version from
1365 2023-04-19 Patrick Palka <ppalka@redhat.com>
1366 Jonathan Wakely <jwakely@redhat.com>
1369 * cp-trait.def (TYPE_PACK_ELEMENT): Define.
1370 * cp-tree.h (finish_trait_type): Add complain parameter.
1371 * cxx-pretty-print.cc (pp_cxx_trait): Handle
1372 CPTK_TYPE_PACK_ELEMENT.
1373 * parser.cc (cp_parser_constant_expression): Document default
1375 (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT. Pass
1376 tf_warning_or_error to finish_trait_type.
1377 * pt.cc (tsubst) <case TRAIT_TYPE>: Handle non-type first
1378 argument. Pass complain to finish_trait_type.
1379 * semantics.cc (finish_type_pack_element): Define.
1380 (finish_trait_type): Add complain parameter. Handle
1381 CPTK_TYPE_PACK_ELEMENT.
1382 * tree.cc (strip_typedefs): Handle non-type first argument.
1383 Pass tf_warning_or_error to finish_trait_type.
1384 * typeck.cc (structural_comptypes) <case TRAIT_TYPE>: Use
1385 cp_tree_equal instead of same_type_p for the first argument.
1387 2023-04-19 Patrick Palka <ppalka@redhat.com>
1390 * pt.cc (try_class_unification): Don't ggc_free the copy of
1393 2023-04-19 Jason Merrill <jason@redhat.com>
1396 * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
1398 2023-04-17 Patrick Palka <ppalka@redhat.com>
1401 * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
1402 In the level-lowering case just use lookup_template_class
1403 to rebuild the bound ttp.
1405 2023-04-15 Jason Merrill <jason@redhat.com>
1408 * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
1409 Check for complex initializer.
1411 2023-04-13 Patrick Palka <ppalka@redhat.com>
1414 * decl.cc (make_typename_type): Also ignore non-types during the
1415 lookup if tag_type corresponds to an elaborated-type-specifier.
1416 * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or
1417 enum_type as tag_type to make_typename_type accordingly instead
1418 of always passing typename_type.
1420 2023-04-13 Jason Merrill <jason@redhat.com>
1423 * semantics.cc (check_trait_type): Handle incomplete type directly.
1424 * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert.
1426 2023-04-13 Jason Merrill <jason@redhat.com>
1428 * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
1429 * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
1431 2023-04-12 Jakub Jelinek <jakub@redhat.com>
1433 * Make-lang.in (s-cp-module-version): New target.
1434 (cp/module.o): Depend on it.
1435 (MODULE_VERSION): Remove variable.
1436 (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just
1437 cat s-cp-module-version.
1439 2023-04-09 Iain Sandoe <iain@sandoe.co.uk>
1441 * coroutines.cc (coro_rewrite_function_body): Ensure that added
1442 bind expressions have scope blocks.
1444 2023-04-04 Jason Merrill <jason@redhat.com>
1447 * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
1449 2023-04-03 Patrick Palka <ppalka@redhat.com>
1452 * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
1453 with no initializer, instead of asserting.
1455 2023-04-01 Patrick Palka <ppalka@redhat.com>
1458 * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter.
1459 * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to
1461 (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
1462 'in_decl' to coerce_template_parms.
1463 (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE
1464 as 'tmpl' to do_auto_deduction.
1465 (do_auto_deduction): Document default arguments. Rename local
1466 variable 'tmpl' to 'ctmpl'. Use 'tmpl' to obtain a full set of
1467 template arguments for satisfaction in the adc_unify case.
1469 2023-04-01 Patrick Palka <ppalka@redhat.com>
1473 * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of
1475 (instantiate_class_template): Call mark_template_arguments_used.
1476 (tsubst_copy_and_build) <case CALL_EXPR>: Revert r13-995 change.
1477 (mark_template_arguments_used): Define.
1478 (instantiate_body): Call mark_template_arguments_used.
1480 2023-04-01 Iain Sandoe <iain@sandoe.co.uk>
1483 * coroutines.cc (flatten_await_stmt): Use the current count of
1484 promoted temporaries to build a unique name for the frame entries.
1486 2023-03-30 Jason Merrill <jason@redhat.com>
1489 * search.cc (type_context_for_name_lookup): New.
1490 (accessible_p): Handle anonymous union.
1491 * init.cc (maybe_instantiate_nsdmi_init): Use
1492 type_context_for_name_lookup.
1493 * parser.cc (cp_parser_class_specifier): Likewise.
1494 * cp-tree.h (type_context_for_name_lookup): Declare.
1496 2023-03-30 Jason Merrill <jason@redhat.com>
1499 * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
1502 2023-03-30 Jakub Jelinek <jakub@redhat.com>
1505 * decl2.cc (grok_array_decl): After emitting a pedwarn for
1506 -Wcomma-subscript, if processing_template_decl set orig_index_exp
1507 to compound expr from orig_index_exp_list.
1509 2023-03-30 Jason Merrill <jason@redhat.com>
1513 * decl2.cc (record_mangling): Use symtab_node::reset.
1515 2023-03-30 Jakub Jelinek <jakub@redhat.com>
1518 * call.cc (convert_like_internal): If pedwarn for extended float
1519 type conversions doesn't report anything, avoid calling
1520 maybe_inform_about_fndecl_for_bogus_argument_init.
1522 2023-03-29 Jason Merrill <jason@redhat.com>
1526 * pt.cc (alias_ctad_tweaks): Rewrite deduced args.
1527 (type_targs_deducible_from): Handle null pack deduction.
1529 2023-03-28 David Malcolm <dmalcolm@redhat.com>
1532 * parser.cc (cp_parser_binary_expression): Update for new param of
1533 check_for_xor_used_as_pow.
1535 2023-03-28 Jakub Jelinek <jakub@redhat.com>
1538 * contracts.cc: Include intl.h.
1539 (check_postcondition_result): Don't form diagnostics from two halves
1540 of an English message to allow translations.
1542 2023-03-24 Patrick Palka <ppalka@redhat.com>
1545 * parser.cc (cp_parser_class_specifier): Clear current_class_ptr
1546 and current_class_ref sooner, before parsing a class definition.
1548 2023-03-24 Jason Merrill <jason@redhat.com>
1551 * pt.cc (type_unification_real): Adjust for partial ordering.
1553 2023-03-23 Jason Merrill <jason@redhat.com>
1556 * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
1557 and location wrappers.
1559 2023-03-23 Marek Polacek <polacek@redhat.com>
1562 * call.cc (class_has_reference_member_p): New.
1563 (class_has_reference_member_p_r): New.
1564 (reference_like_class_p): Don't look for a specific constructor.
1565 Use a DFS walk with class_has_reference_member_p_r.
1567 2023-03-23 Jason Merrill <jason@redhat.com>
1570 * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
1572 2023-03-22 Jason Merrill <jason@redhat.com>
1575 * pt.cc (unify): Use fold of build_nop instead of fold_convert.
1577 2023-03-22 Jason Merrill <jason@redhat.com>
1580 * semantics.cc (finish_id_expression_1): Check scope before
1581 returning id_expression.
1583 2023-03-22 Alex Coplan <alex.coplan@arm.com>
1586 * call.cc (build_over_call): Use make_temp_override to suppress
1587 both unavailable and deprecated warnings when calling
1590 2023-03-21 Jason Merrill <jason@redhat.com>
1593 * init.cc (maybe_instantiate_nsdmi_init): Don't leave
1594 current_function_decl set to a constructor.
1596 2023-03-20 Marek Polacek <polacek@redhat.com>
1599 * call.cc (add_template_candidate_real): Add explicit decls to the
1600 set of candidates when the initializer is a braced-init-list.
1602 2023-03-20 Jakub Jelinek <jakub@redhat.com>
1605 * cp-tree.h (var_needs_tls_wrapper): Declare.
1606 * decl2.cc (var_needs_tls_wrapper): No longer static.
1607 * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables
1608 for which a TLS wrapper will be needed.
1610 2023-03-17 Jason Merrill <jason@redhat.com>
1613 * lambda.cc (prune_lambda_captures): Don't bother in a template.
1615 2023-03-17 Jason Merrill <jason@redhat.com>
1618 * except.cc (build_throw): Check dtor access.
1620 2023-03-17 Jason Merrill <jason@redhat.com>
1623 * friend.cc (do_friend): Handle namespace as scope argument.
1624 * decl.cc (grokdeclarator): Pass down in_namespace.
1626 2023-03-16 Jason Merrill <jason@redhat.com>
1629 * init.cc (get_nsdmi): Split out...
1630 (maybe_instantiate_nsdmi_init): ...this function.
1631 * cp-tree.h: Declare it.
1632 * pt.cc (tsubst_expr): Use it.
1634 2023-03-16 Jason Merrill <jason@redhat.com>
1637 * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
1639 2023-03-16 Jason Merrill <jason@redhat.com>
1642 * semantics.cc (finish_qualified_id_expr): Don't try to build a
1643 pointer-to-member if the scope is an enumeration.
1645 2023-03-16 Patrick Palka <ppalka@redhat.com>
1648 * constexpr.cc (maybe_constant_init_1): For an unevaluated
1649 non-manifestly-constant operand, don't constant evaluate
1650 and instead call fold_to_constant as in maybe_constant_value.
1652 2023-03-16 Patrick Palka <ppalka@redhat.com>
1655 * constraint.cc (satisfaction_cache::get): Relax overly strict
1656 checking assert in the constraint recursion case.
1658 2023-03-16 Jason Merrill <jason@redhat.com>
1661 * coroutines.cc (build_co_await): Handle lvalue 'o'.
1663 2023-03-15 Jason Merrill <jason@redhat.com>
1667 * typeck.cc (cp_build_modify_expr): Allow array initialization of
1668 DECL_ARTIFICIAL variable.
1670 2023-03-15 Marek Polacek <polacek@redhat.com>
1673 * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
1675 2023-03-15 Jason Merrill <jason@redhat.com>
1678 * semantics.cc (check_template_template_default_arg): Check
1679 maybe_get_template_decl_from_type_decl.
1681 2023-03-15 Jason Merrill <jason@redhat.com>
1686 * pt.cc (coerce_template_template_parms): Use args from
1687 DECL_CONTEXT (arg_tmpl) instead of outer_args.
1689 2023-03-15 Jason Merrill <jason@redhat.com>
1692 * pt.cc (coerce_template_template_parms): Take the arg and parm
1694 (coerce_template_template_parm): Adjust.
1695 (template_template_parm_bindings_ok_p): Adjust.
1696 (convert_template_argument): Adjust.
1698 2023-03-14 Patrick Palka <ppalka@redhat.com>
1701 * pt.cc (push_inline_template_parms_recursive): Set
1702 TEMPLATE_PARMS_CONSTRAINTS.
1703 (push_template_decl): For an out-of-line declaration, verify
1704 constraints for each enclosing template scope match those of the
1705 original template declaratation.
1707 2023-03-14 Patrick Palka <ppalka@redhat.com>
1710 * pt.cc (redeclare_class_template): Add missing "of" in
1711 constraint mismatch diagnostic.
1712 (tsubst_friend_class): For an already declared class template,
1713 substitute and pass the friend declaration's constraints to
1714 redeclare_class_template instead of passing the existing
1715 template's constraints.
1717 2023-03-14 Jason Merrill <jason@redhat.com>
1720 * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
1723 2023-03-14 Jason Merrill <jason@redhat.com>
1726 * cp-gimplify.cc (genericize_if_stmt): Restore folding
1727 of constant conditions.
1729 2023-03-14 Jakub Jelinek <jakub@redhat.com>
1732 * tree.cc (record_has_unique_obj_representations): Ignore unnamed
1735 2023-03-13 Jason Merrill <jason@redhat.com>
1738 * parser.cc (cp_parser_set_decl_spec_type): Use
1739 redefined_builtin_type for extended_float_type_p.
1741 2023-03-13 Marek Polacek <polacek@redhat.com>
1744 * call.cc (reference_like_class_p): Check for std::span.
1746 2023-03-10 Jakub Jelinek <jakub@redhat.com>
1749 * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on
1750 automatic non-aggregate variables just because of
1751 -fmerge-all-constants.
1753 2023-03-10 Jakub Jelinek <jakub@redhat.com>
1756 * class.cc (end_of_class): For bit-fields, instead of computing
1757 offset as sum of byte_position (field) and DECL_SIZE_UNIT (field),
1758 compute it as sum of bit_position (field) and DECL_SIZE (field)
1759 divided by BITS_PER_UNIT rounded up.
1761 2023-03-10 Jason Merrill <jason@redhat.com>
1764 * lambda.cc (compare_lambda_template_head): Check more
1765 for error_mark_node.
1767 2023-03-10 Jason Merrill <jason@redhat.com>
1770 * mangle.cc (anon_aggr_naming_decl): New.
1771 (write_unqualified_name): Use it.
1773 2023-03-10 Jakub Jelinek <jakub@redhat.com>
1776 * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
1777 after diagnosing it.
1779 2023-03-10 Jason Merrill <jason@redhat.com>
1782 * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
1784 2023-03-10 Jason Merrill <jason@redhat.com>
1787 * class.cc (instantiate_type): Strip location wrapper.
1789 2023-03-09 Jason Merrill <jason@redhat.com>
1792 * init.cc (find_allocator_temps_r): New.
1793 (combine_allocator_temps): Replace find_allocator_temp.
1794 (build_vec_init): Adjust.
1796 2023-03-09 Jason Merrill <jason@redhat.com>
1800 * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
1802 2023-03-09 Jason Merrill <jason@redhat.com>
1803 Michael Spertus <mike@spertus.com>
1806 * pt.cc (corresponding_template_parameter_list): Split out...
1807 (corresponding_template_parameter): ...from here.
1808 (find_template_parameters): Factor out...
1809 (find_template_parameter_info::find_in): ...this function.
1810 (find_template_parameter_info::find_in_recursive): New.
1811 (find_template_parameter_info::found): New.
1812 (alias_ctad_tweaks): Only add parms used in the deduced args.
1814 2023-03-09 Jason Merrill <jason@redhat.com>
1816 * cp-trait.def (IS_DEDUCIBLE): Add space to name.
1818 2023-03-09 Jason Merrill <jason@redhat.com>
1821 * cp-trait.def (IS_DEDUCIBLE): New.
1822 * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type.
1823 * parser.cc (cp_parser_trait): Likewise.
1824 * tree.cc (cp_tree_equal): Likewise.
1825 * pt.cc (tsubst_copy_and_build): Likewise.
1826 (type_targs_deducible_from): New.
1827 (alias_ctad_tweaks): Use it.
1828 * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE.
1829 (finish_trait_expr): Likewise.
1830 * constraint.cc (diagnose_trait_expr): Likewise.
1831 * cp-tree.h (type_targs_deducible_from): Declare.
1833 2023-03-07 Jason Merrill <jason@redhat.com>
1837 * pt.cc (tsubst_function_decl): Don't replace the closure
1838 parameter if DECL_STATIC_FUNCTION_P.
1840 2023-03-07 Marek Polacek <polacek@redhat.com>
1843 * call.cc (reference_like_class_p): New.
1844 (do_warn_dangling_reference): Add new bool parameter. See through
1845 reference_like_class_p.
1847 2023-03-07 Jakub Jelinek <jakub@redhat.com>
1850 * rtti.cc (emit_support_tinfo_1): Don't assert that last
1851 unemitted_tinfo_decls element is tinfo, instead pop from it only in
1853 * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl
1854 for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL.
1856 2023-03-07 Marek Polacek <polacek@redhat.com>
1859 * constexpr.cc (cxx_eval_call_expression): Relax assert.
1861 2023-03-07 Marek Polacek <polacek@redhat.com>
1864 * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
1865 'any' when recursing on a VAR_DECL and not a pointer to function.
1867 2023-03-04 Jakub Jelinek <jakub@redhat.com>
1870 * constexpr.cc: Include toplev.h.
1871 (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a local
1872 static initialized by constant expression outside of a constexpr
1873 function which has been deferred by make_rtl_for_nonlocal_decl,
1874 call rest_of_decl_compilation on it.
1876 2023-03-03 Patrick Palka <ppalka@redhat.com>
1879 * pt.cc (el_data::skipped_trees): New data member.
1880 (extract_locals_r): Push to skipped_trees any unevaluated
1881 contexts that we skipped over.
1882 (extract_local_specs): For the second walk, start from each
1883 tree in skipped_trees.
1885 2023-03-03 Alexandre Oliva <oliva@adacore.com>
1887 * typeck.cc (cp_build_binary_op): Suppress redundant warning
1888 for pfn null test in pmfn test with vbit-in-delta.
1890 2023-03-02 Jakub Jelinek <jakub@redhat.com>
1893 * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE
1895 (fallback_dfloat32_type, fallback_dfloat64_type,
1896 fallback_dfloat128_type): Remove.
1897 * rtti.cc (emit_support_tinfo_1): If not emitted already, call
1898 emit_tinfo_decl and remove from unemitted_tinfo_decls right away.
1899 (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array
1900 into new fundamentals_with_fallback array. Call emit_support_tinfo_1
1901 on elements of that array too, with the difference that if
1902 the type is NULL, use a fallback REAL_TYPE for it temporarily.
1903 Drop the !targetm.decimal_float_supported_p () handling. Call
1904 targetm.emit_support_tinfos at the end.
1905 * mangle.cc (write_builtin_type): Remove references to
1906 fallback_dfloat*_type. Handle bfloat16_type_node mangling.
1908 2023-03-02 Patrick Palka <ppalka@redhat.com>
1912 * cp-gimplify.cc (cp_fully_fold): Add an internal overload that
1913 additionally takes and propagate an mce_value parameter, and
1914 define the existing public overload in terms of it.
1915 (cp_fully_fold_init): Pass mce_false to cp_fully_fold.
1917 2023-03-02 Patrick Palka <ppalka@redhat.com>
1920 * constexpr.cc (maybe_constant_init_1): Override
1921 manifestly_const_eval to true if is_static.
1923 2023-03-02 Jakub Jelinek <jakub@redhat.com>
1926 * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
1927 DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
1928 of USING_STMT or input_location.
1930 2023-03-02 Marek Polacek <polacek@redhat.com>
1933 * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first
1934 lookup of SPEC didn't find anything, try to look for
1935 most_general_template.
1937 2023-03-02 Jakub Jelinek <jakub@redhat.com>
1940 * parser.cc (cp_convert_omp_range_for): Allow in assert
1941 decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has
1942 error_mark_node type.
1943 (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back
1944 on decls which have error_mark_node type.
1946 2023-03-01 Marek Polacek <polacek@redhat.com>
1949 * constexpr.cc (cxx_eval_constant_expression): Emit an error when
1950 a PTRMEM_CST cannot be evaluated.
1952 2023-03-01 Patrick Palka <ppalka@redhat.com>
1954 * pt.cc (tsubst_scope): Define.
1955 (tsubst_decl) <case USING_DECL>: Call tsubst_scope instead of
1956 calling tsubst_scope with tf_qualifying_scope set.
1957 (tsubst_qualified_id): Call tsubst_scope instead of
1958 calling tsubst with tf_qualifying_scope set.
1959 (tsubst_copy): Immediately delegate to tsubst for all TYPE_P
1960 trees. Remove tf_qualifying_scope manipulation.
1961 <case SCOPE_REF>: Call tsubst_scope instead of calling
1962 tsubst with tf_qualifying_scope set.
1964 2023-03-01 Patrick Palka <ppalka@redhat.com>
1965 Jason Merrill <jason@redhat.com>
1969 * constexpr.cc (fold_to_constant): Define.
1970 (maybe_constant_value): Move up early exit test for unevaluated
1971 operands. Try reducing an unevaluated operand to a constant via
1973 (fold_non_dependent_expr_template): Add early exit test for
1974 CONSTANT_CLASS_P nodes. Try reducing an unevaluated operand
1975 to a constant via fold_to_constant.
1976 * cp-tree.h (fold_to_constant): Declare.
1978 2023-03-01 Jakub Jelinek <jakub@redhat.com>
1981 * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
1982 Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
1985 2023-02-28 Patrick Palka <ppalka@redhat.com>
1988 * pt.cc (finish_template_variable): Move dependence check
1990 (lookup_and_finish_template_variable): ... here.
1991 * semantics.cc (finish_id_expression_1): Call
1992 finish_template_variable sooner, before (and regardless of) the
1993 type_dependent_expression_p test.
1995 2023-02-28 Marek Polacek <polacek@redhat.com>
1998 * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
2000 2023-02-20 Marek Polacek <polacek@redhat.com>
2003 * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
2004 constructor/op= with a checking assert.
2006 2023-02-20 Marek Polacek <polacek@redhat.com>
2009 * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P.
2010 (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to
2011 prepend_one_capture.
2013 2023-02-18 Jason Merrill <jason@redhat.com>
2023 * semantics.cc (finish_static_assert): Don't diagnose in
2026 2023-02-17 Patrick Palka <ppalka@redhat.com>
2030 * cp-gimplify.cc (enum fold_flags): Define.
2031 (fold_flags_t): Declare.
2032 (cp_fold_data::genericize): Replace this data member with ...
2033 (cp_fold_data::fold_flags): ... this.
2034 (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold.
2035 (cp_fold_function): Likewise.
2036 (cp_fold_maybe_rvalue): Add an internal overload that
2037 additionally takes and propagates a fold_flags_t parameter, and
2038 define the existing public overload in terms of it.
2039 (cp_fold_rvalue): Likewise.
2040 (cp_fully_fold_init): Adjust use of cp_fold_data.
2041 (fold_cache): Replace with ...
2042 (fold_caches): ... this 2-element array of caches.
2043 (get_fold_cache): Define.
2044 (clear_fold_cache): Adjust.
2045 (cp_fold): Add fold_flags_t parameter. Use get_fold_cache.
2046 Pass flags to calls to cp_fold, cp_fold_rvalue and
2047 cp_fold_maybe_rvalue.
2048 <case CALL_EXPR>: If ff_mce_false is set, fold
2049 __builtin_is_constant_evaluated to false and pass mce_false to
2050 maybe_constant_value.
2052 2023-02-17 Patrick Palka <ppalka@redhat.com>
2054 * constexpr.cc (constexpr_call::manifestly_const_eval): Give
2055 it type int instead of bool.
2056 (constexpr_ctx::manifestly_const_eval): Give it type mce_value
2058 (cxx_eval_builtin_function_call): Adjust after making
2059 manifestly_const_eval tri-state.
2060 (cxx_eval_call_expression): Likewise.
2061 (cxx_eval_binary_expression): Likewise.
2062 (cxx_eval_conditional_expression): Likewise.
2063 (cxx_eval_constant_expression): Likewise.
2064 (cxx_eval_outermost_constant_expr): Likewise.
2065 (cxx_constant_value): Likewise.
2066 (cxx_constant_dtor): Likewise.
2067 (maybe_constant_value): Give manifestly_const_eval parameter
2068 type mce_value instead of bool and adjust accordingly.
2069 (fold_non_dependent_expr_template): Adjust call
2070 to cxx_eval_outermost_constant_expr.
2071 (fold_non_dependent_expr): Likewise.
2072 (maybe_constant_init_1): Likewise.
2073 * constraint.cc (satisfy_atom): Adjust call to
2074 maybe_constant_value.
2075 * cp-tree.h (enum class mce_value): Define.
2076 (maybe_constant_value): Adjust manifestly_const_eval parameter
2077 type and default argument.
2078 * decl.cc (compute_array_index_type_loc): Adjust call to
2079 maybe_constant_value.
2080 * pt.cc (convert_nontype_argument): Likewise.
2082 2023-02-16 Patrick Palka <ppalka@redhat.com>
2085 * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope.
2086 * decl.cc (make_typename_type): Use lookup_member instead of
2087 lookup_field. If tf_qualifying_scope is set, pass want_type=true
2088 instead of =false to lookup_member. Generalize format specifier
2089 in diagnostic to handle both type and non-type bindings.
2090 * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope. Tidy
2092 (tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when
2093 substituting USING_DECL_SCOPE.
2094 (tsubst): Clear tf_qualifying_scope right away and remember if
2095 it was set. Do the same for tf_tst_ok sooner.
2096 <case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting
2097 TYPE_CONTEXT. Pass tf_qualifying_scope to make_typename_type
2099 (tsubst_qualified_id): Set tf_qualifying_scope when substituting
2101 (tsubst_copy): Clear tf_qualifying_scope and remember if it was
2103 <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
2105 <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
2106 * search.cc (lookup_member): Document default argument.
2108 2023-02-16 Patrick Palka <ppalka@redhat.com>
2110 * cp-tree.h: Mechanically drop static from static inline
2111 functions via s/^static inline/inline/g.
2113 2023-02-15 Marek Polacek <polacek@redhat.com>
2116 * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
2118 2023-02-10 Marek Polacek <polacek@redhat.com>
2121 * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
2123 2023-02-09 Tobias Burnus <tobias@codesourcery.com>
2125 * parser.cc (cp_parser_omp_allocate): Parse align
2126 clause and check for restrictions.
2128 2023-02-09 Jakub Jelinek <jakub@redhat.com>
2131 * mangle.cc (write_expression, write_template_arg): Handle
2132 EXCESS_PRECISION_EXPR with REAL_CST operand as
2133 write_template_arg_literal on fold_convert of the REAL_CST
2134 to EXCESS_PRECISION_EXPR type.
2136 2023-02-06 Patrick Palka <ppalka@redhat.com>
2139 * cp-tree.h (call_expr_dependent_name): Declare.
2140 * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: Use
2141 call_expr_dependent_name instead of dependent_name.
2142 * tree.cc (call_expr_dependent_name): Define.
2143 (called_fns_equal): Adjust to take two CALL_EXPRs instead of
2144 CALL_EXPR_FNs thereof. Use call_expr_dependent_name instead
2146 (cp_tree_equal) <case CALL_EXPR>: Adjust call to called_fns_equal.
2148 2023-02-03 Marek Polacek <polacek@redhat.com>
2151 * constexpr.cc (cxx_eval_array_reference): Don't replace
2154 2023-02-03 Patrick Palka <ppalka@redhat.com>
2157 * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
2158 the selected callee during overload set pruning.
2160 2023-02-03 Patrick Palka <ppalka@redhat.com>
2163 * class.cc (check_methods): Diagnose an unviable OVERLOAD
2164 set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one.
2165 Then prune the OVERLOAD to a single function.
2166 (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being
2167 an OVERLOAD when calling deduce_noexcept_on_destructor.
2168 Document why it has to be called before check_methods.
2170 2023-02-03 Patrick Palka <ppalka@redhat.com>
2173 * class.cc (check_methods): Swap order of constraints_satisfied_p
2174 and copy/move_fn_p tests.
2176 2023-02-01 Marek Polacek <polacek@redhat.com>
2179 * call.cc (build_new_op): Don't call warn_logical_operator when
2180 processing a template.
2182 2023-02-01 Jakub Jelinek <jakub@redhat.com>
2185 * constexpr.cc (cxx_eval_constant_expression): Handle OMP_*
2186 and OACC_* constructs as non-constant.
2187 (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE.
2189 2023-02-01 Jason Merrill <jason@redhat.com>
2191 * class.cc (note_name_declared_in_class): Change from permerror to
2192 -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases.
2194 2023-01-31 Jason Merrill <jason@redhat.com>
2197 * cp-gimplify.cc (any_non_eliding_target_exprs): New.
2198 (cp_genericize_init): Check it.
2200 2023-01-31 Marek Polacek <polacek@redhat.com>
2204 * cp-tree.h (instantiation_dependent_expression_p): Don't
2207 2023-01-26 Marek Polacek <polacek@redhat.com>
2210 * parser.cc: Remove unnecessary forward declarations.
2211 (cp_parser_string_literal): New wrapper.
2212 (cp_parser_string_literal_common): Renamed from
2213 cp_parser_string_literal. Add a bool parameter. Give an error when
2214 UDLs are not permitted.
2215 (cp_parser_userdef_string_literal): New wrapper.
2216 (finish_userdef_string_literal): Renamed from
2217 cp_parser_userdef_string_literal.
2218 (cp_parser_primary_expression): Call cp_parser_userdef_string_literal
2219 instead of cp_parser_string_literal.
2220 (cp_parser_linkage_specification): Move a variable declaration closer
2222 (cp_parser_static_assert): Likewise.
2223 (cp_parser_operator): Call cp_parser_userdef_string_literal instead of
2224 cp_parser_string_literal.
2225 (cp_parser_asm_definition): Move a variable declaration closer to its
2227 (cp_parser_asm_specification_opt): Move variable declarations closer to
2229 (cp_parser_asm_operand_list): Likewise.
2230 (cp_parser_asm_clobber_list): Likewise.
2232 2023-01-26 Jakub Jelinek <jakub@redhat.com>
2235 * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been
2236 called in !processing_template_decl with processing_template_decl
2237 temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily.
2238 (cp_finish_omp_range_for): And set it back again here.
2240 2023-01-25 Jakub Jelinek <jakub@redhat.com>
2243 * mangle.cc (write_closure_type_name): Don't assume all
2244 lambda operator() fns are methods.
2246 2023-01-24 Jason Merrill <jason@redhat.com>
2249 * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
2252 2023-01-24 Jason Merrill <jason@redhat.com>
2255 * pt.cc (tsubst_function_decl): Handle static lambda.
2257 2023-01-24 Jakub Jelinek <jakub@redhat.com>
2260 * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
2262 2023-01-24 Jason Merrill <jason@redhat.com>
2266 * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double
2267 TARGET_EXPR, keep the outer one instead of the inner one.
2268 (maybe_replace_decl): New.
2270 2023-01-23 Jason Merrill <jason@redhat.com>
2273 * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
2276 2023-01-23 Marek Polacek <polacek@redhat.com>
2279 * cvt.cc (ocp_convert): copy_warning when creating a new
2281 * init.cc (build_new_1): Suppress -Wunused-value on
2282 compiler-generated COMPOUND_EXPRs.
2284 2023-01-23 Jason Merrill <jason@redhat.com>
2287 * call.cc (build_user_type_conversion_1): Check whether the
2288 iterators also find a list ctor.
2290 2023-01-23 Jason Merrill <jason@redhat.com>
2293 * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
2296 2023-01-23 Jason Merrill <jason@redhat.com>
2300 * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
2302 2023-01-19 Jakub Jelinek <jakub@redhat.com>
2305 * cp-tree.h (keep_unused_object_arg): Declare.
2306 * call.cc (keep_unused_object_arg): No longer static.
2307 * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF
2308 with overload being static member function.
2310 2023-01-19 Jakub Jelinek <jakub@redhat.com>
2313 * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace
2314 DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding
2317 2023-01-16 Jakub Jelinek <jakub@redhat.com>
2320 * decl.cc (cp_finish_decl): Check warning_enabled_at
2321 at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead
2324 2023-01-14 Jakub Jelinek <jakub@redhat.com>
2327 * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
2330 2023-01-13 Jakub Jelinek <jakub@redhat.com>
2333 * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR
2334 use its operand except that for warning purposes use the original
2335 EXCESS_PRECISION_EXPR.
2336 * call.cc (convert_like_internal): Only look through
2337 EXCESS_PRECISION_EXPR when calling cp_convert, not when calling
2338 cp_convert_and_check.
2340 2023-01-09 Jakub Jelinek <jakub@redhat.com>
2345 * call.cc (maybe_init_list_as_range): Always return NULL_TREE if
2346 processing_template_decl.
2348 2023-01-05 Patrick Palka <ppalka@redhat.com>
2351 * parser.cc (cp_parser_class_head): Use dk_deferred instead of
2352 dk_no_check when parsing the class name.
2354 2023-01-05 Jakub Jelinek <jakub@redhat.com>
2357 * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
2360 2023-01-04 Patrick Palka <ppalka@redhat.com>
2363 * decl2.cc (mark_single_function): Ignore mark_used failure
2364 only in a non-SFINAE context rather than in a SFINAE one.
2366 2023-01-04 Jakub Jelinek <jakub@redhat.com>
2369 * decl.cc (merge_default_template_args): Return false if either
2370 new_parm or old_parm are erroneous.
2373 Copyright (C) 2023 Free Software Foundation, Inc.
2375 Copying and distribution of this file, with or without modification,
2376 are permitted in any medium without royalty provided the copyright
2377 notice and this notice are preserved.