forked from OERV-TOOLCHAIN/gcc-rva23
3410 lines
116 KiB
Plaintext
3410 lines
116 KiB
Plaintext
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
|
||
unnecessary lazy_load_pendings.
|
||
|
||
2025-04-22 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119863
|
||
* name-lookup.cc (get_mergeable_namespace_binding): Remove
|
||
no-longer-used function.
|
||
(lookup_imported_hidden_friend): Also look for hidden imported
|
||
decls in an attached decl's module.
|
||
|
||
2025-04-21 Jason Merrill <jason@redhat.com>
|
||
|
||
* constexpr.cc (cxx_eval_outermost_constant_expr): Move
|
||
verify_constant later.
|
||
|
||
2025-04-21 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118775
|
||
* constexpr.cc (cxx_eval_call_expression): Add assert.
|
||
(fold_to_constant): Handle processing_template_decl.
|
||
* init.cc (build_new_1): Use fold_to_constant.
|
||
|
||
2025-04-21 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/99456
|
||
* constexpr.cc (cxx_eval_constant_expression): Check strict
|
||
instead of manifestly_const_eval.
|
||
(maybe_constant_init_1): Be strict for static constexpr vars.
|
||
|
||
2025-04-19 Jason Merrill <jason@redhat.com>
|
||
|
||
* coroutines.cc (coro_build_expr_stmt)
|
||
(coro_build_cvt_void_expr_stmt): Remove.
|
||
(build_actor_fn): Use finish_expr_stmt.
|
||
* semantics.cc (finish_expr_stmt): Avoid wrapping statement in
|
||
EXPR_STMT.
|
||
(finish_stmt_expr_expr): Add comment.
|
||
|
||
2025-04-17 Jason Merrill <jason@redhat.com>
|
||
|
||
* constexpr.cc (is_valid_constexpr_fn): Improve diagnostic.
|
||
|
||
2025-04-17 Jason Merrill <jason@redhat.com>
|
||
|
||
* constexpr.cc (cxx_eval_outermost_constant_expr): Give both
|
||
expression and allocation location in allocated storage diagnostics.
|
||
|
||
2025-04-17 Jason Merrill <jason@redhat.com>
|
||
|
||
* name-lookup.cc (name_lookup::preserve_state): Fix reserve call.
|
||
* rtti.cc (get_tinfo_desc): Use vec_safe_grow_cleared.
|
||
|
||
2025-04-17 Jason Merrill <jason@redhat.com>
|
||
|
||
* semantics.cc (finish_type_pack_element): Add more info
|
||
to diagnostics.
|
||
|
||
2025-04-17 Jason Merrill <jason@redhat.com>
|
||
|
||
* decl.cc (cp_make_fname_decl): Prevent silent failure.
|
||
|
||
2025-04-17 Jason Merrill <jason@redhat.com>
|
||
|
||
* lex.cc (unqualified_name_lookup_error): Handle 'requires' better.
|
||
|
||
2025-04-17 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/113360
|
||
* cp-tree.h (struct language_function): Add erroneous bit.
|
||
* constexpr.cc (explain_invalid_constexpr_fn): Return if set.
|
||
(cxx_eval_call_expression): Quiet if set.
|
||
* parser.cc (cp_parser_function_definition_after_declarator)
|
||
* pt.cc (instantiate_body): Set it.
|
||
|
||
2025-04-16 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/114772
|
||
PR c++/101180
|
||
* pt.cc (apply_late_template_attributes): Also override
|
||
target_option_current_node.
|
||
|
||
2025-04-16 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/116954
|
||
* contracts.cc (remove_contract_attributes): Preserve flags
|
||
on the attribute list.
|
||
|
||
2025-04-15 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119755
|
||
* lambda.cc (prune_lambda_captures): Remove pruned capture from
|
||
function's BLOCK_VARS and BIND_EXPR_VARS.
|
||
|
||
2025-04-15 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/111075
|
||
* constexpr.cc (cxx_eval_call_expression): Allow trivial
|
||
call from a thunk.
|
||
|
||
2025-04-15 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/119807
|
||
PR c++/112288
|
||
* pt.cc (tsubst_friend_function): Skip remapping an
|
||
existing specialization if it doesn't match the shape of
|
||
the new friend definition.
|
||
|
||
2025-04-15 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/113835
|
||
* constexpr.cc (cxx_eval_outermost_constant_expr): Bail out early
|
||
for std::vector(N).
|
||
|
||
2025-04-14 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/99214
|
||
* constraint.cc (satisfy_declaration_constraints): Pass the
|
||
original ARGS to push_tinst_level.
|
||
|
||
2025-04-13 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/115639
|
||
* constexpr.cc (struct constexpr_call): Add NSDMIs to each
|
||
field. Replace 'result' data member with 3-element 'results'
|
||
array and a 'result' accessor function. Remove
|
||
'manifestly_const_eval' data member.
|
||
(constexpr_call_hasher::equal): Adjust after constexpr_call
|
||
layout change.
|
||
(cxx_eval_call_expression): Likewise. Define some local
|
||
variables closer to their first use. Use unknown_type_node
|
||
instead of NULL_TREE as the "in progress" result. After
|
||
successully evaluating a call with mce_unknown, also cache the
|
||
result in the corresponding mce_true and mce_false slots.
|
||
|
||
2025-04-13 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* module.cc (trees_in::is_matching_decl): Don't check for
|
||
mismatches when importing a DECL_MAYBE_DELETED function over one
|
||
that's already finished.
|
||
|
||
2025-04-13 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* module.cc (trees_in::is_matching_decl): Add custom errors for
|
||
different kinds of mismatches.
|
||
|
||
2025-04-12 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/116416
|
||
* constexpr.cc (maybe_constant_init_1): Generalize type of
|
||
of manifestly_const_eval parameter from bool to mce_value.
|
||
(maybe_constant_init): Define 3-parameter version taking a
|
||
manifestly_const_eval instead of bool parameter.
|
||
(cxx_constant_init): Adjust.
|
||
* cp-gimplify.cc (cp_fold_r) <case TARGET_EXPR>: Pass mce_false
|
||
to maybe_constant_init during prvalue folding if ff_mce_false is
|
||
set.
|
||
* cp-tree.h (maybe_constant_init): Declare new overload.
|
||
|
||
2025-04-11 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/114970
|
||
* cp-gimplify.cc (cp_build_init_expr_for_ctor): Suppress warnings on
|
||
return_this COMPOUND_EXPR.
|
||
|
||
2025-04-10 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119345
|
||
* pt.cc (add_extra_args): Also register a specialization
|
||
of the captured variable.
|
||
|
||
2025-04-10 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/119687
|
||
* pt.cc (alias_ctad_tweaks): Use lkp_range / lkp_iterator
|
||
instead of ovl_iterator.
|
||
|
||
2025-04-10 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR translation/119684
|
||
* error.cc (cp_print_error_function): Use G_ instead of _ for
|
||
pp_printf arguments.
|
||
(function_category): Use G_ instead of _.
|
||
(print_instantiation_full_context): Use G_ instead of _ in pp_verbatim
|
||
arguments.
|
||
(print_location): Likewise.
|
||
(print_instantiation_partial_context): Likewise.
|
||
(maybe_print_constexpr_context): Likewise.
|
||
(print_constrained_decl_info): Use G_() around pp_verbatim argument.
|
||
(print_concept_check_info): Likewise.
|
||
(print_constraint_context_head): Likewise.
|
||
(print_requires_expression_info): Likewise. Merge separate pp_verbatim
|
||
"in requirements " and "with " into one with conditional messages.
|
||
|
||
2025-04-10 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119175
|
||
* mangle.cc (decl_mangling_context): Look through lambda type.
|
||
|
||
2025-04-09 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/119574
|
||
* pt.cc (add_extra_args): Remove checking assert.
|
||
|
||
2025-04-09 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118698
|
||
* constraint.cc (struct norm_info): Add tf_partial.
|
||
* pt.cc (any_template_parm_r): Handle LAMBDA_EXPR_EXTRA_ARGS.
|
||
|
||
2025-04-08 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/117530
|
||
* pt.cc (instantiate_template): Check retrieve_specialization after
|
||
tsubst.
|
||
|
||
2025-04-07 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119652
|
||
* constexpr.cc (cxx_eval_outermost_constant_expr): Also don't add a
|
||
TARGET_EXPR around AGGR_INIT_EXPR.
|
||
|
||
2025-04-06 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/118626
|
||
* pt.cc (maybe_dependent_member_ref): Restrict TYPENAME_TYPE
|
||
shortcut to non-typedef TYPE_DECL.
|
||
|
||
2025-04-06 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/118626
|
||
* pt.cc (maybe_dependent_member_ref): Substitute and return the
|
||
stripped type if we decided to not rewrite it directly.
|
||
|
||
2025-04-05 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/118249
|
||
* constexpr.cc (potential_constant_expression_1)
|
||
<case INDIRECT_REF>: Remove obsolete *this handling.
|
||
|
||
2025-04-05 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118629
|
||
* name-lookup.cc (pushdecl_outermost_localscope): Look for an
|
||
sk_block.
|
||
|
||
2025-04-04 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119564
|
||
* decl.cc (cp_tree_node_structure): Add TU_LOCAL_ENTITY; fix
|
||
formatting.
|
||
|
||
2025-04-04 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119608
|
||
* module.cc (trees_out::decl_node): Maybe require by-value
|
||
walking not just when streaming.
|
||
|
||
2025-04-04 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119462
|
||
* module.cc (trees_in::is_matching_decl): Propagate exception
|
||
spec and constexpr to DECL_MAYBE_DELETED; clear if appropriate.
|
||
|
||
2025-04-04 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/99546
|
||
PR c++/113925
|
||
PR c++/106976
|
||
PR c++/109961
|
||
PR c++/117336
|
||
* lambda.cc (build_lambda_object): Handle fake
|
||
requires-expr processing_template_decl.
|
||
* parser.cc (cp_parser_lambda_expression): Likewise.
|
||
|
||
2025-04-04 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/117849
|
||
* semantics.cc (finish_id_expression_1): Allow use of constraint
|
||
variable outside an unevaluated context.
|
||
|
||
2025-04-03 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/119387
|
||
* constexpr.cc (p2280_active_p): New.
|
||
(cxx_eval_constant_expression) <case VAR_DECL>: Use it to
|
||
restrict P2280 relaxations.
|
||
<case PARM_DECL>: Likewise.
|
||
|
||
2025-04-03 Jason Merrill <jason@redhat.com>
|
||
|
||
* module.cc (module_state::read_cluster)
|
||
(post_load_processing): Clear DECL_EXTERNAL if DECL_COMDAT.
|
||
|
||
2025-04-03 Jason Merrill <jason@redhat.com>
|
||
|
||
* call.cc (add_candidates): Re-lookup ne_fns if we move into
|
||
another namespace.
|
||
|
||
2025-04-03 Andrew Pinski <quic_apinski@quicinc.com>
|
||
Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119563
|
||
* call.cc (build_list_conv): Fix a typo in loop gathering
|
||
summary information from subsubconvs.
|
||
|
||
2025-04-02 Sandra Loosemore <sloosemore@baylibre.com>
|
||
|
||
PR middle-end/118965
|
||
* parser.cc (c_parser_omp_clause_init_modifiers): Adjust
|
||
error message.
|
||
(cp_parser_omp_clause_init): Remove code for recognizing clauses
|
||
without modifiers. Diagnose missing target/targetsync modifier.
|
||
(cp_finish_omp_declare_variant): Diagnose missing target/targetsync
|
||
modifier.
|
||
|
||
2025-04-01 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119551
|
||
* module.cc (trees_out::write_var_def): Only ignore non-inline
|
||
variable initializers.
|
||
|
||
2025-04-01 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* parser.cc (cp_parser_diagnose_invalid_type_name): Replace
|
||
fmodules-ts with fmodules.
|
||
(cp_parser_template_declaration): Likewise.
|
||
|
||
2025-04-01 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/119383
|
||
* call.cc (build_over_call): Use force_lvalue to ensure op= returns
|
||
an lvalue.
|
||
* cp-tree.h (force_lvalue): Declare.
|
||
* cvt.cc (force_lvalue): New.
|
||
* typeck.cc (cp_build_indirect_ref_1): Revert r15-8011.
|
||
|
||
2025-03-31 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119401
|
||
* pt.cc (regenerate_decl_from_template): Don't regenerate if the
|
||
signature involves a lambda.
|
||
|
||
2025-03-31 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119518
|
||
* decl.cc (finish_function): Don't set TREE_NOTHROW for
|
||
functions with "noipa" attribute even when we can prove
|
||
they can't throw.
|
||
|
||
2025-03-29 Jason Merrill <jason@redhat.com>
|
||
|
||
* decl.cc (duplicate_decls): Don't clobber DECL_MODULE_IMPORT_P with
|
||
an injected friend.
|
||
* name-lookup.cc (check_module_override): Look at all reachable
|
||
decls in decl's originating module.
|
||
|
||
2025-03-29 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/64500
|
||
PR c++/116285
|
||
* name-lookup.cc (push_to_top_level): Don't try to store_bindings
|
||
for namespace levels.
|
||
|
||
2025-03-29 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* name-lookup.cc (maybe_lazily_declare): Fix comment typo,
|
||
anout -> about.
|
||
|
||
2025-03-29 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118961
|
||
* class.cc (copy_fndecl_with_name): Mark clones as non-abstract.
|
||
* cp-tree.h (setup_explicit_instantiation_definition_linkage):
|
||
Declare new function.
|
||
* module.cc (trees_in::read_var_def): Use it.
|
||
(module_state::read_cluster): Likewise.
|
||
* pt.cc (setup_explicit_instantiation_definition_linkage): New
|
||
function.
|
||
(mark_decl_instantiated): Use it.
|
||
|
||
2025-03-27 Tobias Burnus <tburnus@baylibre.com>
|
||
|
||
* cp-tree.h (cp_finish_omp_init_prefer_type): Add.
|
||
* decl.cc (omp_declare_variant_finalize_one): Call it.
|
||
* pt.cc (tsubst_attribute): Minor rebustification for OpenMP
|
||
append_args handling.
|
||
* semantics.cc (cp_omp_init_prefer_type_update): Rename to ...
|
||
(cp_finish_omp_init_prefer_type): ... this; remove static attribute
|
||
and return modified tree. Move clause handling to ...
|
||
(finish_omp_clauses): ... the caller.
|
||
|
||
2025-03-27 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118920
|
||
* cp-tree.h (equal_abi_tags): Declare.
|
||
* mangle.cc (equal_abi_tags): Make external, fix comparison.
|
||
(tree_string_cmp): Make internal.
|
||
* module.cc (trees_in::check_abi_tags): New function.
|
||
(trees_in::decl_value): Use it.
|
||
(trees_in::is_matching_decl): Likewise.
|
||
|
||
2025-03-27 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118920
|
||
* name-lookup.cc (lookup_imported_hidden_friend): Check for
|
||
module entity rather than just module import.
|
||
* module.cc (get_originating_module): Rename for_mangle parm to
|
||
global_m1.
|
||
* error.cc (dump_module_suffix): Don't decorate global module decls.
|
||
|
||
2025-03-26 Thomas Schwinge <tschwinge@baylibre.com>
|
||
Jason Merrill <jason@redhat.com>
|
||
|
||
* rtti.cc (throw_bad_typeid): Adjust implicit '__cxa_bad_typeid'
|
||
prototype to reality. Adjust all users.
|
||
|
||
2025-03-25 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/114525
|
||
* typeck2.cc (build_m_component_ref): Call cp_build_addr_expr
|
||
instead of build_address.
|
||
|
||
2025-03-25 yxj-github-437 <2457369732@qq.com>
|
||
|
||
* parser.cc (cp_parser_lambda_expression): Use cp_evaluated.
|
||
|
||
2025-03-24 Jason Merrill <jason@redhat.com>
|
||
|
||
* semantics.cc (finish_type_pack_element): Pass mce_true to
|
||
maybe_constant_value.
|
||
|
||
2025-03-23 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119154
|
||
* decl2.cc (vague_linkage_p): Revert gnu_linkage handling.
|
||
* module.cc (importer_interface): New enumeration.
|
||
(get_importer_interface): New function.
|
||
(trees_out::core_bools): Use it to determine interface.
|
||
(trees_in::is_matching_decl): Propagate gnu_inline handling onto
|
||
existing forward declarations.
|
||
(trees_in::read_var_def): Also note explicit instantiation
|
||
definitions of variable templates to be emitted.
|
||
|
||
2025-03-22 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/119379
|
||
* pt.cc (tsubst_decl) <case TYPE_DECL>: Preserve structural-ness
|
||
of a partially instantiated typedef.
|
||
|
||
2025-03-21 Paul-Antoine Arras <parras@baylibre.com>
|
||
Tobias Burnus <tburnus@baylibre.com>
|
||
|
||
* parser.cc (cp_parser_omp_clause_init): Make addressable.
|
||
|
||
2025-03-21 Jason Merrill <jason@redhat.com>
|
||
|
||
* init.cc (throw_bad_array_new_length): Returns void.
|
||
|
||
2025-03-21 Thomas Schwinge <tschwinge@baylibre.com>
|
||
|
||
* rtti.cc (throw_bad_cast): Adjust implicit '__cxa_bad_cast'
|
||
prototype to reality.
|
||
|
||
2025-03-20 Richard Biener <rguenther@suse.de>
|
||
|
||
* module.cc (trees_out::core_bools): Convert scoped enum
|
||
explicitly.
|
||
|
||
2025-03-20 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119370
|
||
* decl2.cc (set_context_for_auto_vars_r): New function.
|
||
(emit_partial_init_fini_fn): Call walk_tree with that function
|
||
on &init before walk_tree with copy_tree_body_r.
|
||
|
||
2025-03-19 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119316
|
||
* mangle.cc (write_expression) [NEW_EXPR]: Avoid using
|
||
compute_array_index_type.
|
||
(write_array_type): Add checking_assert.
|
||
|
||
2025-03-19 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR target/118068
|
||
* cp-gimplify.cc (cp_fold_immediate): Use cp_walk_tree rather than
|
||
cp_walk_tree_without_duplicates.
|
||
(cp_fold_immediate_r): For IF_STMT_CONSTEVAL_P IF_STMT don't walk
|
||
into THEN_CLAUSE subtree, only ELSE_CLAUSE. For non-call related
|
||
stmts call data->pset.add and if it returns true, don't walk subtrees.
|
||
(cp_fold_r): Don't call cp_fold_immediate_r here.
|
||
(cp_fold_function): For C++20 or later call cp_walk_tree
|
||
with cp_fold_immediate_r callback first before calling cp_walk_tree
|
||
with cp_fold_r callback and call data.pset.empty () in between.
|
||
(cp_fully_fold_init): Likewise.
|
||
(cp_genericize_r) <case RETURN_EXPR>: Suppress -Wreturn-type warning
|
||
if RETURN_EXPR has erroneous argument.
|
||
|
||
2025-03-18 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/119344
|
||
* typeck.cc (cp_build_binary_op): Use cp_save_expr instead of save_expr.
|
||
|
||
2025-03-18 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119194
|
||
* decl2.cc (min_vis_expr_r) [ADDR_EXPR]: New case.
|
||
|
||
2025-03-18 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118104
|
||
* pt.cc (use_pack_expansion_extra_args_p): Remove an assert.
|
||
|
||
2025-03-18 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c/116545
|
||
* parser.cc (cp_parser_statement): Call cp_parser_attributes_opt
|
||
rather than cp_parser_std_attribute_spec_seq.
|
||
(cp_parser_jump_statement): Diagnose gnu::musttail attributes
|
||
with no arguments.
|
||
|
||
2025-03-18 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/119233
|
||
* pt.cc (mark_template_arguments_used): Also handle member
|
||
function pointers.
|
||
|
||
2025-03-14 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR target/119120
|
||
* cp-gimplify.cc (cp_genericize_r): Set DECL_NOT_GIMPLE_REG_P
|
||
on {REAL,IMAG}PART_EXPR is_gimple_reg operand at -O0 if it is lhs
|
||
of a MODIFY_EXPR.
|
||
|
||
2025-03-12 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119150
|
||
* constexpr.cc (cxx_eval_call_expression): For
|
||
DECL_IMMEDIATE_FUNCTION_P (fun) set manifestly_const_eval in new_ctx
|
||
and new_call to mce_true and set ctx to &new_ctx.
|
||
|
||
2025-03-12 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118799
|
||
* module.cc (depset::hash::is_tu_local_entity): Only types,
|
||
functions, variables, and template (specialisations) can be
|
||
TU-local. Explicit type aliases are TU-local iff the type they
|
||
refer to are.
|
||
(module_state::write_namespaces): Allow unnamed namespaces in
|
||
named modules.
|
||
(check_module_decl_linkage): Error for all exported declarations
|
||
in an unnamed namespace.
|
||
|
||
2025-03-12 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/119154
|
||
* decl2.cc (vague_linkage_p): Don't treat gnu_inline functions
|
||
as having vague linkage.
|
||
* module.cc (trees_out::core_bools): Clear DECL_INTERFACE_KNOWN
|
||
for vague-linkage entities.
|
||
(read_var_def): Maybe set comdat linkage for imported var
|
||
definitions.
|
||
(module_state::read_cluster): Use expand_or_defer_fn instead of
|
||
ad-hoc linkage management.
|
||
(post_load_processing): Likewise.
|
||
* semantics.cc (expand_or_defer_fn_1): Don't forget that we had
|
||
a definition at all.
|
||
|
||
2025-03-12 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/117512
|
||
* typeck.cc (cp_build_indirect_ref_1): Only do the *&e -> e
|
||
folding if the result would be an lvalue.
|
||
|
||
2025-03-12 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/110584
|
||
* cp-tree.h (strip_normal_capture_proxy): Declare.
|
||
* lambda.cc (strip_normal_capture_proxy): New function to look
|
||
through normal capture proxies.
|
||
(build_capture_proxy): Use it.
|
||
* semantics.cc (process_outer_var_ref): Likewise.
|
||
|
||
2025-03-12 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/119134
|
||
* pt.cc (check_for_bare_parameter_packs): Check DECL_CONTEXT.
|
||
|
||
2025-03-12 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119076
|
||
* module.cc (trees_out::start): Handle RAW_DATA_CST.
|
||
(trees_in::start): Likewise.
|
||
(trees_out::core_vals): Likewise.
|
||
(trees_in::core_vals): Likewise.
|
||
|
||
2025-03-11 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119162
|
||
* constexpr.cc (find_deleted_heap_var): New.
|
||
(cxx_eval_call_expression): Don't cache a
|
||
reference to heap_deleted.
|
||
|
||
2025-03-10 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* module.cc (trees_out::has_tu_local_dep): Also look at the
|
||
TI_TEMPLATE if we don't find a dep for a decl.
|
||
(depset::hash::is_tu_local_entity): Handle unnamed template
|
||
types, treat lambdas specially.
|
||
(is_exposure_of_member_type): New function.
|
||
(depset::hash::add_dependency): Use it.
|
||
(depset::hash::finalize_dependencies): Likewise.
|
||
|
||
2025-03-08 Sandra Loosemore <sloosemore@baylibre.com>
|
||
|
||
* parser.cc (cp_parser_asm_definition): Make comment more explicit.
|
||
(cp_parser_asm_operand_list): Likewise. Also correct the comment
|
||
block at the top of the function to reflect reality.
|
||
|
||
2025-03-08 Jason Merrill <jason@redhat.com>
|
||
Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/114630
|
||
PR c++/114795
|
||
* pt.cc (reopen_tinst_level): Set or clear MK_PURVIEW.
|
||
(mark_decl_instantiated): Call set_instantiating_module.
|
||
(instantiate_pending_templates): Save and restore module_kind so
|
||
it isn't affected by reopen_tinst_level.
|
||
|
||
2025-03-07 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118775
|
||
* constexpr.cc (cxx_eval_call_expression): Check tree_fits_uhwi_p.
|
||
|
||
2025-03-07 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* constexpr.cc (potential_constant_expression_1): Handle
|
||
TU_LOCAL_ENTITY.
|
||
* pt.cc (expr_contains_tu_local_entity): Remove.
|
||
(function_contains_tu_local_entity): Remove.
|
||
(dependent_operand_p): Remove special handling for
|
||
TU_LOCAL_ENTITY.
|
||
(tsubst_expr): Handle TU_LOCAL_ENTITY when tsubsting OVERLOADs;
|
||
remove now-unnecessary extra handling.
|
||
(type_dependent_expression_p): Handle TU_LOCAL_ENTITY.
|
||
|
||
2025-03-06 Simon Martin <simon@nasilyan.com>
|
||
|
||
* cp-tree.h (processing_contract_condition): Fix comment typo,
|
||
paramter -> parameter.
|
||
* parser.cc (cp_parser_requires_expression): Fix comment typo,
|
||
delared -> declared.
|
||
|
||
2025-03-06 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/98533
|
||
PR c++/119123
|
||
* parser.cc (cp_parser_class_specifier): Update TYPE_FIELDS of
|
||
variant types in case cp_parser_late_parsing_default_args etc. change
|
||
TYPE_FIELDS on the main variant. Add switch_to_class lambda and
|
||
use it to simplify repeated class switching code.
|
||
|
||
2025-03-06 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119138
|
||
* pt.cc (apply_late_template_attributes): Set p to NULL if
|
||
ATTR_FLAG_TYPE_IN_PLACE is not set in attr_flags.
|
||
(tsubst) <case POINTER_TYPE, case REFERENCE_TYPE, case ARRAY_TYPE>:
|
||
Reuse original type even if TYPE_ATTRIBUTES is non-NULL, but all
|
||
the attributes are non-dependent.
|
||
|
||
2025-03-06 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/117504
|
||
* call.cc (perform_implicit_conversion_flags): Don't call
|
||
mark_{l,r}value_use.
|
||
|
||
2025-03-05 Jason Merrill <jason@redhat.com>
|
||
Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/117364
|
||
PR c++/118874
|
||
* coroutines.cc (cp_coroutine_transform::build_ramp_function): For
|
||
!aggregate_value_p return force return value into a local temp.
|
||
|
||
2025-03-05 Da Xie <xxie_xd@163.com>
|
||
|
||
PR c++/100589
|
||
* decl.cc (grokdeclarator): Issue an error for a declarator with
|
||
constrained auto type specifier and trailing return types. Include
|
||
function names if available.
|
||
|
||
2025-03-05 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/116740
|
||
* name-lookup.cc (set_identifier_type_value_with_scope): Don't
|
||
fail assert with ill-formed input.
|
||
|
||
2025-03-05 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119102
|
||
* module.cc (enum streamed_extensions): Add SE_OPENMP_SIMD
|
||
and SE_OPENACC, change value of SE_OPENMP and SE_BITS.
|
||
(CASE_OMP_SIMD_CODE, CASE_OMP_CODE, CASE_OACC_CODE): Define.
|
||
(trees_out::start): Don't set SE_OPENMP extension for OMP_CLAUSE.
|
||
Set SE_OPENMP_SIMD extension for CASE_OMP_SIMD_CODE, SE_OPENMP
|
||
for CASE_OMP_CODE and SE_OPENACC for CASE_OACC_CODE.
|
||
(trees_in::start): Don't fail for OMP_CLAUSE with missing
|
||
SE_OPENMP extension. Do fail for CASE_OMP_SIMD_CODE and missing
|
||
SE_OPENMP_SIMD extension, or CASE_OMP_CODE and missing SE_OPENMP
|
||
extension, or CASE_OACC_CODE and missing SE_OPENACC extension.
|
||
(module_state::write_readme): Write all of SE_OPENMP_SIMD, SE_OPENMP
|
||
and SE_OPENACC extensions.
|
||
(module_state::read_config): Diagnose missing -fopenmp, -fopenmp-simd
|
||
and/or -fopenacc depending on extensions used.
|
||
|
||
2025-03-05 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* typeck.cc (check_return_expr): Fix comment typo, rom -> from.
|
||
|
||
2025-03-05 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118787
|
||
* pt.cc (tsubst) <case ARRAY_TYPE>: Use return t; only if it doesn't
|
||
have any TYPE_ATTRIBUTES. Call apply_late_template_attributes.
|
||
<case POINTER_TYPE, case REFERENCE_TYPE>: Likewise. Formatting fix.
|
||
|
||
2025-03-04 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/119073
|
||
* call.cc (extend_temps_r): Preserve types of COND_EXPR arms.
|
||
|
||
2025-03-04 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/109431
|
||
* cp-tree.h (range_expr_nelts): Declare.
|
||
* init.cc (build_vec_init): If the CONSTRUCTOR's index is a
|
||
RANGE_EXPR, use range_expr_nelts to count how many elements
|
||
were initialized.
|
||
|
||
2025-02-28 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/114913
|
||
PR c++/110822
|
||
* constexpr.cc (replace_decl_r): If we've replaced something
|
||
inside of an ADDR_EXPR, call cxx_mark_addressable and
|
||
recompute_tree_invariant_for_addr_expr on the resulting ADDR_EXPR.
|
||
|
||
2025-02-28 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118986
|
||
* constexpr.cc (cxx_eval_call_expression): Check that the types match
|
||
before calling replace_decl, if not, set *non_constant_p.
|
||
(maybe_constant_init_1): Don't strip INIT_EXPR if it would change the
|
||
type of the expression.
|
||
|
||
2025-02-28 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/119038
|
||
* lambda.cc (maybe_generic_this_capture): Consider xobj
|
||
member functions as well, not just iobj. Update function
|
||
comment.
|
||
|
||
2025-02-28 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/119045
|
||
* constexpr.cc (cxx_eval_store_expression) <case REALPART_EXPR>:
|
||
Assert that refs->is_empty () rather than probe == target.
|
||
(cxx_eval_store_expression) <case IMAGPART_EXPR>: Likewise.
|
||
|
||
2025-02-27 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118928
|
||
* constexpr.cc (cxx_eval_constant_expression) <case GOTO_EXPR>: Remove
|
||
an assert.
|
||
|
||
2025-02-27 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118516
|
||
* parser.cc (cp_parser_template_argument): Don't call
|
||
require_potential_constant_expression.
|
||
|
||
2025-02-25 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118876
|
||
* cp-tree.h (register_dtor_fn): Add a bool argument defaulted to false.
|
||
* decl.cc (start_cleanup_fn): Add OMP_TARGET argument, use
|
||
"__omp_tcf" prefix rather than "__tcf" in that case. Add
|
||
"omp declare target" and "omp declare target nohost" attributes
|
||
to the fndecl.
|
||
(register_dtor_fn): Add OMP_TARGET argument, pass it down to
|
||
start_cleanup_fn.
|
||
* decl2.cc (one_static_initialization_or_destruction): Add OMP_TARGET
|
||
argument, pass it down to register_dtor_fn.
|
||
(emit_partial_init_fini_fn): Pass omp_target to
|
||
one_static_initialization_or_destruction.
|
||
(handle_tls_init): Pass false to
|
||
one_static_initialization_or_destruction.
|
||
|
||
2025-02-25 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118923
|
||
* tree.cc (get_internal_target_expr): Use force_target_expr
|
||
instead of build_target_expr_with_type.
|
||
* typeck.cc (get_member_function_from_ptrfunc): Use
|
||
get_internal_target_expr instead of force_target_expr.
|
||
* decl.cc (cp_finish_decl): Likewise.
|
||
* method.cc (build_comparison_op): Likewise.
|
||
|
||
2025-02-22 Sandra Loosemore <sloosemore@baylibre.com>
|
||
|
||
* parser.cc (cp_finish_omp_declare_variant): Initialize
|
||
append_args_last.
|
||
|
||
2025-02-17 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118856
|
||
PR c++/118763
|
||
* cp-tree.h (TARGET_EXPR_INTERNAL_P): New.
|
||
* call.cc (extend_temps_r): Check it instead of CLEANUP_EH_ONLY.
|
||
* tree.cc (get_internal_target_expr): Set it instead.
|
||
* typeck2.cc (maybe_push_temp_cleanup): Don't set CLEANUP_EH_ONLY.
|
||
|
||
2025-02-15 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118846
|
||
* cp-tree.h (WILDCARD_TYPE_P): Include UNBOUND_CLASS_TEMPLATE.
|
||
* decl2.cc (min_vis_expr_r): Don't assume a TEMPLATE_DECL will
|
||
be a function or variable.
|
||
|
||
2025-02-15 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118053
|
||
* constexpr.cc (cxx_eval_constant_expression): Generalize
|
||
DECL_VALUE_EXPR invisiref handling.
|
||
|
||
2025-02-14 Marek Polacek <polacek@redhat.com>
|
||
|
||
* pt.cc (tsubst_expr) <COMPONENT_REF>: Assign the result of
|
||
force_paren_expr.
|
||
|
||
2025-02-14 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118856
|
||
* call.cc (set_up_extended_ref_temp): Retain a TARGET_EXPR for
|
||
cleanups if something later in initialization throws.
|
||
(extend_temps_r): Don't extend eliding or EH-only TARGET_EXPRs.
|
||
* cp-tree.h (get_internal_target_expr): Declare.
|
||
* tree.cc (get_internal_target_expr): New.
|
||
* decl.cc (cp_finish_decomp, expand_static_init): Use it.
|
||
* except.cc (build_throw): Likewise.
|
||
* init.cc (build_new_1, build_vec_init, build_delete): Likewise.
|
||
(build_vec_delete): Likewise.
|
||
* typeck2.cc (maybe_push_temp_cleanup): Likewise.
|
||
|
||
2025-02-14 Jason Merrill <jason@redhat.com>
|
||
|
||
* init.cc (perform_member_init): Remove unicode from comment.
|
||
|
||
2025-02-14 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/116379
|
||
* pt.cc (tsubst_expr) <COMPONENT_REF>: Use force_paren_expr to set
|
||
REF_PARENTHESIZED_P.
|
||
|
||
2025-02-14 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* lambda.cc (record_lambda_scope): Clear mangling scope for
|
||
otherwise unattached lambdas in class member templates.
|
||
|
||
2025-02-14 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/107741
|
||
* cp-tree.h (is_static_data_member_initialized_in_class):
|
||
Declare new predicate.
|
||
* decl2.cc (start_initialized_static_member): Push the
|
||
TEMPLATE_DECL when appropriate.
|
||
(is_static_data_member_initialized_in_class): New predicate.
|
||
(finish_initialized_static_member): Use it.
|
||
* lambda.cc (record_lambda_scope): Likewise.
|
||
* parser.cc (cp_parser_init_declarator): Start the member decl
|
||
early for static members so that lambda scope is set.
|
||
(cp_parser_template_declaration_after_parameters): Don't
|
||
register in-class initialized static members here.
|
||
|
||
2025-02-13 Jason Merrill <jason@redhat.com>
|
||
|
||
* tree.cc (handle_init_priority_attribute): Use OPT_prio_ctor_dtor.
|
||
|
||
2025-02-13 Jason Merrill <jason@redhat.com>
|
||
|
||
* decl.cc (omp_declare_variant_finalize_one): Use forward_parm.
|
||
|
||
2025-02-13 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118856
|
||
* call.cc (struct extend_temps_data): Add var_map.
|
||
(extend_all_temps): Adjust.
|
||
(set_up_extended_ref_temp): Make walk_data void*.
|
||
(extend_temps_r): Remap variables. Handle pset here.
|
||
Extend all TARGET_EXPRs.
|
||
|
||
2025-02-13 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118849
|
||
* decl2.cc (min_vis_expr_r): Constrain visibility according to
|
||
the type of decl_constant_var_p decls.
|
||
|
||
2025-02-13 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118822
|
||
PR c++/118833
|
||
* semantics.cc (adjust_loop_decl_cond): Allow multiple trailing
|
||
CLEANUP_STMT levels in *BODY_P. Set *CLEANUP_P to the number
|
||
of levels rather than one particular cleanup, keep the cleanups
|
||
in *PREP_P. Set *BODY_P to the last stmt in the cur_stmt_list
|
||
or NULL if *CLEANUP_P and the innermost cur_stmt_list is empty.
|
||
(finish_loop_cond_prep): New function.
|
||
(finish_while_stmt, finish_for_stmt): Use it. Don't call
|
||
set_one_cleanup_loc.
|
||
* constexpr.cc (cxx_eval_loop_expr): Adjust handling of
|
||
{FOR,WHILE}_COND_{PREP,CLEANUP}.
|
||
|
||
2025-02-11 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118574
|
||
PR c++/107637
|
||
* call.cc (struct extend_temps_data): New.
|
||
(extend_temps_r, extend_all_temps): New.
|
||
(set_up_extended_ref_temp): Handle tree walk case.
|
||
(extend_ref_init_temps): Cal extend_all_temps.
|
||
* decl.cc (initialize_local_var): Revert ext-temps change.
|
||
* parser.cc (cp_convert_range_for): Likewise.
|
||
(cp_parser_omp_loop_nest): Likewise.
|
||
* pt.cc (tsubst_stmt): Likewise.
|
||
* semantics.cc (finish_for_stmt): Likewise.
|
||
|
||
2025-02-11 Sandra Loosemore <sloosemore@baylibre.com>
|
||
|
||
* parser.cc (cp_finish_omp_declare_variant): Update call to
|
||
omp_check_context_selector.
|
||
(cp_parser_omp_metadirective): Likewise.
|
||
|
||
2025-02-11 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/118306
|
||
PR c++/118304
|
||
* decl.cc (maybe_strip_indirect_ref): New.
|
||
(check_special_function_return_type): Take declarator as input.
|
||
Call maybe_strip_indirect_ref and error out if it returns true.
|
||
(grokdeclarator): Update call to
|
||
check_special_function_return_type.
|
||
|
||
2025-02-11 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118807
|
||
* pt.cc (reregister_specialization): Remove spec from
|
||
DECL_TEMPLATE_INSTANTIATIONS.
|
||
|
||
2025-02-07 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/115586
|
||
* parser.cc (cp_parser_range_for): For name independent decls in
|
||
structured bindings, only push the name/binding once per
|
||
structured binding.
|
||
|
||
2025-02-07 Jakub Jelinek <jakub@redhat.com>
|
||
Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/86769
|
||
* semantics.cc (set_one_cleanup_loc): New function.
|
||
(set_cleanup_locs): Use it.
|
||
(simplify_loop_decl_cond): Remove.
|
||
(adjust_loop_decl_cond): New function.
|
||
(begin_while_stmt): Add 2 further NULL_TREE operands to build_stmt.
|
||
(finish_while_stmt_cond): Call adjust_loop_decl_cond instead of
|
||
simplify_loop_decl_cond.
|
||
(finish_while_stmt): Call do_poplevel also on WHILE_COND_PREP if
|
||
non-NULL and also use pop_stmt_list rather than do_poplevel for
|
||
WHILE_BODY in that case. Call set_one_cleanup_loc.
|
||
(begin_for_stmt): Add 2 further NULL_TREE operands to build_stmt.
|
||
(finish_for_cond): Call adjust_loop_decl_cond instead of
|
||
simplify_loop_decl_cond.
|
||
(finish_for_stmt): Call do_poplevel also on FOR_COND_PREP if non-NULL
|
||
and also use pop_stmt_list rather than do_poplevel for FOR_BODY in
|
||
that case. Call set_one_cleanup_loc.
|
||
* constexpr.cc (cxx_eval_loop_expr): Handle
|
||
{WHILE,FOR}_COND_{PREP,CLEANUP}.
|
||
(check_for_return_continue): Handle {WHILE,FOR}_COND_PREP.
|
||
(potential_constant_expression_1): RECUR on
|
||
{WHILE,FOR}_COND_{PREP,CLEANUP}.
|
||
|
||
2025-02-07 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/117106
|
||
PR c++/118190
|
||
* pt.cc (maybe_instantiate_noexcept): Give an error if the noexcept
|
||
hasn't been parsed yet.
|
||
|
||
2025-02-07 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/118282
|
||
* call.cc (add_builtin_candidate): Also check for null_ptr_cst_p
|
||
operands.
|
||
|
||
2025-02-07 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118763
|
||
* init.cc (build_new_1): Don't set CLEANUP_EH_ONLY.
|
||
|
||
2025-02-07 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118773
|
||
* decl.cc (grokdeclarator): Use cplus_decl_attributes rather than
|
||
decl_attributes for std_attributes on pointer and array types.
|
||
|
||
2025-02-07 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118661
|
||
* constexpr.cc (potential_constant_expression_1): Don't diagnose
|
||
lvalue-to-rvalue conversion of volatile lvalue if it has NULLPTR_TYPE.
|
||
* decl2.cc (decl_maybe_constant_var_p): Return true for constexpr
|
||
decls with NULLPTR_TYPE even if they are volatile.
|
||
|
||
2025-02-05 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/118319
|
||
* decl.cc (grokfndecl): Inspect all friend function parameters.
|
||
If it's not valid for them to have a default value and we're
|
||
processing a template, set the default value to error_mark_node
|
||
and give a hard error.
|
||
|
||
2025-02-04 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118671
|
||
* call.cc (build_list_conv): For RAW_DATA_CST, call
|
||
implicit_conversion with INTEGER_CST representing first byte instead
|
||
of the whole RAW_DATA_CST. If it is an optimizable trivial
|
||
conversion, just save that to subconvs, otherwise allocate an
|
||
artificial ck_list for all the RAW_DATA_CST bytes and create
|
||
subsubconv for each of them.
|
||
(convert_like_internal): For ck_list with RAW_DATA_CST, instead of
|
||
doing all the checks for optimizable conversion just check kind and
|
||
assert everything else, otherwise use subsubconversions instead of
|
||
the subconversion for each element.
|
||
|
||
2025-02-04 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/117778
|
||
* parser.cc (cp_parser_late_return_type_opt): Maybe override
|
||
auto_is_implicit_function_template_parm_p.
|
||
(cp_parser_parameter_declaration): Move a make_temp_override below.
|
||
|
||
2025-02-04 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118718
|
||
* parser.cc (warn_about_ambiguous_parse): Don't warn when a trailing
|
||
return type is present.
|
||
|
||
2025-02-04 Simon Martin <simon@nasilyan.com>
|
||
Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/117114
|
||
PR c++/109918
|
||
* class.cc (warn_hidden): Keep track of overloaded and of hidden
|
||
base methods.
|
||
* error.cc (location_of): Skip over conv_op_marker.
|
||
|
||
2025-02-04 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/114619
|
||
* init.cc (build_vec_init): Properly determine whether
|
||
digest_init has been called.
|
||
|
||
2025-02-04 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118719
|
||
* lambda.cc (add_capture): Only pedwarn about capturing structured
|
||
binding if !explicit_init_p.
|
||
|
||
2025-02-04 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/108205
|
||
* contracts.cc (get_pseudo_contract_violation_type): Give names
|
||
to generated FIELD_DECLs.
|
||
(declare_handle_contract_violation): Mark contract_violation
|
||
type as external linkage.
|
||
(build_contract_handler_call): Ensure any builtin declarations
|
||
created here aren't treated as attached to the current module.
|
||
|
||
2025-02-04 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/98893
|
||
* decl.cc (start_cleanup_fn): Make name from the mangled name of
|
||
the passed-in decl.
|
||
(register_dtor_fn): Pass decl to start_cleanup_fn.
|
||
|
||
2025-02-03 A J Ryan Solutions Ltd <gcc.gnu.org@ajryansolutions.co.uk>
|
||
|
||
PR c++/118265
|
||
* pt.cc (find_parameter_packs_r) <case TEMPLATE_PARM_INDEX>:
|
||
Walk into the type of a parameter pack.
|
||
|
||
2025-02-03 Iain Sandoe <iains.gcc@gmail.com>
|
||
Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/116506
|
||
PR c++/116880
|
||
* coroutines.cc (build_co_await): Ensure that xvalues are
|
||
materialised. Handle references/pointer values in awaiter
|
||
access expressions.
|
||
(is_stable_lvalue): New.
|
||
* decl.cc (cxx_maybe_build_cleanup): Handle null arg.
|
||
|
||
2025-02-03 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/116914
|
||
PR c++/117231
|
||
PR c++/118470
|
||
PR c++/118491
|
||
* semantics.cc (finish_for_stmt): Don't wrap the result of
|
||
pop_stmt_list in EXPR_STMT.
|
||
|
||
2025-02-03 Richard Biener <rguenther@suse.de>
|
||
|
||
PR c++/79786
|
||
* rtti.cc (emit_tinfo_decl): Fix DATA_ABI_ALIGNMENT invocation.
|
||
|
||
2025-01-31 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/117516
|
||
* class.cc (field_nonempty_p): Formatting fixes. Use
|
||
integer_zerop instead of tree_int_cst_equal with size_zero_node.
|
||
(struct flexmems_t): Change type of first member from tree to bool.
|
||
(find_flexarrays): Add nested_p argument. Change pun argument type
|
||
from tree to bool, adjust uses. Formatting fixes. If BASE_P or
|
||
NESTED_P and T is RECORD_TYPE, start looking only at the last
|
||
non-empty or array FIELD_DECL. Adjust recursive call, set first
|
||
if it was a nested call and found an array.
|
||
(diagnose_invalid_flexarray, diagnose_flexarrays, check_flexarrays):
|
||
Formatting fixes.
|
||
|
||
2025-01-31 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/117501
|
||
* cp-gimplify.cc (cp_build_init_expr_for_ctor): New.
|
||
(cp_fold_immediate_r): Call it.
|
||
(cp_fold): Break out code into cp_build_init_expr_for_ctor.
|
||
|
||
2025-01-30 Patrick Palka <ppalka@redhat.com>
|
||
|
||
* cp-tree.h (LAMBDA_EXPR_CAPTURES_THIS_P): Remove.
|
||
|
||
2025-01-30 Iain Sandoe <iain@sandoe.co.uk>
|
||
|
||
PR c++/118673
|
||
* tree.cc (lvalue_kind): Mark CONST_DECLs as mergable
|
||
when they are also TREE_STATIC.
|
||
|
||
2025-01-30 Tobias Burnus <tburnus@baylibre.com>
|
||
|
||
* parser.cc (cp_finish_omp_declare_variant): Modify how append_args
|
||
is saved internally.
|
||
* pt.cc (tsubst_attribute): Likewise.
|
||
(tsubst_omp_clauses): Remove C_ORT_OMP_DECLARE_SIMD from interop
|
||
handling as no longer called for it.
|
||
* decl.cc (omp_declare_variant_finalize_one): Update append_args
|
||
changes; fixes for ADL input.
|
||
|
||
2025-01-29 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118655
|
||
* semantics.cc (trait_expr_value) <case CPTK_IS_BOUNDED_ARRAY>: Return
|
||
false for zero-sized arrays.
|
||
|
||
2025-01-28 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118285
|
||
* constexpr.cc (cxx_eval_vec_init_1): Build INIT_EXPR for
|
||
initializing a class.
|
||
|
||
2025-01-28 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118673
|
||
* call.cc (maybe_init_list_as_array): Check for lvalue
|
||
initializers.
|
||
* cp-tree.h (enum cp_lvalue_kind_flags): Add clk_mergeable.
|
||
* tree.cc (lvalue_kind): Return it.
|
||
(non_mergeable_glvalue_p): New.
|
||
(test_lvalue_kind): Adjust.
|
||
|
||
2025-01-28 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/117855
|
||
* cp-tree.h (DECL_FRIEND_CONTEXT): Exclude deduction guides.
|
||
|
||
2025-01-27 Jason Merrill <jason@redhat.com>
|
||
|
||
PR c++/118632
|
||
* pt.cc (unify): Only strip conversion if deducible_expression.
|
||
|
||
2025-01-27 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/114292
|
||
* pt.cc (for_each_template_parm_r) <INTEGER_TYPE>: Remove case
|
||
now handled by cp_walk_subtrees.
|
||
* tree.cc (cp_walk_subtrees): Walk the type of DECL_EXPR
|
||
declarations, as well as the TYPE_{MIN,MAX}_VALUE of
|
||
INTEGER_TYPEs.
|
||
|
||
2025-01-27 John David Anglin <danglin@gcc.gnu.org>
|
||
|
||
* module.cc: Test HAVE_MUNMAP and HAVE_MSYNC instead of
|
||
_POSIX_MAPPED_FILES > 0.
|
||
|
||
2025-01-27 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/115769
|
||
* module.cc (module_state::write_inits): Verify
|
||
STATIC_INIT_DECOMP_{,NON}BASE_P flags and stream changes in those
|
||
out.
|
||
(module_state::read_inits): Stream those flags in.
|
||
|
||
2025-01-27 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/115769
|
||
* cp-tree.h (STATIC_INIT_DECOMP_BASE_P): Define.
|
||
(STATIC_INIT_DECOMP_NONBASE_P): Define.
|
||
* decl.cc (cp_finish_decl): Mark nodes in {static,tls}_aggregates
|
||
emitted for namespace scope structured bindings with
|
||
STATIC_INIT_DECOMP_{,NON}BASE_P flags when needed.
|
||
* decl2.cc (decomp_handle_one_var, decomp_finalize_var_list): New
|
||
functions.
|
||
(emit_partial_init_fini_fn): Use them.
|
||
(prune_vars_needing_no_initialization): Assert
|
||
STATIC_INIT_DECOMP_*BASE_P is not set on DECL_EXTERNAL vars to be
|
||
pruned out.
|
||
(partition_vars_for_init_fini): Use same priority for
|
||
consecutive STATIC_INIT_DECOMP_*BASE_P vars and propagate
|
||
those flags to new TREE_LISTs when possible. Formatting fix.
|
||
(handle_tls_init): Use decomp_handle_one_var and
|
||
decomp_finalize_var_list functions.
|
||
|
||
2025-01-25 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/118239
|
||
* constexpr.cc (cx_check_missing_mem_inits): Don't skip fields
|
||
with DECL_FIELD_IS_BASE.
|
||
|
||
2025-01-25 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/117827
|
||
* init.cc (build_new_1): Pass address of a make_tree_vector ()
|
||
initialized gc tree vector to build_vec_init and append
|
||
build_disable_temp_cleanup to init_expr from it.
|
||
|
||
2025-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/116568
|
||
* module.cc (trees_out::get_merge_kind): Treat all lambdas
|
||
without a mangling scope as un-mergeable.
|
||
|
||
2025-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/116568
|
||
* cp-tree.h (finish_concept_definition): Adjust parameters.
|
||
(start_concept_definition): Declare.
|
||
* module.cc (depset::hash::is_tu_local_entity): Use
|
||
LAMBDA_EXPR_EXTRA_SCOPE to detect TU-local lambdas.
|
||
* parser.cc (cp_parser_concept_definition): Start a lambda scope
|
||
for concept definitions.
|
||
* pt.cc (tsubst_lambda_expr): Namespace-scope lambdas may now
|
||
have extra scope.
|
||
(finish_concept_definition): Split into...
|
||
(start_concept_definition): ...this new function.
|
||
|
||
2025-01-25 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118245
|
||
* cp-tree.h (LAMBDA_EXPR_EXTRA_SCOPE): Adjust comment.
|
||
* parser.cc (cp_parser_class_head): Start (and do not finish)
|
||
lambda scope for all valid types.
|
||
(cp_parser_class_specifier): Finish lambda scope after parsing
|
||
members instead.
|
||
* pt.cc (instantiate_class_template): Add lambda scoping.
|
||
|
||
2025-01-24 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/117153
|
||
* decl2.cc (build_anon_union_vars): Use FIELD for the second operand
|
||
of a COMPONENT_REF.
|
||
|
||
2025-01-23 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/117602
|
||
* cp-tree.h (current_nonlambda_scope): Add a default argument.
|
||
* lambda.cc (current_nonlambda_scope): New bool parameter. Use it.
|
||
* parser.cc (cp_parser_lambda_introducer): Use current_nonlambda_scope
|
||
to check if the lambda is non-local.
|
||
|
||
2025-01-23 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118590
|
||
* typeck.cc (build_omp_array_section): If array_expr is type dependent
|
||
or a TYPE_DECL, build OMP_ARRAY_SECTION with NULL type.
|
||
|
||
2025-01-23 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118604
|
||
* parser.cc (cp_parser_omp_metadirective): Test !default_p
|
||
first and use strcmp () != 0 rather than !strcmp () == 0.
|
||
|
||
2025-01-23 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* mangle.cc (write_expression): Update mangling for lambdas.
|
||
|
||
2025-01-23 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/107741
|
||
* cp-tree.h (start_initialized_static_member): Declare.
|
||
(finish_initialized_static_member): Declare.
|
||
* decl2.cc (start_initialized_static_member): New function.
|
||
(finish_initialized_static_member): New function.
|
||
* lambda.cc (record_lambda_scope): Support falling back to old
|
||
ABI (maybe with warning).
|
||
* parser.cc (cp_parser_member_declaration): Build decl early
|
||
when parsing an initialized static data member.
|
||
|
||
2025-01-23 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118582
|
||
* module.cc (trees_out::decl_value): Always stream
|
||
imported_temploid_friends information.
|
||
(trees_in::decl_value): Likewise.
|
||
|
||
2025-01-22 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/115769
|
||
* decl.cc: Partially implement CWG 2867 - Order of initialization
|
||
for structured bindings.
|
||
(cp_finish_decl): If need_decomp_init, for function scope structure
|
||
binding bases, temporarily clear stmts_are_full_exprs_p before
|
||
calling expand_static_init, after it call cp_finish_decomp and wrap
|
||
code emitted by both into maybe_cleanup_point_expr_void and ensure
|
||
cp_finish_decomp isn't called again.
|
||
|
||
2025-01-22 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118396
|
||
* constexpr.cc (cxx_eval_outermost_constant_expr): Add an error call
|
||
when !allow_non_constant.
|
||
|
||
2025-01-22 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/118199
|
||
* typeck2.cc (split_nonconstant_init_1): Clear
|
||
TARGET_EXPR_ELIDING_P if we need to use a copy constructor
|
||
because of __no_unique_address__.
|
||
|
||
2025-01-22 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* parser.cc (cp_parser_objc_message_args): Use tree_cons with
|
||
nreverse at the end for both sel_args and addl_args, instead of
|
||
chainon with build_tree_list second argument.
|
||
|
||
2025-01-22 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* call.cc (add_list_candidates): Use append_ctor_to_tree_vector.
|
||
|
||
2025-01-22 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/116756
|
||
* lambda.cc (lambda_expr_this_capture): Call
|
||
retrieve_local_specialization on the result of
|
||
LAMBDA_EXPR_THIS_CAPTURE for a generic lambda.
|
||
* parser.cc (cp_parser_lambda_expression): Don't clear
|
||
LAMBDA_EXPR_THIS_CAPTURE.
|
||
* pt.cc (tsubst_stmt) <case DECL_EXPR>: Don't overwrite
|
||
LAMBDA_EXPR_THIS_CAPTURE with the specialized capture.
|
||
(tsubst_lambda_expr): Don't clear LAMBDA_EXPR_THIS_CAPTURE
|
||
afterward.
|
||
|
||
2025-01-21 Andrew Pinski <quic_apinski@quicinc.com>
|
||
|
||
PR c++/118525
|
||
* cp-gimplify.cc (cp_fold): Check operands of unary, binary, cond/vec_cond
|
||
and array_ref for error_mark before checking if the operands had changed.
|
||
|
||
2025-01-21 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR objc++/118586
|
||
* parser.cc (cp_parser_objc_message_args): Handle CPP_EMBED.
|
||
|
||
2025-01-21 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118396
|
||
PR c++/118523
|
||
* constexpr.cc (cxx_eval_outermost_constant_expr): For non-simple
|
||
TARGET_EXPRs, return ctx.ctor rather than the result of
|
||
cxx_eval_constant_expression. If TYPE and the type of R don't
|
||
match, return the original expression.
|
||
|
||
2025-01-21 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/118225
|
||
* typeck.cc (build_class_member_access_expr): Let errors that
|
||
that have been reported go through.
|
||
|
||
2025-01-21 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* parser.cc (cp_lexer_new_main): Attempt to optimize large sequences
|
||
of CPP_NUMBER with int type and values 0-255 separated by CPP_COMMA
|
||
into CPP_EMBED with RAW_DATA_CST u.value.
|
||
|
||
2025-01-21 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* cp-objcp-common.cc (names_builtin_p): Return 1 for RID_VA_ARG.
|
||
|
||
2025-01-21 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118532
|
||
* call.cc (add_list_candidates): Handle RAW_DATA_CST among init_list
|
||
elts.
|
||
* error.cc (dump_expr_init_vec): Handle RAW_DATA_CST among v elts.
|
||
|
||
2025-01-20 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
* parser.cc (cp_parser_decomposition_declaration): Check linkage
|
||
of structured bindings in modules.
|
||
* tree.cc (decl_linkage): Structured bindings don't necessarily
|
||
have no linkage.
|
||
|
||
2025-01-20 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118101
|
||
* module.cc (trees_in::decl_value): Use structural equality when
|
||
deduping partial specs with mismatching canonical types.
|
||
|
||
2025-01-18 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118513
|
||
* decl2.cc (copy_linkage): If not TREE_PUBLIC, also set
|
||
DECL_INTERFACE_KNOWN, assert it was set on decl and copy
|
||
DECL_NOT_REALLY_EXTERN flags.
|
||
|
||
2025-01-18 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118534
|
||
* constexpr.cc (find_array_ctor_elt): Don't return i early if
|
||
i == end - 1 and the last elt's value is RAW_DATA_CST.
|
||
|
||
2025-01-17 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118049
|
||
* module.cc (trees_in::is_matching_decl): Propagate
|
||
FNDECL_USED_AUTO as well.
|
||
|
||
2025-01-17 Tobias Burnus <tburnus@baylibre.com>
|
||
|
||
PR fortran/118321
|
||
* decl.cc (omp_declare_variant_finalize_one): Shift adjust_args index
|
||
by one for non-static class function's 'this' pointer.
|
||
|
||
2025-01-17 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/118147
|
||
* parser.cc (cp_parser_cache_defarg): Don't error when
|
||
CPP_PRAGMA_EOL.
|
||
|
||
2025-01-17 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/118255
|
||
* name-lookup.cc (pushdecl): Don't call check_template_shadow
|
||
for hidden bindings.
|
||
|
||
2025-01-16 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/105440
|
||
* constexpr.cc (cxx_eval_call_expression): If any RESULT_DECLs get
|
||
replaced in the call result, try further evaluating the result.
|
||
|
||
2025-01-16 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/107522
|
||
* constraint.cc (get_normalized_constraints_from_decl): Use the
|
||
most general template for an explicit specialization of a
|
||
member template.
|
||
|
||
2025-01-16 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/118454
|
||
* cp-tree.h (STF_KEEP_INJ_CLASS_NAME): Define.
|
||
* pt.cc (iterative_hash_template_argument) <case tcc_type>:
|
||
Clarify comment for when we'd see an alias template
|
||
specialization here.
|
||
(coerce_template_parms): Strip typedefs (except for
|
||
injected-class-names) in the pack expansion early break cases
|
||
that defer coercion.
|
||
* tree.cc (strip_typedefs): Don't strip an injected-class-name
|
||
if STF_KEEP_INJ_CLASS_NAME is set.
|
||
|
||
2025-01-16 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/116417
|
||
* cp-tree.h (finish_pseudo_destructor_expr): Add complain
|
||
parameter.
|
||
* parser.cc (cp_parser_postfix_dot_deref_expression): Pass
|
||
complain=tf_warning_or_error to finish_pseudo_destructor_expr.
|
||
* pt.cc (tsubst_expr): Pass complain to
|
||
finish_pseudo_destructor_expr.
|
||
* semantics.cc (finish_pseudo_destructor_expr): Check complain
|
||
before emitting a diagnostic.
|
||
|
||
2025-01-16 Simon Martin <simon@nasilyan.com>
|
||
|
||
PR c++/117775
|
||
* decl.cc (fold_sizeof_expr): Make sure the folded result has
|
||
type size_type_node.
|
||
|
||
2025-01-16 Sandra Loosemore <sloosemore@baylibre.com>
|
||
|
||
* parser.cc (cp_parser_omp_assumption_clauses): Give a more specific
|
||
error message for invalid directives vs unknown names.
|
||
|
||
2025-01-16 Sandra Loosemore <sloosemore@baylibre.com>
|
||
|
||
* decl2.cc (cplus_decl_attributes): Don't add "omp declare target
|
||
block".
|
||
|
||
2025-01-16 Sandra Loosemore <sloosemore@baylibre.com>
|
||
Kwok Cheung Yeung <kcy@codesourcery.com>
|
||
Sandra Loosemore <sandra@codesourcery.com>
|
||
|
||
PR middle-end/112779
|
||
PR middle-end/113904
|
||
* cp-tree.h (struct saved_scope): Add new field
|
||
x_processing_omp_trait_property_expr.
|
||
(processing_omp_trait_property_expr): New.
|
||
* parser.cc (cp_parser_skip_to_end_of_block_or_statement): Add
|
||
metadirective_p parameter and handle skipping over the parentheses
|
||
in a "for" statement.
|
||
(struct omp_metadirective_parse_data): New.
|
||
(mangle_metadirective_region_label): New.
|
||
(cp_parser_label_for_labeled_statement): Mangle label names in a
|
||
metadirective body.
|
||
(cp_parser_jump_statement): Likewise.
|
||
(cp_parser_omp_context_selector): Allow arbitrary expressions in
|
||
device_num and condition properties.
|
||
(cp_parser_omp_assumption_clauses): Handle C_OMP_DIR_META.
|
||
(analyze_metadirective_body): New.
|
||
(cp_parser_omp_metadirective): New.
|
||
(cp_parser_pragma): Handle PRAGMA_OMP_METADIRECTIVE.
|
||
* parser.h (struct cp_parser): Add omp_metadirective_state field.
|
||
* pt.cc (tsubst_omp_context_selector): New.
|
||
(tsubst_stmt): Handle OMP_METADIRECTIVE.
|
||
* semantics.cc (finish_id_expression_1): Don't diagnose use of
|
||
parameter outside function body in dynamic selector expressions here.
|
||
|
||
2025-01-16 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118214
|
||
* decl.cc (struct reshape_iter): Add raw_idx member.
|
||
(cp_maybe_split_raw_data): Add inc_cur parameter, set *inc_cur,
|
||
don't modify original CONSTRUCTOR, use d->raw_idx to track index
|
||
into a RAW_DATA_CST d->cur->value.
|
||
(consume_init): Adjust cp_maybe_split_raw_data caller, increment
|
||
d->cur when cur_inc is true.
|
||
(reshape_init_array_1): Don't modify original CONSTRUCTOR when
|
||
handling RAW_DATA_CST d->cur->value and !reuse, instead use
|
||
d->raw_idx to track index into RAW_DATA_CST.
|
||
(reshape_single_init): Initialize iter.raw_idx.
|
||
(reshape_init_class): Adjust for introduction of d->raw_idx,
|
||
adjust cp_maybe_split_raw_data caller, do d->cur++ if inc_cur
|
||
rather than when it returns non-NULL.
|
||
(reshape_init_r): Check for has_designator_problem for second
|
||
half of _Complex earlier, also check for
|
||
error_operand_p (d->cur->value). Use consume_init instead of
|
||
cp_maybe_split_raw_data with later conditional d->cur++.
|
||
(reshape_init): Initialize d.raw_idx.
|
||
|
||
2025-01-16 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* parser.cc (cp_parser_lambda_declarator_opt,
|
||
cp_parser_statement, cp_parser_selection_statement,
|
||
cp_parser_jump_statement): Use -std=c++23 and -std=gnu++23
|
||
in diagnostics rather than -std=c++2b and -std=gnu++2b.
|
||
* semantics.cc (finish_compound_literal): Likewise.
|
||
* typeck2.cc (build_functional_cast_1): Likewise.
|
||
* decl.cc (start_decl): Likewise.
|
||
* constexpr.cc (ensure_literal_type_for_constexpr_object,
|
||
potential_constant_expression_1): Likewise.
|
||
|
||
2025-01-15 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118390
|
||
* cp-tree.h (count_ctor_elements): Declare.
|
||
* call.cc (count_ctor_elements): No longer static.
|
||
* pt.cc (unify): Use count_ctor_elements instead of
|
||
CONSTRUCTOR_NELTS.
|
||
|
||
2025-01-15 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118278
|
||
* mangle.cc (write_expression): Handle RAW_DATA_CST.
|
||
|
||
2025-01-15 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118139
|
||
* cxx-pretty-print.cc (pp_cxx_nested_name_specifier): Handle
|
||
a computed-type-specifier.
|
||
|
||
2025-01-15 Tobias Burnus <tburnus@baylibre.com>
|
||
|
||
PR c++/118486
|
||
* decl.cc (omp_declare_variant_finalize_one): When resolving
|
||
the variant to use, handle variant calls with TARGET_EXPR.
|
||
|
||
2025-01-15 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118387
|
||
* method.cc (build_comparison_op): Set bad if
|
||
std::strong_ordering::equal doesn't convert to rettype.
|
||
|
||
2025-01-15 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118124
|
||
* cp-tree.h (build_array_of_n_type): Change second argument type
|
||
from int to unsigned HOST_WIDE_INT.
|
||
* tree.cc (build_array_of_n_type): Likewise.
|
||
* call.cc (count_ctor_elements): New function.
|
||
(maybe_init_list_as_array): Use it instead of CONSTRUCTOR_NELTS.
|
||
(convert_like_internal): Use length from init's type instead of
|
||
len when handling the maybe_init_list_as_array case.
|
||
|
||
2025-01-15 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118124
|
||
* call.cc (convert_like_internal): Handle RAW_DATA_CST in
|
||
ck_list handling. Formatting fixes.
|
||
|
||
2025-01-14 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118047
|
||
PR c++/118355
|
||
* typeck2.cc (massage_init_elt): Call fold_non_dependent_init
|
||
unless for a CONSTRUCTOR in a template.
|
||
|
||
2025-01-14 Sandra Loosemore <sloosemore@baylibre.com>
|
||
Kwok Cheung Yeung <kcy@codesourcery.com>
|
||
Sandra Loosemore <sandra@codesourcery.com>
|
||
Marcel Vollweiler <marcel@codesourcery.com>
|
||
|
||
PR middle-end/114596
|
||
PR middle-end/112779
|
||
PR middle-end/113904
|
||
* decl.cc (omp_declare_variant_finalize_one): Update for changes
|
||
to omp-general.h interfaces.
|
||
* parser.cc (cp_finish_omp_declare_variant): Likewise.
|
||
|
||
2025-01-14 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/117397
|
||
* module.cc (depset::hash::add_deduction_guides): Don't emit
|
||
imported deduction guides.
|
||
(depset::hash::finalize_dependencies): Add check for any
|
||
bindings referring to imported entities.
|
||
|
||
2025-01-14 Andrew Pinski <quic_apinski@quicinc.com>
|
||
|
||
PR c++/118445
|
||
* constexpr.cc (cxx_eval_constant_expression): Handle VEC_DUPLICATE like
|
||
a "normal" unary operator.
|
||
(potential_constant_expression_1): Likewise.
|
||
|
||
2025-01-11 Nathaniel Shead <nathanieloshead@gmail.com>
|
||
|
||
PR c++/114630
|
||
* module.cc (trees_in::core_vals) <BLOCK>: Chain a new node if
|
||
DECL_CHAIN already is set.
|
||
|
||
2025-01-11 Jason Merrill <jason@redhat.com>
|
||
|
||
* module.cc (trees_out::type_node): Write attributes for
|
||
tt_derived_type, not tt_variant_type.
|
||
(trees_in::tree_node): Likewise for reading.
|
||
|
||
2025-01-11 Jason Merrill <jason@redhat.com>
|
||
|
||
* module.cc (trees_in::decl_value): Merge attributes.
|
||
|
||
2025-01-10 Paul-Antoine Arras <parras@baylibre.com>
|
||
|
||
* parser.cc (cp_parser_pragma): Replace call to cp_parser_omp_dispatch
|
||
with cp_parser_omp_construct and check context.
|
||
|
||
2025-01-10 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118387
|
||
* method.cc (genericize_spaceship): For tag == cc_last if
|
||
type is not auto just return error_mark_node instead of failing
|
||
checking assertion.
|
||
|
||
2025-01-10 Jason Merrill <jason@redhat.com>
|
||
|
||
* module.cc (trees_out::core_bools): Write replaceable_operator.
|
||
(trees_in::core_bools): Read it.
|
||
|
||
2025-01-10 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/117937
|
||
* pt.cc (tsubst_pack_index): tsubst the pack even when it's not
|
||
PACK_EXPANSION_P.
|
||
|
||
2025-01-10 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/118277
|
||
* cp-tree.h (finish_asm_string_expression): Declare.
|
||
* semantics.cc (finish_asm_string_expression): New function.
|
||
(finish_asm_stmt): Use it.
|
||
* parser.cc (cp_parser_asm_string_expression): Likewise.
|
||
Wrap string into PAREN_EXPR in the ("") case.
|
||
(cp_parser_asm_definition): Don't ICE if finish_asm_stmt
|
||
returns error_mark_node.
|
||
(cp_parser_asm_specification_opt): Revert 2024-06-24 changes.
|
||
* pt.cc (tsubst_stmt): Don't ICE if finish_asm_stmt returns
|
||
error_mark_node.
|
||
|
||
2025-01-10 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* module.cc (trees_out::core_vals): Note DECL_VALUE_EXPR even for
|
||
vars outside of functions.
|
||
(trees_in::core_vals): Read in DECL_VALUE_EXPR even for vars outside
|
||
of functions.
|
||
(trees_out::get_merge_kind): Make DECL_DECOMPOSITION_P MK_unique.
|
||
|
||
2025-01-10 Jason Merrill <jason@redhat.com>
|
||
|
||
* error.cc (cxx_initialize_diagnostics): Improve comment.
|
||
* module.cc (modules): Improve comment.
|
||
(get_originating_module): Add function comment.
|
||
|
||
2025-01-10 Jason Merrill <jason@redhat.com>
|
||
|
||
* module.cc (trees_out::write_function_def): Write returns* flags.
|
||
(struct post_process_data): Add returns_* flags.
|
||
(trees_in::read_function_def): Set them.
|
||
(module_state::read_cluster): Use them.
|
||
|
||
2025-01-09 Jason Merrill <jason@redhat.com>
|
||
|
||
* decl.cc (check_redeclaration_exception_specification): Be more
|
||
lenient about ::operator new.
|
||
|
||
2025-01-09 Jason Merrill <jason@redhat.com>
|
||
Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
|
||
|
||
PR c/116060
|
||
* call.cc (standard_conversion): Preserve type name in ck_identity.
|
||
(maybe_adjust_type_name): New.
|
||
(convert_like_internal): Use it.
|
||
Handle -Wsuggest-attribute=format here.
|
||
(convert_for_arg_passing): Not here.
|
||
|
||
2025-01-09 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/118060
|
||
* constraint.cc (tsubst_valid_expression_requirement): Don't
|
||
check convert_to_void during partial substitution.
|
||
|
||
2025-01-09 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/117887
|
||
* pt.cc (instantiate_template): Set tf_partial if arguments are
|
||
dependent.
|
||
|
||
2025-01-09 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/117925
|
||
* constexpr.cc (potential_constant_expression_1) <case CAST_EXPR>:
|
||
Fix check for class conversion to literal type to properly look
|
||
through the TREE_LIST operand of a CAST_EXPR.
|
||
|
||
2025-01-09 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/117925
|
||
* constexpr.cc (cxx_eval_constant_expression) <default>:
|
||
Relax ICE when encountering an unexpected tree code into a
|
||
checking ICE guarded by flag_checking.
|
||
|
||
2025-01-09 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/117993
|
||
* search.cc (any_dependent_bases_p): Recurse into bases (of
|
||
dependent type) that are not BINFO_DEPENDENT_BASE_P. Document
|
||
default argument.
|
||
|
||
2025-01-09 Patrick Palka <ppalka@redhat.com>
|
||
|
||
PR c++/117792
|
||
* pt.cc (type_dependent_expression_p): Consider the dependence
|
||
of the address of each template argument of a function
|
||
template-id.
|
||
|
||
2025-01-08 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/117825
|
||
* typeck.cc (cp_build_function_call_vec): Don't call
|
||
check_function_arguments if complain doesn't have tf_warning bit set.
|
||
|
||
2025-01-08 Jason Merrill <jason@redhat.com>
|
||
|
||
* cp-tree.h (build_nop): Add CXX_MEM_STAT_INFO.
|
||
* typeck.cc (build_nop): Add MEM_STAT_DECL.
|
||
|
||
2025-01-08 Jason Merrill <jason@redhat.com>
|
||
|
||
* call.cc (implicit_conversion): Check that FROM isn't a reference
|
||
if we also got an EXPR argument.
|
||
(convert_like_internal): Check that EXPR isn't a reference.
|
||
(can_convert_arg): convert_from_reference if needed.
|
||
|
||
2025-01-08 Jason Merrill <jason@redhat.com>
|
||
|
||
* method.cc (is_stub_object): New.
|
||
* cp-tree.h (is_stub_object): Declare.
|
||
* error.cc (dump_expr): Use it.
|
||
|
||
2025-01-08 Jason Merrill <jason@redhat.com>
|
||
|
||
* call.cc (convert_like_internal): Add missing break.
|
||
* coroutines.cc (cp_coroutine_transform::build_ramp_function): Build
|
||
INIT_EXPR directly.
|
||
* decl.cc (omp_declare_variant_finalize_one): Use build_stub_object.
|
||
|
||
2025-01-08 Marek Polacek <polacek@redhat.com>
|
||
|
||
PR c++/118169
|
||
* typeck2.cc (split_nonconstant_init): Call finish_expr_stmt instead
|
||
of add_stmt.
|
||
|
||
2025-01-03 Tobias Burnus <tburnus@baylibre.com>
|
||
|
||
* parser.cc (cp_parser_omp_var_list_no_open,
|
||
cp_parser_omp_var_list): For kind=0 (= OMP_CLAUSE_ERROR),
|
||
store also the expression location in the tree list.
|
||
(cp_parser_oacc_data_clause_deviceptr,
|
||
cp_finish_omp_declare_variant): Use that location instead or
|
||
input_location/the before-parsing location.
|
||
* semantics.cc (finish_omp_threadprivate): Likewise.
|
||
|
||
2025-01-02 Paul-Antoine Arras <parras@baylibre.com>
|
||
|
||
* parser.cc (cp_parser_omp_dispatch): Handle INDIRECT_REF.
|
||
|
||
|
||
Copyright (C) 2025 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|