1 2023-11-04 Jakub Jelinek <jakub@redhat.com>
3 * parser.h (struct cp_parser): Adjust comment on omp_attrs_forbidden_p
5 * parser.cc (cp_parser_omp_section_scan): Allow __directive__ spelling.
7 2023-11-04 David Malcolm <dmalcolm@redhat.com>
9 * call.cc: Update for changes to diagnostic_context.
13 * except.cc: Likewise.
16 2023-11-02 Jason Merrill <jason@redhat.com>
18 * semantics.cc (nrv_data): Change visited to hash_set.
19 (finalize_nrv_r): Reorganize.
21 2023-11-02 Jason Merrill <jason@redhat.com>
26 * except.cc (maybe_splice_retval_cleanup): Clear
27 current_retval_sentinel when destroying retval.
28 * semantics.cc (nrv_data): Add in_nrv_cleanup.
29 (finalize_nrv): Set it.
30 (finalize_nrv_r): Fix handling of throwing cleanups.
32 2023-11-02 Jakub Jelinek <jakub@redhat.com>
35 * parser.cc: Implement C++26 P2361R6 - Unevaluated strings.
36 (uneval_string_attr): New enumerator.
37 (cp_parser_string_literal_common): Add UNEVAL argument. If true,
38 pass CPP_UNEVAL_STRING rather than CPP_STRING to
39 cpp_interpret_string_notranslate.
40 (cp_parser_string_literal, cp_parser_userdef_string_literal): Adjust
41 callers of cp_parser_string_literal_common.
42 (cp_parser_unevaluated_string_literal): New function.
43 (cp_parser_parenthesized_expression_list): Handle uneval_string_attr.
44 (cp_parser_linkage_specification): Use
45 cp_parser_unevaluated_string_literal for C++26.
46 (cp_parser_static_assert): Likewise.
47 (cp_parser_std_attribute): Use uneval_string_attr for standard
48 deprecated and nodiscard attributes.
50 2023-10-31 David Malcolm <dmalcolm@redhat.com>
52 * module.cc (ordinary_loc_of): Update for removal of
53 MACRO_MAP_EXPANSION_POINT_LOCATION.
54 (module_state::note_location): Update for renaming of field.
55 (module_state::write_macro_maps): Likewise.
57 2023-10-27 Patrick Palka <ppalka@redhat.com>
60 * init.cc (build_new_1): Remove unnecessary call to convert
61 on 'nelts'. Use build2 instead of fold_build2 for
64 2023-10-27 Patrick Palka <ppalka@redhat.com>
66 * cp-tree.h (maybe_warn_unparenthesized_assignment): Declare.
67 * semantics.cc (is_assignment_op_expr_p): Generalize to return
68 true for any assignment operator expression, not just one that
69 has been resolved to an operator overload.
70 (maybe_warn_unparenthesized_assignment): Factored out from ...
71 (maybe_convert_cond): ... here.
72 (finish_parenthesized_expr): Mention
73 maybe_warn_unparenthesized_assignment.
74 * typeck.cc (convert_for_assignment): Replace -Wparentheses
75 warning logic with maybe_warn_unparenthesized_assignment.
77 2023-10-27 Lewis Hyatt <lhyatt@gmail.com>
80 * parser.cc (cp_lexer_new_main): Call c_reset_target_pragmas ()
81 after preprocessing is complete, before starting compilation.
83 2023-10-26 liuhongt <hongtao.liu@intel.com>
85 * typeck.cc (build_vec_cmp): Pass type of arg0 to
88 2023-10-25 Jason Merrill <jason@redhat.com>
90 * cp-tree.def: Improve OFFSET_REF comment.
91 * cp-gimplify.cc (cp_fold_immediate): Add to comment.
93 2023-10-25 Thomas Schwinge <thomas@codesourcery.com>
95 * parser.cc (cp_parser_omp_clause_name): Return
96 'PRAGMA_OACC_CLAUSE_SELF' for "self".
97 (cp_parser_oacc_data_clause, OACC_UPDATE_CLAUSE_MASK): Adjust.
98 (cp_parser_oacc_all_clauses): Remove 'bool compute_p' formal
99 parameter, and instead locally determine whether we're called for
100 an OpenACC compute construct or OpenACC 'update' directive.
101 (cp_parser_oacc_compute): Adjust.
103 2023-10-25 Chung-Lin Tang <cltang@codesourcery.com>
105 * parser.cc (cp_parser_oacc_compute_clause_self): New function.
106 (cp_parser_oacc_all_clauses): Add new 'bool compute_p = false'
107 parameter, add parsing of self clause when compute_p is true.
108 (OACC_KERNELS_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_SELF.
109 (OACC_PARALLEL_CLAUSE_MASK): Likewise,
110 (OACC_SERIAL_CLAUSE_MASK): Likewise.
111 (cp_parser_oacc_compute): Adjust call to c_parser_oacc_all_clauses to
112 set compute_p argument to true.
113 * pt.cc (tsubst_omp_clauses): Add OMP_CLAUSE_SELF case.
114 * semantics.cc (c_finish_omp_clauses): Add OMP_CLAUSE_SELF case, merged
115 with OMP_CLAUSE_IF case.
117 2023-10-25 Marek Polacek <polacek@redhat.com>
120 * typeck.cc (build_static_cast_1): Call decay_conversion.
122 2023-10-24 Patrick Palka <ppalka@redhat.com>
125 * init.cc (build_new_1): Use convert, build2, build3 and
126 cp_fully_fold instead of fold_convert, size_binop and
127 fold_build3 when building up 'size'.
129 2023-10-24 Patrick Palka <ppalka@redhat.com>
132 * tree.cc (cp_stabilize_reference): Do nothing when
133 processing_template_decl.
135 2023-10-22 Patrick Palka <ppalka@redhat.com>
138 * pt.cc (tsubst_expr) <case AT_ENCODE_EXPR>: Use tsubst instead
141 2023-10-20 Jason Merrill <jason@redhat.com>
143 * call.cc (implicit_conversion_1): Rename...
144 (implicit_conversion): ...to this. Remove the old wrapper.
146 2023-10-20 Jason Merrill <jason@redhat.com>
148 * call.cc (tourney): Only skip champ_compared_to_predecessor.
150 2023-10-20 Nathan Sidwell <nathan@acm.org>
153 * module.cc (trees_out::core_vals): Stream CONSTRUCTOR operands
155 (trees_in::core_vals): Likewise.
157 2023-10-20 Patrick Palka <ppalka@redhat.com>
159 * cp-lang.cc (objcp_tsubst_copy_and_build): Rename to ...
160 (objcp_tsubst_expr): ... this.
161 * cp-objcp-common.h (objcp_tsubst_copy_and_build): Rename to ...
162 (objcp_tsubst_expr): ... this.
163 * cp-tree.h (tsubst_copy_and_build): Remove declaration.
164 * init.cc (maybe_instantiate_nsdmi_init): Use tsubst_expr
165 instead of tsubst_copy_and_build.
166 * pt.cc (expand_integer_pack): Likewise.
167 (instantiate_non_dependent_expr_internal): Likewise.
168 (instantiate_class_template): Use tsubst_stmt instead of
169 tsubst_expr for STATIC_ASSERT.
170 (tsubst_function_decl): Adjust tsubst_copy_and_build uses.
171 (tsubst_arg_types): Likewise.
172 (tsubst_exception_specification): Likewise.
173 (tsubst_tree_list): Likewise.
175 (tsubst_name): Likewise.
176 (tsubst_omp_clause_decl): Use tsubst_stmt instead of tsubst_expr.
177 (tsubst_omp_clauses): Likewise.
178 (tsubst_copy_asm_operands): Adjust tsubst_copy_and_build use.
179 (tsubst_omp_for_iterator): Use tsubst_stmt instead of tsubst_expr.
180 (tsubst_expr): Rename to ...
181 (tsubst_stmt): ... this.
182 <case CO_YIELD_EXPR, CO_AWAIT_EXPR>: Move to tsubst_expr.
183 (tsubst_omp_udr): Use tsubst_stmt instead of tsubst_expr.
184 (tsubst_non_call_postfix_expression): Adjust tsubst_copy_and_build
186 (tsubst_lambda_expr): Likewise. Use tsubst_stmt instead of
187 tsubst_expr for the body of a lambda.
188 (tsubst_copy_and_build_call_args): Rename to ...
189 (tsubst_call_args): ... this. Adjust tsubst_copy_and_build use.
190 (tsubst_copy_and_build): Rename to tsubst_expr. Adjust
191 tsubst_copy_and_build and tsubst_copy_and_build_call_args use.
192 <case TRANSACTION_EXPR>: Use tsubst_stmt instead of tsubst_expr.
193 (maybe_instantiate_noexcept): Adjust tsubst_copy_and_build use.
194 (instantiate_body): Use tsubst_stmt instead of tsubst_expr for
195 substituting the function body.
196 (tsubst_initializer_list): Adjust tsubst_copy_and_build use.
198 2023-10-20 Patrick Palka <ppalka@redhat.com>
200 * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup.
201 * pt.cc (tsubst_pack_expansion): Use tsubst for substituting
203 (tsubst_decl) <case USING_DECL>: Use tsubst_name instead of
205 (tsubst) <case TEMPLATE_TYPE_PARM>: Use tsubst_copy_and_build
206 instead of tsubst_copy for substituting
207 CLASS_PLACEHOLDER_TEMPLATE.
208 <case TYPENAME_TYPE>: Use tsubst_name instead of tsubst_copy for
209 substituting TYPENAME_TYPE_FULLNAME.
210 (tsubst_name): Define.
211 (tsubst_qualified_id): Use tsubst_name instead of tsubst_copy
212 for substituting the component name of a SCOPE_REF.
213 (tsubst_copy): Remove.
214 (tsubst_copy_and_build): Clear tf_no_name_lookup at the start,
215 and remember if it was set. Call maybe_dependent_member_ref if
216 tf_no_name_lookup was not set.
217 <case IDENTIFIER_NODE>: Don't do name lookup if tf_no_name_lookup
219 <case TEMPLATE_ID_EXPR>: If tf_no_name_lookup was set, use
220 tsubst_name instead of tsubst_copy_and_build to substitute the
221 template and don't finish the template-id.
222 <case BIT_NOT_EXPR>: Handle identifier and type operand (if
223 tf_no_name_lookup was set).
224 <case SCOPE_REF>: Avoid trying to resolve a SCOPE_REF if
225 tf_no_name_lookup was set by calling build_qualified_name directly
226 instead of tsubst_qualified_id.
227 <case SIZEOF_EXPR>: Handling of sizeof... copied from tsubst_copy.
228 <case CALL_EXPR>: Use tsubst_name instead of tsubst_copy to
229 substitute a TEMPLATE_ID_EXPR callee naming an unresolved template.
230 <case COMPONENT_REF>: Likewise to substitute the member.
231 <case FUNCTION_DECL>: Copied from tsubst_copy and merged with ...
232 <case VAR_DECL, PARM_DECL>: ... these. Initial handling copied
233 from tsubst_copy. Optimize local variable substitution by
234 trying retrieve_local_specialization before checking
236 <case CONST_DECL>: Copied from tsubst_copy.
237 <case FIELD_DECL>: Likewise.
238 <case NAMESPACE_DECL>: Likewise.
239 <case OVERLOAD>: Likewise.
240 <case TEMPLATE_DECL>: Likewise.
241 <case TEMPLATE_PARM_INDEX>: Likewise.
242 <case TYPE_DECL>: Likewise.
243 <case CLEANUP_POINT_EXPR>: Likewise.
244 <case OFFSET_REF>: Likewise.
245 <case EXPR_PACK_EXPANSION>: Likewise.
246 <case NONTYPE_ARGUMENT_PACK>: Likewise.
247 <case *_CST>: Likewise.
248 <case *_*_FOLD_EXPR>: Likewise.
249 <case DEBUG_BEGIN_STMT>: Likewise.
250 <case CO_AWAIT_EXPR>: Likewise.
251 <case TRAIT_EXPR>: Use tsubst and tsubst_copy_and_build instead
253 <default>: Copied from tsubst_copy.
254 (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build
255 instead of tsubst_copy.
257 2023-10-20 Patrick Palka <ppalka@redhat.com>
260 * parser.cc (cp_parser_postfix_expression): Consolidate three
261 calls to finish_call_expr, one to build_new_method_call and
262 one to build_min_nt_call_vec into one call to finish_call_expr.
263 Don't call maybe_generic_this_capture here.
264 * pt.cc (tsubst_copy_and_build) <case CALL_EXPR>: Remove
265 COMPONENT_REF callee handling.
266 (type_dependent_expression_p): Use t_d_object_e_p instead of
267 t_d_e_p for COMPONENT_REF and OFFSET_REF.
268 * semantics.cc (finish_call_expr): In the type-dependent case,
269 call maybe_generic_this_capture here instead.
271 2023-10-20 Patrick Palka <ppalka@redhat.com>
273 * call.cc (build_new_method_call): Remove calls to
274 build_non_dependent_expr and/or make_args_non_dependent.
275 * coroutines.cc (finish_co_return_stmt): Likewise.
276 * cp-tree.h (build_non_dependent_expr): Remove.
277 (make_args_non_dependent): Remove.
278 * decl2.cc (grok_array_decl): Remove calls to
279 build_non_dependent_expr and/or make_args_non_dependent.
280 (build_offset_ref_call_from_tree): Likewise.
281 * init.cc (build_new): Likewise.
282 * pt.cc (make_args_non_dependent): Remove.
283 (test_build_non_dependent_expr): Remove.
284 (cp_pt_cc_tests): Adjust.
285 * semantics.cc (finish_expr_stmt): Remove calls to
286 build_non_dependent_expr and/or make_args_non_dependent.
287 (finish_for_expr): Likewise.
288 (finish_call_expr): Likewise.
289 (finish_omp_atomic): Likewise.
290 * typeck.cc (finish_class_member_access_expr): Likewise.
291 (build_x_indirect_ref): Likewise.
292 (build_x_binary_op): Likewise.
293 (build_x_array_ref): Likewise.
294 (build_x_vec_perm_expr): Likewise.
295 (build_x_shufflevector): Likewise.
296 (build_x_unary_op): Likewise.
297 (cp_build_addressof): Likewise.
298 (build_x_conditional_expr): Likewise.
299 (build_x_compound_expr): Likewise.
300 (build_static_cast): Likewise.
301 (build_x_modify_expr): Likewise.
302 (check_return_expr): Likewise.
303 * typeck2.cc (build_x_arrow): Likewise.
305 2023-10-20 Patrick Palka <ppalka@redhat.com>
307 * class.cc (instantiate_type): Remove NON_DEPENDENT_EXPR
309 * constexpr.cc (cxx_eval_constant_expression): Likewise.
310 (potential_constant_expression_1): Likewise.
311 * coroutines.cc (coro_validate_builtin_call): Don't
312 expect ALIGNOF_EXPR to be wrapped in NON_DEPENDENT_EXPR.
313 * cp-objcp-common.cc (cp_common_init_ts): Remove
314 NON_DEPENDENT_EXPR handling.
315 * cp-tree.def (NON_DEPENDENT_EXPR): Remove.
316 * cp-tree.h (build_non_dependent_expr): Temporarily redefine as
317 the identity function.
318 * cvt.cc (maybe_warn_nodiscard): Handle type-dependent and
319 variable callee of CALL_EXPR.
320 * cxx-pretty-print.cc (cxx_pretty_printer::expression): Remove
321 NON_DEPENDENT_EXPR handling.
322 * error.cc (dump_decl): Likewise.
323 (dump_expr): Likewise.
324 * expr.cc (mark_use): Likewise.
325 (mark_exp_read): Likewise.
326 * pt.cc (build_non_dependent_expr): Remove.
327 * tree.cc (lvalue_kind): Remove NON_DEPENDENT_EXPR handling.
328 (cp_stabilize_reference): Likewise.
329 * typeck.cc (warn_for_null_address): Likewise.
330 (cp_build_binary_op): Handle type-dependent SIZEOF_EXPR operands.
331 (cp_build_unary_op) <case TRUTH_NOT_EXPR>: Don't fold inside a
334 2023-10-20 Alexandre Oliva <oliva@adacore.com>
336 * decl.cc (push_throw_library_fn): Mark with ECF_XTHROW.
337 * except.cc (build_throw): Likewise __cxa_throw,
338 _ITM_cxa_throw, __cxa_rethrow.
340 2023-10-20 Nathaniel Shead <nathanieloshead@gmail.com>
344 * call.cc (build_over_call): Fold more indirect refs for trivial
346 * class.cc (type_has_non_deleted_trivial_default_ctor): Create.
347 * constexpr.cc (cxx_eval_call_expression): Start lifetime of
348 union member before entering constructor.
349 (cxx_eval_component_reference): Check against first member of
350 value-initialised union.
351 (cxx_eval_store_expression): Activate member for
352 value-initialised union. Check for accessing inactive union
354 * cp-tree.h (type_has_non_deleted_trivial_default_ctor):
357 2023-10-20 Nathaniel Shead <nathanieloshead@gmail.com>
359 * constexpr.cc (is_std_source_location_current): New.
360 (cxx_eval_constant_expression): Only ignore cast from void* for
361 specific cases and improve other diagnostics.
363 2023-10-19 Marek Polacek <polacek@redhat.com>
365 * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value.
367 2023-10-19 Jason Merrill <jason@redhat.com>
369 * typeck2.cc (check_narrowing): Adjust.
371 2023-10-19 Jason Merrill <jason@redhat.com>
373 * parser.cc (cp_parser_primary_expression): Use G_.
374 (cp_parser_using_enum): Likewise.
375 * decl.cc (identify_goto): Likewise.
377 2023-10-18 Jason Merrill <jason@redhat.com>
379 * typeck2.cc (check_narrowing): Use permerror.
381 2023-10-17 Marek Polacek <polacek@redhat.com>
384 * parser.cc (cp_parser_simple_declaration): Do cp_parser_error
387 2023-10-17 Marek Polacek <polacek@redhat.com>
390 * cp-gimplify.cc (cp_fold_immediate_r) <case COND_EXPR>: Don't
392 (cp_fold_r): Handle COND_EXPR here.
394 2023-10-17 Jason Merrill <jason@redhat.com>
396 * mangle.cc (abi_check): New.
397 (write_prefix, write_unqualified_name, write_discriminator)
398 (write_type, write_member_name, write_expression)
399 (write_template_arg, write_template_param): Use it.
400 (start_mangling): Assign from {}.
401 * cp-tree.h: Update comment.
403 2023-10-17 Nathaniel Shead <nathanieloshead@gmail.com>
405 * constexpr.cc (cxx_eval_dynamic_cast_fn): Add missing
406 auto_diagnostic_group.
407 (cxx_eval_call_expression): Likewise.
408 (diag_array_subscript): Likewise.
409 (outside_lifetime_error): Likewise.
410 (potential_constant_expression_1): Likewise.
412 2023-10-16 Jason Merrill <jason@redhat.com>
414 * parser.cc (cp_parser_fold_expression): Track location range.
415 * semantics.cc (finish_unary_fold_expr)
416 (finish_left_unary_fold_expr, finish_right_unary_fold_expr)
417 (finish_binary_fold_expr): Add location parm.
418 * constraint.cc (finish_shorthand_constraint): Pass it.
419 * pt.cc (convert_generic_types_to_packs): Likewise.
422 2023-10-16 Marek Polacek <polacek@redhat.com>
425 * constexpr.cc (explain_invalid_constexpr_fn): Also check the body of
426 a constructor in C++14 and up.
428 2023-10-14 Jakub Jelinek <jakub@redhat.com>
431 * module.cc (trees_out::start, trees_in::start): Remove
432 TREE_INT_CST_OFFSET_NUNITS handling.
434 2023-10-10 Jason Merrill <jason@redhat.com>
437 * mangle.cc (write_template_param): Also mangle level.
439 2023-10-08 David Malcolm <dmalcolm@redhat.com>
441 * module.cc (module_state::read_location): Update for renaming of
442 get_combined_adhoc_loc.
444 2023-10-03 David Malcolm <dmalcolm@redhat.com>
446 * error.cc (print_instantiation_partial_context_line): Call
447 diagnostic_show_locus.
449 2023-10-03 David Malcolm <dmalcolm@redhat.com>
451 * error.cc: Update for "m_" prefixes to text_info fields.
453 2023-09-30 Eugene Rozenfeld <erozen@microsoft.com>
455 * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY
457 2023-09-28 Richard Sandiford <richard.sandiford@arm.com>
459 * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables.
461 2023-09-22 Jason Merrill <jason@redhat.com>
464 * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR.
466 2023-09-22 Jason Merrill <jason@redhat.com>
468 * constexpr.cc (free_constructor): Handle null ce->value.
470 2023-09-22 Jason Merrill <jason@redhat.com>
473 * parser.cc (cp_parser_lambda_declarator_opt): Don't suggest
474 -std=c++14 for lambda templates.
475 * pt.cc (tsubst_expr): Move ANNOTATE_EXPR handling...
476 (tsubst_copy_and_build): ...here.
478 2023-09-22 Patrick Palka <ppalka@redhat.com>
481 * decl2.cc (grok_array_decl): Guard diagnostic and backward
482 compatibility fallback code paths with tf_error.
484 2023-09-22 Patrick Palka <ppalka@redhat.com>
487 * pt.cc (is_compatible_template_arg): New parameter 'args'.
488 Add the outer template arguments 'args' to 'new_args'.
489 (convert_template_argument): Pass 'args' to
490 is_compatible_template_arg.
492 2023-09-20 Jakub Jelinek <jakub@redhat.com>
494 * parser.cc (cp_parser_postfix_expression): Parse
495 __builtin_classify_type call with typename as argument.
496 * pt.cc (tsubst_copy_and_build): Handle __builtin_classify_type
497 with dependent typename as argument.
499 2023-09-20 Patrick Palka <ppalka@redhat.com>
502 * cxx-pretty-print.cc (cxx_pretty_printer::expression)
503 <case VAR_DECL>: Handle class NTTP objects by printing
504 their type and value.
505 <case VIEW_CONVERT_EXPR>: Strip const VIEW_CONVERT_EXPR
506 wrappers for class NTTPs.
507 (pp_cxx_template_argument_list): Don't handle class NTTP
510 2023-09-20 Patrick Palka <ppalka@redhat.com>
512 * pt.cc (tsubst_function_decl): Don't bother computing 'argvec'
513 when 'lambda_fntype' is set.
514 (tsubst_template_decl): Make sure we return a TEMPLATE_DECL
515 during specialization lookup. In the non-class non-function
516 template case, use tsubst_decl directly with use_spec_table=false,
517 update DECL_TI_ARGS and call register_specialization like
518 tsubst_decl would have done if use_spec_table=true.
520 2023-09-20 Jakub Jelinek <jakub@redhat.com>
523 * parser.h (struct cp_lexer): Add in_omp_decl_attribute member.
524 * cp-tree.h (cp_maybe_parse_omp_decl): Declare.
525 * parser.cc (cp_parser_handle_statement_omp_attributes): Diagnose
526 omp::decl attribute on statements. Adjust diagnostic wording for
528 (cp_parser_omp_directive_args): Add DECL_P argument, set TREE_PUBLIC
529 to it on the DEFERRED_PARSE tree.
530 (cp_parser_omp_sequence_args): Adjust caller.
531 (cp_parser_std_attribute): Handle omp::decl attribute.
532 (cp_parser_omp_var_list): If parser->lexer->in_omp_decl_attribute
533 don't expect any arguments, instead create clause or TREE_LIST for
535 (cp_parser_late_parsing_omp_declare_simd): Adjust diagnostic wording
537 (cp_maybe_parse_omp_decl): New function.
538 (cp_parser_omp_declare_target): If
539 parser->lexer->in_omp_decl_attribute and first token isn't name or
540 comma invoke cp_parser_omp_var_list.
541 * decl2.cc (cplus_decl_attributes): Adjust diagnostic wording for
542 omp::decl. Handle omp::decl on declarations.
543 * name-lookup.cc (finish_using_directive): Adjust diagnostic wording
546 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
548 * mapper-client.cc, mapper-client.h (open_module_client): Accept
549 dependency tracking and track module mapper files as
551 * module.cc (make_mapper, get_mapper): Pass the dependency
554 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
556 * module.cc (do_import): Report imported CMI files as
559 2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
561 * module.cc (preprocessed_module): Pass whether the module is
562 exported to dependency tracking.
564 2023-09-19 Javier Martinez <javier.martinez.bugzilla@gmail.com>
566 * class.cc (propagate_class_warmth_attribute): New function.
567 (check_bases_and_members): propagate hot and cold attributes
568 to all FUNCTION_DECL when the record is marked hot or cold.
569 * cp-tree.h (maybe_propagate_warmth_attributes): New function.
570 * decl2.cc (maybe_propagate_warmth_attributes): New function.
571 * method.cc (lazily_declare_fn): propagate hot and cold
572 attributes to lazily declared functions when the record is
575 2023-09-19 Patrick Palka <ppalka@redhat.com>
577 * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC
578 test guarding TYPE_TEMPLATE_INFO.
580 2023-09-19 Jason Merrill <jason@redhat.com>
583 * class.cc (add_implicit_default_ctor): Split out...
584 (add_implicitly_declared_members): ...from here.
585 Also call it when inheriting a default ctor.
587 2023-09-19 Marek Polacek <polacek@redhat.com>
589 * call.cc (build_over_call): Set ADDR_EXPR_DENOTES_CALL_P. Don't handle
590 immediate_invocation_p here.
591 * constexpr.cc (cxx_eval_call_expression): Use mce_true for
592 DECL_IMMEDIATE_FUNCTION_P.
593 (cxx_eval_conditional_expression): Call cp_fold_immediate.
594 * cp-gimplify.cc (enum fold_flags): Add ff_fold_immediate.
595 (maybe_replace_decl): Make static.
596 (cp_fold_r): Expand immediate invocations.
597 (cp_fold_immediate_r): New.
598 (cp_fold_immediate): New.
599 * cp-tree.h (ADDR_EXPR_DENOTES_CALL_P): Define.
600 (cp_fold_immediate): Declare.
601 * tree.cc (bot_replace): Don't handle immediate invocations here.
603 2023-09-19 Patrick Palka <ppalka@redhat.com>
606 * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call
607 complete_type if the type is volatile.
608 <case VAR_DECL>: Likewise.
610 2023-09-19 Patrick Palka <ppalka@redhat.com>
613 * semantics.cc (finish_decltype_type): For an NTTP object,
614 return its type modulo cv-quals.
616 2023-09-18 Patrick Palka <ppalka@redhat.com>
619 * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality
620 test by not calling most_general_template. Only unify the
621 innermost levels of template arguments.
622 (unify) <case CLASS_TYPE>: Only unify the innermost levels of
623 template arguments, and only if the template is primary.
625 2023-09-18 Patrick Palka <ppalka@redhat.com>
629 * semantics.cc (maybe_convert_cond): Look through implicit
630 INDIRECT_REF when deciding whether to issue a -Wparentheses
631 warning, and consider templated assignment expressions as well.
632 (finish_parenthesized_expr): Look through implicit INDIRECT_REF
633 when suppressing -Wparentheses warning.
634 * typeck.cc (build_x_modify_expr): Check simple assignments
635 ahead time too, not just compound assignments. Give the second
636 operand of MODOP_EXPR a non-null type so that it's not considered
637 always instantiation-dependent. Don't call suppress_warning.
639 2023-09-18 Patrick Palka <ppalka@redhat.com>
642 * pt.cc (unify): Return unify_success for identical dependent
643 DECL_P 'arg' and 'parm'.
644 <case CONST_DECL>: Remove handling.
646 2023-09-18 Patrick Palka <ppalka@redhat.com>
648 * call.cc (add_template_candidate_real): Check arity even
649 when there are no explicit template arguments. Combine the
650 two adjacent '!obj' tests into one.
652 2023-09-18 Patrick Palka <ppalka@redhat.com>
654 * pt.cc (register_specialization): Remove now-unnecessary
655 early exit for FUNCTION_DECL partial instantiation.
656 (tsubst_template_decl): Pass use_spec_table=false to
657 tsubst_function_decl. Set DECL_TI_ARGS of a non-lambda
658 FUNCTION_DECL specialization to the full set of arguments.
659 Simplify register_specialization call accordingly.
661 2023-09-18 Jason Merrill <jason@redhat.com>
663 * class.cc (check_subobject_offset): Use similar_type_p.
665 2023-09-12 Jason Merrill <jason@redhat.com>
668 * pt.cc (expand_integer_pack): Convert argument to int.
670 2023-09-12 Jason Merrill <jason@redhat.com>
673 * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR
674 regardless of seen_error.
676 2023-09-08 Patrick Palka <ppalka@redhat.com>
679 * pt.cc (check_non_deducible_conversions): Add bool parameter
680 passed down to check_non_deducible_conversion.
681 (fn_type_unification): Call check_non_deducible_conversions
682 an extra time before satisfaction with noninst_only_p=true.
683 (conversion_may_instantiate_p): Define.
684 (check_non_deducible_conversion): Add bool parameter controlling
685 whether to compute only conversions that are guaranteed to
686 not induce template instantiation.
688 2023-09-07 Sandra Loosemore <sandra@codesourcery.com>
691 * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK.
693 2023-09-06 Jason Merrill <jason@redhat.com>
695 * class.cc (check_subobject_offset): Check
696 same_type_ignoring_top_level_qualifiers_p.
698 2023-09-05 Marek Polacek <polacek@redhat.com>
701 * constexpr.cc (verify_constant_explain_r): New.
702 (verify_constant): Call it.
704 2023-09-05 Jakub Jelinek <jakub@redhat.com>
707 * name-lookup.cc (check_local_shadow): Don't punt early for
708 DECL_EXTERNAL decls, instead just disable the shadowing of namespace
709 decls check for those and emit a pedwarn rather than error_at or
710 permerror for those. Formatting fix.
712 2023-09-05 Jakub Jelinek <jakub@redhat.com>
715 * name-lookup.h (struct cp_binding_level): Add artificial bit-field.
717 * name-lookup.cc (check_local_shadow): Skip artificial bindings when
718 checking if parameter scope is parent scope. Don't special case
719 FUNCTION_NEEDS_BODY_BLOCK. Diagnose the in_function_try_handler
720 cases in the b->kind == sk_function_parms test and verify no
721 non-artificial intervening scopes. Add missing auto_diagnostic_group.
722 * decl.cc (begin_function_body): Set
723 current_binding_level->artificial.
724 * semantics.cc (begin_function_try_block): Likewise.
726 2023-09-05 Patrick Palka <ppalka@redhat.com>
728 * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass
729 nullptr as non_constant_p to cp_parser_braced_list if our
730 non_constant_p is null.
731 (cp_parser_initializer_list): Likewise to
732 cp_parser_initializer_clause. Avoid inspecting
733 clause_non_constant_p if it's uninitialized.
735 2023-09-05 Patrick Palka <ppalka@redhat.com>
737 * call.cc (build_user_type_conversion): Free allocated
739 (build_converted_constant_expr_internal): Use
740 conversion_obstack_sentinel instead.
741 (perform_dguide_overload_resolution): Likewise.
742 (build_new_function_call): Likewise.
743 (build_operator_new_call): Free allocated conversions.
744 (build_op_call): Use conversion_obstack_sentinel instead.
745 (build_conditional_expr): Use conversion_obstack_sentinel
746 instead, and hoist it out to the outermost scope.
747 (build_new_op): Use conversion_obstack_sentinel instead
748 and set it up before the first goto. Remove second unneeded goto.
749 (build_op_subscript): Use conversion_obstack_sentinel instead.
750 (ref_conv_binds_to_temporary): Likewise.
751 (build_new_method_call): Likewise.
752 (can_convert_arg): Likewise.
753 (can_convert_arg_bad): Likewise.
754 (perform_implicit_conversion_flags): Likewise.
755 (perform_direct_initialization_if_possible): Likewise.
756 (initialize_reference): Likewise.
758 2023-09-01 Jakub Jelinek <jakub@redhat.com>
761 * cp-tree.h (determine_local_discriminator): Add NAME argument with
763 (struct cp_decomp): New type.
764 (cp_finish_decl): Add DECOMP argument defaulted to nullptr.
765 (cp_maybe_mangle_decomp): Remove declaration.
766 (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned
768 (cp_convert_range_for): Likewise.
769 * decl.cc (determine_local_discriminator): Add NAME argument, use it
770 if non-NULL, otherwise compute it the old way.
771 (maybe_commonize_var): Don't return early for structured bindings.
772 (cp_finish_decl): Add DECOMP argument, if non-NULL, call
773 cp_maybe_mangle_decomp.
774 (cp_maybe_mangle_decomp): Make it static with a forward declaration.
775 Call determine_local_discriminator. Replace FIRST and COUNT arguments
776 with DECOMP argument.
777 (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP
779 * mangle.cc (find_decomp_unqualified_name): Remove.
780 (write_unqualified_name): Don't call find_decomp_unqualified_name.
781 (mangle_decomp): Handle mangling of static function/block scope
782 structured bindings. Don't call decl_mangling_context twice. Call
783 check_abi_tags, call write_abi_tags for abi version >= 19 and emit
784 -Wabi warnings if needed.
785 (write_guarded_var_name): Handle structured bindings.
786 (mangle_ref_init_variable): Use write_guarded_var_name.
787 * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction
788 and cp_convert_range_for callers.
789 (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and
790 DECOMP_CNT arguments with DECOMP. Adjust cp_finish_decomp caller.
791 (cp_convert_range_for): Replace DECOMP_FIRST_NAME and
792 DECOMP_CNT arguments with DECOMP. Don't call cp_maybe_mangle_decomp,
793 adjust cp_finish_decl and cp_finish_decomp callers.
794 (cp_parser_decomposition_declaration): Don't call
795 cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp
797 (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction
798 and cp_finish_decomp callers.
799 (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp,
800 adjust cp_finish_decl and cp_finish_decomp callers.
801 * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names
803 (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP.
804 (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust
805 tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and
806 cp_convert_range_for callers.
808 2023-08-30 Marek Polacek <polacek@redhat.com>
811 * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT
812 when the designated initializer is of the .x{} form.
814 2023-08-30 Marek Polacek <polacek@redhat.com>
817 * decl.cc (grokdeclarator): Disallow constinit on functions.
819 2023-08-29 Marek Polacek <polacek@redhat.com>
821 * call.cc (convert_like_internal): Show where the conversion function
823 (maybe_show_nonconverting_candidate): New.
824 * cp-tree.h (maybe_show_nonconverting_candidate): Declare.
825 * typeck.cc (convert_for_assignment): Call it.
827 2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
829 * cp-tree.h (cp_convert_omp_range_for): Adjust declaration.
830 * parser.cc (struct omp_for_parse_data): New.
831 (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime
833 (check_omp_intervening_code): New.
834 (cp_parser_statement_seq_opt): Special-case nested loops, blocks,
835 and other constructs for OpenMP loops.
836 (cp_parser_iteration_statement): Reject loops in intervening code.
837 (cp_parser_omp_for_loop_init): Expand comments and tweak the
838 interface slightly to better distinguish input/output parameters.
839 (cp_convert_omp_range_for): Likewise.
840 (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop
841 and largely rewritten. Add more comments.
842 (insert_structured_blocks): New.
843 (find_structured_blocks): New.
844 (struct sit_data, substitute_in_tree_walker, substitute_in_tree):
846 (fixup_blocks_walker): New.
847 (cp_parser_omp_for_loop): Rewrite to use recursive descent instead
848 of a loop. Add logic to reshuffle the bits of code collected
849 during parsing so intervening code gets moved to the loop body.
850 (cp_parser_omp_loop): Remove call to finish_omp_for_block, which
852 (cp_parser_omp_simd): Likewise.
853 (cp_parser_omp_for): Likewise.
854 (cp_parser_omp_distribute): Likewise.
855 (cp_parser_oacc_loop): Likewise.
856 (cp_parser_omp_taskloop): Likewise.
857 (cp_parser_pragma): Reject OpenMP pragmas in intervening code.
858 * parser.h (struct cp_parser): Add omp_for_parse_state field.
859 * pt.cc (tsubst_omp_for_iterator): Adjust call to
860 cp_convert_omp_range_for.
861 * semantics.cc (finish_omp_for): Try harder to preserve location
862 of loop variable init expression for use in diagnostics.
863 (struct fofb_data, finish_omp_for_block_walker): New.
864 (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR
865 nested inside BIND instead of directly in BIND itself.
867 2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
869 * constexpr.cc (cxx_eval_constant_expression): Handle
870 OMP_STRUCTURED_BLOCK.
871 * pt.cc (tsubst_expr): Likewise.
873 2023-08-25 Uros Bizjak <ubizjak@gmail.com>
875 * call.cc (build_conditional_expr):
876 Rename TRUE/FALSE to true/false.
877 (build_new_op): Ditto.
879 2023-08-22 Jason Merrill <jason@redhat.com>
881 * pt.cc (outer_template_args): Handle non-template argument.
882 * constraint.cc (maybe_substitute_reqs_for): Pass decl to it.
883 * cp-tree.h (outer_template_args): Adjust.
885 2023-08-22 Jason Merrill <jason@redhat.com>
888 * cp-tree.h (member_like_constrained_friend_p): Declare.
889 * decl.cc (member_like_constrained_friend_p): New.
890 (function_requirements_equivalent_p): Check it.
891 (duplicate_decls): Check it.
892 (grokfndecl): Check friend template constraints.
893 * mangle.cc (decl_mangling_context): Check it.
894 (write_unqualified_name): Check it.
895 * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends.
896 (tsubst_friend_function): Don't check satisfaction.
898 2023-08-22 Tobias Burnus <tobias@codesourcery.com>
900 * parser.cc (cp_parser_omp_clause_defaultmap): Parse
903 2023-08-15 Chung-Lin Tang <cltang@codesourcery.com>
904 Thomas Schwinge <thomas@codesourcery.com>
906 * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
908 2023-08-14 gnaggnoyil <gnaggnoyil@gmail.com>
912 * decl.cc (get_tuple_size): Update implementation for DR 2386.
914 2023-08-14 Jason Merrill <jason@redhat.com>
916 * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14
919 2023-08-12 Patrick Palka <ppalka@redhat.com>
920 Jason Merrill <jason@redhat.com>
923 * decl.cc (redeclaration_error_message): Remove special handling
924 for deduction guides.
925 (grokfndecl): Give deduction guides a dummy DECL_INITIAL.
927 2023-08-11 Patrick Palka <ppalka@redhat.com>
930 * parser.cc (cp_parser_type_requirement): Pass
931 check_dependency_p=true instead of =false.
933 2023-08-11 Patrick Palka <ppalka@redhat.com>
936 * decl.cc (grokdeclarator): Pass 'dname' instead of
937 'unqualified_id' as the name when building the VAR_DECL for a
938 static data member. Call check_explicit_specialization for a
939 TEMPLATE_ID_EXPR such member.
940 * pt.cc (finish_member_template_decl): Return NULL_TREE
941 instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not
944 2023-08-11 Patrick Palka <ppalka@redhat.com>
946 * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and
947 TS_DECL_COMMON only when necessary. Print DECL_TEMPLATE_INFO
948 for all decls that have it, not just VAR_DECL or FUNCTION_DECL.
949 Also print DECL_USE_TEMPLATE.
950 (cxx_print_type): Print TYPE_TEMPLATE_INFO.
951 <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS
953 <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX
954 instead of printing the index, level and original level
957 2023-08-08 Marek Polacek <polacek@redhat.com>
959 * parser.cc (cp_parser_postfix_expression): Adjust the call to
960 cp_parser_braced_list.
961 (cp_parser_postfix_open_square_expression): Likewise.
962 (cp_parser_new_initializer): Likewise.
963 (cp_parser_assignment_expression): Adjust the call to
964 cp_parser_initializer_clause.
965 (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer.
966 (cp_parser_range_for): Adjust the call to cp_parser_braced_list.
967 (cp_parser_jump_statement): Likewise.
968 (cp_parser_mem_initializer): Likewise.
969 (cp_parser_template_argument): Likewise.
970 (cp_parser_default_argument): Adjust the call to cp_parser_initializer.
971 (cp_parser_initializer): Handle null is_direct_init and non_constant_p
973 (cp_parser_initializer_clause): Handle null non_constant_p argument.
974 (cp_parser_braced_list): Likewise.
975 (cp_parser_initializer_list): Likewise.
976 (cp_parser_member_declaration): Adjust the call to
977 cp_parser_initializer_clause and cp_parser_initializer.
978 (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list.
979 (cp_parser_functional_cast): Likewise.
980 (cp_parser_late_parse_one_default_arg): Adjust the call to
981 cp_parser_initializer.
982 (cp_parser_omp_for_loop_init): Likewise.
983 (cp_parser_omp_declare_reduction_exprs): Likewise.
985 2023-08-08 Nathaniel Shead <nathanieloshead@gmail.com>
988 * parser.cc (cp_parser_decltype_expr): Report errors raised by
989 finish_id_expression.
991 2023-08-04 Tamar Christina <tamar.christina@arm.com>
993 * cp-tree.h (RANGE_FOR_NOVECTOR): New.
994 (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt,
995 finish_for_cond): Add novector param.
996 * init.cc (build_vec_init): Default novector to false.
997 * method.cc (build_comparison_op): Likewise.
998 * parser.cc (cp_parser_statement): Likewise.
999 (cp_parser_for, cp_parser_c_for, cp_parser_range_for,
1000 cp_convert_range_for, cp_parser_iteration_statement,
1001 cp_parser_omp_for_loop, cp_parser_pragma): Support novector.
1002 (cp_parser_pragma_novector): New.
1003 * pt.cc (tsubst_expr): Likewise.
1004 * semantics.cc (finish_while_stmt_cond, finish_do_stmt,
1005 finish_for_cond): Likewise.
1007 2023-08-01 Lewis Hyatt <lhyatt@gmail.com>
1009 * parser.cc (c_init_preprocess): New function.
1010 (maybe_read_tokens_for_pragma_lex): New function.
1011 (pragma_lex): Support preprocess-only mode.
1012 (pragma_lex_discard_to_eol): New function.
1014 2023-07-31 Chung-Lin Tang <cltang@codesourcery.com>
1016 * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC
1017 host_data construct to have an use_device clause.
1019 2023-07-28 Ng YongXiang <yongxiangng@gmail.com>
1023 * init.cc (build_vec_delete_1): Devirtualize array destruction.
1025 2023-07-27 Patrick Palka <ppalka@redhat.com>
1028 * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an
1029 empty subobject even if CONSTRUCTOR_NO_CLEARING is set.
1030 (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally
1031 whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx,
1032 i.e. whenever initializing an subobject of empty type.
1033 (cxx_eval_vec_init_1): Define 'no_slot' as above and use it
1036 2023-07-27 Nathaniel Shead <nathanieloshead@gmail.com>
1039 * pt.cc (type_uses_auto): Check inside parameter packs.
1041 2023-07-26 Patrick Palka <ppalka@redhat.com>
1045 * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO
1046 on the DECL_TEMPLATE_RESULT of the new ttp.
1047 (add_defaults_to_ttp): Make a copy of the original ttp's
1048 DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO
1050 (coerce_template_template_parms): Make sure 'scope_args' has
1051 the right amount of levels for the ttp argument.
1052 (most_general_template): Handle template template parameters.
1053 (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the
1054 DECL_TEMPLATE_RESULT of the new ttp.
1056 2023-07-26 Patrick Palka <ppalka@redhat.com>
1060 * pt.cc (coerce_template_template_parms): Simplify by using
1061 DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts.
1062 Always pass the parameters of the most general template to
1063 coerce_template_parms.
1065 2023-07-26 Patrick Palka <ppalka@redhat.com>
1068 * pt.cc (unify) <case INTEGER_CST>: Generalize to handle
1071 2023-07-26 Marek Polacek <polacek@redhat.com>
1073 * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be
1074 nullptr even when allow_non_constant_p is true. Don't call
1075 _rvalue_constant_expression when not necessary. Move local variable
1076 declarations closer to their first use.
1077 (cp_parser_static_assert): Don't pass a dummy down to
1078 cp_parser_constant_expression.
1080 2023-07-26 Jason Merrill <jason@redhat.com>
1083 * parser.cc (cp_parser_template_name): Skip non-member
1084 lookup after the template keyword.
1085 (cp_parser_lookup_name): Pass down template_keyword_p.
1087 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
1092 * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New
1094 (constexpr_global_ctx::get_value): Don't return expired values.
1095 (constexpr_global_ctx::get_value_ptr): Likewise.
1096 (constexpr_global_ctx::remove_value): Mark value outside
1098 (outside_lifetime_error): New function.
1099 (cxx_eval_call_expression): No longer track save_exprs.
1100 (cxx_eval_loop_expr): Likewise.
1101 (cxx_eval_constant_expression): Add checks for outside lifetime
1102 values. Remove local variables at end of bind exprs, and
1103 temporaries after cleanup points.
1105 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
1108 * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to
1109 not return dangling pointers.
1110 * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag.
1111 (check_return_expr): Add a new parameter.
1112 * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR
1113 when referring to dangling pointer.
1114 * typeck.cc (check_return_expr): Disable transformation of
1115 dangling pointers, instead pass this information to caller.
1117 2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
1119 * constexpr.cc (modifying_const_object_error): Find the source
1120 location of the const object's declaration.
1121 (cxx_eval_constant_expression): Update input_location to the
1122 location of the currently evaluated expression, if possible.
1124 2023-07-25 Marek Polacek <polacek@redhat.com>
1127 * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial
1129 (instantiate_template): Reset all complain flags except
1130 tf_warning_or_error.
1132 2023-07-25 Marek Polacek <polacek@redhat.com>
1135 * constexpr.cc (cxx_eval_array_reference): Create a new constructor
1136 only when we don't already have a matching one. Clear the object
1137 when the type is non-scalar.
1139 2023-07-21 Marek Polacek <polacek@redhat.com>
1142 * constexpr.cc (potential_constant_expression_1): Try to complete the
1143 type when !processing_template_decl.
1145 2023-07-20 Marek Polacek <polacek@redhat.com>
1148 * call.cc (implicit_conversion_1): Return early if the type isn't
1151 2023-07-19 Marek Polacek <polacek@redhat.com>
1154 * error.cc (dump_simple_decl): Print base class name.
1156 2023-07-19 Marek Polacek <polacek@redhat.com>
1159 * typeck2.cc (process_init_constructor_record): Don't emit
1160 -Wmissing-field-initializers for empty classes.
1162 2023-07-19 Patrick Palka <ppalka@redhat.com>
1164 * pt.cc (type_unification_real): Test for PARM_DECL instead
1165 of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
1166 template parameter pack.
1167 (type_targs_deducible_from): Likewise.
1169 2023-07-19 Patrick Palka <ppalka@redhat.com>
1171 * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table'
1172 flag parameter. Don't look up or insert into the specializations
1173 table if 'use_spec_table' is false.
1174 (tsubst_decl): Add defaulted 'use_spec_table' flag parameter.
1175 Check for error_mark_node.
1176 <case FUNCTION_DECL>: Pass 'use_spec_table' to
1177 tsubst_function_decl.
1178 <case TYPE/VAR_DECL>: Don't call coerce_template_parms.
1179 Don't look up or insert into the specializations table if
1180 'use_spec_table' is false. Exit earlier if the substituted
1181 type is erroneous and we're not complaining, and do so for
1182 alias specializations as well.
1183 (instantiate_template): Pass false as 'use_spec_table'
1184 to tsubst_decl. Call register_specialization afterwards.
1186 2023-07-18 Jason Merrill <jason@redhat.com>
1188 * constexpr.cc (cxx_eval_bit_cast): Check that the result of
1189 native_interpret_aggregate doesn't need more evaluation.
1191 2023-07-18 Patrick Palka <ppalka@redhat.com>
1193 * call.cc (add_template_conv_candidate): Don't check for
1194 non-empty 'candidates' here.
1195 (build_op_call): Check it here, before we've considered any
1196 conversion functions.
1198 2023-07-18 Patrick Palka <ppalka@redhat.com>
1201 * call.cc (add_conv_candidate): Check constraints.
1203 2023-07-17 Jason Merrill <jason@redhat.com>
1205 * constexpr.cc (cxx_eval_call_expression): Only cache
1206 reduced_constant_expression_p results.
1207 (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type.
1208 (cxx_eval_constant_expression): Fold vectors here.
1209 (cxx_eval_bare_aggregate): Not here.
1211 2023-07-15 Patrick Palka <ppalka@redhat.com>
1214 * call.cc (keep_unused_object_arg): Use cp_build_compound_expr
1215 instead of building a COMPOUND_EXPR directly.
1217 2023-07-15 Patrick Palka <ppalka@redhat.com>
1220 * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
1221 whose template is already an IDENTIFIER_NODE.
1223 2023-07-14 Nathaniel Shead <nathanieloshead@gmail.com>
1225 * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
1227 2023-07-14 Jason Merrill <jason@redhat.com>
1230 * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling
1231 after heap handling.
1232 * name-lookup.cc (get_cxx_dialect_name): Add C++26.
1234 2023-07-14 Marek Polacek <polacek@redhat.com>
1235 Jason Merrill <jason@redhat.com>
1238 * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing
1239 an object of empty class type.
1240 * pt.cc (value_dependent_expression_p) <case VAR_DECL>: Treat a
1241 constexpr-declared non-constant variable as value-dependent.
1243 2023-07-11 Patrick Palka <ppalka@redhat.com>
1246 * pt.cc (lookup_template_variable): Pass all levels of arguments
1247 to coerce_template_parms, and use the parameters from the most
1250 2023-07-10 Patrick Palka <ppalka@redhat.com>
1253 * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT
1254 assert, and downgrade it to a checking assert.
1256 2023-06-30 Patrick Palka <ppalka@redhat.com>
1258 * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden.
1259 (TEMPLATE_TYPE_DESCENDANTS): Define.
1260 (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define.
1261 * pt.cc (reduce_template_parm_level): Revert
1262 r14-418-g0bc2a1dc327af9 change.
1263 (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P
1265 (uses_outer_template_parms): Determine the outer depth of
1266 a template template parm without relying on DECL_CONTEXT.
1267 (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
1268 simple template template parm. Consistently use 'code'.
1270 2023-06-29 Patrick Palka <ppalka@redhat.com>
1273 * init.cc (maybe_instantiate_nsdmi_init): Mask out all
1274 tsubst flags except for tf_warning_or_error.
1276 2023-06-29 Patrick Palka <ppalka@redhat.com>
1279 * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
1280 CONSTRUCTOR_MUTABLE_POISON.
1282 2023-06-29 Patrick Palka <ppalka@redhat.com>
1284 * cp-tree.h (tree_template_info::partial): New data member.
1285 (TI_PARTIAL_INFO): New tree accessor.
1286 (most_specialized_partial_spec): Add defaulted bool parameter.
1287 * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream
1289 (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise.
1290 * parser.cc (specialization_of): Adjust after making
1291 most_specialized_partial_spec return TEMPLATE_INFO instead
1293 * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO
1294 of 'decl' to point back to the partial TEMPLATE_DECL. Likewise
1295 (and pass rechecking=true to most_specialization_partial_spec).
1296 (instantiate_class_template): Likewise.
1297 (instantiate_template): Set TI_PARTIAL_INFO to the result of
1298 most_specialization_partial_spec after forming a variable
1299 template specialization.
1300 (most_specialized_partial_spec): Add 'rechecking' parameter.
1301 Exit early if the template is not primary. Use the TI_PARTIAL_INFO
1302 of the corresponding TEMPLATE_INFO as a cache unless 'rechecking'
1303 is true. Don't bother setting TREE_TYPE of each TREE_LIST.
1304 (instantiate_decl): Adjust after making
1305 most_specialized_partial_spec return TEMPLATE_INFO instead of
1307 * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump
1310 2023-06-29 Eugene Rozenfeld <erozen@microsoft.com>
1312 * Make-lang.in: Pass correct stage cc1plus when processing
1313 profile data collected while building target libraries
1315 2023-06-28 Patrick Palka <ppalka@redhat.com>
1319 * cp-tree.h (lookup_template_variable): Add complain parameter.
1320 * parser.cc (cp_parser_template_id): Pass tf_warning_or_error
1321 to lookup_template_variable.
1322 * pt.cc (lookup_template_variable): Add complain parameter.
1323 Coerce template arguments here ...
1324 (finish_template_variable): ... instead of here.
1325 (lookup_and_finish_template_variable): Check for error_mark_node
1326 result from lookup_template_variable.
1327 (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to
1328 lookup_template_variable.
1329 (instantiate_template): Use build2 instead of
1330 lookup_template_variable to build a TEMPLATE_ID_EXPR
1331 for most_specialized_partial_spec.
1333 2023-06-28 Marek Polacek <polacek@redhat.com>
1336 * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
1338 2023-06-28 Jason Merrill <jason@redhat.com>
1341 * cp-tree.h (clone_attrs): Declare.
1342 * method.cc (implicitly_declare_fn): Use it for inherited
1344 * optimize.cc (clone_attrs): New.
1345 (maybe_clone_body): Use it.
1347 2023-06-28 Jason Merrill <jason@redhat.com>
1350 * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast
1351 from void* to the type of a pointed-to object.
1353 2023-06-23 David Malcolm <dmalcolm@redhat.com>
1356 * cp-name-hint.h (maybe_suggest_missing_header): New decl.
1357 * decl.cc: Define INCLUDE_MEMORY. Add include of
1358 "cp/cp-name-hint.h".
1359 (start_decl_1): Call maybe_suggest_missing_header.
1360 * name-lookup.cc (maybe_suggest_missing_header): Remove "static".
1362 2023-06-16 Alex Coplan <alex.coplan@arm.com>
1364 * parser.cc (cp_parser_enum_specifier): Don't reject
1365 elaborated-type-specifier with enum-base, instead emit new
1366 Welaborated-enum-base warning.
1368 2023-06-14 Jason Merrill <jason@redhat.com>
1372 * call.cc (joust_maybe_elide_copy): Don't change cand.
1373 (joust): Move the elided tiebreaker later.
1375 2023-06-13 David Malcolm <dmalcolm@redhat.com>
1378 * name-lookup.cc (missing_std_header::~missing_std_header): Reword
1379 note to avoid negative tone of "forgetting".
1381 2023-06-13 Jason Merrill <jason@redhat.com>
1383 * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
1385 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
1387 * parser.cc (cp_parser_omp_clause_map): Reword error message for
1388 clearness especially with 'omp target (enter/exit) data.'
1389 * semantics.cc (handle_omp_array_sections): Handle
1390 GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values.
1392 2023-06-12 Jason Merrill <jason@redhat.com>
1395 * call.cc (convert_like_internal) [ck_list]: Use
1396 maybe_init_list_as_array.
1397 * constexpr.cc (cxx_eval_vec_init_1): Init might have
1399 * tree.cc (build_vec_init_elt): Likewise.
1400 * init.cc (build_vec_init): Handle from_array from a
1401 TARGET_EXPR. Retain TARGET_EXPR of a different type.
1403 2023-06-11 Patrick Palka <ppalka@redhat.com>
1406 * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted
1407 functions needed for constant evaluation.
1408 (instantiate_cx_fn_r): Likewise.
1410 2023-06-11 Patrick Palka <ppalka@redhat.com>
1413 * pt.cc (lookup_template_class): Extend shortcut for looking up the
1414 current class scope to consider outer class scopes too, and use
1415 current_nonlambda_class_type instead of current_class_type. Only
1416 call coerce_template_parms when specializing a primary template.
1418 2023-06-10 Nathan Sidwell <nathan@acm.org>
1421 * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
1423 2023-06-09 Jason Merrill <jason@redhat.com>
1427 * method.cc (build_comparison_op): Give retval a name.
1428 * typeck.cc (check_return_expr): Fix for nameless variables.
1430 2023-06-09 Jason Merrill <jason@redhat.com>
1432 * parser.cc (cp_parser_simple_type_specifier): Check for auto
1433 in template argument.
1434 (cp_parser_template_type_arg): Remove auto checking.
1436 2023-06-09 Jason Merrill <jason@redhat.com>
1439 * call.cc (maybe_init_list_as_array): Check that the element type is
1442 2023-06-07 Jason Merrill <jason@redhat.com>
1446 * cp-tree.h (INIT_EXPR_NRV_P): New.
1447 * semantics.cc (finalize_nrv_r): Check it.
1448 * name-lookup.h (decl_in_scope_p): Declare.
1449 * name-lookup.cc (decl_in_scope_p): New.
1450 * typeck.cc (check_return_expr): Allow non-NRV
1451 returns if the NRV is no longer in scope.
1453 2023-06-07 Jason Merrill <jason@redhat.com>
1456 * typeck.cc (want_nrvo_p): New.
1457 (check_return_expr): Handle -Wnrvo.
1459 2023-06-07 Jason Merrill <jason@redhat.com>
1463 * decl.cc (finish_function): Simplify NRV handling.
1464 * except.cc (maybe_set_retval_sentinel): Also set if NRV.
1465 (maybe_splice_retval_cleanup): Don't add the cleanup region
1466 if we don't need it.
1467 * semantics.cc (nrv_data): Add simple field.
1468 (finalize_nrv): Set it.
1469 (finalize_nrv_r): Check it and retval sentinel.
1470 * cp-tree.h (finalize_nrv): Adjust declaration.
1471 * typeck.cc (check_return_expr): Remove named_labels check.
1473 2023-06-07 Jason Merrill <jason@redhat.com>
1476 * typeck.cc (check_return_expr): Prevent NRV in the presence of
1479 2023-06-07 Jason Merrill <jason@redhat.com>
1482 * except.cc (maybe_splice_retval_cleanup): Change
1483 recognition of function body and try scopes.
1484 * semantics.cc (do_poplevel): Call it after poplevel.
1485 (at_try_scope): New.
1486 * cp-tree.h (maybe_splice_retval_cleanup): Adjust.
1488 2023-06-07 Jason Merrill <jason@redhat.com>
1490 * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
1493 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
1494 Tobias Burnus <tobias@codesourcery.com>
1496 * parser.cc (cp_parser_omp_clause_defaultmap,
1497 cp_parser_omp_clause_map): Parse 'present'.
1498 (cp_parser_omp_clause_from_to): New; parse to/from
1499 clauses with optional 'present' modifier.
1500 (cp_parser_omp_all_clauses): Update call.
1501 (cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
1502 cp_parser_omp_target_exit_data): Handle new enum value for
1504 * semantics.cc (finish_omp_target): Likewise.
1506 2023-06-04 Jason Merrill <jason@redhat.com>
1509 * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN.
1510 (call_terminate_fn): New macro.
1511 * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it.
1512 * except.cc (init_exception_processing): Set it.
1513 (cp_protect_cleanup_actions): Return it.
1515 2023-06-03 Patrick Palka <ppalka@redhat.com>
1518 * pt.cc (is_specialization_of_friend): Fix overbroad check for
1519 a non-template member function of a class template.
1521 2023-06-03 Patrick Palka <ppalka@redhat.com>
1523 * pt.cc (iterative_hash_template_arg): Don't hash
1524 TEMPLATE_TEMPLATE_PARM specially.
1526 2023-06-03 Patrick Palka <ppalka@redhat.com>
1528 * class.cc (build_base_path): Check in_template_context instead
1529 of in_template_function.
1530 (resolves_to_fixed_type_p): Likewise.
1531 * cp-tree.h (in_template_context): Define.
1532 (in_template_function): Remove.
1533 * decl.cc (cp_make_fname_decl): Check current_function_decl
1534 and in_template_context instead of in_template_function.
1535 * decl2.cc (mark_used): Check in_template_context instead of
1536 in_template_function.
1537 * pt.cc (in_template_function): Remove.
1538 * semantics.cc (enforce_access): Check in_template_context
1539 instead of current_template_parms directly.
1541 2023-06-03 Patrick Palka <ppalka@redhat.com>
1544 * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
1546 2023-06-02 Jason Merrill <jason@redhat.com>
1550 * call.cc (sfk_copy_or_move): New.
1551 (joust): Add tiebreaker for explicit conv and copy ctor.
1553 2023-06-02 Jason Merrill <jason@redhat.com>
1557 * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE.
1558 (convert_like_internal) [ck_list]: Set it.
1559 (set_up_extended_ref_temp): Copy it.
1560 * tree.cc (handle_no_unique_addr_attribute): Set it.
1562 2023-06-01 Jason Merrill <jason@redhat.com>
1564 * typeck2.cc (check_narrowing): Check flag_permissive.
1566 2023-05-30 Tobias Burnus <tobias@codesourcery.com>
1569 * parser.cc (cp_parser_oacc_all_clauses,
1570 cp_parser_omp_all_clauses): Improve error wording.
1572 2023-05-19 Andrew Pinski <apinski@marvell.com>
1575 * lang-specs.h ("@c++-header"): Add %w after
1577 ("@c++-system-header"): Likewise.
1578 ("@c++-user-header"): Likewise.
1580 2023-05-19 Patrick Palka <ppalka@redhat.com>
1582 * constraint.cc (normalize_concept_check): Avoid having to do
1583 two norm_cache lookups. Remove unnecessary early exit for an
1584 ill-formed concept definition.
1586 2023-05-19 Patrick Palka <ppalka@redhat.com>
1589 * pt.cc (lookup_and_finish_template_variable): Don't call
1590 convert_from_reference.
1591 (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
1592 convert_from_reference on the result of
1593 lookup_and_finish_template_variable.
1595 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1597 * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h.
1598 (build_conditional_expr): Ditto.
1599 (convert_like_internal): Ditto.
1600 (convert_arg_to_ellipsis): Ditto.
1601 (build_over_call): Ditto.
1602 (compare_ics): Ditto.
1603 * class.cc (is_empty_base_ref): Ditto.
1604 * coroutines.cc (rewrite_param_uses): Ditto.
1605 * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto.
1606 (ARITHMETIC_TYPE_P): Ditto.
1607 * cvt.cc (ocp_convert): Ditto.
1608 * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto.
1609 * decl.cc (layout_var_decl): Ditto.
1610 (get_tuple_size): Ditto.
1611 * error.cc (dump_simple_decl): Ditto.
1612 * lambda.cc (start_lambda_scope): Ditto.
1613 * mangle.cc (write_template_arg): Ditto.
1614 * method.cc (spaceship_comp_cat): Ditto.
1615 * module.cc (node_template_info): Ditto.
1616 (trees_out::start): Ditto.
1617 (trees_out::decl_node): Ditto.
1618 (trees_in::read_var_def): Ditto.
1619 (set_instantiating_module): Ditto.
1620 * name-lookup.cc (maybe_record_mergeable_decl): Ditto.
1621 (consider_decl): Ditto.
1622 (maybe_add_fuzzy_decl): Ditto.
1623 * pt.cc (convert_nontype_argument): Ditto.
1624 * semantics.cc (handle_omp_array_sections_1): Ditto.
1625 (finish_omp_clauses): Ditto.
1626 (finish_omp_target_clauses_r): Ditto.
1627 (is_this_parameter): Ditto.
1628 * tree.cc (build_cplus_array_type): Ditto.
1629 (is_this_expression): Ditto.
1630 * typeck.cc (do_warn_enum_conversions): Ditto.
1631 * typeck2.cc (store_init_value): Ditto.
1632 (check_narrowing): Ditto.
1634 2023-05-17 Jakub Jelinek <jakub@redhat.com>
1637 * init.cc (build_zero_init_1): Don't initialize zero-width bitfields.
1638 For unions only initialize the first FIELD_DECL.
1640 2023-05-16 Marek Polacek <polacek@redhat.com>
1643 * typeck.cc (check_return_expr): In a template, return only after
1644 suppressing -Wdangling-reference.
1646 2023-05-16 Patrick Palka <ppalka@redhat.com>
1649 * call.cc (add_list_candidates): Check for invalid designated
1650 initialization sooner and even for types that have a list
1653 2023-05-11 Patrick Palka <ppalka@redhat.com>
1656 * typeck2.cc (poison_mutable_constructors): Define.
1657 (store_init_value): Use it instead of setting
1658 CONSTRUCTOR_MUTABLE_POISON directly.
1660 2023-05-11 Patrick Palka <ppalka@redhat.com>
1661 Jonathan Wakely <jwakely@redhat.com>
1666 * pt.cc (convert_nontype_argument_function): Remove linkage
1667 requirement for C++17 and later.
1668 (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict
1669 DECL_ARTIFICIAL rejection test to VAR_DECL.
1671 2023-05-10 Marek Polacek <polacek@redhat.com>
1674 * method.cc (build_trait_object): New.
1675 (assignable_expr): Use it.
1676 (ref_xes_from_temporary): Likewise.
1677 (is_convertible_helper): Likewise. Check FUNC_OR_METHOD_TYPE_P.
1679 2023-05-10 Jason Merrill <jason@redhat.com>
1681 * call.cc (convert_like_internal): Share ck_ref_bind handling
1682 between all bad conversions.
1684 2023-05-10 Jason Merrill <jason@redhat.com>
1687 * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve
1689 (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P.
1690 * typeck2.cc (store_init_value): Diagnose constinit sooner.
1692 2023-05-10 Jason Merrill <jason@redhat.com>
1694 * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
1695 for address of immediate fn.
1696 (maybe_constant_init_1): Evaluate PTRMEM_CST.
1698 2023-05-10 Jakub Jelinek <jakub@redhat.com>
1701 * parser.cc (cp_parser_std_attribute): For unknown attributes with
1702 arguments set TREE_VALUE (attribute) to error_mark_node after skipping
1703 the balanced tokens.
1704 (cp_parser_std_attribute_list): If ... is used after attribute without
1705 arguments, diagnose it and return error_mark_node. If
1706 TREE_VALUE (attribute) is error_mark_node, don't call
1707 make_pack_expansion nor return early error_mark_node.
1709 2023-05-09 Patrick Palka <ppalka@redhat.com>
1712 * constraint.cc (satisfaction_cache::satisfaction_cache): In the
1713 unexpected case of evaluating an atom for the first time noisily,
1714 remove the cache slot that we inserted.
1716 2023-05-09 Patrick Palka <ppalka@redhat.com>
1719 * parser.cc (cp_parser_class_specifier): Don't pass a class
1720 context to noexcept_override_late_checks.
1721 (noexcept_override_late_checks): Remove 'type' parameter
1722 and use DECL_CONTEXT of 'fndecl' instead.
1724 2023-05-09 Jakub Jelinek <jakub@redhat.com>
1727 * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
1728 expansion of assume attribute.
1730 2023-05-08 Patrick Palka <ppalka@redhat.com>
1734 * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context
1735 calls to happen before do_class_deduction. Add some
1736 error_mark_node tests.
1738 2023-05-07 Patrick Palka <ppalka@redhat.com>
1741 * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
1742 <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
1743 * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
1745 2023-05-07 Patrick Palka <ppalka@redhat.com>
1749 * decl.cc (decl_jump_unsafe): Return bool instead of int.
1750 Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
1751 (check_previous_goto_1): Simplify now that decl_jump_unsafe
1752 returns bool instead of int.
1753 (check_goto): Likewise.
1755 2023-05-07 Patrick Palka <ppalka@redhat.com>
1757 * pt.cc (instantiate_alias_template): Exit early upon
1758 error from coerce_template_parms. Remove dependence test
1759 guarding constraints_satisfied_p.
1761 2023-05-07 Patrick Palka <ppalka@redhat.com>
1763 * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via
1764 TEMPLATE_TYPE_PARM_CHECK.
1765 (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK.
1766 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via
1767 TEMPLATE_TEMPLATE_PARM_CHECK.
1768 * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier):
1769 Guard PLACEHOLDER_TYPE_CONSTRAINTS access.
1770 * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate
1771 variable to store CLASS_PLACEHOLDER_TEMPLATE result.
1772 * pt.cc (outer_template_args): Use strip_innermost_template_args.
1773 (any_type_dependent_arguments_p): Exit early if
1774 !processing_template_decl. Use range-based for.
1775 (any_dependent_template_arguments_p): Likewise.
1777 2023-05-07 Patrick Palka <ppalka@redhat.com>
1780 * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
1781 REF_PARENTHESIZED_P more generally via force_paren_expr.
1782 * semantics.cc (force_paren_expr): Document default argument.
1784 2023-05-07 Patrick Palka <ppalka@redhat.com>
1787 * pt.cc (coerce_template_args_for_ttp): Mention we can hit the
1788 current_template_parms fallback when level-lowering a bound ttp.
1789 (tsubst_template_decl): Add lambda_tparms parameter. Prefer to
1790 use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS.
1791 (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms
1792 to tsubst_template_decl.
1793 (tsubst_lambda_expr): For a generic lambda, substitute
1794 DECL_TEMPLATE_PARMS and set current_template_parms to it
1795 before substituting the function type. Pass the substituted
1796 DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl.
1798 2023-05-07 Patrick Palka <ppalka@redhat.com>
1801 * semantics.cc (enforce_access): Check current_template_parms
1802 instead of processing_template_decl when deciding whether to
1803 defer the access check.
1805 2023-05-07 Patrick Palka <ppalka@redhat.com>
1808 * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
1809 Reorganize to call get_fns sooner. Remove special handling of
1810 the object argument of a non-static member function call. Remove
1811 dead store to 'fun'.
1813 2023-05-05 Jason Merrill <jason@redhat.com>
1816 2023-04-27 Jason Merrill <jason@redhat.com>
1819 * pt.cc (instantiate_decl): Assert !defer_ok for local
1822 2023-05-03 Jason Merrill <jason@redhat.com>
1826 * friend.cc (do_friend): Don't call check_explicit_specialization if
1827 DECL_TEMPLATE_INFO is already set.
1828 * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO.
1829 * name-lookup.cc (set_decl_namespace): Likewise.
1831 2023-05-03 Jakub Jelinek <jakub@redhat.com>
1833 * cp-gimplify.cc (cp_fold_data): Move definition earlier.
1834 (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false
1835 constructed data rather than &pset to cp_walk_tree with cp_fold_r.
1837 2023-05-03 Jason Merrill <jason@redhat.com>
1839 * pt.cc (reduce_template_parm_level): Fix comparison of
1840 template template parm to cached version.
1842 2023-05-02 Jason Merrill <jason@redhat.com>
1844 * pt.cc (instantiate_class_template): Skip the RECORD_TYPE
1845 of a class template.
1846 (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE.
1848 2023-05-02 Jason Merrill <jason@redhat.com>
1850 * name-lookup.cc (pop_from_top_level): Don't
1851 invalidate_class_lookup_cache.
1853 2023-05-02 Jason Merrill <jason@redhat.com>
1856 * cp-tree.h (lookup_base): Add offset parm.
1857 * constexpr.cc (cxx_fold_indirect_ref_1): Pass it.
1858 * search.cc (struct lookup_base_data_s): Add offset.
1859 (dfs_lookup_base): Handle it.
1860 (lookup_base): Pass it.
1862 2023-05-02 Jason Merrill <jason@redhat.com>
1865 * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
1867 2023-05-01 Jason Merrill <jason@redhat.com>
1870 * name-lookup.cc (maybe_push_to_top_level)
1871 (maybe_pop_from_top_level): Split out...
1872 * pt.cc (instantiate_body): ...from here.
1873 * init.cc (maybe_instantiate_nsdmi_init): Use them.
1874 * name-lookup.h: Declare them..
1876 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
1878 * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
1880 2023-04-27 Jason Merrill <jason@redhat.com>
1882 * call.cc (print_conversion_rejection): Use iloc_sentinel.
1884 2023-04-27 Jason Merrill <jason@redhat.com>
1887 * pt.cc (instantiate_decl): Assert !defer_ok for local
1890 2023-04-26 Jason Merrill <jason@redhat.com>
1892 * init.cc (nsdmi_inst): Remove.
1893 (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
1895 2023-04-26 Jason Merrill <jason@redhat.com>
1898 * pt.cc (instantiate_class_template): Do partially instantiate.
1899 (tsubst_expr): Do call complete_type for partial instantiations.
1901 2023-04-26 Jason Merrill <jason@redhat.com>
1904 * pt.cc (regenerate_decl_from_template): Skip unique friends.
1906 2023-04-26 Patrick Palka <ppalka@redhat.com>
1908 * pt.cc (most_specialized_partial_spec): Exit early when
1909 DECL_TEMPLATE_SPECIALIZATIONS is empty. Move local variable
1910 declarations closer to their first use. Remove redundant
1911 flag_concepts test. Remove redundant forward declaration.
1913 2023-04-25 Patrick Palka <ppalka@redhat.com>
1916 * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
1917 Suppress conservative early exit for reference variables
1918 when DECL_HAS_VALUE_EXPR_P.
1920 2023-04-25 Tobias Burnus <tobias@codesourcery.com>
1922 * parser.cc (cp_parser_omp_scan_loop_body): Handle
1923 zero exec statements before/after 'omp scan'.
1925 2023-04-24 Patrick Palka <ppalka@redhat.com>
1927 * cp-tree.h (cp_expr_location): Define here.
1928 * tree.cc (cp_expr_location): Don't define here.
1930 2023-04-21 Jason Merrill <jason@redhat.com>
1933 * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned
1934 typedef' pedwarn. Use c_common_signed_or_unsigned_type. Also
1935 handle 'signed typedef'.
1937 2023-04-21 Patrick Palka <ppalka@redhat.com>
1939 * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
1940 <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
1941 <case ALIGNOF_EXPR etc>: Likewise.
1943 2023-04-20 Patrick Palka <ppalka@redhat.com>
1945 * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: Don't recurse when
1946 level lowering a cv-qualified type template parameter. Remove
1947 recursive loop breaker in the level lowering case for constrained
1948 autos. Use the TEMPLATE_PARM_DESCENDANTS cache in this case as
1951 2023-04-20 Patrick Palka <ppalka@redhat.com>
1953 * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC
1954 of arguments into a TREE_LIST for sake of pretty printing.
1955 * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC
1956 instead of TREE_LIST of trailing variadic trait arguments.
1957 * method.cc (constructible_expr): Likewise.
1958 (is_xible_helper): Likewise.
1959 * parser.cc (cp_parser_trait): Represent trailing variadic trait
1960 arguments as a TREE_VEC instead of TREE_LIST.
1961 * pt.cc (value_dependent_expression_p): Handle TREE_VEC
1962 instead of TREE_LIST of trailing variadic trait arguments.
1963 * semantics.cc (finish_type_pack_element): Likewise.
1964 (check_trait_type): Likewise.
1966 2023-04-20 Patrick Palka <ppalka@redhat.com>
1968 * tree.cc (strip_typedefs): Move TREE_LIST handling to
1969 strip_typedefs_expr. Dispatch to strip_typedefs_expr for
1971 <case TYPENAME_TYPE>: Remove manual dispatching to
1972 strip_typedefs_expr.
1973 <case TRAIT_TYPE>: Likewise.
1974 (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
1975 with strip_typedefs throughout. Don't dispatch to strip_typedefs
1977 <case TREE_LIST>: Replace this with the better version from
1980 2023-04-19 Patrick Palka <ppalka@redhat.com>
1981 Jonathan Wakely <jwakely@redhat.com>
1984 * cp-trait.def (TYPE_PACK_ELEMENT): Define.
1985 * cp-tree.h (finish_trait_type): Add complain parameter.
1986 * cxx-pretty-print.cc (pp_cxx_trait): Handle
1987 CPTK_TYPE_PACK_ELEMENT.
1988 * parser.cc (cp_parser_constant_expression): Document default
1990 (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT. Pass
1991 tf_warning_or_error to finish_trait_type.
1992 * pt.cc (tsubst) <case TRAIT_TYPE>: Handle non-type first
1993 argument. Pass complain to finish_trait_type.
1994 * semantics.cc (finish_type_pack_element): Define.
1995 (finish_trait_type): Add complain parameter. Handle
1996 CPTK_TYPE_PACK_ELEMENT.
1997 * tree.cc (strip_typedefs): Handle non-type first argument.
1998 Pass tf_warning_or_error to finish_trait_type.
1999 * typeck.cc (structural_comptypes) <case TRAIT_TYPE>: Use
2000 cp_tree_equal instead of same_type_p for the first argument.
2002 2023-04-19 Patrick Palka <ppalka@redhat.com>
2005 * pt.cc (try_class_unification): Don't ggc_free the copy of
2008 2023-04-19 Jason Merrill <jason@redhat.com>
2011 * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
2013 2023-04-17 Patrick Palka <ppalka@redhat.com>
2016 * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
2017 In the level-lowering case just use lookup_template_class
2018 to rebuild the bound ttp.
2020 2023-04-15 Jason Merrill <jason@redhat.com>
2023 * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
2024 Check for complex initializer.
2026 2023-04-13 Patrick Palka <ppalka@redhat.com>
2029 * decl.cc (make_typename_type): Also ignore non-types during the
2030 lookup if tag_type corresponds to an elaborated-type-specifier.
2031 * pt.cc (tsubst) <case TYPENAME_TYPE>: Pass class_type or
2032 enum_type as tag_type to make_typename_type accordingly instead
2033 of always passing typename_type.
2035 2023-04-13 Jason Merrill <jason@redhat.com>
2038 * semantics.cc (check_trait_type): Handle incomplete type directly.
2039 * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert.
2041 2023-04-13 Jason Merrill <jason@redhat.com>
2043 * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
2044 * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
2046 2023-04-12 Jakub Jelinek <jakub@redhat.com>
2048 * Make-lang.in (s-cp-module-version): New target.
2049 (cp/module.o): Depend on it.
2050 (MODULE_VERSION): Remove variable.
2051 (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just
2052 cat s-cp-module-version.
2054 2023-04-09 Iain Sandoe <iain@sandoe.co.uk>
2056 * coroutines.cc (coro_rewrite_function_body): Ensure that added
2057 bind expressions have scope blocks.
2059 2023-04-04 Jason Merrill <jason@redhat.com>
2062 * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
2064 2023-04-03 Patrick Palka <ppalka@redhat.com>
2067 * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
2068 with no initializer, instead of asserting.
2070 2023-04-01 Patrick Palka <ppalka@redhat.com>
2073 * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter.
2074 * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to
2076 (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
2077 'in_decl' to coerce_template_parms.
2078 (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE
2079 as 'tmpl' to do_auto_deduction.
2080 (do_auto_deduction): Document default arguments. Rename local
2081 variable 'tmpl' to 'ctmpl'. Use 'tmpl' to obtain a full set of
2082 template arguments for satisfaction in the adc_unify case.
2084 2023-04-01 Patrick Palka <ppalka@redhat.com>
2088 * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of
2090 (instantiate_class_template): Call mark_template_arguments_used.
2091 (tsubst_copy_and_build) <case CALL_EXPR>: Revert r13-995 change.
2092 (mark_template_arguments_used): Define.
2093 (instantiate_body): Call mark_template_arguments_used.
2095 2023-04-01 Iain Sandoe <iain@sandoe.co.uk>
2098 * coroutines.cc (flatten_await_stmt): Use the current count of
2099 promoted temporaries to build a unique name for the frame entries.
2101 2023-03-30 Jason Merrill <jason@redhat.com>
2104 * search.cc (type_context_for_name_lookup): New.
2105 (accessible_p): Handle anonymous union.
2106 * init.cc (maybe_instantiate_nsdmi_init): Use
2107 type_context_for_name_lookup.
2108 * parser.cc (cp_parser_class_specifier): Likewise.
2109 * cp-tree.h (type_context_for_name_lookup): Declare.
2111 2023-03-30 Jason Merrill <jason@redhat.com>
2114 * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
2117 2023-03-30 Jakub Jelinek <jakub@redhat.com>
2120 * decl2.cc (grok_array_decl): After emitting a pedwarn for
2121 -Wcomma-subscript, if processing_template_decl set orig_index_exp
2122 to compound expr from orig_index_exp_list.
2124 2023-03-30 Jason Merrill <jason@redhat.com>
2128 * decl2.cc (record_mangling): Use symtab_node::reset.
2130 2023-03-30 Jakub Jelinek <jakub@redhat.com>
2133 * call.cc (convert_like_internal): If pedwarn for extended float
2134 type conversions doesn't report anything, avoid calling
2135 maybe_inform_about_fndecl_for_bogus_argument_init.
2137 2023-03-29 Jason Merrill <jason@redhat.com>
2141 * pt.cc (alias_ctad_tweaks): Rewrite deduced args.
2142 (type_targs_deducible_from): Handle null pack deduction.
2144 2023-03-28 David Malcolm <dmalcolm@redhat.com>
2147 * parser.cc (cp_parser_binary_expression): Update for new param of
2148 check_for_xor_used_as_pow.
2150 2023-03-28 Jakub Jelinek <jakub@redhat.com>
2153 * contracts.cc: Include intl.h.
2154 (check_postcondition_result): Don't form diagnostics from two halves
2155 of an English message to allow translations.
2157 2023-03-24 Patrick Palka <ppalka@redhat.com>
2160 * parser.cc (cp_parser_class_specifier): Clear current_class_ptr
2161 and current_class_ref sooner, before parsing a class definition.
2163 2023-03-24 Jason Merrill <jason@redhat.com>
2166 * pt.cc (type_unification_real): Adjust for partial ordering.
2168 2023-03-23 Jason Merrill <jason@redhat.com>
2171 * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
2172 and location wrappers.
2174 2023-03-23 Marek Polacek <polacek@redhat.com>
2177 * call.cc (class_has_reference_member_p): New.
2178 (class_has_reference_member_p_r): New.
2179 (reference_like_class_p): Don't look for a specific constructor.
2180 Use a DFS walk with class_has_reference_member_p_r.
2182 2023-03-23 Jason Merrill <jason@redhat.com>
2185 * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
2187 2023-03-22 Jason Merrill <jason@redhat.com>
2190 * pt.cc (unify): Use fold of build_nop instead of fold_convert.
2192 2023-03-22 Jason Merrill <jason@redhat.com>
2195 * semantics.cc (finish_id_expression_1): Check scope before
2196 returning id_expression.
2198 2023-03-22 Alex Coplan <alex.coplan@arm.com>
2201 * call.cc (build_over_call): Use make_temp_override to suppress
2202 both unavailable and deprecated warnings when calling
2205 2023-03-21 Jason Merrill <jason@redhat.com>
2208 * init.cc (maybe_instantiate_nsdmi_init): Don't leave
2209 current_function_decl set to a constructor.
2211 2023-03-20 Marek Polacek <polacek@redhat.com>
2214 * call.cc (add_template_candidate_real): Add explicit decls to the
2215 set of candidates when the initializer is a braced-init-list.
2217 2023-03-20 Jakub Jelinek <jakub@redhat.com>
2220 * cp-tree.h (var_needs_tls_wrapper): Declare.
2221 * decl2.cc (var_needs_tls_wrapper): No longer static.
2222 * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables
2223 for which a TLS wrapper will be needed.
2225 2023-03-17 Jason Merrill <jason@redhat.com>
2228 * lambda.cc (prune_lambda_captures): Don't bother in a template.
2230 2023-03-17 Jason Merrill <jason@redhat.com>
2233 * except.cc (build_throw): Check dtor access.
2235 2023-03-17 Jason Merrill <jason@redhat.com>
2238 * friend.cc (do_friend): Handle namespace as scope argument.
2239 * decl.cc (grokdeclarator): Pass down in_namespace.
2241 2023-03-16 Jason Merrill <jason@redhat.com>
2244 * init.cc (get_nsdmi): Split out...
2245 (maybe_instantiate_nsdmi_init): ...this function.
2246 * cp-tree.h: Declare it.
2247 * pt.cc (tsubst_expr): Use it.
2249 2023-03-16 Jason Merrill <jason@redhat.com>
2252 * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
2254 2023-03-16 Jason Merrill <jason@redhat.com>
2257 * semantics.cc (finish_qualified_id_expr): Don't try to build a
2258 pointer-to-member if the scope is an enumeration.
2260 2023-03-16 Patrick Palka <ppalka@redhat.com>
2263 * constexpr.cc (maybe_constant_init_1): For an unevaluated
2264 non-manifestly-constant operand, don't constant evaluate
2265 and instead call fold_to_constant as in maybe_constant_value.
2267 2023-03-16 Patrick Palka <ppalka@redhat.com>
2270 * constraint.cc (satisfaction_cache::get): Relax overly strict
2271 checking assert in the constraint recursion case.
2273 2023-03-16 Jason Merrill <jason@redhat.com>
2276 * coroutines.cc (build_co_await): Handle lvalue 'o'.
2278 2023-03-15 Jason Merrill <jason@redhat.com>
2282 * typeck.cc (cp_build_modify_expr): Allow array initialization of
2283 DECL_ARTIFICIAL variable.
2285 2023-03-15 Marek Polacek <polacek@redhat.com>
2288 * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
2290 2023-03-15 Jason Merrill <jason@redhat.com>
2293 * semantics.cc (check_template_template_default_arg): Check
2294 maybe_get_template_decl_from_type_decl.
2296 2023-03-15 Jason Merrill <jason@redhat.com>
2301 * pt.cc (coerce_template_template_parms): Use args from
2302 DECL_CONTEXT (arg_tmpl) instead of outer_args.
2304 2023-03-15 Jason Merrill <jason@redhat.com>
2307 * pt.cc (coerce_template_template_parms): Take the arg and parm
2309 (coerce_template_template_parm): Adjust.
2310 (template_template_parm_bindings_ok_p): Adjust.
2311 (convert_template_argument): Adjust.
2313 2023-03-14 Patrick Palka <ppalka@redhat.com>
2316 * pt.cc (push_inline_template_parms_recursive): Set
2317 TEMPLATE_PARMS_CONSTRAINTS.
2318 (push_template_decl): For an out-of-line declaration, verify
2319 constraints for each enclosing template scope match those of the
2320 original template declaratation.
2322 2023-03-14 Patrick Palka <ppalka@redhat.com>
2325 * pt.cc (redeclare_class_template): Add missing "of" in
2326 constraint mismatch diagnostic.
2327 (tsubst_friend_class): For an already declared class template,
2328 substitute and pass the friend declaration's constraints to
2329 redeclare_class_template instead of passing the existing
2330 template's constraints.
2332 2023-03-14 Jason Merrill <jason@redhat.com>
2335 * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
2338 2023-03-14 Jason Merrill <jason@redhat.com>
2341 * cp-gimplify.cc (genericize_if_stmt): Restore folding
2342 of constant conditions.
2344 2023-03-14 Jakub Jelinek <jakub@redhat.com>
2347 * tree.cc (record_has_unique_obj_representations): Ignore unnamed
2350 2023-03-13 Jason Merrill <jason@redhat.com>
2353 * parser.cc (cp_parser_set_decl_spec_type): Use
2354 redefined_builtin_type for extended_float_type_p.
2356 2023-03-13 Marek Polacek <polacek@redhat.com>
2359 * call.cc (reference_like_class_p): Check for std::span.
2361 2023-03-10 Jakub Jelinek <jakub@redhat.com>
2364 * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on
2365 automatic non-aggregate variables just because of
2366 -fmerge-all-constants.
2368 2023-03-10 Jakub Jelinek <jakub@redhat.com>
2371 * class.cc (end_of_class): For bit-fields, instead of computing
2372 offset as sum of byte_position (field) and DECL_SIZE_UNIT (field),
2373 compute it as sum of bit_position (field) and DECL_SIZE (field)
2374 divided by BITS_PER_UNIT rounded up.
2376 2023-03-10 Jason Merrill <jason@redhat.com>
2379 * lambda.cc (compare_lambda_template_head): Check more
2380 for error_mark_node.
2382 2023-03-10 Jason Merrill <jason@redhat.com>
2385 * mangle.cc (anon_aggr_naming_decl): New.
2386 (write_unqualified_name): Use it.
2388 2023-03-10 Jakub Jelinek <jakub@redhat.com>
2391 * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
2392 after diagnosing it.
2394 2023-03-10 Jason Merrill <jason@redhat.com>
2397 * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
2399 2023-03-10 Jason Merrill <jason@redhat.com>
2402 * class.cc (instantiate_type): Strip location wrapper.
2404 2023-03-09 Jason Merrill <jason@redhat.com>
2407 * init.cc (find_allocator_temps_r): New.
2408 (combine_allocator_temps): Replace find_allocator_temp.
2409 (build_vec_init): Adjust.
2411 2023-03-09 Jason Merrill <jason@redhat.com>
2415 * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
2417 2023-03-09 Jason Merrill <jason@redhat.com>
2418 Michael Spertus <mike@spertus.com>
2421 * pt.cc (corresponding_template_parameter_list): Split out...
2422 (corresponding_template_parameter): ...from here.
2423 (find_template_parameters): Factor out...
2424 (find_template_parameter_info::find_in): ...this function.
2425 (find_template_parameter_info::find_in_recursive): New.
2426 (find_template_parameter_info::found): New.
2427 (alias_ctad_tweaks): Only add parms used in the deduced args.
2429 2023-03-09 Jason Merrill <jason@redhat.com>
2431 * cp-trait.def (IS_DEDUCIBLE): Add space to name.
2433 2023-03-09 Jason Merrill <jason@redhat.com>
2436 * cp-trait.def (IS_DEDUCIBLE): New.
2437 * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type.
2438 * parser.cc (cp_parser_trait): Likewise.
2439 * tree.cc (cp_tree_equal): Likewise.
2440 * pt.cc (tsubst_copy_and_build): Likewise.
2441 (type_targs_deducible_from): New.
2442 (alias_ctad_tweaks): Use it.
2443 * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE.
2444 (finish_trait_expr): Likewise.
2445 * constraint.cc (diagnose_trait_expr): Likewise.
2446 * cp-tree.h (type_targs_deducible_from): Declare.
2448 2023-03-07 Jason Merrill <jason@redhat.com>
2452 * pt.cc (tsubst_function_decl): Don't replace the closure
2453 parameter if DECL_STATIC_FUNCTION_P.
2455 2023-03-07 Marek Polacek <polacek@redhat.com>
2458 * call.cc (reference_like_class_p): New.
2459 (do_warn_dangling_reference): Add new bool parameter. See through
2460 reference_like_class_p.
2462 2023-03-07 Jakub Jelinek <jakub@redhat.com>
2465 * rtti.cc (emit_support_tinfo_1): Don't assert that last
2466 unemitted_tinfo_decls element is tinfo, instead pop from it only in
2468 * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl
2469 for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL.
2471 2023-03-07 Marek Polacek <polacek@redhat.com>
2474 * constexpr.cc (cxx_eval_call_expression): Relax assert.
2476 2023-03-07 Marek Polacek <polacek@redhat.com>
2479 * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
2480 'any' when recursing on a VAR_DECL and not a pointer to function.
2482 2023-03-04 Jakub Jelinek <jakub@redhat.com>
2485 * constexpr.cc: Include toplev.h.
2486 (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a local
2487 static initialized by constant expression outside of a constexpr
2488 function which has been deferred by make_rtl_for_nonlocal_decl,
2489 call rest_of_decl_compilation on it.
2491 2023-03-03 Patrick Palka <ppalka@redhat.com>
2494 * pt.cc (el_data::skipped_trees): New data member.
2495 (extract_locals_r): Push to skipped_trees any unevaluated
2496 contexts that we skipped over.
2497 (extract_local_specs): For the second walk, start from each
2498 tree in skipped_trees.
2500 2023-03-03 Alexandre Oliva <oliva@adacore.com>
2502 * typeck.cc (cp_build_binary_op): Suppress redundant warning
2503 for pfn null test in pmfn test with vbit-in-delta.
2505 2023-03-02 Jakub Jelinek <jakub@redhat.com>
2508 * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE
2510 (fallback_dfloat32_type, fallback_dfloat64_type,
2511 fallback_dfloat128_type): Remove.
2512 * rtti.cc (emit_support_tinfo_1): If not emitted already, call
2513 emit_tinfo_decl and remove from unemitted_tinfo_decls right away.
2514 (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array
2515 into new fundamentals_with_fallback array. Call emit_support_tinfo_1
2516 on elements of that array too, with the difference that if
2517 the type is NULL, use a fallback REAL_TYPE for it temporarily.
2518 Drop the !targetm.decimal_float_supported_p () handling. Call
2519 targetm.emit_support_tinfos at the end.
2520 * mangle.cc (write_builtin_type): Remove references to
2521 fallback_dfloat*_type. Handle bfloat16_type_node mangling.
2523 2023-03-02 Patrick Palka <ppalka@redhat.com>
2527 * cp-gimplify.cc (cp_fully_fold): Add an internal overload that
2528 additionally takes and propagate an mce_value parameter, and
2529 define the existing public overload in terms of it.
2530 (cp_fully_fold_init): Pass mce_false to cp_fully_fold.
2532 2023-03-02 Patrick Palka <ppalka@redhat.com>
2535 * constexpr.cc (maybe_constant_init_1): Override
2536 manifestly_const_eval to true if is_static.
2538 2023-03-02 Jakub Jelinek <jakub@redhat.com>
2541 * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
2542 DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
2543 of USING_STMT or input_location.
2545 2023-03-02 Marek Polacek <polacek@redhat.com>
2548 * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first
2549 lookup of SPEC didn't find anything, try to look for
2550 most_general_template.
2552 2023-03-02 Jakub Jelinek <jakub@redhat.com>
2555 * parser.cc (cp_convert_omp_range_for): Allow in assert
2556 decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has
2557 error_mark_node type.
2558 (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back
2559 on decls which have error_mark_node type.
2561 2023-03-01 Marek Polacek <polacek@redhat.com>
2564 * constexpr.cc (cxx_eval_constant_expression): Emit an error when
2565 a PTRMEM_CST cannot be evaluated.
2567 2023-03-01 Patrick Palka <ppalka@redhat.com>
2569 * pt.cc (tsubst_scope): Define.
2570 (tsubst_decl) <case USING_DECL>: Call tsubst_scope instead of
2571 calling tsubst_scope with tf_qualifying_scope set.
2572 (tsubst_qualified_id): Call tsubst_scope instead of
2573 calling tsubst with tf_qualifying_scope set.
2574 (tsubst_copy): Immediately delegate to tsubst for all TYPE_P
2575 trees. Remove tf_qualifying_scope manipulation.
2576 <case SCOPE_REF>: Call tsubst_scope instead of calling
2577 tsubst with tf_qualifying_scope set.
2579 2023-03-01 Patrick Palka <ppalka@redhat.com>
2580 Jason Merrill <jason@redhat.com>
2584 * constexpr.cc (fold_to_constant): Define.
2585 (maybe_constant_value): Move up early exit test for unevaluated
2586 operands. Try reducing an unevaluated operand to a constant via
2588 (fold_non_dependent_expr_template): Add early exit test for
2589 CONSTANT_CLASS_P nodes. Try reducing an unevaluated operand
2590 to a constant via fold_to_constant.
2591 * cp-tree.h (fold_to_constant): Declare.
2593 2023-03-01 Jakub Jelinek <jakub@redhat.com>
2596 * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
2597 Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
2600 2023-02-28 Patrick Palka <ppalka@redhat.com>
2603 * pt.cc (finish_template_variable): Move dependence check
2605 (lookup_and_finish_template_variable): ... here.
2606 * semantics.cc (finish_id_expression_1): Call
2607 finish_template_variable sooner, before (and regardless of) the
2608 type_dependent_expression_p test.
2610 2023-02-28 Marek Polacek <polacek@redhat.com>
2613 * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
2615 2023-02-20 Marek Polacek <polacek@redhat.com>
2618 * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
2619 constructor/op= with a checking assert.
2621 2023-02-20 Marek Polacek <polacek@redhat.com>
2624 * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P.
2625 (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to
2626 prepend_one_capture.
2628 2023-02-18 Jason Merrill <jason@redhat.com>
2638 * semantics.cc (finish_static_assert): Don't diagnose in
2641 2023-02-17 Patrick Palka <ppalka@redhat.com>
2645 * cp-gimplify.cc (enum fold_flags): Define.
2646 (fold_flags_t): Declare.
2647 (cp_fold_data::genericize): Replace this data member with ...
2648 (cp_fold_data::fold_flags): ... this.
2649 (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold.
2650 (cp_fold_function): Likewise.
2651 (cp_fold_maybe_rvalue): Add an internal overload that
2652 additionally takes and propagates a fold_flags_t parameter, and
2653 define the existing public overload in terms of it.
2654 (cp_fold_rvalue): Likewise.
2655 (cp_fully_fold_init): Adjust use of cp_fold_data.
2656 (fold_cache): Replace with ...
2657 (fold_caches): ... this 2-element array of caches.
2658 (get_fold_cache): Define.
2659 (clear_fold_cache): Adjust.
2660 (cp_fold): Add fold_flags_t parameter. Use get_fold_cache.
2661 Pass flags to calls to cp_fold, cp_fold_rvalue and
2662 cp_fold_maybe_rvalue.
2663 <case CALL_EXPR>: If ff_mce_false is set, fold
2664 __builtin_is_constant_evaluated to false and pass mce_false to
2665 maybe_constant_value.
2667 2023-02-17 Patrick Palka <ppalka@redhat.com>
2669 * constexpr.cc (constexpr_call::manifestly_const_eval): Give
2670 it type int instead of bool.
2671 (constexpr_ctx::manifestly_const_eval): Give it type mce_value
2673 (cxx_eval_builtin_function_call): Adjust after making
2674 manifestly_const_eval tri-state.
2675 (cxx_eval_call_expression): Likewise.
2676 (cxx_eval_binary_expression): Likewise.
2677 (cxx_eval_conditional_expression): Likewise.
2678 (cxx_eval_constant_expression): Likewise.
2679 (cxx_eval_outermost_constant_expr): Likewise.
2680 (cxx_constant_value): Likewise.
2681 (cxx_constant_dtor): Likewise.
2682 (maybe_constant_value): Give manifestly_const_eval parameter
2683 type mce_value instead of bool and adjust accordingly.
2684 (fold_non_dependent_expr_template): Adjust call
2685 to cxx_eval_outermost_constant_expr.
2686 (fold_non_dependent_expr): Likewise.
2687 (maybe_constant_init_1): Likewise.
2688 * constraint.cc (satisfy_atom): Adjust call to
2689 maybe_constant_value.
2690 * cp-tree.h (enum class mce_value): Define.
2691 (maybe_constant_value): Adjust manifestly_const_eval parameter
2692 type and default argument.
2693 * decl.cc (compute_array_index_type_loc): Adjust call to
2694 maybe_constant_value.
2695 * pt.cc (convert_nontype_argument): Likewise.
2697 2023-02-16 Patrick Palka <ppalka@redhat.com>
2700 * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope.
2701 * decl.cc (make_typename_type): Use lookup_member instead of
2702 lookup_field. If tf_qualifying_scope is set, pass want_type=true
2703 instead of =false to lookup_member. Generalize format specifier
2704 in diagnostic to handle both type and non-type bindings.
2705 * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope. Tidy
2707 (tsubst_decl) <case USING_DECL>: Set tf_qualifying_scope when
2708 substituting USING_DECL_SCOPE.
2709 (tsubst): Clear tf_qualifying_scope right away and remember if
2710 it was set. Do the same for tf_tst_ok sooner.
2711 <case TYPENAME_TYPE>: Set tf_qualifying_scope when substituting
2712 TYPE_CONTEXT. Pass tf_qualifying_scope to make_typename_type
2714 (tsubst_qualified_id): Set tf_qualifying_scope when substituting
2716 (tsubst_copy): Clear tf_qualifying_scope and remember if it was
2718 <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
2720 <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
2721 * search.cc (lookup_member): Document default argument.
2723 2023-02-16 Patrick Palka <ppalka@redhat.com>
2725 * cp-tree.h: Mechanically drop static from static inline
2726 functions via s/^static inline/inline/g.
2728 2023-02-15 Marek Polacek <polacek@redhat.com>
2731 * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
2733 2023-02-10 Marek Polacek <polacek@redhat.com>
2736 * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
2738 2023-02-09 Tobias Burnus <tobias@codesourcery.com>
2740 * parser.cc (cp_parser_omp_allocate): Parse align
2741 clause and check for restrictions.
2743 2023-02-09 Jakub Jelinek <jakub@redhat.com>
2746 * mangle.cc (write_expression, write_template_arg): Handle
2747 EXCESS_PRECISION_EXPR with REAL_CST operand as
2748 write_template_arg_literal on fold_convert of the REAL_CST
2749 to EXCESS_PRECISION_EXPR type.
2751 2023-02-06 Patrick Palka <ppalka@redhat.com>
2754 * cp-tree.h (call_expr_dependent_name): Declare.
2755 * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: Use
2756 call_expr_dependent_name instead of dependent_name.
2757 * tree.cc (call_expr_dependent_name): Define.
2758 (called_fns_equal): Adjust to take two CALL_EXPRs instead of
2759 CALL_EXPR_FNs thereof. Use call_expr_dependent_name instead
2761 (cp_tree_equal) <case CALL_EXPR>: Adjust call to called_fns_equal.
2763 2023-02-03 Marek Polacek <polacek@redhat.com>
2766 * constexpr.cc (cxx_eval_array_reference): Don't replace
2769 2023-02-03 Patrick Palka <ppalka@redhat.com>
2772 * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
2773 the selected callee during overload set pruning.
2775 2023-02-03 Patrick Palka <ppalka@redhat.com>
2778 * class.cc (check_methods): Diagnose an unviable OVERLOAD
2779 set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one.
2780 Then prune the OVERLOAD to a single function.
2781 (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being
2782 an OVERLOAD when calling deduce_noexcept_on_destructor.
2783 Document why it has to be called before check_methods.
2785 2023-02-03 Patrick Palka <ppalka@redhat.com>
2788 * class.cc (check_methods): Swap order of constraints_satisfied_p
2789 and copy/move_fn_p tests.
2791 2023-02-01 Marek Polacek <polacek@redhat.com>
2794 * call.cc (build_new_op): Don't call warn_logical_operator when
2795 processing a template.
2797 2023-02-01 Jakub Jelinek <jakub@redhat.com>
2800 * constexpr.cc (cxx_eval_constant_expression): Handle OMP_*
2801 and OACC_* constructs as non-constant.
2802 (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE.
2804 2023-02-01 Jason Merrill <jason@redhat.com>
2806 * class.cc (note_name_declared_in_class): Change from permerror to
2807 -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases.
2809 2023-01-31 Jason Merrill <jason@redhat.com>
2812 * cp-gimplify.cc (any_non_eliding_target_exprs): New.
2813 (cp_genericize_init): Check it.
2815 2023-01-31 Marek Polacek <polacek@redhat.com>
2819 * cp-tree.h (instantiation_dependent_expression_p): Don't
2822 2023-01-26 Marek Polacek <polacek@redhat.com>
2825 * parser.cc: Remove unnecessary forward declarations.
2826 (cp_parser_string_literal): New wrapper.
2827 (cp_parser_string_literal_common): Renamed from
2828 cp_parser_string_literal. Add a bool parameter. Give an error when
2829 UDLs are not permitted.
2830 (cp_parser_userdef_string_literal): New wrapper.
2831 (finish_userdef_string_literal): Renamed from
2832 cp_parser_userdef_string_literal.
2833 (cp_parser_primary_expression): Call cp_parser_userdef_string_literal
2834 instead of cp_parser_string_literal.
2835 (cp_parser_linkage_specification): Move a variable declaration closer
2837 (cp_parser_static_assert): Likewise.
2838 (cp_parser_operator): Call cp_parser_userdef_string_literal instead of
2839 cp_parser_string_literal.
2840 (cp_parser_asm_definition): Move a variable declaration closer to its
2842 (cp_parser_asm_specification_opt): Move variable declarations closer to
2844 (cp_parser_asm_operand_list): Likewise.
2845 (cp_parser_asm_clobber_list): Likewise.
2847 2023-01-26 Jakub Jelinek <jakub@redhat.com>
2850 * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been
2851 called in !processing_template_decl with processing_template_decl
2852 temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily.
2853 (cp_finish_omp_range_for): And set it back again here.
2855 2023-01-25 Jakub Jelinek <jakub@redhat.com>
2858 * mangle.cc (write_closure_type_name): Don't assume all
2859 lambda operator() fns are methods.
2861 2023-01-24 Jason Merrill <jason@redhat.com>
2864 * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
2867 2023-01-24 Jason Merrill <jason@redhat.com>
2870 * pt.cc (tsubst_function_decl): Handle static lambda.
2872 2023-01-24 Jakub Jelinek <jakub@redhat.com>
2875 * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
2877 2023-01-24 Jason Merrill <jason@redhat.com>
2881 * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double
2882 TARGET_EXPR, keep the outer one instead of the inner one.
2883 (maybe_replace_decl): New.
2885 2023-01-23 Jason Merrill <jason@redhat.com>
2888 * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
2891 2023-01-23 Marek Polacek <polacek@redhat.com>
2894 * cvt.cc (ocp_convert): copy_warning when creating a new
2896 * init.cc (build_new_1): Suppress -Wunused-value on
2897 compiler-generated COMPOUND_EXPRs.
2899 2023-01-23 Jason Merrill <jason@redhat.com>
2902 * call.cc (build_user_type_conversion_1): Check whether the
2903 iterators also find a list ctor.
2905 2023-01-23 Jason Merrill <jason@redhat.com>
2908 * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
2911 2023-01-23 Jason Merrill <jason@redhat.com>
2915 * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
2917 2023-01-19 Jakub Jelinek <jakub@redhat.com>
2920 * cp-tree.h (keep_unused_object_arg): Declare.
2921 * call.cc (keep_unused_object_arg): No longer static.
2922 * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF
2923 with overload being static member function.
2925 2023-01-19 Jakub Jelinek <jakub@redhat.com>
2928 * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace
2929 DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding
2932 2023-01-16 Jakub Jelinek <jakub@redhat.com>
2935 * decl.cc (cp_finish_decl): Check warning_enabled_at
2936 at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead
2939 2023-01-14 Jakub Jelinek <jakub@redhat.com>
2942 * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
2945 2023-01-13 Jakub Jelinek <jakub@redhat.com>
2948 * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR
2949 use its operand except that for warning purposes use the original
2950 EXCESS_PRECISION_EXPR.
2951 * call.cc (convert_like_internal): Only look through
2952 EXCESS_PRECISION_EXPR when calling cp_convert, not when calling
2953 cp_convert_and_check.
2955 2023-01-09 Jakub Jelinek <jakub@redhat.com>
2960 * call.cc (maybe_init_list_as_range): Always return NULL_TREE if
2961 processing_template_decl.
2963 2023-01-05 Patrick Palka <ppalka@redhat.com>
2966 * parser.cc (cp_parser_class_head): Use dk_deferred instead of
2967 dk_no_check when parsing the class name.
2969 2023-01-05 Jakub Jelinek <jakub@redhat.com>
2972 * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
2975 2023-01-04 Patrick Palka <ppalka@redhat.com>
2978 * decl2.cc (mark_single_function): Ignore mark_used failure
2979 only in a non-SFINAE context rather than in a SFINAE one.
2981 2023-01-04 Jakub Jelinek <jakub@redhat.com>
2984 * decl.cc (merge_default_template_args): Return false if either
2985 new_parm or old_parm are erroneous.
2988 Copyright (C) 2023 Free Software Foundation, Inc.
2990 Copying and distribution of this file, with or without modification,
2991 are permitted in any medium without royalty provided the copyright
2992 notice and this notice are preserved.