aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/ChangeLog')
-rw-r--r--gcc/cp/ChangeLog1651
1 files changed, 1651 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d9f0298..061c4e4 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,1654 @@
+2025-08-07 Patrick Palka <ppalka@redhat.com>
+
+ * call.cc (extract_call_expr): Remove handling of C++20
+ rewritten comparison operators.
+
+2025-08-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/117783
+ * parser.cc: Implement C++26 P1061R10 - Structured Bindings can
+ introduce a Pack.
+ (cp_parser_range_for): Also handle TREE_VEC as DECL_VALUE_EXPR
+ instead of ARRAY_REF.
+ (cp_parser_decomposition_declaration): Use sb-identifier-list instead
+ of identifier-list in comments. Parse structured bindings with
+ structured binding pack. Don't emit pedwarn about structured
+ binding attributes in structured bindings inside of a condition.
+ (cp_convert_omp_range_for): Also handle TREE_VEC as DECL_VALUE_EXPR
+ instead of ARRAY_REF.
+ * decl.cc (get_tuple_element_type): Change i argument type from
+ unsigned to unsigned HOST_WIDE_INT.
+ (get_tuple_decomp_init): Likewise.
+ (set_sb_pack_name): New function.
+ (cp_finish_decomp): Handle structured binding packs.
+ * pt.cc (tsubst_pack_expansion): Handle structured binding packs
+ and capture proxies for them. Formatting fixes.
+ (tsubst_decl): For structured binding packs don't tsubst TREE_TYPE
+ first, instead recreate the type after r is created.
+ (tsubst_omp_for_iterator): Also handle TREE_VEC as DECL_VALUE_EXPR
+ instead of ARRAY_REF.
+ (tsubst_expr): Handle sizeof... on non-dependent structure binding
+ packs.
+ (value_dependent_expression_p): Return false for sizeof... on
+ non-dependent structure binding packs.
+ (instantiation_dependent_r): Don't recurse on sizeof... on
+ non-dependent structure binding packs.
+ * constexpr.cc (potential_constant_expression_1): Also handle
+ TREE_VEC on DECL_VALUE_EXPR of structure binding packs.
+
+2025-08-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/120778
+ * lex.cc (cxx_init): Mark cpp nodes corresponding
+ to keywords, identifiers with special meaning and standard
+ attribute identifiers as NODE_WARN if warn_keyword_macro.
+
+2025-08-06 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/121231
+ PR c++/119688
+ PR c++/94511
+ * mangle.cc (write_expression): Write out implicit non-trailing
+ zeroes of a CONSTRUCTOR when the ABI version is at least 21.
+
+2025-08-06 Jason Merrill <jason@redhat.com>
+
+ * constexpr.cc (cxx_eval_indirect_ref): Improve diagnostic.
+
+2025-08-06 Kwok Cheung Yeung <kcyeung@baylibre.com>
+
+ * parser.cc (cp_parser_omp_clause_from_to): Parse 'iterator' modifier.
+ * semantics.cc (finish_omp_clauses): Finish iterators for to/from
+ clauses.
+
+2025-08-06 Kwok Cheung Yeung <kcyeung@baylibre.com>
+ Andrew Stubbs <ams@baylibre.com>
+
+ * parser.cc (cp_parser_omp_clause_map): Parse 'iterator' modifier.
+ * semantics.cc (finish_omp_clauses): Finish iterators. Apply
+ iterators to generated clauses.
+
+2025-08-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/121068
+ * constexpr.cc (cxx_eval_store_expression): Handle clobbers.
+ (potential_constant_expression_1): Handle clobbers more.
+ * decl.cc (build_clobber_this): Use INIT_EXPR for initial clobber.
+ * init.cc (build_new_1): Clobber on placement new.
+ (build_vec_init): Don't clean up after clobber.
+
+2025-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/121351
+ PR c++/119859
+ * class.cc (add_method): Substitute outer template arguments
+ into constraints before comparing them if the declarations are
+ from different classes.
+
+2025-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/120620
+ * constexpr.cc (cxx_dynamic_cast_fn_p): Return true only
+ for synthesized __dynamic_cast.
+
+2025-08-01 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/108080
+ * module.cc (trees_out::core_vals): Warn when streaming
+ target/optimize node; adjust comments.
+ (trees_in::core_vals): Don't stream a target/optimize node.
+
+2025-08-01 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/121238
+ * module.cc (trees_in::fn_parms_fini): Merge properties for
+ definitions.
+
+2025-07-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/120800
+ * constexpr.cc (cxx_eval_vec_init_1): Suppress access control.
+
+2025-07-31 Marek Polacek <polacek@redhat.com>
+
+ PR c++/120775
+ * constexpr.cc (cxx_eval_outermost_constant_expr): Use
+ extract_call_expr.
+ * cp-tree.h (CONSTEVAL_BLOCK_P, LAMBDA_EXPR_CONSTEVAL_BLOCK_P): Define.
+ (finish_static_assert): Adjust declaration.
+ (current_nonlambda_function): Likewise.
+ * lambda.cc (current_nonlambda_function): New parameter. Only keep
+ iterating if the function represents a consteval block.
+ * parser.cc (cp_parser_lambda_expression): New parameter for
+ consteval blocks. Use it. Set LAMBDA_EXPR_CONSTEVAL_BLOCK_P.
+ (cp_parser_lambda_declarator_opt): Likewise.
+ (build_empty_string): New.
+ (cp_parser_next_tokens_are_consteval_block_p): New.
+ (cp_parser_consteval_block): New.
+ (cp_parser_block_declaration): Handle consteval blocks.
+ (cp_parser_static_assert): Use build_empty_string.
+ (cp_parser_member_declaration): Handle consteval blocks.
+ * pt.cc (tsubst_stmt): Adjust a call to finish_static_assert.
+ * semantics.cc (finish_fname): Warn for consteval blocks.
+ (finish_static_assert): New parameter for consteval blocks. Set
+ CONSTEVAL_BLOCK_P. Evaluate consteval blocks specially.
+
+2025-07-30 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/121291
+ * constraint.cc (diagnose_trait_expr): Remove assumption about
+ failures returning error_mark_node.
+ * except.cc (explain_not_noexcept): Allow expr not being
+ noexcept.
+ * method.cc (build_invoke): Adjust comment.
+ (is_trivially_xible): Always note non-trivial components if expr
+ is not null or error_mark_node.
+ (is_nothrow_xible): Likewise for non-noexcept components.
+ (is_nothrow_convertible): Likewise.
+
+2025-07-30 Jason Merrill <jason@redhat.com>
+
+ * pt.cc (convert_nontype_argument_function): Check
+ cxx_constant_value on failure.
+ (invalid_tparm_referent_p): Likewise.
+
+2025-07-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/121133
+ * parser.cc (cp_parser_unary_expression): Adjust
+ cp_parser_extension_opt caller and restore warn_long_long.
+ (cp_parser_declaration): Likewise.
+ (cp_parser_block_declaration): Likewise.
+ (cp_parser_member_declaration): Likewise.
+ (cp_parser_extension_opt): Add SAVED_LONG_LONG argument,
+ save previous warn_long_long state into it and clear it
+ for __extension__.
+
+2025-07-27 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * cp-tree.h (struct lang_type): Add comment mentioning modules.
+ * module.cc (trees_out::lang_type_bools): Stream new flags, use
+ gcc_checking_assert.
+ (trees_in::lang_type_bools): Likewise.
+
+2025-07-25 David Malcolm <dmalcolm@redhat.com>
+
+ * constexpr.cc: Update usage of "diagnostic_info" to explicitly
+ refer to "diagnostics::diagnostic_info".
+ * cp-tree.h: Likewise.
+ * error.cc: Likewise.
+ * module.cc: Likewise.
+
+2025-07-25 David Malcolm <dmalcolm@redhat.com>
+
+ * call.cc: Update for diagnostic_t becoming
+ enum class diagnostics::kind.
+ * constexpr.cc: Likewise.
+ * cp-tree.h: Likewise.
+ * decl.cc: Likewise.
+ * error.cc: Likewise.
+ * init.cc: Likewise.
+ * method.cc: Likewise.
+ * module.cc: Likewise.
+ * parser.cc: Likewise.
+ * pt.cc: Likewise.
+ * semantics.cc: Likewise.
+ * typeck.cc: Likewise.
+ * typeck2.cc: Likewise.
+
+2025-07-25 David Malcolm <dmalcolm@redhat.com>
+
+ * cp-tree.h: Update for renaming of diagnostic_option_id to
+ diagnostics::option_id.
+ * decl.cc: Likewise.
+ * error.cc: Likewise.
+ * name-lookup.cc: Likewise.
+
+2025-07-25 David Malcolm <dmalcolm@redhat.com>
+
+ * error.cc: Update for move of diagnostic-color.h to
+ diagnostics/color.h.
+
+2025-07-25 David Malcolm <dmalcolm@redhat.com>
+
+ * cp-tree.h: Update for diagnostic_context becoming
+ diagnostics::context.
+ * error.cc: Likewise.
+ * module.cc: Likewise.
+
+2025-07-25 David Malcolm <dmalcolm@redhat.com>
+
+ * constexpr.cc: Update to add "m_" prefix to fields of
+ diagnostic_info throughout.
+ * error.cc: Likewise.
+
+2025-07-25 David Malcolm <dmalcolm@redhat.com>
+
+ * cp-tree.h: Update for move of diagnostics output formats into
+ namespace "diagnostics" as "sinks".
+ * error.cc: Likewise.
+
+2025-07-25 Patrick Palka <ppalka@redhat.com>
+
+ * call.cc (build_new_op): If the selected candidate is
+ rewritten, communicate the LOOKUP_REWRITTEN/REVERSED flags to
+ the caller via the 'overload' out-parameter, and stop clearing
+ '*overload' in that case.
+ * tree.cc (build_min_non_dep_op_overload): Handle rebuilding all
+ C++20 rewritten comparison operator expressions.
+
+2025-07-25 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/121219
+ * coroutines.cc
+ (cp_coroutine_transform::build_ramp_function): Reorder the return
+ expressions for the 'normal' and 'allocation failed' cases so that
+ NRV constraints are met.
+
+2025-07-24 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/117294
+ PR c++/113854
+ * call.cc (implicit_conversion_error): Hide label when printing
+ a stub object.
+ (convert_like_internal): Likewise, and nest candidate
+ diagnostics.
+ * constexpr.cc (diagnose_failing_condition): Nest diagnostics,
+ attempt to provide more helpful diagnostics for traits.
+ * constraint.cc (satisfy_atom): Pass result before constant
+ evaluation to diagnose_atomic_constraint.
+ (diagnose_trait_expr): Adjust diagnostics for clarity and
+ detail.
+ (maybe_diagnose_standard_trait): New function.
+ (diagnose_atomic_constraint): Attempt to provide more helpful
+ diagnostics for more traits.
+ * cp-tree.h (explain_not_noexcept): Declare new function.
+ (is_trivially_xible): Add parameter.
+ (is_nothrow_xible): Likewise.
+ (is_xible): Likewise.
+ (is_convertible): Likewise.
+ (is_nothrow_convertible): Likewise.
+ (diagnose_trait_expr): Declare new function.
+ (maybe_diagnose_standard_trait): Declare new function.
+ * error.cc (dump_type) <case TREE_VEC>: Handle trait types.
+ * except.cc (explain_not_noexcept): New function.
+ * method.cc (build_trait_object): Add complain parameter.
+ (build_invoke): Propagate complain parameter.
+ (assignable_expr): Add explain parameter to show diagnostics.
+ (constructible_expr): Likewise.
+ (destructible_expr): Likewise.
+ (is_xible_helper): Replace trivial flag with explain flag,
+ add diagnostics.
+ (is_trivially_xible): New explain flag.
+ (is_nothrow_xible): Likewise.
+ (is_xible): Likewise.
+ (is_convertible_helper): Add complain flag.
+ (is_convertible): New explain flag.
+ (is_nothrow_convertible): Likewise.
+ * typeck.cc (cp_build_function_call_vec): Add handling for stub
+ objects.
+ (convert_arguments): Always return -1 on error.
+ * typeck2.cc (cxx_readonly_error): Add handling for stub
+ objects.
+
+2025-07-24 Jason Merrill <jason@redhat.com>
+
+ * pt.cc (tsubst_lambda_expr): Revert r9-5971 change.
+
+2025-07-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/114632
+ PR c++/101233
+ * lambda.cc (maybe_add_lambda_conv_op): Not for xobj lambda.
+ * pt.cc (tsubst_function_decl): Add cp_evaluated.
+ (alias_ctad_tweaks): Revert PR101233 fix.
+
+2025-07-24 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120412
+ * module.cc (trees_out::core_vals): Write TU_LOCAL_ENTITY bits.
+ (trees_in::core_vals): Read it.
+ (trees_in::tree_node): Handle TU_LOCAL_ENTITY typedefs.
+
+2025-07-23 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/121179
+ * call.cc (build_new_op): Don't clear *overload for a simple
+ != to == rewrite.
+ * tree.cc (build_min_non_dep_op_overload): Handle TRUTH_NOT_EXPR
+ appearing in a rewritten operator expression.
+
+2025-07-23 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/121055
+ * method.cc (build_invoke): Correct reference_wrapper handling.
+
+2025-07-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/121068
+ * constexpr.cc (cxx_eval_store_expression): Allow ARRAY_REFs
+ when activating an array member of a union.
+
+2025-07-21 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
+
+ * semantics.cc (finish_asm_stmt): Pass null pointer to
+ parse_{input,output}_constraint().
+
+2025-07-16 Kwok Cheung Yeung <kcyeung@baylibre.com>
+
+ * pt.cc (tsubst_omp_clause_decl): Use OMP_ITERATOR_DECL_P.
+ * semantics.cc (handle_omp_array_sections): Likewise.
+ (finish_omp_clauses): Likewise.
+
+2025-07-16 Alfie Richards <alfie.richards@arm.com>
+
+ * class.cc (add_method): Remove argument.
+ * cp-tree.h (maybe_version_functions): Ditto.
+ * decl.cc (decls_match): Ditto.
+ (maybe_version_functions): Ditto.
+
+2025-07-16 Jeremy Rifkin <jeremy@rifkin.dev>
+
+ PR c/82134
+ * call.cc (build_call_a): Add suppress_warning
+ * cp-gimplify.cc (cp_gimplify_expr): Add suppress_warning
+
+2025-07-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/44677
+ * cp-gimplify.cc (cp_fold) [CLEANUP_POINT_EXPR]: Don't force rvalue.
+ [COMPOUND_EXPR]: Likewise.
+ * cvt.cc (convert_to_void): Call mark_exp_read later.
+ * expr.cc (mark_use): Turn off read_p for any void argument.
+ (mark_exp_read): Return early for void argument.
+
+2025-07-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/120577
+ * constexpr.cc (cxx_eval_call_expression): Set
+ CONSTRUCTOR_NO_CLEARING on initial value for ctor.
+ (cxx_eval_component_reference): Make value-initialization
+ of an aggregate member explicit.
+
+2025-07-15 Jakub Jelinek <jakub@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c/44677
+ * cp-gimplify.cc (cp_fold): Clear DECL_READ_P on lhs of MODIFY_EXPR
+ after cp_fold_rvalue if it wasn't set before.
+ * decl.cc (poplevel): Use OPT_Wunused_but_set_variable_
+ instead of OPT_Wunused_but_set_variable.
+ (finish_function): Use OPT_Wunused_but_set_parameter_
+ instead of OPT_Wunused_but_set_parameter.
+ * expr.cc (mark_use): Clear read_p for {PRE,POST}{IN,DE}CREMENT_EXPR
+ cast to void on {VAR,PARM}_DECL for
+ -Wunused-but-set-{parameter,variable}={2,3}.
+ (mark_exp_read): Handle {PRE,POST}{IN,DE}CREMENT_EXPR and don't handle
+ it when cast to void.
+ * module.cc (trees_in::fn_parms_fini): Remove unused but set variable
+ ix.
+ * semantics.cc (finish_unary_op_expr): Return early for
+ PRE{IN,DE}CREMENT_EXPR.
+ * typeck.cc (cp_build_unary_op): Clear DECL_READ_P
+ after mark_lvalue_use for -Wunused-but-set-{parameter,variable}={2,3}
+ on PRE{IN,DE}CREMENT_EXPR argument.
+ (cp_build_modify_expr): Clear DECL_READ_P after cp_build_binary_op
+ for -Wunused-but-set-{parameter,variable}=3.
+
+2025-07-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/119064
+ * cp-tree.h: Implement C++26 P2786R13 - Trivial Relocatability.
+ (struct lang_type): Add trivially_relocatable,
+ trivially_relocatable_computed, replaceable and replaceable_computed
+ bitfields. Change width of dummy from 2 to 30.
+ (CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT,
+ CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED, CLASSTYPE_REPLACEABLE_BIT,
+ CLASSTYPE_REPLACEABLE_COMPUTED): Define.
+ (enum virt_specifier): Add VIRT_SPEC_TRIVIALLY_RELOCATABLE_IF_ELIGIBLE
+ and VIRT_SPEC_REPLACEABLE_IF_ELIGIBLE enumerators.
+ (trivially_relocatable_type_p, replaceable_type_p): Declare.
+ * cp-trait.def (IS_NOTHROW_RELOCATABLE, IS_REPLACEABLE,
+ IS_TRIVIALLY_RELOCATABLE): New traits.
+ * parser.cc (cp_parser_class_property_specifier_seq_opt): Handle
+ trivially_relocatable_if_eligible,
+ __trivially_relocatable_if_eligible, replaceable_if_eligible and
+ __replaceable_if_eligible.
+ (cp_parser_class_head): Set CLASSTYPE_REPLACEABLE_BIT
+ and/or CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT if corresponding
+ conditional keywords were parsed and assert corresponding *_COMPUTED
+ macro is false.
+ * pt.cc (instantiate_class_template): Copy over also
+ CLASSTYPE_TRIVIALLY_RELOCATABLE_{BIT,COMPUTED} and
+ CLASSTYPE_REPLACEABLE_{BIT,COMPUTED} bits.
+ * semantics.cc (referenceable_type_p): Move definition earlier.
+ (trait_expr_value): Handle CPTK_IS_NOTHROW_RELOCATABLE,
+ CPTK_IS_REPLACEABLE and CPTK_IS_TRIVIALLY_RELOCATABLE.
+ (finish_trait_expr): Likewise.
+ * tree.cc (default_movable_type_p): New function.
+ (union_with_no_declared_special_member_fns): Likewise.
+ (trivially_relocatable_type_p): Likewise.
+ (replaceable_type_p): Likewise.
+ * constraint.cc (diagnose_trait_expr): Handle
+ CPTK_IS_NOTHROW_RELOCATABLE, CPTK_IS_REPLACEABLE and
+ CPTK_IS_TRIVIALLY_RELOCATABLE.
+
+2025-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-tree.h (struct lang_type): Add comment before key_method.
+ Remove lambda_expr.
+ (CLASSTYPE_KEY_METHOD): Give NULL_TREE if not TYPE_POLYMORPHIC_P.
+ (SET_CLASSTYPE_KEY_METHOD): Define.
+ (CLASSTYPE_LAMBDA_EXPR): Give NULL_TREE if TYPE_POLYMORPHIC_P.
+ Use key_method member instead of lambda_expr.
+ (SET_CLASSTYPE_LAMBDA_EXPR): Define.
+ * class.cc (determine_key_method): Use SET_CLASSTYPE_KEY_METHOD
+ macro.
+ * decl.cc (xref_tag): Use SET_CLASSTYPE_LAMBDA_EXPR macro.
+ * lambda.cc (begin_lambda_type): Likewise.
+ * module.cc (trees_in::read_class_def): Use SET_CLASSTYPE_LAMBDA_EXPR
+ and SET_CLASSTYPE_KEY_METHOD macros, assert lambda is NULL if
+ TYPE_POLYMORPHIC_P and otherwise assert key_method is NULL.
+
+2025-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120628
+ * parser.cc (cp_parser_elaborated_type_specifier): Use
+ cp_parser_nth_token_starts_class_definition_p with extra argument 1
+ instead of cp_parser_next_token_starts_class_definition_p.
+ (cp_parser_class_property_specifier_seq_opt): For final conditional
+ keyword in C++98 check if the token after it isn't
+ cp_parser_nth_token_starts_class_definition_p nor CPP_NAME and in
+ that case break without consuming it nor warning.
+ (cp_parser_class_head): Use
+ cp_parser_nth_token_starts_class_definition_p with extra argument 1
+ instead of cp_parser_next_token_starts_class_definition_p.
+ (cp_parser_next_token_starts_class_definition_p): Renamed to ...
+ (cp_parser_nth_token_starts_class_definition_p): ... this. Add N
+ argument. Use cp_lexer_peek_nth_token instead of cp_lexer_peek_token.
+
+2025-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120569
+ * parser.cc (cp_parser_class_property_specifier_seq_opt): New
+ function.
+ (cp_parser_class_head): Use it instead of
+ cp_parser_property_specifier_seq_opt. Don't diagnose
+ VIRT_SPEC_OVERRIDE here. Formatting fix.
+
+2025-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/117785
+ * constexpr.cc: Implement C++26 P3068R5 - constexpr exceptions.
+ (class constexpr_global_ctx): Add caught_exceptions and
+ uncaught_exceptions members.
+ (constexpr_global_ctx::constexpr_global_ctx): Initialize
+ uncaught_exceptions.
+ (returns, breaks, continues, switches): Move earlier.
+ (throws): New function.
+ (exception_what_str, diagnose_std_terminate,
+ diagnose_uncaught_exception): New functions.
+ (enum cxa_builtin): New type.
+ (cxx_cxa_builtin_fn_p, cxx_eval_cxa_builtin_fn): New functions.
+ (cxx_eval_builtin_function_call): Add jump_target argument. Call
+ cxx_eval_cxa_builtin_fn for __builtin_eh_ptr_adjust_ref. Adjust
+ cxx_eval_constant_expression calls, if it results in jmp_target,
+ set *jump_target to it and return.
+ (cxx_bind_parameters_in_call): Add jump_target argument. Pass
+ it through to cxx_eval_constant_expression. If it sets *jump_target,
+ break.
+ (fold_operand): Adjust cxx_eval_constant_expression caller.
+ (cxx_eval_assert): Likewise. If it set jmp_target, return true.
+ (cxx_eval_internal_function): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression. Return early if *jump_target
+ after recursing on args.
+ (cxx_eval_dynamic_cast_fn): Likewise. Don't set reference_p for
+ C++26 with -fexceptions.
+ (cxx_eval_thunk_call): Add jump_target argument. Pass it through
+ to cxx_eval_constant_expression.
+ (cxx_set_object_constness): Likewise. Don't set TREE_READONLY if
+ throws (jump_target).
+ (cxx_eval_call_expression): Add jump_target argument. Pass it
+ through to cxx_eval_internal_function, cxx_eval_builtin_function_call,
+ cxx_eval_thunk_call, cxx_eval_dynamic_cast_fn and
+ cxx_set_object_constness. Pass it through also
+ cxx_eval_constant_expression on arguments, cxx_bind_parameters_in_call
+ and cxx_fold_indirect_ref and for those cases return early
+ if *jump_target. Call cxx_eval_cxa_builtin_fn for cxx_cxa_builtin_fn_p
+ functions. For cxx_eval_constant_expression on body, pass address of
+ cleared jmp_target automatic variable, if it throws propagate
+ to *jump_target and make it non-cacheable. For C++26 don't diagnose
+ calls to non-constexpr functions before cxx_bind_parameters_in_call
+ could report some argument throwing an exception.
+ (cxx_eval_unary_expression): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression and return early
+ if *jump_target after the call.
+ (cxx_fold_pointer_plus_expression): Likewise.
+ (cxx_eval_binary_expression): Likewise and similarly for
+ cxx_fold_pointer_plus_expression call.
+ (cxx_eval_conditional_expression): Pass jump_target to
+ cxx_eval_constant_expression on first operand and return early
+ if *jump_target after the call.
+ (cxx_eval_vector_conditional_expression): Add jump_target argument.
+ Pass it through to cxx_eval_constant_expression for all 3 arguments
+ and return early if *jump_target after any of those calls.
+ (get_array_or_vector_nelts): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression.
+ (eval_and_check_array_index): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression calls and return early after
+ each of them if *jump_target.
+ (cxx_eval_array_reference): Likewise.
+ (cxx_eval_component_reference): Likewise.
+ (cxx_eval_bit_field_ref): Likewise.
+ (cxx_eval_bit_cast): Likewise. Assert CHECKING_P call doesn't
+ throw or return.
+ (cxx_eval_logical_expression): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression calls and return early after
+ each of them if *jump_target.
+ (cxx_eval_bare_aggregate): Likewise.
+ (cxx_eval_vec_init_1): Add jump_target argument. Pass it through
+ to cxx_eval_bare_aggregate and recursive call. Pass it through
+ to get_array_or_vector_nelts and cxx_eval_constant_expression
+ and return early after it if *jump_target.
+ (cxx_eval_vec_init): Add jump_target argument. Pass it through
+ to cxx_eval_constant_expression and cxx_eval_vec_init_1.
+ (cxx_union_active_member): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression and return early after it
+ if *jump_target.
+ (cxx_fold_indirect_ref_1): Add jump_target argument. Pass it
+ through to cxx_union_active_member and recursive calls.
+ (cxx_eval_indirect_ref): Add jump_target argument. Pass it through
+ to cxx_fold_indirect_ref_1 calls and to recursive call, in which
+ case return early after it if *jump_target.
+ (cxx_fold_indirect_ref): Add jump_target argument. Pass it through
+ to cxx_fold_indirect_ref and cxx_eval_constant_expression calls and
+ return early after those if *jump_target.
+ (cxx_eval_trinary_expression): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression calls and return early after
+ those if *jump_target.
+ (cxx_eval_store_expression): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression and eval_and_check_array_index
+ calls and return early after those if *jump_target.
+ (cxx_eval_increment_expression): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression calls and return early after
+ those if *jump_target.
+ (label_matches): Handle VAR_DECL case.
+ (cxx_eval_statement_list): Remove local_target variable and
+ !jump_target handling. Handle throws (jump_target) like returns or
+ breaks.
+ (cxx_eval_loop_expr): Remove local_target variable and !jump_target
+ handling. Pass it through to cxx_eval_constant_expression. Handle
+ throws (jump_target) like returns.
+ (cxx_eval_switch_expr): Pass jump_target through to
+ cxx_eval_constant_expression on cond, return early after it
+ if *jump_target.
+ (build_new_constexpr_heap_type): Add jump_target argument. Pass it
+ through to cxx_eval_constant_expression calls, return early after
+ those if *jump_target.
+ (merge_jump_target): New function.
+ (cxx_eval_constant_expression): Make jump_target argument no longer
+ defaulted, don't test jump_target for NULL. Pass jump_target
+ through to recursive calls, cxx_eval_call_expression,
+ cxx_eval_store_expression, cxx_eval_indirect_ref,
+ cxx_eval_unary_expression, cxx_eval_binary_expression,
+ cxx_eval_logical_expression, cxx_eval_array_reference,
+ cxx_eval_component_reference, cxx_eval_bit_field_ref,
+ cxx_eval_vector_conditional_expression, cxx_eval_bare_aggregate,
+ cxx_eval_vec_init, cxx_eval_trinary_expression, cxx_fold_indirect_ref,
+ build_new_constexpr_heap_type, cxx_eval_increment_expression,
+ cxx_eval_bit_cast and return earlyu after some of those
+ if *jump_target as needed.
+ (cxx_eval_constant_expression) <case TARGET_EXPR>: For C++26 push
+ also CLEANUP_EH_ONLY cleanups, with NULL_TREE marker after them.
+ (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
+ override *jump_target if throws (jump_target).
+ (cxx_eval_constant_expression) <case TRY_CATCH_EXPR, case TRY_BLOCK,
+ case MUST_NOT_THROW_EXPR, case TRY_FINALLY_EXPR, case CLEANUP_STMT>:
+ Handle C++26 constant expressions.
+ (cxx_eval_constant_expression) <case CLEANUP_POINT_EXPR>: For C++26
+ with throws (jump_target) evaluate the CLEANUP_EH_ONLY cleanups as
+ well, and if not throws (jump_target) skip those. Set *jump_target
+ if some of the cleanups threw.
+ (cxx_eval_constant_expression) <case THROW_EXPR>: Recurse on operand
+ for C++26.
+ (cxx_eval_outermost_constant_expr): Diagnose uncaught exceptions both
+ from main expression and cleanups, diagnose also
+ break/continue/returns from the main expression. Handle
+ CLEANUP_EH_ONLY cleanup markers. Don't diagnose mutable poison stuff
+ if non_constant_p. Use different diagnostics for non-deleted heap
+ allocations if they were allocated by __cxa_allocate_exception.
+ (callee_might_throw): New function.
+ (struct check_for_return_continue_data): Add could_throw field.
+ (check_for_return_continue): Handle AGGR_INIT_EXPR and CALL_EXPR and
+ set d->could_throw if they could throw.
+ (potential_constant_expression_1): For CALL_EXPR allow
+ cxx_dynamic_cast_fn_p calls. For C++26 set *jump_target to void_node
+ for calls that could throw. For C++26 if call to non-constexpr call
+ is seen, try to evaluate arguments first and if they could throw,
+ don't diagnose call to non-constexpr function nor return false.
+ Adjust check_for_return_continue_data initializers and
+ set *jump_target to void_node if data.could_throw_p. For C++26
+ recurse on THROW_EXPR argument. Add comment explaining TRY_BLOCK
+ handling with C++26 exceptions. Handle throws like returns in some
+ cases.
+ * cp-tree.h (MUST_NOT_THROW_NOEXCEPT_P, MUST_NOT_THROW_THROW_P,
+ MUST_NOT_THROW_CATCH_P, DECL_EXCEPTION_REFCOUNT): Define.
+ (DECL_LOCAL_DECL_P): Fix comment typo, VARIABLE_DECL -> VAR_DECL.
+ (enum cp_built_in_function): Add CP_BUILT_IN_EH_PTR_ADJUST_REF,
+ (handler_match_for_exception_type): Declare.
+ * call.cc (handler_match_for_exception_type): New function.
+ * except.cc (initialize_handler_parm): Set MUST_NOT_THROW_CATCH_P
+ on newly created MUST_NOT_THROW_EXPR.
+ (begin_eh_spec_block): Set MUST_NOT_THROW_NOEXCEPT_P.
+ (wrap_cleanups_r): Set MUST_NOT_THROW_THROW_P.
+ (build_throw): Add another TARGET_EXPR whose scope spans
+ until after the __cxa_throw call and copy pointer value from ptr
+ to it and use it in __cxa_throw argument.
+ * tree.cc (builtin_valid_in_constant_expr_p): Handle
+ CP_BUILT_IN_EH_PTR_ADJUST_REF.
+ * decl.cc (cxx_init_decl_processing): Initialize
+ __builtin_eh_ptr_adjust_ref FE builtin.
+ * pt.cc (tsubst_stmt) <case MUST_NOT_THROW_EXPR>: Copy the
+ MUST_NOT_THROW_NOEXCEPT_P, MUST_NOT_THROW_THROW_P and
+ MUST_NOT_THROW_CATCH_P flags.
+ * cp-gimplify.cc (cp_gimplify_expr) <case CALL_EXPR>: Error on
+ non-folded CP_BUILT_IN_EH_PTR_ADJUST_REF calls.
+
+2025-07-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/121012
+ PR c++/120917
+ * parser.cc (cp_parser_lambda_expression): Clear
+ parser->in_template_argument_list_p.
+
+2025-07-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/121008
+ PR c++/113563
+ * semantics.cc (finish_this_expr): Do check current_class_ref for
+ non-lambda.
+
+2025-07-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/119838
+ * parser.cc (cp_parser_nested_name_specifier_opt): New global_p
+ parameter. Look for "template" when global_p is true.
+ (cp_parser_simple_type_specifier): Pass global_p to
+ cp_parser_nested_name_specifier_opt.
+
+2025-07-08 Marek Polacek <polacek@redhat.com>
+ Andrew Pinski <quic_apinski@quicinc.com>
+
+ PR c++/83469
+ PR c++/93809
+ * cp-tree.h (UNION_TYPE_P): Define.
+ (TYPENAME_IS_UNION_P): Define.
+ * decl.cc (struct typename_info): Add union_p field.
+ (struct typename_hasher::equal): Compare union_p field.
+ (build_typename_type): Use ti.union_p for union_type. Set
+ TYPENAME_IS_UNION_P.
+ * error.cc (dump_type) <case TYPENAME_TYPE>: Handle
+ TYPENAME_IS_UNION_P.
+ * module.cc (trees_out::type_node): Likewise.
+ * parser.cc (cp_parser_check_class_key): Allow typename key for union
+ types and allow union keyword for typename types.
+ * pt.cc (tsubst) <case TYPENAME_TYPE>: Don't conflate unions with
+ class_type. For TYPENAME_IS_CLASS_P, check NON_UNION_CLASS_TYPE_P
+ rather than CLASS_TYPE_P. Add TYPENAME_IS_UNION_P handling.
+
+2025-07-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/117784
+ * decl.cc: Implement part of C++26 P2686R4 - constexpr structured
+ bindings.
+ (cp_finish_decl): Pedwarn for C++23 and older on constinit on
+ structured bindings except for static/thread_local where it uses
+ earlier error.
+ (grokdeclarator): Pedwarn on constexpr structured bindings for
+ C++23 and older instead of emitting error always, don't clear
+ constexpr_p in that case.
+ * parser.cc (cp_parser_decomposition_declaration): Copy over
+ DECL_DECLARED_CONSTEXPR_P and DECL_DECLARED_CONSTINIT_P flags.
+
+2025-07-07 Alfie Richards <alfie.richards@arm.com>
+
+ PR c++/119498
+ * decl.cc (duplicate_decls): Change logic to not always exclude FMV
+ annotated functions in cases of return type non-ambiguation.
+
+2025-07-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/120917
+ * parser.cc (cp_parser_simple_type_specifier): Attach
+ auto in targ in parameter to -Wabbreviated-auto-in-template-arg.
+ (cp_parser_placeholder_type_specifier): Diagnose constrained auto in
+ template arg.
+
+2025-07-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84009
+ * parser.cc (cp_parser_decomposition_declaration): Pedwarn
+ on thread_local, __thread or static in decl_specifiers for
+ for-range-declaration.
+ (cp_parser_init_declarator): Likewise, and also for extern
+ or register.
+
+2025-07-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/120575
+ PR c++/116064
+ * parser.cc (cp_parser_abort_tentative_parse): Check seen_error
+ instead of errorcount.
+
+2025-07-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/120716
+ * lambda.cc (finish_lambda_function): Pass cur_stmt_list to
+ prune_lambda_captures.
+
+2025-07-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/120748
+ * lambda.cc (lambda_expr_this_capture): Don't return a FIELD_DECL.
+ * parser.cc (cp_parser_primary_expression): Ignore THIS_FORBIDDEN
+ if cp_unevaluated_operand.
+
+2025-07-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120940
+ * typeck.cc (cp_build_array_ref): Fix a pasto.
+
+2025-07-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/120684
+ PR c++/118856
+ * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]: Clear
+ the value first if is_complex.
+
+2025-07-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120471
+ * typeck.cc (cp_build_array_ref) <case COND_EXPR>: If idx is not
+ INTEGER_CST, don't optimize the case (but cp_default_conversion on
+ array early if it has ARRAY_TYPE) or use
+ SAVE_EXPR <op0>, SAVE_EXPR <idx>, SAVE_EXPR <op0> as new op0 depending
+ on flag_strong_eval_order and whether op1 and op2 are arrays with
+ invariant address or tree invariant pointers. Formatting fixes.
+
+2025-06-28 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * module.cc (trees_out::walking_bit_field_unit): New flag.
+ (trees_out::trees_out): Initialize it.
+ (trees_out::core_vals): Set it.
+ (trees_out::get_merge_kind): Use it, move previous ad-hoc check
+ into assertion.
+
+2025-06-28 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120644
+ * decl.cc (cp_finish_decl): Also propagate type to partial
+ templates.
+ * module.cc (trees_out::decl_value): Add assertion that the
+ TREE_TYPE of a streamed template decl matches its inner.
+ (trees_in::is_matching_decl): Clarify function return type
+ deduction should only occur for non-TEMPLATE_DECL.
+ * pt.cc (template_for_substitution): Handle partial specs.
+
+2025-06-27 Marek Polacek <polacek@redhat.com>
+
+ PR c++/120756
+ * pt.cc (resolve_nondeduced_context): Pass complain to mark_used.
+
+2025-06-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120777
+ * constexpr.cc: Implement C++26 P3533R2 - constexpr virtual
+ inheritance.
+ (is_valid_constexpr_fn): Don't reject constexpr cdtors in classes
+ with virtual bases for C++26, adjust error wording.
+ (cxx_bind_parameters_in_call): Add ORIG_FUN argument, add
+ values for __in_chrg and __vtt_parm arguments when needed.
+ (cxx_eval_dynamic_cast_fn): Adjust function comment, HINT -1
+ should be possible. For C++26 if obj is cast from POINTER_PLUS_EXPR,
+ attempt to use cxx_fold_indirect_ref to simplify it and if successful,
+ build ADDR_EXPR of that.
+ (cxx_eval_call_expression): Add orig_fun variable, set it to
+ fun before looking through clones, pass it to
+ cxx_bind_parameters_in_call.
+ (reduced_constant_expression_p): Add SZ argument, pass DECL_SIZE
+ of FIELD_DECL e.index to recursive calls and don't return false
+ if SZ is non-NULL and there are unfilled fields with bit position
+ at or above SZ.
+ (cxx_fold_indirect_ref_1): Handle reading of vtables using
+ ptrdiff_t dynamic type instead of some pointer type. Set el_sz
+ to DECL_SIZE_UNIT value rather than TYPE_SIZE_UNIT of
+ DECL_FIELD_IS_BASE fields in classes with virtual bases.
+ (cxx_fold_indirect_ref): In canonicalize_obj_off lambda look
+ through COMPONENT_REFs with DECL_FIELD_IS_BASE in classes with
+ virtual bases and adjust off correspondingly. Remove assertion that
+ off is integer_zerop, pass tree_to_uhwi (off) instead of 0 to the
+ cxx_fold_indirect_ref_1 call.
+ * cp-tree.h (publicly_virtually_derived_p): Declare.
+ (reduced_constant_expression_p): Add another tree argument defaulted
+ to NULL_TREE.
+ * method.cc (synthesized_method_walk): Don't clear *constexpr_p
+ if there are virtual bases for C++26.
+ * class.cc (build_base_path): Compute fixed_type_p and
+ virtual_access before checks for build_simple_base_path instead of
+ after that and conditional cp_build_addr_expr. Use build_simple_path
+ if !virtual_access even when v_binfo is non-NULL.
+ (layout_virtual_bases): For build_base_field calls use
+ access_public_node rather than access_private_node if
+ publicly_virtually_derived_p.
+ (build_vtbl_initializer): Revert 2018-09-18 and 2018-12-11 changes.
+ (publicly_virtually_derived_p): New function.
+
+2025-06-27 Jason Merrill <jason@redhat.com>
+
+ * class.cc (fixed_type_or_null): Handle class-type CALL_EXPR.
+ * parser.cc (cp_parser_binary_expression): Fix decltype_p handling.
+
+2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/98735
+ PR c++/118904
+ * cp-gimplify.cc (source_location_id): Remove.
+ (fold_builtin_source_location): Use generate_internal_label.
+ * module.cc (enum tree_tag): Add 'tt_internal_id' enumerator.
+ (trees_out::tree_value): Adjust assertion, write definitions
+ of uncontexted VAR_DECLs.
+ (trees_in::tree_value): Read variable definitions.
+ (trees_out::tree_node): Write internal labels, adjust assert.
+ (trees_in::tree_node): Read internal labels.
+
+2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120040
+ * constexpr.cc (cxx_eval_constant_expression): Handle TYPE_NAME
+ now being a TYPE_DECL rather than just an IDENTIFIER_NODE.
+ * init.cc (build_new_constexpr_heap_type): Build a TYPE_DECL for
+ the returned type; mark the type as artificial.
+ * module.cc (trees_out::type_node): Add some assertions.
+
+2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/98735
+ PR c++/120040
+ * module.cc (trees_out::tree_value): Write TYPE_DECLs.
+ (trees_in::tree_value): Read TYPE_DECLs.
+ (trees_out::tree_node): Support uncontexted TYPE_DECLs, and
+ ensure that all parts of a by-value decl are marked for
+ streaming.
+ (trees_out::get_merge_kind): Treat members of uncontexted types
+ as always unique.
+
+2025-06-27 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * decl.cc (grokfndecl): Add explanation of how to attach to
+ global module.
+
+2025-06-26 David Malcolm <dmalcolm@redhat.com>
+
+ * error.cc (cxx_initialize_diagnostics): Use
+ diagnostic_context::set_adjust_diagnostic_info_callback.
+
+2025-06-26 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-trait.def: Implement C++26 P2830R10 - Constexpr Type Ordering.
+ (TYPE_ORDER): New.
+ * method.cc (type_order_value): Define.
+ * cp-tree.h (type_order_value): Declare.
+ * semantics.cc (trait_expr_value): Use gcc_unreachable also
+ for CPTK_TYPE_ORDER, adjust comment.
+ (finish_trait_expr): Handle CPTK_TYPE_ORDER.
+ * constraint.cc (diagnose_trait_expr): Likewise.
+
+2025-06-25 Martin Jambor <mjambor@suse.cz>
+
+ * coroutines.h (class cp_coroutine_transform): Remove member
+ orig_fn_body.
+
+2025-06-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120773
+ * decl.cc (grokfndecl): Implement C++26 P3618R0 - Allow attaching
+ main to the global module. Only pedwarn for current_lang_name
+ other than lang_name_cplusplus and adjust pedwarn wording.
+
+2025-06-23 Tobias Burnus <tburnus@baylibre.com>
+
+ * parser.cc (OACC_WAIT_CLAUSE_MASK): Ass if clause.
+
+2025-06-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/115908
+ PR c++/118074
+ PR c++/95615
+ * coroutines.cc (coro_frame_refcount_id): New.
+ (coro_init_identifiers): Initialise coro_frame_refcount_id.
+ (build_actor_fn): Set up initial_await_resume_called. Handle
+ decrementing of the frame reference count. Return directly to
+ the caller if that is non-zero.
+ (cp_coroutine_transform::wrap_original_function_body): Use a
+ conditional eh-only cleanup around the initial await expression
+ to release the body use on exception before initial await
+ resume.
+ (cp_coroutine_transform::build_ramp_function): Wrap the called
+ body in a cleanup that releases a use of the frame when we
+ return to the ramp. Implement frame, promise and argument copy
+ destruction via conditional cleanups when the frame use count
+ is zero.
+
+2025-06-17 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (struct coroutine_info): Update comments.
+ (struct coro_aw_data): Remove self_handle and add in
+ information to create the handle in lowering.
+ (expand_one_await_expression): Build a temporary coroutine
+ handle.
+ (build_actor_fn): Remove reference to the frame copy of the
+ coroutine handle.
+ (cp_coroutine_transform::wrap_original_function_body): Remove
+ reference to the frame copy of the coroutine handle.
+
+2025-06-17 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (analyze_expression_awaits): Elide assume
+ attributes containing await expressions, since these have
+ side effects. Emit a diagnostic that this has been done.
+
+2025-06-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/120678
+ * cp-trait.def (IS_TRIVIALLY_DESTRUCTIBLE): Fix nargs.
+
+2025-06-17 Jason Merrill <jason@redhat.com>
+
+ * module.cc (module_state::write_diagnostic_classification): New.
+ (module_state::write_begin): Call it.
+ (module_state::read_diagnostic_classification): New.
+ (module_state::read_initial): Call it.
+ (dk_string, dump_dc_change): New.
+
+2025-06-17 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (finish_co_await_expr): Do not allow in an
+ unevaluated context.
+ (finish_co_yield_expr): Likewise.
+
+2025-06-17 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/120273
+ * coroutines.cc
+ (cp_coroutine_transform::wrap_original_function_body): Use
+ function start and end locations when synthesizing code.
+ (cp_coroutine_transform::cp_coroutine_transform): Set the
+ function end location.
+
+2025-06-16 Jason Merrill <jason@redhat.com>
+
+ * constraint.cc (failed_completions_map): New.
+ (note_failed_type_completion): Rename from
+ note_failed_type_completion_for_satisfaction. Add
+ -Wsfinae-incomplete handling.
+ (failed_completion_location): New.
+ * class.cc (finish_struct_1): Add -Wsfinae-incomplete warning.
+ * decl.cc (require_deduced_type): Adjust.
+ (finish_function): Add -Wsfinae-incomplete warning.
+ * typeck.cc (complete_type_or_maybe_complain): Adjust.
+ (cxx_sizeof_or_alignof_type): Call note_failed_type_completion.
+ * pt.cc (dependent_template_arg_p): No longer static.
+ * cp-tree.h: Adjust.
+
+2025-06-16 yxj-github-437 <2457369732@qq.com>
+
+ * parser.cc (cp_parser_asm_operand_list): Check for unexpanded
+ parameter packs.
+
+2025-06-14 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (build_co_await): Identify diagnostics
+ for initial and final await expressions.
+ (cp_coroutine_transform::wrap_original_function_body): Do
+ not handle initial and final await expressions here ...
+ (cp_coroutine_transform::apply_transforms): ... handle them
+ here and avoid duplicate diagnostics.
+ * coroutines.h: Declare inital and final await expressions
+ in the transform class. Save the function closing brace
+ location.
+
+2025-06-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/116775
+ * coroutines.cc (analyze_expression_awaits): When we see
+ a builtin_constant_p call, and that contains one or more
+ await expressions, then replace the call with its result
+ and discard the unevaluated operand.
+
+2025-06-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (build_actor_fn): Set can_throw.
+
+2025-06-12 Alfie Richards <alfie.richards@arm.com>
+
+ * decl.cc (maybe_version_functions): Change record_function_versions
+ call to add_function_version.
+
+2025-06-12 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-tree.h (union lang_type::maybe_objc_info): New type.
+ (struct lang_type): Use union maybe_objc_info info member
+ instead of tree objc_info.
+ * lex.cc (copy_lang_type): Use sizeof (struct lang_type)
+ just for ObjC++ and otherwise offsetof (struct lang_type, info).
+ (maybe_add_lang_type_raw): Likewise.
+ (cxx_make_type): Formatting fix.
+
+2025-06-09 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/120495
+ PR c++/115605
+ * pt.cc (lookup_template_class): Honour provided namespace contexts
+ when looking up class templates.
+
+2025-06-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/120555
+ * decl2.cc (fn_being_defined, fn_template_being_defined): New.
+ (mark_used): Check fn_template_being_defined.
+
+2025-06-05 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/120224
+ * pt.cc (tsubst_function_decl): Return error_mark_node if
+ substituting into the formal parameter list failed.
+ (tsubst_decl) <case PARM_DECL>: Return error_mark_node
+ upon TREE_TYPE substitution failure, when in a SFINAE
+ context. Return error_mark_node upon DECL_CHAIN substitution
+ failure.
+
+2025-06-05 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/118340
+ * constexpr.cc (maybe_constant_value): First try looking up each
+ operand in the cv_cache and reusing the result.
+
+2025-06-05 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (analyze_fn_parms): Move from free function..
+ (cp_coroutine_transform::analyze_fn_parms):... to method.
+ (cp_coroutine_transform::apply_transforms): Adjust call to
+ analyze_fn_parms.
+ * coroutines.h: Declare analyze_fn_parms.
+
+2025-06-05 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (expand_one_await_expression): Set the
+ initial_await_resume_called flag here.
+ (build_actor_fn): Populate the frame accessor for the
+ initial_await_resume_called flag.
+ (cp_coroutine_transform::wrap_original_function_body): Do
+ not modify the initial_await expression to include the
+ initial_await_resume_called flag here.
+
+2025-06-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/120502
+ * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: Do constexpr evaluation
+ before genericize.
+ * constexpr.cc (cxx_eval_store_expression): Add comment.
+
+2025-06-03 Jason Merrill <jason@redhat.com>
+
+ * name-lookup.h (operator|, operator|=): Define for WMB_Flags.
+
+2025-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/107600
+ * method.cc (destructible_expr): Fix refs and arrays of unknown
+ bound.
+
+2025-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/120506
+ * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
+ CONSTRUCTOR_NO_CLEARING.
+
+2025-06-02 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (build_actor_fn): Remove an unused
+ label, guard the frame deallocation correctly, use
+ simpler APIs to build if and return statements.
+
+2025-06-02 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/118903
+ * constexpr.cc (potential_constant_expression_1): Emit
+ an error when co_await et. al. are used in constexpr
+ contexts.
+
+2025-06-02 Iain Sandoe <iain@sandoe.co.uk>
+
+ * error.cc (dump_expr): Add co_await, co_yield and co_return.
+
+2025-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/107600
+ * method.cc (destructible_expr): Handle non-classes.
+ (constructible_expr): Check for abstract class here...
+ (is_xible_helper): ...not here.
+
+2025-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/107600
+ * semantics.cc (trait_expr_value) [CPTK_HAS_TRIVIAL_DESTRUCTOR]:
+ Add cp_unevaluated.
+
+2025-06-02 Sandra Loosemore <sloosemore@baylibre.com>
+
+ * cp-tree.h (maybe_convert_cond): Declare.
+ * parser.cc (cp_parser_omp_context_selector): Call
+ maybe_convert_cond and fold_build_cleanup_point_expr on the
+ expression for OMP_TRAIT_PROPERTY_BOOL_EXPR.
+ * pt.cc (tsubst_omp_context_selector): Likewise.
+ * semantics.cc (maybe_convert_cond): Remove static declaration.
+
+2025-05-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/113563
+ * lambda.cc (lambda_capture_field_type): Handle 'this' normally.
+ (build_capture_proxy): Special-case 'this' by-ref capture more.
+ (nonlambda_method_basetype): Look through xobj lambdas.
+
+2025-05-30 Julian Brown <julian@codesourcery.com>
+ Tobias Burnus <tburnus@baylibre.com>
+
+ * constexpr.cc (reduced_constant_expression_p): Add OMP_DECLARE_MAPPER
+ case.
+ (cxx_eval_constant_expression, potential_constant_expression_1):
+ Likewise.
+ * cp-gimplify.cc (cxx_omp_finish_mapper_clauses): New function.
+ * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_MAPPER_CLAUSES,
+ LANG_HOOKS_OMP_MAPPER_LOOKUP, LANG_HOOKS_OMP_EXTRACT_MAPPER_DIRECTIVE,
+ LANG_HOOKS_OMP_MAP_ARRAY_SECTION): Define langhooks.
+ * cp-tree.h (lang_decl_base): Add omp_declare_mapper_p field. Recount
+ spare bits comment.
+ (DECL_OMP_DECLARE_MAPPER_P): New macro.
+ (omp_mapper_id): Add prototype.
+ (cp_check_omp_declare_mapper): Add prototype.
+ (omp_instantiate_mappers): Add prototype.
+ (cxx_omp_finish_mapper_clauses): Add prototype.
+ (cxx_omp_mapper_lookup): Add prototype.
+ (cxx_omp_extract_mapper_directive): Add prototype.
+ (cxx_omp_map_array_section): Add prototype.
+ * decl.cc (check_initializer): Add OpenMP declare mapper support.
+ (cp_finish_decl): Set DECL_INITIAL for OpenMP declare mapper var decls
+ as appropriate.
+ * decl2.cc (mark_used): Instantiate OpenMP "declare mapper" magic var
+ decls.
+ * error.cc (dump_omp_declare_mapper): New function.
+ (dump_simple_decl): Use above.
+ * parser.cc (cp_parser_omp_clause_map): Add KIND parameter. Support
+ "mapper" modifier.
+ (cp_parser_omp_all_clauses): Add KIND argument to
+ cp_parser_omp_clause_map call.
+ (cp_parser_omp_target): Call omp_instantiate_mappers before
+ finish_omp_clauses.
+ (cp_parser_omp_declare_mapper): New function.
+ (cp_parser_omp_declare): Add "declare mapper" support.
+ * pt.cc (tsubst_decl): Adjust name of "declare mapper" magic var decls
+ once we know their type.
+ (tsubst_omp_clauses): Call omp_instantiate_mappers before
+ finish_omp_clauses, for target regions.
+ (tsubst_expr): Support OMP_DECLARE_MAPPER nodes.
+ (instantiate_decl): Instantiate initialiser (i.e definition) for OpenMP
+ declare mappers.
+ * semantics.cc (gimplify.h): Include.
+ (omp_mapper_id, omp_mapper_lookup, omp_extract_mapper_directive,
+ cxx_omp_map_array_section, cp_check_omp_declare_mapper): New functions.
+ (finish_omp_clauses): Delete GOMP_MAP_PUSH_MAPPER_NAME and
+ GOMP_MAP_POP_MAPPER_NAME artificial clauses.
+ (omp_target_walk_data): Add MAPPERS field.
+ (finish_omp_target_clauses_r): Scan for uses of struct/union/class type
+ variables.
+ (finish_omp_target_clauses): Create artificial mapper binding clauses
+ for used structs/unions/classes in offload region.
+
+2025-05-29 David Malcolm <dmalcolm@redhat.com>
+
+ * error.cc (cxx_format_postprocessor::clone): Update to use
+ unique_ptr.
+ (cxx_dump_pretty_printer::cxx_dump_pretty_printer): Likewise.
+ (cxx_initialize_diagnostics): Likewise.
+
+2025-05-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/113563
+ * lambda.cc (build_capture_proxy): Check pointerness of the
+ member, not the proxy type.
+ (lambda_expr_this_capture): Don't assume current_class_ref.
+ (nonlambda_method_basetype): Likewise.
+ * semantics.cc (finish_non_static_data_member): Don't assume
+ TREE_TYPE (object) is set.
+ (finish_this_expr): Check current_class_type for lambda,
+ not current_class_ref.
+
+2025-05-29 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/109283
+ * coroutines.cc (find_any_await): Only save the statement
+ pointer if the caller passes a place for it.
+ (flatten_await_stmt): When checking that ternary expressions
+ have been handled, also check that they contain a co_await.
+
+2025-05-29 Jason Merrill <jason@redhat.com>
+
+ * decl.cc (start_decl): Also set invalid_constexpr
+ for maybe_constexpr_fn.
+ * parser.cc (cp_parser_jump_statement): Likewise.
+ * constexpr.cc (potential_constant_expression_1): Ignore
+ goto to an artificial label.
+
+2025-05-29 Sandra Loosemore <sloosemore@baylibre.com>
+
+ * parser.cc (cp_parser_omp_metadirective): Do not call
+ cp_parser_skip_to_end_of_block_or_statement after an error.
+
+2025-05-29 Sandra Loosemore <sloosemore@baylibre.com>
+
+ PR c/120180
+ * parser.cc (cp_parser_omp_metadirective): Only consume the
+ token if it is the expected close paren.
+
+2025-05-29 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (analyze_fn_parms): No longer
+ create a parameter copy guard var.
+ * coroutines.h (struct param_info): Remove the
+ entry for the parameter copy destructor guard.
+
+2025-05-29 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/120453
+ * cp-tree.h (DECL_RAMP_P): New.
+ * typeck.cc (check_return_expr): Use DECL_RAMP_P instead
+ of DECL_RAMP_FN.
+
+2025-05-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/107600
+ * cp-trait.def (IS_DESTRUCTIBLE, IS_NOTHROW_DESTRUCTIBLE)
+ (IS_TRIVIALLY_DESTRUCTIBLE): New.
+ * constraint.cc (diagnose_trait_expr): Explain them.
+ * method.cc (destructible_expr): New.
+ (is_xible_helper): Use it.
+ * semantics.cc (finish_trait_expr): Handle new traits.
+ (trait_expr_value): Likewise. Complain about asking
+ whether a deleted dtor is trivial.
+
+2025-05-28 Jason Merrill <jason@redhat.com>
+
+ * module.cc (module_state::write_namespaces): Write
+ using-directives.
+ (module_state::read_namespaces): And read them.
+ * name-lookup.cc (add_using_namespace): Add overload. Build a
+ USING_DECL for modules.
+ (name_lookup::search_usings, name_lookup::queue_usings)
+ (using_directives_contain_std_p): Strip the USING_DECL.
+ * name-lookup.h: Declare it.
+ * parser.cc (cp_parser_import_declaration): Set MK_EXPORTING
+ for export import.
+
+2025-05-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc (cp_coroutine_transform::build_ramp_function):
+ Replace TRUTH_AND_EXPR with TRUTH_ANDIF_EXPR in three places.
+
+2025-05-26 Tobias Burnus <tburnus@baylibre.com>
+
+ PR c++/120413
+ * semantics.cc (finish_omp_target_clauses_r): Handle
+ BIND_EXPR with empty BIND_EXPR_BLOCK.
+
+2025-05-26 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h: Declare tinst_dump_id.
+ * cp-objcp-common.cc (cp_register_dumps): Set it.
+ * pt.cc (push_tinst_level_loc): Dump it.
+ (reopen_tinst_level): Here too.
+ (tinst_complete_p): New.
+ (instantiate_pending_templates): Don't reopen_tinst_level for
+ already-complete instantiations.
+
+2025-05-26 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (class cxx_dump_pretty_printer): New.
+ * error.cc (cxx_dump_pretty_printer): Ctor/dtor definitions.
+
+2025-05-25 Jason Merrill <jason@redhat.com>
+
+ * error.cc (dump_template_bindings): Correct skipping of
+ redundant bindings.
+
+2025-05-23 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120363
+ * decl2.cc (get_tls_init_fn): Set context as global_namespace.
+ (get_tls_wrapper_fn): Likewise.
+
+2025-05-23 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120414
+ * module.cc (trees_in::tree_node): Allow reading a USING_DECL
+ when streaming tt_data_member.
+
+2025-05-23 Jason Merrill <jason@redhat.com>
+
+ * mangle.cc (mangle_decl_string): Don't push_tinst_level.
+
+2025-05-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/120935
+ * cp-gimplify.cc (cp_fold): Check always_inline.
+
+2025-05-21 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc
+ (cp_coroutine_transform::build_ramp_function): Replace ramp
+ cleanup try-catch block with eh-only cleanup statements.
+
+2025-05-21 Iain Sandoe <iain@sandoe.co.uk>
+
+ * coroutines.cc
+ (cp_coroutine_transform::build_ramp_function): Use
+ decltype(auto) to determine the type of the temporary
+ get_return_object.
+
+2025-05-21 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/119916
+ * coroutines.cc
+ (cp_coroutine_transform::wrap_original_function_body): Do not
+ initialise initial_await_resume_called here...
+ (cp_coroutine_transform::build_ramp_function): ... but here.
+ When the coroutine is not void, initialize a GRO object from
+ promise.get_return_object(). Use this as the argument to the
+ return expression. Use a regular cleanup for the GRO, since
+ it is ramp-local.
+
+2025-05-20 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120349
+ * module.cc (trees_out::core_bools): Always mark vtables as
+ DECL_EXTERNAL.
+
+2025-05-20 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120013
+ * module.cc (trees_in::install_entity): Handle re-registering
+ the inner TYPE_DECL of a partial specialisation.
+
+2025-05-20 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120350
+ * rtti.cc (get_tinfo_decl_direct): Mark TREE_ADDRESSABLE.
+
+2025-05-16 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ * cp-gimplify.cc (cp_fold): Do the conversion unconditionally, even for same-type cases.
+
+2025-05-16 Iain Sandoe <iain@sandoe.co.uk>
+
+ * typeck.cc (check_return_expr): Suppress conversions for NVRO
+ in coroutine ramp functions.
+
+2025-05-16 Iain Sandoe <iain@sandoe.co.uk>
+
+ * decl.cc (poplevel): Set BLOCK_OUTER_CURLY_BRACE_P on the
+ body block for functions with no subblocks.
+
+2025-05-16 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * module.cc (importer_interface): Adjust flags.
+ (get_importer_interface): Rename flags.
+ (trees_out::core_bools): Clean up special casing.
+ (trees_out::write_function_def): Rename flag.
+
+2025-05-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/120161
+ * pt.cc (unify) <case RECORD_TYPE>: When comparing specializations
+ of a non-primary template, still perform a type comparison.
+
+2025-05-15 Jason Merrill <jason@redhat.com>
+
+ * module.cc (trees_out::lang_decl_bools): Stream implicit_constexpr.
+ (trees_in::lang_decl_bools): Likewise.
+ (trees_in::is_matching_decl): Check it.
+
+2025-05-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/99599
+ * pt.cc (conversion_may_instantiate_p): Make sure
+ classes are complete.
+
+2025-05-14 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ * cp-gimplify.cc (cp_fold): Remove a remnant comment.
+
+2025-05-14 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120125
+ * module.cc (trees_out::write_function_def): Only set
+ DECL_NOT_REALLY_EXTERN if the importer might need to emit it.
+ * optimize.cc (maybe_thunk_body): Don't assume 'fn' has a cgraph
+ node created.
+
+2025-05-14 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/119864
+ * decl2.cc (start_objects): Only use module initialized for
+ host.
+ (c_parse_final_cleanups): Don't always create an OMP offload
+ init function in modules.
+
+2025-05-14 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * name-lookup.cc (lookup_imported_hidden_friend): Add back
+ lazy_load_pendings with comment.
+
+2025-05-14 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ * cp-gimplify.cc (cp_fold): Add to_underlying.
+
+2025-05-14 Owen Avery <powerboat9.gamer@gmail.com>
+ Jason Merrill <jason@redhat.com>
+
+ * method.cc (synthesized_method_walk): Check whether
+ -Wvirtual-move-assign is enabled at the location of a base
+ class's move assignment operator.
+
+2025-05-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/120012
+ * class.cc (check_non_pod_aggregate): Check is_empty_class.
+
+2025-05-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/120204
+ * pt.cc (tsubst_baselink): Always error if lookup fails.
+
+2025-05-09 Jason Merrill <jason@redhat.com>
+
+ * decl2.cc (determine_visibility): Ignore args for friend templates.
+
+2025-05-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/99599
+ PR c++/120185
+ * class.cc (type_has_converting_constructor): Handle null parm.
+ * pt.cc (fn_type_unification): Skip early non-dep checking if
+ no concepts.
+
+2025-05-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/99599
+ * cp-tree.h (type_has_converting_constructor): Declare.
+ * class.cc (type_has_converting_constructor): New.
+ * pt.cc (conversion_may_instantiate_p): Don't check completeness.
+
+2025-05-05 Simon Martin <simon@nasilyan.com>
+
+ * cp-tree.h (parsing_default_capturing_generic_lambda_in_template):
+ Remove obsolete prototype.
+
+2025-05-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/115207
+ * decl.cc (cp_finish_decl): Call layout_decl after CTAD.
+
+2025-05-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/120012
+ * cp-tree.h (struct lang_type): Add non_aggregate_pod.
+ (CLASSTYPE_NON_AGGREGATE_POD): New.
+ * class.cc (check_bases_and_members): Set it.
+ (check_non_pod_aggregate): Diagnose it.
+
+2025-05-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/117827
+ * init.cc (build_vec_init): Push to *cleanup_flags clearing of rval
+ instead of setting of iterator to maxindex.
+
+2025-05-01 Patrick Palka <ppalka@redhat.com>
+
+ * constexpr.cc (explain_invalid_constexpr_fn): In the
+ DECL_CONSTRUCTOR_P branch pass the non-genericized body to
+ require_potential_constant_expression.
+
+2025-05-01 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/119034
+ PR c++/68942
+ * pt.cc (tsubst_expr) <case CALL_EXPR>: Revert PR68942 fix.
+ * semantics.cc (finish_call_expr): Ensure the callee of an
+ ADL-enabled call is wrapped in an OVERLOAD.
+
+2025-05-01 Jason Merrill <jason@redhat.com>
+
+ * Make-lang.in: Don't pass the full path to gperf.
+ * std-name-hint.h: Regenerate.
+
+2025-05-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/119162
+ * constexpr.cc (find_deleted_heap_var): Remove.
+ (cxx_eval_call_expression): Don't call it. Don't set TREE_STATIC on
+ heap vars.
+ (cxx_eval_outermost_constant_expr): Don't mess with varpool.
+
+2025-04-30 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/120023
+ * module.cc (depset::hash::find_dependencies): Also call
+ add_deduction_guides when walking one.
+
+2025-04-30 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/119938
+ * pt.cc (get_template_parm_object): When !check_init, add assert
+ that expr really is constant and mark decl as such.
+
+2025-04-30 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/119551
+ PR c++/119996
+ * module.cc (depset::hash::make_dependency): Also mark inline
+ variables referencing TU-local values as exposures here.
+ (depset::hash::finalize_dependencies): Add error message for
+ inline variables.
+
+2025-04-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/119981
+ PR c++/119378
+ * pt.cc (tsubst) <case UNBOUND_CLASS_TEMPLATE>: Substitute
+ into template parameter list first. When substituting the
+ context, only set processing_template_decl if there's more
+ than one level of introduced template parameters.
+
+2025-04-28 David Malcolm <dmalcolm@redhat.com>
+
+ * parser.cc: Include "analyzer/analyzer-language.h".
+ (ana::cp_translation_unit): New class.
+ (cp_parser_translation_unit): Add call to
+ ana::on_finish_translation_unit.
+
+2025-04-28 David Malcolm <dmalcolm@redhat.com>
+
+ * cxx-pretty-print.cc: Drop include of "make-unique.h".
+ Replace uses of ::make_unique with std::make_unique.
+ * error.cc: Likewise.
+ * name-lookup.cc: Likewise.
+ * parser.cc: Likewise.
+
+2025-04-28 David Malcolm <dmalcolm@redhat.com>
+
+ * name-lookup.cc: Include "make-unique.h".
+ (namespace_hints::convert_candidates_to_name_hint): Use
+ ::make_unique rather than "new" when making
+ show_candidate_location and suggest_alternatives.
+ (namespace_hints::maybe_decorate_with_limit): Likewise when making
+ namespace_limit_reached.
+ (suggest_alternatives_for_1): Likewise when making
+ suggest_missing_option.
+ (maybe_suggest_missing_std_header): Likewise when making
+ missing_std_header.
+ (macro_use_before_def::maybe_make): Use std::unique_ptr.
+ (macro_use_before_def::macro_use_before_def): Make public.
+ (lookup_name_fuzzy): Use ::make_unique rather than "new" when
+ making suggest_missing_header.
+ * parser.cc: Include "make-unique.h".
+ (cp_parser_error_1): Use ::make_unique rather than "new" when
+ making suggest_missing_header.
+
+2025-04-27 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/119939
+ * module.cc (trees_out::lang_decl_vals): Also stream
+ lang->u.fn.context when DECL_UNIQUE_FRIEND_P.
+ (trees_in::lang_decl_vals): Likewise.
+
+2025-04-27 H.J. Lu <hjl.tools@gmail.com>
+
+ PR middle-end/112877
+ * call.cc (type_passed_as): Remove the
+ targetm.calls.promote_prototypes call.
+ (convert_for_arg_passing): Likewise.
+ * typeck.cc (cxx_safe_arg_type_equiv_p): Likewise.
+
+2025-04-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/119764
+ PR c++/87185
+ * lambda.cc (insert_capture_proxy): Handle noexcept lambda.
+ (prune_lambda_captures): Likewise, in ABI v21.
+
+2025-04-25 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (struct tinst_level): Add had_errors bit.
+ * pt.cc (push_tinst_level_loc): Clear it.
+ (pop_tinst_level): Set it.
+ (reopen_tinst_level): Check it.
+ (instantiate_pending_templates): Call limit_bad_template_recursion.
+
+2025-04-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/116954
+ * contracts.cc (remove_contract_attributes): Return early if
+ not enabled.
+
2025-04-22 Nathaniel Shead <nathanieloshead@gmail.com>
* name-lookup.cc (lookup_imported_hidden_friend): Remove