From 8c22aed4b09ce6ffa7bd669377355e38f04614d6 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 3 Jan 2024 11:28:42 +0100 Subject: Rotate ChangeLog files. Rotate ChangeLog files for ChangeLogs with yearly cadence. --- gcc/cp/ChangeLog | 4093 +----------------------------------------------- gcc/cp/ChangeLog-2023 | 4097 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4098 insertions(+), 4092 deletions(-) create mode 100644 gcc/cp/ChangeLog-2023 (limited to 'gcc/cp') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8575676..dc0c0df 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4096 +1,5 @@ -2023-12-22 Jason Merrill - - PR c++/81438 - * decl.cc (poplevel_named_label_1): Handle leaving catch. - (check_previous_goto_1): Likewise. - (check_goto_1): Likewise. - -2023-12-22 Jason Merrill - - PR c++/95298 - * mangle.cc (write_expression): Handle v18 sizeof... bug. - * pt.cc (tsubst_pack_expansion): Keep TREE_VEC for sizeof... - (tsubst_expr): Don't strip TREE_VEC here. - -2023-12-21 Patrick Palka - - * cp-tree.h (maybe_warn_unparenthesized_assignment): Add - 'nested_p' bool parameter. - * semantics.cc (boolish_class_type_p_cache): Define. - (boolish_class_type_p): Define. - (maybe_warn_unparenthesized_assignment): Add 'nested_p' - bool parameter. Suppress the warning for nested assignments - to bool and bool-like class types. - (maybe_convert_cond): Pass nested_p=false to - maybe_warn_unparenthesized_assignment. - * typeck.cc (convert_for_assignment): Pass nested_p=true to - maybe_warn_unparenthesized_assignment. Remove now redundant - check for 'rhs' having bool type. - -2023-12-21 Patrick Palka - - PR c++/84542 - * decl.cc (merge_attribute_bits): Merge TREE_DEPRECATED - and TREE_UNAVAILABLE. - -2023-12-21 Patrick Palka - - PR c++/70413 - PR c++/107906 - * decl2.cc (min_vis_expr_r): Handle PTRMEM_CST and TEMPLATE_DECL - other than those for alias templates. - -2023-12-21 Jakub Jelinek - - * cp-gimplify.cc (cp_genericize_r): If warn_alloc_size, call - warn_for_alloc_size for -Walloc-size diagnostics. - * semantics.cc (finish_call_expr): If warn_calloc_transposed_args, - call warn_for_calloc for -Wcalloc-transposed-args diagnostics. - -2023-12-21 Jason Merrill - - PR c++/37722 - * decl.cc (identify_goto): Adjust for computed goto. - (struct named_label_use_entry): Add computed_goto field. - (poplevel_named_label_1): Add to computed_goto vec. - (check_previous_goto_1): Dump computed_goto vec. - (check_goto_1): Split out from check_goto. - (check_goto): Check all addressable labels for computed goto. - (struct named_label_entry): Add addressed field. - (mark_label_addressed): New. - * parser.cc (cp_parser_unary_expression): Call it. - * cp-tree.h (mark_label_addressed): Declare it. - -2023-12-20 Jason Merrill - - PR c++/113088 - PR c++/33799 - * except.cc (maybe_splice_retval_cleanup): Handle an empty block. - -2023-12-20 Jason Merrill - - PR c++/103185 - * typeck.cc (cp_build_array_ref): Handle swapped operands. - -2023-12-19 Patrick Palka - - PR c++/113063 - * method.cc (synthesize_method): Use maybe_push_to_top_level - and maybe_pop_from_top_level. - -2023-12-19 Patrick Palka - - * name-lookup.cc (struct local_state_t): Define. - (local_state_stack): Define. - (maybe_push_to_top_level): Use them. - (maybe_pop_from_top_level): Likewise. - * pt.cc (instantiate_decl): Remove dead code for saving/restoring - cp_unevaluated_operand and c_inhibit_evaluation_warnings. - -2023-12-19 Nathaniel Shead - - PR c++/102420 - * constexpr.cc (cxx_bind_parameters_in_call): Check for calling - non-static member functions with a null pointer. - -2023-12-19 Sandra Loosemore - - * decl.cc (omp_declare_variant_finalize_one): Adjust for new - representations. - * parser.cc (omp_construct_selectors): Delete. - (omp_device_selectors): Delete. - (omp_implementation_selectors): Delete. - (omp_user_selectors): Delete. - (cp_parser_omp_context_selector): Adjust for new representations - and simplify dispatch logic. Uniformly warn instead of sometimes - error when an unknown selector is found. Adjust error messages - for extraneous/incorrect score. - (cp_parser_omp_context_selector_specification): Likewise. - * pt.cc (tsubst_attribute): Adjust for new representations. - -2023-12-19 Sandra Loosemore - - * parser.cc (cp_parser_omp_context_selector): Adjust for new - namelist property representation. - * pt.cc (tsubst_attribute): Likewise. - -2023-12-19 Sandra Loosemore - - * parser.cc (cp_parser_omp_context_selector): Use new constructors. - * pt.cc: Include omp-general.h. - (tsubst_attribute): Use new context selector accessors and - constructors. - -2023-12-19 Patrick Palka - - PR c++/90679 - * cp-tree.h (comp_template_args): Remove partial_order parameter. - (template_args_equal): Likewise. - * pt.cc (comparing_for_partial_ordering): New global flag. - (iterative_hash_template_arg) : Hash the template - and arguments for specializations that use structural equality. - (template_args_equal): Remove partial order parameter and - use comparing_for_partial_ordering instead. - (comp_template_args): Likewise. - (comp_template_args_porder): Set comparing_for_partial_ordering - instead. Make static. - (any_template_arguments_need_structural_equality_p): Return true - for an argument that's a dependent alias template specialization - or a class template specialization that itself needs structural - equality. - * tree.cc (cp_tree_equal) : Adjust call to - comp_template_args. - -2023-12-19 Patrick Palka - - PR c++/90679 - * cp-tree.h (TEMPLATE_DECL_COMPLEX_ALIAS_P): Remove. - (most_general_template): Constify parameter. - * pt.cc (push_template_decl): Adjust after removing - TEMPLATE_DECL_COMPLEX_ALIAS_P. - (complex_alias_tmpl_info): New hash_map. - (uses_all_template_parms_data::seen): Change type to - tree* from bool*. - (complex_alias_template_r): Adjust accordingly. - (complex_alias_template_p): Add 'seen_out' out parameter. - Call most_general_template and check PRIMARY_TEMPLATE_P. - Use complex_alias_tmpl_info to cache the result and set - '*seen_out' accordigly. - (dependent_alias_template_spec_p): Add !processing_template_decl - early exit test. Consider dependence of only template arguments - corresponding to seen template parameters as per - -2023-12-19 Thomas Schwinge - - PR c++/90868 - * parser.cc (cp_parser_oacc_declare): For "more than once", check - the DECL that we're actually setting the attribute on. - -2023-12-16 Nathaniel Shead - - PR c++/106363 - * module.cc (module_state::write_cluster): Don't skip first - depset for bindings. - -2023-12-16 Nathaniel Shead - - PR c++/113031 - * constexpr.cc (cxx_fold_indirect_ref_1): Check for CLASS_TYPE - before using CLASSTYPE_AS_BASE. - -2023-12-16 Andrew Carlotti - - * decl2.cc (check_classfn): Update comment to include - target_version attributes. - -2023-12-15 Patrick Palka - - PR c++/70435 - PR c++/88061 - * pt.cc (tsubst_function_decl): Propagate DECL_SECTION_NAME - via set_decl_section_name. - (tsubst_decl) : Likewise. - -2023-12-15 Patrick Palka - - PR c++/109715 - * mangle.cc (get_abi_tags): Strip TEMPLATE_DECL before looking - up the abi_tag attribute. - -2023-12-14 Marek Polacek - - PR c++/112482 - * decl.cc (grokdeclarator): Do not issue the auto parameter error while - tentatively parsing a function parameter. - * parser.cc (cp_parser_parameter_declaration_clause): Check it here. - -2023-12-14 Marek Polacek - - PR c++/112869 - * cp-gimplify.cc (cp_fold_immediate_r): Check cp_unevaluated_operand - and DECL_IMMEDIATE_FUNCTION_P rather than in_immediate_context. - -2023-12-14 Patrick Palka - - * cp-tree.h (type_targs_deducible_from): Adjust return type. - * pt.cc (alias_ctad_tweaks): Also handle C++23 inherited CTAD. - (inherited_ctad_tweaks): Define. - (type_targs_deducible_from): Return the deduced arguments or - NULL_TREE instead of a bool. Handle 'tmpl' being a TREE_LIST - representing a synthetic alias template. - (ctor_deduction_guides_for): Do inherited_ctad_tweaks for each - USING_DECL in C++23 mode. - (deduction_guides_for): Add FIXME for stale cache entries in - light of inherited CTAD. - -2023-12-14 Jakub Jelinek - - PR c++/112968 - * pt.cc (freelist::reinit): Make whole obj->common - defined for valgrind annotations rather than just obj->base, - and do it even for ENABLE_GC_CHECKING. If not ENABLE_GC_CHECKING, - clear TREE_CHAIN (obj) and TREE_TYPE (obj). - -2023-12-13 Patrick Palka - - * call.cc (print_z_candidates): Only print ignored candidates - when -fdiagnostics-all-candidates is set, otherwise suggest - the flag. - (build_over_call): When diagnosing deletedness, note - other candidates only if -fdiagnostics-all-candidates is - set, otherwise suggest the flag. - -2023-12-13 Patrick Palka - - * call.cc (enum rejection_reason_code): Add rr_ignored. - (add_ignored_candidate): Define. - (ignored_candidate_p): Define. - (add_template_candidate_real): Do add_ignored_candidate - instead of returning NULL. - (splice_viable): Put ignored (non-viable) candidates last. - (print_z_candidate): Handle ignored candidates. - (build_new_function_call): Refine shortcut that calls - cp_build_function_call_vec now that non-templates can - appear in the candidate list for a template-id call. - (add_candidates): Replace 'bad_fns' overload with 'bad_cands' - candidate list. When not considering a candidate, add it - to the list as an ignored candidate. Add all 'bad_cands' - to the overload set as well. - -2023-12-13 Patrick Palka - - * call.cc: Include "tristate.h". - (splice_viable): Sort the candidate list according to viability. - Don't remove non-viable candidates from the list. - (print_z_candidates): Add defaulted only_viable_p parameter. - By default only print non-viable candidates if there is no - viable candidate. - (tourney): Ignore non-viable candidates. Move the true champ to - the front of the candidates list, and update 'candidates' to - point to the front. Rename champ_compared_to_predecessor to - previous_worse_champ. - -2023-12-13 Patrick Palka - - PR c++/99186 - PR c++/104867 - * pt.cc (unify) : Compare types as well. - -2023-12-13 Patrick Palka - - PR c++/93740 - * pt.cc (unify) : Handle it like FIELD_DECL - and TEMPLATE_DECL. - -2023-12-13 Jason Merrill - - * call.cc (convert_for_arg_passing) - * typeck.cc (convert_for_assignment): Adjust call to - warn_for_address_of_packed_member. - -2023-12-13 Julian Brown - - * parser.cc (cp_parser_oacc_all_clauses): Add TARGET_P parameter. Use - to select region type for finish_omp_clauses call. - (cp_parser_omp_target_data, cp_parser_omp_target_enter_data): Support - GOMP_MAP_ATTACH kind. - (cp_parser_omp_target_exit_data): Support GOMP_MAP_DETACH kind. - (cp_parser_oacc_declare): Update call to cp_parser_oacc_all_clauses. - (cp_parser_oacc_loop): Update calls to cp_parser_oacc_all_clauses. - (cp_parser_oacc_compute): Likewise. - * pt.cc (tsubst_expr): Use C_ORT_ACC_TARGET for call to - tsubst_omp_clauses for OpenACC compute regions. - * semantics.cc (cp_omp_address_inspector): New class, derived from - c_omp_address_inspector. - (handle_omp_array_sections_1, handle_omp_array_sections, - finish_omp_clauses): Use cp_omp_address_inspector class and OMP address - tokenizer to analyze and expand OpenMP map clause expressions. Fix - some diagnostics. Support C_ORT_ACC_TARGET. - (finish_omp_target): Handle GOMP_MAP_POINTER. - -2023-12-13 Julian Brown - - * semantics.cc (finish_omp_clause): Add braces and reindent - OMP_CLAUSE_TO/OMP_CLAUSE_FROM/OMP_CLAUSE__CACHE_ stanza. - -2023-12-13 Jason Merrill - - PR c++/96997 - * tree.cc (bot_manip): Check data.clear_location for TARGET_EXPR. - -2023-12-13 Nathaniel Shead - - PR c++/71093 - * constexpr.cc (constexpr_global_ctx::get_value_ptr): Don't - return NULL_TREE for objects we're initializing. - (constexpr_global_ctx::destroy_value): Rename from remove_value. - Only mark real variables as outside lifetime. - (constexpr_global_ctx::clear_value): New function. - (destroy_value_checked): New function. - (cxx_eval_call_expression): Defer complaining about non-constant - arg0 for operator delete. Use remove_value_safe. - (cxx_fold_indirect_ref_1): Handle conversion to 'as base' type. - (outside_lifetime_error): Include name of object we're - accessing. - (cxx_eval_store_expression): Handle clobbers. Improve error - messages. - (cxx_eval_constant_expression): Use remove_value_safe. Clear - bind variables before entering body. - -2023-12-13 Jason Merrill - - * constexpr.cc (cxx_eval_call_expression): Handle missing in-charge - argument. - -2023-12-13 Jason Merrill - - PR c++/108243 - * constexpr.cc (cxx_eval_outermost_constant_expr): Turn - a constructor CALL_EXPR into a TARGET_EXPR. - -2023-12-13 Jason Merrill - - * tree.cc (build_aggr_init_expr): Copy EXPR_LOCATION. - -2023-12-12 Jason Merrill - Jason Xu - - * class.cc (propagate_class_warmth_attribute): Handle - member templates. - -2023-12-12 Jason Merrill - Nathaniel Shead - - * call.cc (build_trivial_dtor_call): Use CLOBBER_OBJECT_END. - * decl.cc (build_clobber_this): Take clobber_kind argument. - (start_preparsed_function): Pass CLOBBER_OBJECT_BEGIN. - (begin_destructor_body): Pass CLOBBER_OBJECT_END. - -2023-12-11 Patrick Palka - - * pt.cc (alias_ctad_tweaks): Pass use_spec_table=false to - tsubst_decl. - -2023-12-11 Tobias Burnus - - * parser.cc (cp_parser_omp_requires): Handle acquires/release - in atomic_default_mem_order clause. - (cp_parser_omp_atomic): Update. - -2023-12-11 Nathaniel Shead - - PR c++/96090 - PR c++/100470 - * call.cc (build_over_call): Prevent folding of trivial special - members when checking for noexcept. - * method.cc (constructible_expr): Perform value-initialisation - for empty parameter lists. - (is_nothrow_xible): Treat as noexcept operator. - -2023-12-11 Nathaniel Shead - - PR c++/104234 - PR c++/112580 - * pt.cc (tsubst_template_decl): Clear - DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __remove_pointer. - * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_POINTER. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_object. - * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_OBJECT. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_function. - * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_FUNCTION. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_reference. - * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_REFERENCE. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_member_object_pointer. - * constraint.cc (diagnose_trait_expr): Handle - CPTK_IS_MEMBER_OBJECT_POINTER. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_member_function_pointer. - * constraint.cc (diagnose_trait_expr): Handle - CPTK_IS_MEMBER_FUNCTION_POINTER. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_member_pointer. - * constraint.cc (diagnose_trait_expr): Handle - CPTK_IS_MEMBER_POINTER. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_scoped_enum. - * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_SCOPED_ENUM. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_bounded_array. - * constraint.cc (diagnose_trait_expr): Handle - CPTK_IS_BOUNDED_ARRAY. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Ken Matsui - - * cp-trait.def: Define __is_array. - * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_ARRAY. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - -2023-12-10 Jason Merrill - - * parser.cc (cp_parser_simple_type_specifier): Move trait - handling to default label. - -2023-12-10 Ken Matsui - - * parser.cc (cp_lexer_lookup_trait): Rename to ... - (cp_lexer_peek_trait): ... this. Handle a subsequent token for - the corresponding built-in trait. - (cp_lexer_lookup_trait_expr): Rename to ... - (cp_lexer_peek_trait_expr): ... this. - (cp_lexer_lookup_trait_type): Rename to ... - (cp_lexer_peek_trait_type): ... this. - (cp_lexer_next_token_is_decl_specifier_keyword): Call - cp_lexer_peek_trait_type. - (cp_parser_simple_type_specifier): Likewise. - (cp_parser_primary_expression): Call cp_lexer_peek_trait_expr. - -2023-12-10 Ken Matsui - Patrick Palka - - * cp-objcp-common.cc (names_builtin_p): Remove all RID value - cases for built-in traits. Check for built-in traits via - the new cik_trait kind. - * cp-tree.h (enum cp_trait_kind): Set its underlying type to - addr_space_t. - (struct cp_trait): New struct to hold trait information. - (cp_traits): New array to hold a mapping to all traits. - (cik_reserved_for_udlit): Rename to ... - (cik_trait): ... this. - (IDENTIFIER_ANY_OP_P): Exclude cik_trait. - (IDENTIFIER_TRAIT_P): New macro to detect cik_trait. - * lex.cc (cp_traits): Define its values, declared in cp-tree.h. - (init_cp_traits): New function to set cik_trait and - IDENTIFIER_CP_INDEX for all built-in trait identifiers. - (cxx_init): Call init_cp_traits function. - * parser.cc (cp_lexer_lookup_trait): New function to look up a - built-in trait by IDENTIFIER_CP_INDEX. - (cp_lexer_lookup_trait_expr): Likewise, look up an - expression-yielding built-in trait. - (cp_lexer_lookup_trait_type): Likewise, look up a type-yielding - built-in trait. - (cp_keyword_starts_decl_specifier_p): Remove all RID value cases - for built-in traits. - (cp_lexer_next_token_is_decl_specifier_keyword): Handle - type-yielding built-in traits. - (cp_parser_primary_expression): Remove all RID value cases for - built-in traits. Handle expression-yielding built-in traits. - (cp_parser_trait): Handle cp_trait instead of enum rid. - (cp_parser_simple_type_specifier): Remove all RID value cases - for built-in traits. Handle type-yielding built-in traits. - -2023-12-10 Ken Matsui - - * constraint.cc (diagnose_trait_expr): Sort built-in traits - alphabetically. - * cp-trait.def: Likewise. - * semantics.cc (trait_expr_value): Likewise. - (finish_trait_expr): Likewise. - (finish_trait_type): Likewise. - -2023-12-09 Jakub Jelinek - - * parser.cc (cp_parser_statement, cp_parser_expression_statement, - cp_parser_declaration, cp_parser_asm_definition): Don't diagnose - ignored attributes if !any_nonignored_attribute_p. - * decl.cc (grokdeclarator): Likewise. - * name-lookup.cc (handle_namespace_attrs, finish_using_directive): - Don't diagnose ignoring of attr_ignored_p attributes. - -2023-12-08 Patrick Palka - - PR c++/83167 - * semantics.cc (capture_decltype): Inline into its only caller ... - (finish_decltype_type): ... here. Update nearby comment to refer - to recent standard. Add FIXME. Restrict uncaptured variable type - transformation to happen only for lambdas with a by-copy - capture-default. - -2023-12-08 Jakub Jelinek - - * parser.cc (cp_parser_std_attribute_spec): Return void_list_node - rather than NULL_TREE if token is neither CPP_OPEN_SQUARE nor - RID_ALIGNAS CPP_KEYWORD. - (cp_parser_std_attribute_spec_seq): For attr_spec == void_list_node - break, for attr_spec == NULL_TREE continue. - -2023-12-08 Jakub Jelinek - - PR sanitizer/112727 - * cp-gimplify.cc (cp_fold): If SAVE_EXPR has been previously - folded, unshare_expr what is returned. - -2023-12-08 Patrick Palka - - PR c++/112658 - * parser.cc (cp_parser_expression_statement): If the statement - is error_mark_node, make sure we've seen_error(). - -2023-12-08 Patrick Palka - - PR c++/112658 - PR c++/94264 - * typeck.cc (cp_build_c_cast): If we're committed to a const_cast - and the result is erroneous, call build_const_cast_1 a second - time to issue errors. Use complain=tf_none instead of =false. - -2023-12-06 David Malcolm - - * cp-tree.h (cxx_print_error_function): Make diagnostic_info param - const. - * error.cc (cxx_print_error_function): Likewise. - (cp_diagnostic_starter): Likewise. - (cp_print_error_function): Likewise. - -2023-12-06 Jason Merrill - - DR 532 - PR c++/53499 - * pt.cc (more_specialized_fn): Fix object parameter handling. - -2023-12-05 Jakub Jelinek - - PR c++/112795 - * cp-tree.h (cp_check_pragma_unroll): Declare. - * semantics.cc (cp_check_pragma_unroll): New function. - * parser.cc (cp_parser_pragma_unroll): Use cp_check_pragma_unroll. - * pt.cc (tsubst_expr) : Likewise. - (tsubst_stmt) : Likwsie. - -2023-12-05 Richard Sandiford - - * tree.cc (cxx_gnu_attribute_table): Add extra braces to work - around PR 16333 in older compilers. - -2023-12-05 Jakub Jelinek - - PR c++/110734 - * parser.cc (cp_parser_block_declaration): Implement C++ DR 2262 - - Attributes for asm-definition. Call cp_parser_asm_definition - even if RID_ASM token is only seen after sequence of standard - attributes. - (cp_parser_asm_definition): Parse standard attributes before - RID_ASM token and warn for them with -Wattributes. - -2023-12-05 Marek Polacek - - PR c++/107687 - PR c++/110997 - * call.cc (in_immediate_context): No longer static. - * constexpr.cc (cxx_eval_call_expression): Adjust assert. - * cp-gimplify.cc (deferred_escalating_exprs): New vec. - (remember_escalating_expr): New. - (enum fold_flags): Remove ff_fold_immediate. - (immediate_escalating_function_p): New. - (unchecked_immediate_escalating_function_p): New. - (promote_function_to_consteval): New. - (cp_fold_immediate): Move above. Return non-null if any errors were - emitted. - (maybe_explain_promoted_consteval): New. - (cp_gimplify_expr) : Assert we've handled all - immediate invocations. - (taking_address_of_imm_fn_error): New. - (cp_fold_immediate_r): Merge ADDR_EXPR and PTRMEM_CST cases. Implement - P2564 - promoting functions to consteval. - : Implement P2564 - promoting functions to consteval. - (cp_fold_r): If an expression turns into a CALL_EXPR after cp_fold, - call cp_fold_immediate_r on the CALL_EXPR. - (cp_fold_function): Set DECL_ESCALATION_CHECKED_P if - deferred_escalating_exprs does not contain current_function_decl. - (process_and_check_pending_immediate_escalating_fns): New. - * cp-tree.h (struct lang_decl_fn): Add escalated_p bit-field. - (DECL_ESCALATION_CHECKED_P): New. - (immediate_invocation_p): Declare. - (process_pending_immediate_escalating_fns): Likewise. - * decl2.cc (c_parse_final_cleanups): Set at_eof to 2 after all - templates have been instantiated; and to 3 at the end of the function. - Call process_pending_immediate_escalating_fns. - * error.cc (dump_template_bindings): Check at_eof against an updated - value. - * module.cc (trees_out::lang_decl_bools): Stream escalated_p. - (trees_in::lang_decl_bools): Likewise. - * pt.cc (push_tinst_level_loc): Set at_eof to 3, not 2. - * typeck.cc (cp_build_addr_expr_1): Don't check - DECL_IMMEDIATE_FUNCTION_P. - -2023-12-04 Jason Merrill - - * constexpr.cc (potential_constant_expression_1): Fix - check for loading volatile lvalue. - -2023-12-04 Jakub Jelinek - - PR c++/112795 - * cp-tree.h (cp_convert_range_for): Change UNROLL type from - unsigned short to tree. - (finish_while_stmt_cond, finish_do_stmt, finish_for_cond): Likewise. - * parser.cc (cp_parser_statement): Pass NULL_TREE rather than 0 to - cp_parser_iteration_statement UNROLL argument. - (cp_parser_for, cp_parser_c_for): Change UNROLL type from - unsigned short to tree. - (cp_parser_range_for): Likewise. Set RANGE_FOR_UNROLL to just UNROLL - rather than build_int_cst from it. - (cp_convert_range_for, cp_parser_iteration_statement): Change UNROLL - type from unsigned short to tree. - (cp_parser_omp_loop_nest): Pass NULL_TREE rather than 0 to - cp_parser_range_for UNROLL argument. - (cp_parser_pragma_unroll): Return tree rather than unsigned short. - If parsed expression is type dependent, just return it, don't diagnose - issues with value if it is value dependent. - (cp_parser_pragma): Change UNROLL type from unsigned short to tree. - * semantics.cc (finish_while_stmt_cond): Change UNROLL type from - unsigned short to tree. Build ANNOTATE_EXPR with UNROLL as its last - operand rather than build_int_cst from it. - (finish_do_stmt, finish_for_cond): Likewise. - * pt.cc (tsubst_stmt) : Change UNROLL type from - unsigned short to tree and set it to RECUR on RANGE_FOR_UNROLL (t). - (tsubst_expr) : For annot_expr_unroll_kind repeat - checks on UNROLL value from cp_parser_pragma_unroll. - -2023-12-02 Richard Sandiford - - * cp-tree.h (cxx_attribute_table): Delete. - (cxx_gnu_attribute_table, std_attribute_table): Declare. - * cp-objcp-common.h (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Delete. - (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Delete. - (cp_objcp_attribute_table): New table. - (LANG_HOOKS_ATTRIBUTE_TABLE): Redefine. - * tree.cc (cxx_attribute_table): Replace with... - (cxx_gnu_attributes, cxx_gnu_attribute_table): ...these globals. - (std_attribute_table): Change type to scoped_attribute_specs, using... - (std_attributes): ...this as the underlying array. - (init_tree): Remove call to register_scoped_attributes. - -2023-12-01 Jason Merrill - - * mangle.cc (write_type): Mangle placeholder as its template. - -2023-12-01 Jason Merrill - - * cp-tree.h (TEMPLATE_ARGS_TYPE_CONSTRAINT_P): New. - (get_concept_check_template): Declare. - * constraint.cc (combine_constraint_expressions) - (finish_shorthand_constraint): Use UNKNOWN_LOCATION. - * pt.cc (convert_generic_types_to_packs): Likewise. - * mangle.cc (write_constraint_expression) - (write_tparms_constraints, write_type_constraint) - (template_parm_natural_p, write_requirement) - (write_requires_expr): New. - (write_encoding): Mangle trailing requires-clause. - (write_name): Pass parms to write_template_args. - (write_template_param_decl): Factor out from... - (write_closure_template_head): ...here. - (write_template_args): Mangle non-natural parms - and requires-clause. - (write_expression): Handle REQUIRES_EXPR. - -2023-12-01 Jason Merrill - - * semantics.cc (finish_non_static_data_member) - (finish_decltype_type, capture_decltype): - Handle deduced closure parameter. - -2023-11-30 Marek Polacek - - PR c++/112744 - * typeck.cc (finish_class_member_access_expr): When accessing - a static data member, use ba_any for lookup_base. - -2023-11-30 Jakub Jelinek - - PR c++/110349 - * cp-tree.h: Implement C++26 P2169R4 - Placeholder variables with no - name. - (OVL_NAME_INDEPENDENT_DECL_P): Define. - (add_capture): Add unsigned * argument. - (name_independent_decl_p): New inline function. - * name-lookup.cc (class name_lookup): Make ambiguous and - add_value members public. - (name_independent_linear_search): New function. - (get_class_binding_direct): Handle member_vec_binary_search - returning OVL_NAME_INDEPENDENT_DECL_P OVERLOAD. Use - name_independent_linear_search rather than fields_linear_search - for linear lookup of _ name if !want_type. - (member_name_cmp): Sort name-independent declarations first. - (member_vec_dedup): Handle name-independent declarations. - (pop_local_binding): Handle binding->value being a TREE_LIST for - ambiguous name-independent declarations. - (supplement_binding): Handle name-independent declarations. - (update_binding): Likewise. - (check_local_shadow): Return tree rather than void, normally - NULL_TREE but old for name-independent declarations which used - to conflict with outer scope declaration. Don't emit -Wshadow* - warnings for name-independent declarations. - (pushdecl): Handle name-independent declarations. - * search.cc (lookup_field_r): Handle nval being a TREE_LIST. - * lambda.cc (build_capture_proxy): Adjust for ___. - names of members. - (add_capture): Add NAME_INDEPENDENT_CNT argument. Use ___. - name rather than ___ for second and following capture with - _ name. - (add_default_capture): Adjust add_capture caller. - * decl.cc (poplevel): Don't warn about name-independent declarations. - (duplicate_decls): If in C++26 a _ named declaration conflicts with - earlier declarations, emit explaining note why the new declaration - is not name-independent. - (reshape_init_class): If field is a TREE_LIST, emit an ambiguity - error with list of candidates rather than error about non-existing - non-static data member. - * parser.cc (cp_parser_lambda_introducer): Adjust add_capture callers. - Allow name-independent capture redeclarations. - (cp_parser_decomposition_declaration): Set decl_specs.storage_class - to sc_static for static structured bindings. - * pt.cc (tsubst_lambda_expr): Adjust add_capture caller. - -2023-11-30 Alexandre Oliva - - * decl.cc (finish_enum_value_list): Set TYPE_PACKED if - use_short_enum, and propagate it to variants. - -2023-11-30 Jason Merrill - - * cp-tree.h (LAMBDA_EXPR_MUTABLE_P): Remove. - * cp-tree.def: Remove documentation. - * lambda.cc (build_lambda_expr): Remove reference. - * parser.cc (cp_parser_lambda_declarator_opt): Likewise. - * pt.cc (tsubst_lambda_expr): Likewise. - * ptree.cc (cxx_print_lambda_node): Likewise. - * semantics.cc (capture_decltype): Get the object quals - from the object instead. - -2023-11-29 Marek Polacek - - PR c++/106650 - * constexpr.cc (cxx_eval_constant_expression) : Allow - reference to unknown/this as per P2280. - : Allow reference to unknown as per P2280. - -2023-11-29 Patrick Palka - - PR c++/112765 - * pt.cc (tsubst_expr) : Look through implicit - INDIRECT_REF when propagating -Wparentheses warning suppression. - * semantics.cc (maybe_warn_unparenthesized_assignment): Replace - REFERENCE_REF_P handling with STRIP_REFERENCE_REF. - (finish_parenthesized_expr): Likewise. - -2023-11-29 Jakub Jelinek - - * semantics.cc (finish_static_assert): Free buf on error return. - -2023-11-29 Alexandre Oliva - - * decl.cc (maybe_prepare_return_this): Split out of... - (maybe_return_this): ... this. - * cp-tree.h (maybe_prepare_return_this): Declare. - * class.cc (build_clone): Call it. - -2023-11-29 Alexandre Oliva - - * contracts.cc (check_postcondition_result): Cope with - cdtor_return_this. - -2023-11-28 Jason Merrill - - PR c++/94264 - PR c++/53220 - * call.cc (convert_like_internal): Remove obsolete comment. - * typeck.cc (decay_conversion): Allow array prvalue. - (maybe_warn_about_returning_address_of_local): Check - for returning pointer to temporary. - -2023-11-28 Jakub Jelinek - - * cp-objcp-common.cc (cp_feature_table): Evaluate - __has_extension (cxx_init_captures) to 1 even for -std=c++11. - -2023-11-27 Alex Coplan - Iain Sandoe - - PR c++/60512 - * cp-lang.cc (c_family_register_lang_features): New. - * cp-objcp-common.cc (struct cp_feature_selector): New. - (cp_feature_selector::has_feature): New. - (struct cp_feature_info): New. - (cp_register_features): New. - * cp-objcp-common.h (cp_register_features): New. - -2023-11-25 Nathaniel Shead - - * name-lookup.cc (check_can_export_using_decl): New. - (do_nonmember_using_decl): Use above to check if names can be - exported. - -2023-11-25 Nathaniel Shead - - PR c++/102341 - * decl.cc (duplicate_decls): Allow exporting a redeclaration of - a typedef. - -2023-11-24 Tobias Burnus - - * parser.cc (cp_parser_omp_clause_dist_schedule, - cp_parser_omp_scan_loop_body, cp_parser_omp_assumption_clauses, - cp_parser_omp_depobj): Add OPT_Wopenmp to warning_at. - * semantics.cc (finish_omp_clauses): Likewise. - -2023-11-24 Tobias Burnus - - * parser.cc (cp_parser_omp_depobj): Accept optionally an argument - to the destroy clause. - -2023-11-24 Nathaniel Shead - - PR c++/99232 - * decl.cc (grokvardecl): Don't mark variables attached to - modules as internal. - -2023-11-24 Nathaniel Shead - - PR c++/107398 - * module.cc (trees_out::get_merge_kind): Handle lambdas in class - scope. - (maybe_key_decl): Remove assertion and fix whitespace. - -2023-11-24 Nathaniel Shead - - PR c++/98885 - * decl.cc (duplicate_decls): Adjust error message. - (xref_tag): Adjust error message. Check exporting decl that is - already declared as non-exporting. - -2023-11-23 Jakub Jelinek - - PR c++/110348 - * parser.cc: Implement C++26 P2741R3 - user-generated static_assert - messages. - (cp_parser_static_assert): Parse message argument as - conditional-expression if it is not a pure string literal or - several of them concatenated followed by closing paren. - * semantics.cc (finish_static_assert): Handle message which is not - STRING_CST. For condition with bare parameter packs return early. - * pt.cc (tsubst_expr) : Also tsubst_expr - message and make sure that if it wasn't originally STRING_CST, it - isn't after tsubst_expr either. - -2023-11-22 Patrick Palka - - PR c++/112633 - * pt.cc (tsubst_aggr_type): Handle empty TYPE_TEMPLATE_INFO - in the entering_scope adjustment. - -2023-11-22 Jason Merrill - - * decl.cc (start_preparsed_function): Clarify ctype logic. - -2023-11-20 Marc Poulhiès - - * lambda.cc (compare_lambda_sig): Fix typo in variadic. - -2023-11-20 Jason Merrill - - * pt.cc (comp_template_parms): Just one level. - (template_parameter_lists_equivalent_p): Likewise. - -2023-11-20 Jason Merrill - - * cp-tree.h (DECL_TEMPLATE_PARM_CHECK): New. - (DECL_IMPLICIT_TEMPLATE_PARM_P): New. - (decl_template_parm_check): New. - * mangle.cc (write_closure_template_head): Use it. - * parser.cc (synthesize_implicit_template_parm): Likewise. - * pt.cc (template_parameters_equivalent_p): Likewise. - -2023-11-19 Nathaniel Shead - - PR c++/99187 - * cp-tree.h (enum cp_tree_index): Add CPTI_THREAD_ATEXIT. - (thread_atexit_node): New. - * decl.cc (get_thread_atexit_node): Cache in thread_atexit_node. - -2023-11-19 David Malcolm - - * mapper-client.cc: Include "rich-location.h". - -2023-11-16 Jakub Jelinek - - PR c++/112365 - * class.cc (layout_class_type): Don't - SET_DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD on FIELD_DECLs with - error_mark_node type. - -2023-11-16 Patrick Palka - - PR c++/111703 - PR c++/107939 - * constexpr.cc (potential_constant_expression_1) : - Fix FUNCTION_POINTER_TYPE_P test. - -2023-11-16 Marek Polacek - - PR c++/112410 - * parser.cc (cp_parser_direct_declarator): Maybe call - abort_fully_implicit_template if it turned out the parameter list was - ill-formed. - -2023-11-15 Bernhard Reutner-Fischer - - * tree.cc (build_cplus_array_type): Revert using the macro - CAN_HAVE_LOCATION_P. - -2023-11-15 Patrick Palka - - PR c++/112515 - * decl.cc (is_direct_enum_init): Check type-dependence of the - single element. - -2023-11-15 Patrick Palka - - PR c++/101043 - * tree.cc (strip_typedefs_expr) : Handle - non-empty TREE_PURPOSE. - -2023-11-15 Patrick Palka - - PR c++/112427 - * tree.cc (build_min_non_dep): Propagate TREE_SIDE_EFFECTS from - the original arguments. - (build_min_non_dep_call_vec): Likewise. - * typeck2.cc (build_m_component_ref): Use cp_convert, build2 and - cp_fully_fold instead of fold_build_pointer_plus and fold_convert. - Don't build the POINTER_PLUS_EXPR in a template context. - -2023-11-15 Patrick Palka - - PR c++/111703 - PR c++/112269 - * constexpr.cc (potential_constant_expression_1) : - Only consider var_in_maybe_constexpr_fn if 'now' is false. - : Likewise. - -2023-11-15 Jakub Jelinek - - * typeck.cc: Implement C++26 P2864R2 - Remove Deprecated Arithmetic - Conversion on Enumerations From C++26. - (do_warn_enum_conversions): Return bool rather than void, add COMPLAIN - argument. Use pedwarn rather than warning_at for C++26 and remove - " is deprecated" part of the diagnostics in that case. For SFINAE - in C++26 return true on newly erroneous cases. - (cp_build_binary_op): For C++26 call do_warn_enum_conversions - unconditionally, pass complain argument to it and if it returns true, - return error_mark_node. - * call.cc (build_conditional_expr): Use pedwarn rather than warning_at - for C++26 and remove " is deprecated" part of the diagnostics in that - case and check for complain & tf_warning_or_error. Use emit_diagnostic - with cxx_dialect >= cxx26 ? DK_PEDWARN : DK_WARNING. For SFINAE in - C++26 return error_mark_node on newly erroneous cases. - (build_new_op): Use emit_diagnostic with cxx_dialect >= cxx26 - ? DK_PEDWARN : DK_WARNING and complain & tf_warning_or_error check - for C++26. For SFINAE in C++26 return error_mark_node on newly - erroneous cases. - -2023-11-14 Nathaniel Shead - - PR c++/103499 - * module.cc (trees_out::decl_node): Write DECL_VINDEX for - virtual clones. - (trees_in::tree_node): Read DECL_VINDEX for virtual clones. - -2023-11-14 Nathaniel Shead - - PR c++/106849 - * name-lookup.cc (do_nonmember_using_decl): Handle - TEMPLATE_DECLs when checking module attachment. - -2023-11-14 David Malcolm - - * decl.cc (finish_function): Update call to - global_dc->m_option_enabled to use option_enabled_p. - -2023-11-14 David Malcolm - - * contracts.cc (build_comment): Use global_dc's file_cache. - -2023-11-14 Jonathan Wakely - - PR c++/111842 - PR c++/112498 - * call.cc (convert_like_internal): Use OPT_Wnarrowing for - pedwarns about illformed conversions involving extended - floating-point types. Clarify that ISO C++ requires these - diagnostics. - -2023-11-14 Jakub Jelinek - - PR c/111309 - * call.cc (magic_varargs_p): Return 4 for - BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. - (build_over_call): Don't promote first argument of - BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. - * cp-gimplify.cc (cp_gimplify_expr): For BUILT_IN_C{L,T}ZG use - c_gimplify_expr. - -2023-11-10 Patrick Palka - - PR c++/79620 - * cp-tree.h (STRIP_REFERENCE_REF): Define. - * semantics.cc (outer_var_p): Assert REFERENCE_REF_P is false. - (finish_decltype_type): Look through implicit INDIRECT_REF when - deciding whether to call capture_decltype. - -2023-11-10 Patrick Palka - - PR c++/79378 - PR c++/96917 - * semantics.cc (finish_decltype_type): Handle an id-expression - naming a capture proxy specially. - -2023-11-07 Kwok Cheung Yeung - - * cp-tree.h (cp_omp_declare_target_attr): Add indirect field. - * decl2.cc (cplus_decl_attributes): Add attribute for indirect - functions. - * parser.cc (cp_parser_omp_clause_name): Handle indirect clause. - (cp_parser_omp_clause_indirect): New. - (cp_parser_omp_all_clauses): Handle indirect clause. - (handle_omp_declare_target_clause): Add extra parameter. Add - indirect attribute for indirect functions. - (OMP_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. - (cp_parser_omp_declare_target): Handle indirect clause. Emit error - message if device_type or indirect clauses used alone. Emit error - if indirect clause used with device_type that is not 'any'. - (OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. - (cp_parser_omp_begin): Handle indirect clause. - * semantics.cc (finish_omp_clauses): Handle indirect clause. - -2023-11-04 Jakub Jelinek - - * parser.h (struct cp_parser): Adjust comment on omp_attrs_forbidden_p - member. - * parser.cc (cp_parser_omp_section_scan): Allow __directive__ spelling. - -2023-11-04 David Malcolm - - * call.cc: Update for changes to diagnostic_context. - * class.cc: Likewise. - * decl.cc: Likewise. - * error.cc: Likewise. - * except.cc: Likewise. - * pt.cc: Likewise. - -2023-11-02 Jason Merrill - - * semantics.cc (nrv_data): Change visited to hash_set. - (finalize_nrv_r): Reorganize. - -2023-11-02 Jason Merrill - - PR c++/112301 - PR c++/102191 - PR c++/33799 - * except.cc (maybe_splice_retval_cleanup): Clear - current_retval_sentinel when destroying retval. - * semantics.cc (nrv_data): Add in_nrv_cleanup. - (finalize_nrv): Set it. - (finalize_nrv_r): Fix handling of throwing cleanups. - -2023-11-02 Jakub Jelinek - - PR c++/110342 - * parser.cc: Implement C++26 P2361R6 - Unevaluated strings. - (uneval_string_attr): New enumerator. - (cp_parser_string_literal_common): Add UNEVAL argument. If true, - pass CPP_UNEVAL_STRING rather than CPP_STRING to - cpp_interpret_string_notranslate. - (cp_parser_string_literal, cp_parser_userdef_string_literal): Adjust - callers of cp_parser_string_literal_common. - (cp_parser_unevaluated_string_literal): New function. - (cp_parser_parenthesized_expression_list): Handle uneval_string_attr. - (cp_parser_linkage_specification): Use - cp_parser_unevaluated_string_literal for C++26. - (cp_parser_static_assert): Likewise. - (cp_parser_std_attribute): Use uneval_string_attr for standard - deprecated and nodiscard attributes. - -2023-10-31 David Malcolm - - * module.cc (ordinary_loc_of): Update for removal of - MACRO_MAP_EXPANSION_POINT_LOCATION. - (module_state::note_location): Update for renaming of field. - (module_state::write_macro_maps): Likewise. - -2023-10-27 Patrick Palka - - PR c++/111929 - * init.cc (build_new_1): Remove unnecessary call to convert - on 'nelts'. Use build2 instead of fold_build2 for - 'outer_nelts_checks'. - -2023-10-27 Patrick Palka - - * cp-tree.h (maybe_warn_unparenthesized_assignment): Declare. - * semantics.cc (is_assignment_op_expr_p): Generalize to return - true for any assignment operator expression, not just one that - has been resolved to an operator overload. - (maybe_warn_unparenthesized_assignment): Factored out from ... - (maybe_convert_cond): ... here. - (finish_parenthesized_expr): Mention - maybe_warn_unparenthesized_assignment. - * typeck.cc (convert_for_assignment): Replace -Wparentheses - warning logic with maybe_warn_unparenthesized_assignment. - -2023-10-27 Lewis Hyatt - - PR preprocessor/87299 - * parser.cc (cp_lexer_new_main): Call c_reset_target_pragmas () - after preprocessing is complete, before starting compilation. - -2023-10-26 liuhongt - - * typeck.cc (build_vec_cmp): Pass type of arg0 to - truth_type_for. - -2023-10-25 Jason Merrill - - * cp-tree.def: Improve OFFSET_REF comment. - * cp-gimplify.cc (cp_fold_immediate): Add to comment. - -2023-10-25 Thomas Schwinge - - * parser.cc (cp_parser_omp_clause_name): Return - 'PRAGMA_OACC_CLAUSE_SELF' for "self". - (cp_parser_oacc_data_clause, OACC_UPDATE_CLAUSE_MASK): Adjust. - (cp_parser_oacc_all_clauses): Remove 'bool compute_p' formal - parameter, and instead locally determine whether we're called for - an OpenACC compute construct or OpenACC 'update' directive. - (cp_parser_oacc_compute): Adjust. - -2023-10-25 Chung-Lin Tang - - * parser.cc (cp_parser_oacc_compute_clause_self): New function. - (cp_parser_oacc_all_clauses): Add new 'bool compute_p = false' - parameter, add parsing of self clause when compute_p is true. - (OACC_KERNELS_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_SELF. - (OACC_PARALLEL_CLAUSE_MASK): Likewise, - (OACC_SERIAL_CLAUSE_MASK): Likewise. - (cp_parser_oacc_compute): Adjust call to c_parser_oacc_all_clauses to - set compute_p argument to true. - * pt.cc (tsubst_omp_clauses): Add OMP_CLAUSE_SELF case. - * semantics.cc (c_finish_omp_clauses): Add OMP_CLAUSE_SELF case, merged - with OMP_CLAUSE_IF case. - -2023-10-25 Marek Polacek - - PR c++/111895 - * typeck.cc (build_static_cast_1): Call decay_conversion. - -2023-10-24 Patrick Palka - - PR c++/111929 - * init.cc (build_new_1): Use convert, build2, build3 and - cp_fully_fold instead of fold_convert, size_binop and - fold_build3 when building up 'size'. - -2023-10-24 Patrick Palka - - PR c++/111919 - * tree.cc (cp_stabilize_reference): Do nothing when - processing_template_decl. - -2023-10-22 Patrick Palka - - PR objc++/111920 - * pt.cc (tsubst_expr) : Use tsubst instead - of tsubst_expr. - -2023-10-20 Jason Merrill - - * call.cc (implicit_conversion_1): Rename... - (implicit_conversion): ...to this. Remove the old wrapper. - -2023-10-20 Jason Merrill - - * call.cc (tourney): Only skip champ_compared_to_predecessor. - -2023-10-20 Nathan Sidwell - - PR c++/105322 - * module.cc (trees_out::core_vals): Stream CONSTRUCTOR operands - after the type. - (trees_in::core_vals): Likewise. - -2023-10-20 Patrick Palka - - * cp-lang.cc (objcp_tsubst_copy_and_build): Rename to ... - (objcp_tsubst_expr): ... this. - * cp-objcp-common.h (objcp_tsubst_copy_and_build): Rename to ... - (objcp_tsubst_expr): ... this. - * cp-tree.h (tsubst_copy_and_build): Remove declaration. - * init.cc (maybe_instantiate_nsdmi_init): Use tsubst_expr - instead of tsubst_copy_and_build. - * pt.cc (expand_integer_pack): Likewise. - (instantiate_non_dependent_expr_internal): Likewise. - (instantiate_class_template): Use tsubst_stmt instead of - tsubst_expr for STATIC_ASSERT. - (tsubst_function_decl): Adjust tsubst_copy_and_build uses. - (tsubst_arg_types): Likewise. - (tsubst_exception_specification): Likewise. - (tsubst_tree_list): Likewise. - (tsubst): Likewise. - (tsubst_name): Likewise. - (tsubst_omp_clause_decl): Use tsubst_stmt instead of tsubst_expr. - (tsubst_omp_clauses): Likewise. - (tsubst_copy_asm_operands): Adjust tsubst_copy_and_build use. - (tsubst_omp_for_iterator): Use tsubst_stmt instead of tsubst_expr. - (tsubst_expr): Rename to ... - (tsubst_stmt): ... this. - : Move to tsubst_expr. - (tsubst_omp_udr): Use tsubst_stmt instead of tsubst_expr. - (tsubst_non_call_postfix_expression): Adjust tsubst_copy_and_build - use. - (tsubst_lambda_expr): Likewise. Use tsubst_stmt instead of - tsubst_expr for the body of a lambda. - (tsubst_copy_and_build_call_args): Rename to ... - (tsubst_call_args): ... this. Adjust tsubst_copy_and_build use. - (tsubst_copy_and_build): Rename to tsubst_expr. Adjust - tsubst_copy_and_build and tsubst_copy_and_build_call_args use. - : Use tsubst_stmt instead of tsubst_expr. - (maybe_instantiate_noexcept): Adjust tsubst_copy_and_build use. - (instantiate_body): Use tsubst_stmt instead of tsubst_expr for - substituting the function body. - (tsubst_initializer_list): Adjust tsubst_copy_and_build use. - -2023-10-20 Patrick Palka - - * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup. - * pt.cc (tsubst_pack_expansion): Use tsubst for substituting - BASES_TYPE. - (tsubst_decl) : Use tsubst_name instead of - tsubst_copy. - (tsubst) : Use tsubst_copy_and_build - instead of tsubst_copy for substituting - CLASS_PLACEHOLDER_TEMPLATE. - : Use tsubst_name instead of tsubst_copy for - substituting TYPENAME_TYPE_FULLNAME. - (tsubst_name): Define. - (tsubst_qualified_id): Use tsubst_name instead of tsubst_copy - for substituting the component name of a SCOPE_REF. - (tsubst_copy): Remove. - (tsubst_copy_and_build): Clear tf_no_name_lookup at the start, - and remember if it was set. Call maybe_dependent_member_ref if - tf_no_name_lookup was not set. - : Don't do name lookup if tf_no_name_lookup - was set. - : If tf_no_name_lookup was set, use - tsubst_name instead of tsubst_copy_and_build to substitute the - template and don't finish the template-id. - : Handle identifier and type operand (if - tf_no_name_lookup was set). - : Avoid trying to resolve a SCOPE_REF if - tf_no_name_lookup was set by calling build_qualified_name directly - instead of tsubst_qualified_id. - : Handling of sizeof... copied from tsubst_copy. - : Use tsubst_name instead of tsubst_copy to - substitute a TEMPLATE_ID_EXPR callee naming an unresolved template. - : Likewise to substitute the member. - : Copied from tsubst_copy and merged with ... - : ... these. Initial handling copied - from tsubst_copy. Optimize local variable substitution by - trying retrieve_local_specialization before checking - uses_template_parms. - : Copied from tsubst_copy. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Likewise. - : Use tsubst and tsubst_copy_and_build instead - of tsubst_copy. - : Copied from tsubst_copy. - (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build - instead of tsubst_copy. - -2023-10-20 Patrick Palka - - PR c++/106086 - * parser.cc (cp_parser_postfix_expression): Consolidate three - calls to finish_call_expr, one to build_new_method_call and - one to build_min_nt_call_vec into one call to finish_call_expr. - Don't call maybe_generic_this_capture here. - * pt.cc (tsubst_copy_and_build) : Remove - COMPONENT_REF callee handling. - (type_dependent_expression_p): Use t_d_object_e_p instead of - t_d_e_p for COMPONENT_REF and OFFSET_REF. - * semantics.cc (finish_call_expr): In the type-dependent case, - call maybe_generic_this_capture here instead. - -2023-10-20 Patrick Palka - - * call.cc (build_new_method_call): Remove calls to - build_non_dependent_expr and/or make_args_non_dependent. - * coroutines.cc (finish_co_return_stmt): Likewise. - * cp-tree.h (build_non_dependent_expr): Remove. - (make_args_non_dependent): Remove. - * decl2.cc (grok_array_decl): Remove calls to - build_non_dependent_expr and/or make_args_non_dependent. - (build_offset_ref_call_from_tree): Likewise. - * init.cc (build_new): Likewise. - * pt.cc (make_args_non_dependent): Remove. - (test_build_non_dependent_expr): Remove. - (cp_pt_cc_tests): Adjust. - * semantics.cc (finish_expr_stmt): Remove calls to - build_non_dependent_expr and/or make_args_non_dependent. - (finish_for_expr): Likewise. - (finish_call_expr): Likewise. - (finish_omp_atomic): Likewise. - * typeck.cc (finish_class_member_access_expr): Likewise. - (build_x_indirect_ref): Likewise. - (build_x_binary_op): Likewise. - (build_x_array_ref): Likewise. - (build_x_vec_perm_expr): Likewise. - (build_x_shufflevector): Likewise. - (build_x_unary_op): Likewise. - (cp_build_addressof): Likewise. - (build_x_conditional_expr): Likewise. - (build_x_compound_expr): Likewise. - (build_static_cast): Likewise. - (build_x_modify_expr): Likewise. - (check_return_expr): Likewise. - * typeck2.cc (build_x_arrow): Likewise. - -2023-10-20 Patrick Palka - - * class.cc (instantiate_type): Remove NON_DEPENDENT_EXPR - handling. - * constexpr.cc (cxx_eval_constant_expression): Likewise. - (potential_constant_expression_1): Likewise. - * coroutines.cc (coro_validate_builtin_call): Don't - expect ALIGNOF_EXPR to be wrapped in NON_DEPENDENT_EXPR. - * cp-objcp-common.cc (cp_common_init_ts): Remove - NON_DEPENDENT_EXPR handling. - * cp-tree.def (NON_DEPENDENT_EXPR): Remove. - * cp-tree.h (build_non_dependent_expr): Temporarily redefine as - the identity function. - * cvt.cc (maybe_warn_nodiscard): Handle type-dependent and - variable callee of CALL_EXPR. - * cxx-pretty-print.cc (cxx_pretty_printer::expression): Remove - NON_DEPENDENT_EXPR handling. - * error.cc (dump_decl): Likewise. - (dump_expr): Likewise. - * expr.cc (mark_use): Likewise. - (mark_exp_read): Likewise. - * pt.cc (build_non_dependent_expr): Remove. - * tree.cc (lvalue_kind): Remove NON_DEPENDENT_EXPR handling. - (cp_stabilize_reference): Likewise. - * typeck.cc (warn_for_null_address): Likewise. - (cp_build_binary_op): Handle type-dependent SIZEOF_EXPR operands. - (cp_build_unary_op) : Don't fold inside a - template. - -2023-10-20 Alexandre Oliva - - * decl.cc (push_throw_library_fn): Mark with ECF_XTHROW. - * except.cc (build_throw): Likewise __cxa_throw, - _ITM_cxa_throw, __cxa_rethrow. - -2023-10-20 Nathaniel Shead - - PR c++/101631 - PR c++/102286 - * call.cc (build_over_call): Fold more indirect refs for trivial - assignment op. - * class.cc (type_has_non_deleted_trivial_default_ctor): Create. - * constexpr.cc (cxx_eval_call_expression): Start lifetime of - union member before entering constructor. - (cxx_eval_component_reference): Check against first member of - value-initialised union. - (cxx_eval_store_expression): Activate member for - value-initialised union. Check for accessing inactive union - member indirectly. - * cp-tree.h (type_has_non_deleted_trivial_default_ctor): - Forward declare. - -2023-10-20 Nathaniel Shead - - * constexpr.cc (is_std_source_location_current): New. - (cxx_eval_constant_expression): Only ignore cast from void* for - specific cases and improve other diagnostics. - -2023-10-19 Marek Polacek - - * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value. - -2023-10-19 Jason Merrill - - * typeck2.cc (check_narrowing): Adjust. - -2023-10-19 Jason Merrill - - * parser.cc (cp_parser_primary_expression): Use G_. - (cp_parser_using_enum): Likewise. - * decl.cc (identify_goto): Likewise. - -2023-10-18 Jason Merrill - - * typeck2.cc (check_narrowing): Use permerror. - -2023-10-17 Marek Polacek - - PR c++/111840 - * parser.cc (cp_parser_simple_declaration): Do cp_parser_error - for FUNCTION_DECLs. - -2023-10-17 Marek Polacek - - PR c++/111660 - * cp-gimplify.cc (cp_fold_immediate_r) : Don't - handle it here. - (cp_fold_r): Handle COND_EXPR here. - -2023-10-17 Jason Merrill - - * mangle.cc (abi_check): New. - (write_prefix, write_unqualified_name, write_discriminator) - (write_type, write_member_name, write_expression) - (write_template_arg, write_template_param): Use it. - (start_mangling): Assign from {}. - * cp-tree.h: Update comment. - -2023-10-17 Nathaniel Shead - - * constexpr.cc (cxx_eval_dynamic_cast_fn): Add missing - auto_diagnostic_group. - (cxx_eval_call_expression): Likewise. - (diag_array_subscript): Likewise. - (outside_lifetime_error): Likewise. - (potential_constant_expression_1): Likewise. - -2023-10-16 Jason Merrill - - * parser.cc (cp_parser_fold_expression): Track location range. - * semantics.cc (finish_unary_fold_expr) - (finish_left_unary_fold_expr, finish_right_unary_fold_expr) - (finish_binary_fold_expr): Add location parm. - * constraint.cc (finish_shorthand_constraint): Pass it. - * pt.cc (convert_generic_types_to_packs): Likewise. - * cp-tree.h: Adjust. - -2023-10-16 Marek Polacek - - PR c++/111272 - * constexpr.cc (explain_invalid_constexpr_fn): Also check the body of - a constructor in C++14 and up. - -2023-10-14 Jakub Jelinek - - PR c/102989 - * module.cc (trees_out::start, trees_in::start): Remove - TREE_INT_CST_OFFSET_NUNITS handling. - -2023-10-10 Jason Merrill - - PR c++/109422 - * mangle.cc (write_template_param): Also mangle level. - -2023-10-08 David Malcolm - - * module.cc (module_state::read_location): Update for renaming of - get_combined_adhoc_loc. - -2023-10-03 David Malcolm - - * error.cc (print_instantiation_partial_context_line): Call - diagnostic_show_locus. - -2023-10-03 David Malcolm - - * error.cc: Update for "m_" prefixes to text_info fields. - -2023-09-30 Eugene Rozenfeld - - * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY - -2023-09-28 Richard Sandiford - - * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables. - -2023-09-22 Jason Merrill - - PR c++/111357 - * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR. - -2023-09-22 Jason Merrill - - * constexpr.cc (free_constructor): Handle null ce->value. - -2023-09-22 Jason Merrill - - PR c++/111529 - * parser.cc (cp_parser_lambda_declarator_opt): Don't suggest - -std=c++14 for lambda templates. - * pt.cc (tsubst_expr): Move ANNOTATE_EXPR handling... - (tsubst_copy_and_build): ...here. - -2023-09-22 Patrick Palka - - PR c++/111493 - * decl2.cc (grok_array_decl): Guard diagnostic and backward - compatibility fallback code paths with tf_error. - -2023-09-22 Patrick Palka - - PR c++/111485 - * pt.cc (is_compatible_template_arg): New parameter 'args'. - Add the outer template arguments 'args' to 'new_args'. - (convert_template_argument): Pass 'args' to - is_compatible_template_arg. - -2023-09-20 Jakub Jelinek - - * parser.cc (cp_parser_postfix_expression): Parse - __builtin_classify_type call with typename as argument. - * pt.cc (tsubst_copy_and_build): Handle __builtin_classify_type - with dependent typename as argument. - -2023-09-20 Patrick Palka - - PR c++/111471 - * cxx-pretty-print.cc (cxx_pretty_printer::expression) - : Handle class NTTP objects by printing - their type and value. - : Strip const VIEW_CONVERT_EXPR - wrappers for class NTTPs. - (pp_cxx_template_argument_list): Don't handle class NTTP - objects here. - -2023-09-20 Patrick Palka - - * pt.cc (tsubst_function_decl): Don't bother computing 'argvec' - when 'lambda_fntype' is set. - (tsubst_template_decl): Make sure we return a TEMPLATE_DECL - during specialization lookup. In the non-class non-function - template case, use tsubst_decl directly with use_spec_table=false, - update DECL_TI_ARGS and call register_specialization like - tsubst_decl would have done if use_spec_table=true. - -2023-09-20 Jakub Jelinek - - PR c++/111392 - * parser.h (struct cp_lexer): Add in_omp_decl_attribute member. - * cp-tree.h (cp_maybe_parse_omp_decl): Declare. - * parser.cc (cp_parser_handle_statement_omp_attributes): Diagnose - omp::decl attribute on statements. Adjust diagnostic wording for - omp::decl. - (cp_parser_omp_directive_args): Add DECL_P argument, set TREE_PUBLIC - to it on the DEFERRED_PARSE tree. - (cp_parser_omp_sequence_args): Adjust caller. - (cp_parser_std_attribute): Handle omp::decl attribute. - (cp_parser_omp_var_list): If parser->lexer->in_omp_decl_attribute - don't expect any arguments, instead create clause or TREE_LIST for - that decl. - (cp_parser_late_parsing_omp_declare_simd): Adjust diagnostic wording - for omp::decl. - (cp_maybe_parse_omp_decl): New function. - (cp_parser_omp_declare_target): If - parser->lexer->in_omp_decl_attribute and first token isn't name or - comma invoke cp_parser_omp_var_list. - * decl2.cc (cplus_decl_attributes): Adjust diagnostic wording for - omp::decl. Handle omp::decl on declarations. - * name-lookup.cc (finish_using_directive): Adjust diagnostic wording - for omp::decl. - -2023-09-19 Ben Boeckel - - * mapper-client.cc, mapper-client.h (open_module_client): Accept - dependency tracking and track module mapper files as - dependencies. - * module.cc (make_mapper, get_mapper): Pass the dependency - tracking class down. - -2023-09-19 Ben Boeckel - - * module.cc (do_import): Report imported CMI files as - dependencies. - -2023-09-19 Ben Boeckel - - * module.cc (preprocessed_module): Pass whether the module is - exported to dependency tracking. - -2023-09-19 Javier Martinez - - * class.cc (propagate_class_warmth_attribute): New function. - (check_bases_and_members): propagate hot and cold attributes - to all FUNCTION_DECL when the record is marked hot or cold. - * cp-tree.h (maybe_propagate_warmth_attributes): New function. - * decl2.cc (maybe_propagate_warmth_attributes): New function. - * method.cc (lazily_declare_fn): propagate hot and cold - attributes to lazily declared functions when the record is - marked hot or cold. - -2023-09-19 Patrick Palka - - * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC - test guarding TYPE_TEMPLATE_INFO. - -2023-09-19 Jason Merrill - - DR 2799 - * class.cc (add_implicit_default_ctor): Split out... - (add_implicitly_declared_members): ...from here. - Also call it when inheriting a default ctor. - -2023-09-19 Marek Polacek - - * call.cc (build_over_call): Set ADDR_EXPR_DENOTES_CALL_P. Don't handle - immediate_invocation_p here. - * constexpr.cc (cxx_eval_call_expression): Use mce_true for - DECL_IMMEDIATE_FUNCTION_P. - (cxx_eval_conditional_expression): Call cp_fold_immediate. - * cp-gimplify.cc (enum fold_flags): Add ff_fold_immediate. - (maybe_replace_decl): Make static. - (cp_fold_r): Expand immediate invocations. - (cp_fold_immediate_r): New. - (cp_fold_immediate): New. - * cp-tree.h (ADDR_EXPR_DENOTES_CALL_P): Define. - (cp_fold_immediate): Declare. - * tree.cc (bot_replace): Don't handle immediate invocations here. - -2023-09-19 Patrick Palka - - PR c++/111419 - * cvt.cc (convert_to_void) : Only call - complete_type if the type is volatile. - : Likewise. - -2023-09-19 Patrick Palka - - PR c++/99631 - * semantics.cc (finish_decltype_type): For an NTTP object, - return its type modulo cv-quals. - -2023-09-18 Patrick Palka - - PR c++/89231 - * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality - test by not calling most_general_template. Only unify the - innermost levels of template arguments. - (unify) : Only unify the innermost levels of - template arguments, and only if the template is primary. - -2023-09-18 Patrick Palka - - PR c++/63198 - PR c++/18474 - * semantics.cc (maybe_convert_cond): Look through implicit - INDIRECT_REF when deciding whether to issue a -Wparentheses - warning, and consider templated assignment expressions as well. - (finish_parenthesized_expr): Look through implicit INDIRECT_REF - when suppressing -Wparentheses warning. - * typeck.cc (build_x_modify_expr): Check simple assignments - ahead time too, not just compound assignments. Give the second - operand of MODOP_EXPR a non-null type so that it's not considered - always instantiation-dependent. Don't call suppress_warning. - -2023-09-18 Patrick Palka - - PR c++/108347 - * pt.cc (unify): Return unify_success for identical dependent - DECL_P 'arg' and 'parm'. - : Remove handling. - -2023-09-18 Patrick Palka - - * call.cc (add_template_candidate_real): Check arity even - when there are no explicit template arguments. Combine the - two adjacent '!obj' tests into one. - -2023-09-18 Patrick Palka - - * pt.cc (register_specialization): Remove now-unnecessary - early exit for FUNCTION_DECL partial instantiation. - (tsubst_template_decl): Pass use_spec_table=false to - tsubst_function_decl. Set DECL_TI_ARGS of a non-lambda - FUNCTION_DECL specialization to the full set of arguments. - Simplify register_specialization call accordingly. - -2023-09-18 Jason Merrill - - * class.cc (check_subobject_offset): Use similar_type_p. - -2023-09-12 Jason Merrill - - PR c++/111357 - * pt.cc (expand_integer_pack): Convert argument to int. - -2023-09-12 Jason Merrill - - PR c++/107198 - * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR - regardless of seen_error. - -2023-09-08 Patrick Palka - - PR c++/99599 - * pt.cc (check_non_deducible_conversions): Add bool parameter - passed down to check_non_deducible_conversion. - (fn_type_unification): Call check_non_deducible_conversions - an extra time before satisfaction with noninst_only_p=true. - (conversion_may_instantiate_p): Define. - (check_non_deducible_conversion): Add bool parameter controlling - whether to compute only conversions that are guaranteed to - not induce template instantiation. - -2023-09-07 Sandra Loosemore - - PR c++/111274 - * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK. - -2023-09-06 Jason Merrill - - * class.cc (check_subobject_offset): Check - same_type_ignoring_top_level_qualifiers_p. - -2023-09-05 Marek Polacek - - PR c++/91483 - * constexpr.cc (verify_constant_explain_r): New. - (verify_constant): Call it. - -2023-09-05 Jakub Jelinek - - PR c++/52953 - * name-lookup.cc (check_local_shadow): Don't punt early for - DECL_EXTERNAL decls, instead just disable the shadowing of namespace - decls check for those and emit a pedwarn rather than error_at or - permerror for those. Formatting fix. - -2023-09-05 Jakub Jelinek - - PR c++/52953 - * name-lookup.h (struct cp_binding_level): Add artificial bit-field. - Formatting fixes. - * name-lookup.cc (check_local_shadow): Skip artificial bindings when - checking if parameter scope is parent scope. Don't special case - FUNCTION_NEEDS_BODY_BLOCK. Diagnose the in_function_try_handler - cases in the b->kind == sk_function_parms test and verify no - non-artificial intervening scopes. Add missing auto_diagnostic_group. - * decl.cc (begin_function_body): Set - current_binding_level->artificial. - * semantics.cc (begin_function_try_block): Likewise. - -2023-09-05 Patrick Palka - - * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass - nullptr as non_constant_p to cp_parser_braced_list if our - non_constant_p is null. - (cp_parser_initializer_list): Likewise to - cp_parser_initializer_clause. Avoid inspecting - clause_non_constant_p if it's uninitialized. - -2023-09-05 Patrick Palka - - * call.cc (build_user_type_conversion): Free allocated - conversions. - (build_converted_constant_expr_internal): Use - conversion_obstack_sentinel instead. - (perform_dguide_overload_resolution): Likewise. - (build_new_function_call): Likewise. - (build_operator_new_call): Free allocated conversions. - (build_op_call): Use conversion_obstack_sentinel instead. - (build_conditional_expr): Use conversion_obstack_sentinel - instead, and hoist it out to the outermost scope. - (build_new_op): Use conversion_obstack_sentinel instead - and set it up before the first goto. Remove second unneeded goto. - (build_op_subscript): Use conversion_obstack_sentinel instead. - (ref_conv_binds_to_temporary): Likewise. - (build_new_method_call): Likewise. - (can_convert_arg): Likewise. - (can_convert_arg_bad): Likewise. - (perform_implicit_conversion_flags): Likewise. - (perform_direct_initialization_if_possible): Likewise. - (initialize_reference): Likewise. - -2023-09-01 Jakub Jelinek - - PR c++/111069 - * cp-tree.h (determine_local_discriminator): Add NAME argument with - NULL_TREE default. - (struct cp_decomp): New type. - (cp_finish_decl): Add DECOMP argument defaulted to nullptr. - (cp_maybe_mangle_decomp): Remove declaration. - (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned - args. - (cp_convert_range_for): Likewise. - * decl.cc (determine_local_discriminator): Add NAME argument, use it - if non-NULL, otherwise compute it the old way. - (maybe_commonize_var): Don't return early for structured bindings. - (cp_finish_decl): Add DECOMP argument, if non-NULL, call - cp_maybe_mangle_decomp. - (cp_maybe_mangle_decomp): Make it static with a forward declaration. - Call determine_local_discriminator. Replace FIRST and COUNT arguments - with DECOMP argument. - (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP - argument. - * mangle.cc (find_decomp_unqualified_name): Remove. - (write_unqualified_name): Don't call find_decomp_unqualified_name. - (mangle_decomp): Handle mangling of static function/block scope - structured bindings. Don't call decl_mangling_context twice. Call - check_abi_tags, call write_abi_tags for abi version >= 19 and emit - -Wabi warnings if needed. - (write_guarded_var_name): Handle structured bindings. - (mangle_ref_init_variable): Use write_guarded_var_name. - * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction - and cp_convert_range_for callers. - (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and - DECOMP_CNT arguments with DECOMP. Adjust cp_finish_decomp caller. - (cp_convert_range_for): Replace DECOMP_FIRST_NAME and - DECOMP_CNT arguments with DECOMP. Don't call cp_maybe_mangle_decomp, - adjust cp_finish_decl and cp_finish_decomp callers. - (cp_parser_decomposition_declaration): Don't call - cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp - callers. - (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction - and cp_finish_decomp callers. - (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp, - adjust cp_finish_decl and cp_finish_decomp callers. - * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names - caller. - (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP. - (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust - tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and - cp_convert_range_for callers. - -2023-08-30 Marek Polacek - - PR c++/91319 - * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT - when the designated initializer is of the .x{} form. - -2023-08-30 Marek Polacek - - PR c++/111173 - * decl.cc (grokdeclarator): Disallow constinit on functions. - -2023-08-29 Marek Polacek - - * call.cc (convert_like_internal): Show where the conversion function - was declared. - (maybe_show_nonconverting_candidate): New. - * cp-tree.h (maybe_show_nonconverting_candidate): Declare. - * typeck.cc (convert_for_assignment): Call it. - -2023-08-25 Sandra Loosemore - - * cp-tree.h (cp_convert_omp_range_for): Adjust declaration. - * parser.cc (struct omp_for_parse_data): New. - (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime - in intervening code. - (check_omp_intervening_code): New. - (cp_parser_statement_seq_opt): Special-case nested loops, blocks, - and other constructs for OpenMP loops. - (cp_parser_iteration_statement): Reject loops in intervening code. - (cp_parser_omp_for_loop_init): Expand comments and tweak the - interface slightly to better distinguish input/output parameters. - (cp_convert_omp_range_for): Likewise. - (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop - and largely rewritten. Add more comments. - (insert_structured_blocks): New. - (find_structured_blocks): New. - (struct sit_data, substitute_in_tree_walker, substitute_in_tree): - New. - (fixup_blocks_walker): New. - (cp_parser_omp_for_loop): Rewrite to use recursive descent instead - of a loop. Add logic to reshuffle the bits of code collected - during parsing so intervening code gets moved to the loop body. - (cp_parser_omp_loop): Remove call to finish_omp_for_block, which - is now redundant. - (cp_parser_omp_simd): Likewise. - (cp_parser_omp_for): Likewise. - (cp_parser_omp_distribute): Likewise. - (cp_parser_oacc_loop): Likewise. - (cp_parser_omp_taskloop): Likewise. - (cp_parser_pragma): Reject OpenMP pragmas in intervening code. - * parser.h (struct cp_parser): Add omp_for_parse_state field. - * pt.cc (tsubst_omp_for_iterator): Adjust call to - cp_convert_omp_range_for. - * semantics.cc (finish_omp_for): Try harder to preserve location - of loop variable init expression for use in diagnostics. - (struct fofb_data, finish_omp_for_block_walker): New. - (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR - nested inside BIND instead of directly in BIND itself. - -2023-08-25 Sandra Loosemore - - * constexpr.cc (cxx_eval_constant_expression): Handle - OMP_STRUCTURED_BLOCK. - * pt.cc (tsubst_expr): Likewise. - -2023-08-25 Uros Bizjak - - * call.cc (build_conditional_expr): - Rename TRUE/FALSE to true/false. - (build_new_op): Ditto. - -2023-08-22 Jason Merrill - - * pt.cc (outer_template_args): Handle non-template argument. - * constraint.cc (maybe_substitute_reqs_for): Pass decl to it. - * cp-tree.h (outer_template_args): Adjust. - -2023-08-22 Jason Merrill - - PR c++/109751 - * cp-tree.h (member_like_constrained_friend_p): Declare. - * decl.cc (member_like_constrained_friend_p): New. - (function_requirements_equivalent_p): Check it. - (duplicate_decls): Check it. - (grokfndecl): Check friend template constraints. - * mangle.cc (decl_mangling_context): Check it. - (write_unqualified_name): Check it. - * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends. - (tsubst_friend_function): Don't check satisfaction. - -2023-08-22 Tobias Burnus - - * parser.cc (cp_parser_omp_clause_defaultmap): Parse - 'all' as category. - -2023-08-15 Chung-Lin Tang - Thomas Schwinge - - * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT. - -2023-08-14 gnaggnoyil - - DR 2386 - PR c++/110216 - * decl.cc (get_tuple_size): Update implementation for DR 2386. - -2023-08-14 Jason Merrill - - * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14 - -fconcepts. - -2023-08-12 Patrick Palka - Jason Merrill - - PR c++/106604 - * decl.cc (redeclaration_error_message): Remove special handling - for deduction guides. - (grokfndecl): Give deduction guides a dummy DECL_INITIAL. - -2023-08-11 Patrick Palka - - PR c++/110927 - * parser.cc (cp_parser_type_requirement): Pass - check_dependency_p=true instead of =false. - -2023-08-11 Patrick Palka - - PR c++/71954 - * decl.cc (grokdeclarator): Pass 'dname' instead of - 'unqualified_id' as the name when building the VAR_DECL for a - static data member. Call check_explicit_specialization for a - TEMPLATE_ID_EXPR such member. - * pt.cc (finish_member_template_decl): Return NULL_TREE - instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not - set. - -2023-08-11 Patrick Palka - - * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and - TS_DECL_COMMON only when necessary. Print DECL_TEMPLATE_INFO - for all decls that have it, not just VAR_DECL or FUNCTION_DECL. - Also print DECL_USE_TEMPLATE. - (cxx_print_type): Print TYPE_TEMPLATE_INFO. - : Don't print TYPE_TI_ARGS - anymore. - : Print TEMPLATE_TYPE_PARM_INDEX - instead of printing the index, level and original level - individually. - -2023-08-08 Marek Polacek - - * parser.cc (cp_parser_postfix_expression): Adjust the call to - cp_parser_braced_list. - (cp_parser_postfix_open_square_expression): Likewise. - (cp_parser_new_initializer): Likewise. - (cp_parser_assignment_expression): Adjust the call to - cp_parser_initializer_clause. - (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer. - (cp_parser_range_for): Adjust the call to cp_parser_braced_list. - (cp_parser_jump_statement): Likewise. - (cp_parser_mem_initializer): Likewise. - (cp_parser_template_argument): Likewise. - (cp_parser_default_argument): Adjust the call to cp_parser_initializer. - (cp_parser_initializer): Handle null is_direct_init and non_constant_p - arguments. - (cp_parser_initializer_clause): Handle null non_constant_p argument. - (cp_parser_braced_list): Likewise. - (cp_parser_initializer_list): Likewise. - (cp_parser_member_declaration): Adjust the call to - cp_parser_initializer_clause and cp_parser_initializer. - (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list. - (cp_parser_functional_cast): Likewise. - (cp_parser_late_parse_one_default_arg): Adjust the call to - cp_parser_initializer. - (cp_parser_omp_for_loop_init): Likewise. - (cp_parser_omp_declare_reduction_exprs): Likewise. - -2023-08-08 Nathaniel Shead - - PR c++/100482 - * parser.cc (cp_parser_decltype_expr): Report errors raised by - finish_id_expression. - -2023-08-04 Tamar Christina - - * cp-tree.h (RANGE_FOR_NOVECTOR): New. - (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt, - finish_for_cond): Add novector param. - * init.cc (build_vec_init): Default novector to false. - * method.cc (build_comparison_op): Likewise. - * parser.cc (cp_parser_statement): Likewise. - (cp_parser_for, cp_parser_c_for, cp_parser_range_for, - cp_convert_range_for, cp_parser_iteration_statement, - cp_parser_omp_for_loop, cp_parser_pragma): Support novector. - (cp_parser_pragma_novector): New. - * pt.cc (tsubst_expr): Likewise. - * semantics.cc (finish_while_stmt_cond, finish_do_stmt, - finish_for_cond): Likewise. - -2023-08-01 Lewis Hyatt - - * parser.cc (c_init_preprocess): New function. - (maybe_read_tokens_for_pragma_lex): New function. - (pragma_lex): Support preprocess-only mode. - (pragma_lex_discard_to_eol): New function. - -2023-07-31 Chung-Lin Tang - - * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC - host_data construct to have an use_device clause. - -2023-07-28 Ng YongXiang - - PR c++/110057 - PR ipa/83054 - * init.cc (build_vec_delete_1): Devirtualize array destruction. - -2023-07-27 Patrick Palka - - PR c++/110197 - * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an - empty subobject even if CONSTRUCTOR_NO_CLEARING is set. - (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally - whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx, - i.e. whenever initializing an subobject of empty type. - (cxx_eval_vec_init_1): Define 'no_slot' as above and use it - accordingly. - -2023-07-27 Nathaniel Shead - - PR c++/103497 - * pt.cc (type_uses_auto): Check inside parameter packs. - -2023-07-26 Patrick Palka - - PR c++/110566 - PR c++/108179 - * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO - on the DECL_TEMPLATE_RESULT of the new ttp. - (add_defaults_to_ttp): Make a copy of the original ttp's - DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO - as well. - (coerce_template_template_parms): Make sure 'scope_args' has - the right amount of levels for the ttp argument. - (most_general_template): Handle template template parameters. - (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the - DECL_TEMPLATE_RESULT of the new ttp. - -2023-07-26 Patrick Palka - - PR c++/110566 - PR c++/108179 - * pt.cc (coerce_template_template_parms): Simplify by using - DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts. - Always pass the parameters of the most general template to - coerce_template_parms. - -2023-07-26 Patrick Palka - - PR c++/110809 - * pt.cc (unify) : Generalize to handle - REAL_CST as well. - -2023-07-26 Marek Polacek - - * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be - nullptr even when allow_non_constant_p is true. Don't call - _rvalue_constant_expression when not necessary. Move local variable - declarations closer to their first use. - (cp_parser_static_assert): Don't pass a dummy down to - cp_parser_constant_expression. - -2023-07-26 Jason Merrill - - PR c++/106310 - * parser.cc (cp_parser_template_name): Skip non-member - lookup after the template keyword. - (cp_parser_lookup_name): Pass down template_keyword_p. - -2023-07-26 Nathaniel Shead - - PR c++/96630 - PR c++/98675 - PR c++/70331 - * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New - function. - (constexpr_global_ctx::get_value): Don't return expired values. - (constexpr_global_ctx::get_value_ptr): Likewise. - (constexpr_global_ctx::remove_value): Mark value outside - lifetime. - (outside_lifetime_error): New function. - (cxx_eval_call_expression): No longer track save_exprs. - (cxx_eval_loop_expr): Likewise. - (cxx_eval_constant_expression): Add checks for outside lifetime - values. Remove local variables at end of bind exprs, and - temporaries after cleanup points. - -2023-07-26 Nathaniel Shead - - PR c++/110619 - * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to - not return dangling pointers. - * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag. - (check_return_expr): Add a new parameter. - * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR - when referring to dangling pointer. - * typeck.cc (check_return_expr): Disable transformation of - dangling pointers, instead pass this information to caller. - -2023-07-26 Nathaniel Shead - - * constexpr.cc (modifying_const_object_error): Find the source - location of the const object's declaration. - (cxx_eval_constant_expression): Update input_location to the - location of the currently evaluated expression, if possible. - -2023-07-25 Marek Polacek - - PR c++/108960 - * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial - here. - (instantiate_template): Reset all complain flags except - tf_warning_or_error. - -2023-07-25 Marek Polacek - - PR c++/110382 - * constexpr.cc (cxx_eval_array_reference): Create a new constructor - only when we don't already have a matching one. Clear the object - when the type is non-scalar. - -2023-07-21 Marek Polacek - - PR c++/110106 - * constexpr.cc (potential_constant_expression_1): Try to complete the - type when !processing_template_decl. - -2023-07-20 Marek Polacek - - PR c++/110114 - * call.cc (implicit_conversion_1): Return early if the type isn't - complete. - -2023-07-19 Marek Polacek - - PR c++/110745 - * error.cc (dump_simple_decl): Print base class name. - -2023-07-19 Marek Polacek - - PR c++/110064 - * typeck2.cc (process_init_constructor_record): Don't emit - -Wmissing-field-initializers for empty classes. - -2023-07-19 Patrick Palka - - * pt.cc (type_unification_real): Test for PARM_DECL instead - of TEMPLATE_PARM_INDEX to distinguish a type vs non-type - template parameter pack. - (type_targs_deducible_from): Likewise. - -2023-07-19 Patrick Palka - - * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table' - flag parameter. Don't look up or insert into the specializations - table if 'use_spec_table' is false. - (tsubst_decl): Add defaulted 'use_spec_table' flag parameter. - Check for error_mark_node. - : Pass 'use_spec_table' to - tsubst_function_decl. - : Don't call coerce_template_parms. - Don't look up or insert into the specializations table if - 'use_spec_table' is false. Exit earlier if the substituted - type is erroneous and we're not complaining, and do so for - alias specializations as well. - (instantiate_template): Pass false as 'use_spec_table' - to tsubst_decl. Call register_specialization afterwards. - -2023-07-18 Jason Merrill - - * constexpr.cc (cxx_eval_bit_cast): Check that the result of - native_interpret_aggregate doesn't need more evaluation. - -2023-07-18 Patrick Palka - - * call.cc (add_template_conv_candidate): Don't check for - non-empty 'candidates' here. - (build_op_call): Check it here, before we've considered any - conversion functions. - -2023-07-18 Patrick Palka - - PR c++/110535 - * call.cc (add_conv_candidate): Check constraints. - -2023-07-17 Jason Merrill - - * constexpr.cc (cxx_eval_call_expression): Only cache - reduced_constant_expression_p results. - (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type. - (cxx_eval_constant_expression): Fold vectors here. - (cxx_eval_bare_aggregate): Not here. - -2023-07-15 Patrick Palka - - PR c++/110441 - * call.cc (keep_unused_object_arg): Use cp_build_compound_expr - instead of building a COMPOUND_EXPR directly. - -2023-07-15 Patrick Palka - - PR c++/110524 - * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR - whose template is already an IDENTIFIER_NODE. - -2023-07-14 Nathaniel Shead - - * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value. - -2023-07-14 Jason Merrill - - PR c++/110344 - * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling - after heap handling. - * name-lookup.cc (get_cxx_dialect_name): Add C++26. - -2023-07-14 Marek Polacek - Jason Merrill - - PR c++/109876 - * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing - an object of empty class type. - * pt.cc (value_dependent_expression_p) : Treat a - constexpr-declared non-constant variable as value-dependent. - -2023-07-11 Patrick Palka - - PR c++/110580 - * pt.cc (lookup_template_variable): Pass all levels of arguments - to coerce_template_parms, and use the parameters from the most - general template. - -2023-07-10 Patrick Palka - - PR c++/110523 - * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT - assert, and downgrade it to a checking assert. - -2023-06-30 Patrick Palka - - * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden. - (TEMPLATE_TYPE_DESCENDANTS): Define. - (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define. - * pt.cc (reduce_template_parm_level): Revert - r14-418-g0bc2a1dc327af9 change. - (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P - appropriately. - (uses_outer_template_parms): Determine the outer depth of - a template template parm without relying on DECL_CONTEXT. - (tsubst) : Cache lowering a - simple template template parm. Consistently use 'code'. - -2023-06-29 Patrick Palka - - PR c++/110468 - * init.cc (maybe_instantiate_nsdmi_init): Mask out all - tsubst flags except for tf_warning_or_error. - -2023-06-29 Patrick Palka - - PR c++/110463 - * cp-gimplify.cc (cp_fold) : Propagate - CONSTRUCTOR_MUTABLE_POISON. - -2023-06-29 Patrick Palka - - * cp-tree.h (tree_template_info::partial): New data member. - (TI_PARTIAL_INFO): New tree accessor. - (most_specialized_partial_spec): Add defaulted bool parameter. - * module.cc (trees_out::core_vals) : Stream - TI_PARTIAL_INFO. - (trees_in::core_vals) : Likewise. - * parser.cc (specialization_of): Adjust after making - most_specialized_partial_spec return TEMPLATE_INFO instead - of TREE_LIST. - * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO - of 'decl' to point back to the partial TEMPLATE_DECL. Likewise - (and pass rechecking=true to most_specialization_partial_spec). - (instantiate_class_template): Likewise. - (instantiate_template): Set TI_PARTIAL_INFO to the result of - most_specialization_partial_spec after forming a variable - template specialization. - (most_specialized_partial_spec): Add 'rechecking' parameter. - Exit early if the template is not primary. Use the TI_PARTIAL_INFO - of the corresponding TEMPLATE_INFO as a cache unless 'rechecking' - is true. Don't bother setting TREE_TYPE of each TREE_LIST. - (instantiate_decl): Adjust after making - most_specialized_partial_spec return TEMPLATE_INFO instead of - TREE_LIST. - * ptree.cc (cxx_print_xnode) : Dump - TI_PARTIAL_INFO. - -2023-06-29 Eugene Rozenfeld - - * Make-lang.in: Pass correct stage cc1plus when processing - profile data collected while building target libraries - -2023-06-28 Patrick Palka - - PR c++/89442 - PR c++/107437 - * cp-tree.h (lookup_template_variable): Add complain parameter. - * parser.cc (cp_parser_template_id): Pass tf_warning_or_error - to lookup_template_variable. - * pt.cc (lookup_template_variable): Add complain parameter. - Coerce template arguments here ... - (finish_template_variable): ... instead of here. - (lookup_and_finish_template_variable): Check for error_mark_node - result from lookup_template_variable. - (tsubst_copy) : Pass complain to - lookup_template_variable. - (instantiate_template): Use build2 instead of - lookup_template_variable to build a TEMPLATE_ID_EXPR - for most_specialized_partial_spec. - -2023-06-28 Marek Polacek - - PR c++/110175 - * typeck.cc (cp_build_unary_op): Check tf_warning before warning. - -2023-06-28 Jason Merrill - - PR c++/110334 - * cp-tree.h (clone_attrs): Declare. - * method.cc (implicitly_declare_fn): Use it for inherited - constructor. - * optimize.cc (clone_attrs): New. - (maybe_clone_body): Use it. - -2023-06-28 Jason Merrill - - PR c++/110344 - * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast - from void* to the type of a pointed-to object. - -2023-06-23 David Malcolm - - PR c++/110164 - * cp-name-hint.h (maybe_suggest_missing_header): New decl. - * decl.cc: Define INCLUDE_MEMORY. Add include of - "cp/cp-name-hint.h". - (start_decl_1): Call maybe_suggest_missing_header. - * name-lookup.cc (maybe_suggest_missing_header): Remove "static". - -2023-06-16 Alex Coplan - - * parser.cc (cp_parser_enum_specifier): Don't reject - elaborated-type-specifier with enum-base, instead emit new - Welaborated-enum-base warning. - -2023-06-14 Jason Merrill - - DR 2327 - PR c++/86521 - * call.cc (joust_maybe_elide_copy): Don't change cand. - (joust): Move the elided tiebreaker later. - -2023-06-13 David Malcolm - - PR c/84890 - * name-lookup.cc (missing_std_header::~missing_std_header): Reword - note to avoid negative tone of "forgetting". - -2023-06-13 Jason Merrill - - * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P. - -2023-06-12 Tobias Burnus - - * parser.cc (cp_parser_omp_clause_map): Reword error message for - clearness especially with 'omp target (enter/exit) data.' - * semantics.cc (handle_omp_array_sections): Handle - GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values. - -2023-06-12 Jason Merrill - - PR c++/105838 - * call.cc (convert_like_internal) [ck_list]: Use - maybe_init_list_as_array. - * constexpr.cc (cxx_eval_vec_init_1): Init might have - a different type. - * tree.cc (build_vec_init_elt): Likewise. - * init.cc (build_vec_init): Handle from_array from a - TARGET_EXPR. Retain TARGET_EXPR of a different type. - -2023-06-11 Patrick Palka - - PR c++/110122 - * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted - functions needed for constant evaluation. - (instantiate_cx_fn_r): Likewise. - -2023-06-11 Patrick Palka - - PR c++/110122 - * pt.cc (lookup_template_class): Extend shortcut for looking up the - current class scope to consider outer class scopes too, and use - current_nonlambda_class_type instead of current_class_type. Only - call coerce_template_parms when specializing a primary template. - -2023-06-10 Nathan Sidwell - - PR c++/61663 - * pt.cc (maybe_adjust_types_for_deduction): Implement DR976. - -2023-06-09 Jason Merrill - - PR c++/110185 - PR c++/58487 - * method.cc (build_comparison_op): Give retval a name. - * typeck.cc (check_return_expr): Fix for nameless variables. - -2023-06-09 Jason Merrill - - * parser.cc (cp_parser_simple_type_specifier): Check for auto - in template argument. - (cp_parser_template_type_arg): Remove auto checking. - -2023-06-09 Jason Merrill - - PR c++/110102 - * call.cc (maybe_init_list_as_array): Check that the element type is - copyable. - -2023-06-07 Jason Merrill - - PR c++/58487 - PR c++/53637 - * cp-tree.h (INIT_EXPR_NRV_P): New. - * semantics.cc (finalize_nrv_r): Check it. - * name-lookup.h (decl_in_scope_p): Declare. - * name-lookup.cc (decl_in_scope_p): New. - * typeck.cc (check_return_expr): Allow non-NRV - returns if the NRV is no longer in scope. - -2023-06-07 Jason Merrill - - PR c++/58487 - * typeck.cc (want_nrvo_p): New. - (check_return_expr): Handle -Wnrvo. - -2023-06-07 Jason Merrill - - PR c++/51571 - PR c++/92407 - * decl.cc (finish_function): Simplify NRV handling. - * except.cc (maybe_set_retval_sentinel): Also set if NRV. - (maybe_splice_retval_cleanup): Don't add the cleanup region - if we don't need it. - * semantics.cc (nrv_data): Add simple field. - (finalize_nrv): Set it. - (finalize_nrv_r): Check it and retval sentinel. - * cp-tree.h (finalize_nrv): Adjust declaration. - * typeck.cc (check_return_expr): Remove named_labels check. - -2023-06-07 Jason Merrill - - PR c++/92407 - * typeck.cc (check_return_expr): Prevent NRV in the presence of - named labels. - -2023-06-07 Jason Merrill - - PR c++/33799 - * except.cc (maybe_splice_retval_cleanup): Change - recognition of function body and try scopes. - * semantics.cc (do_poplevel): Call it after poplevel. - (at_try_scope): New. - * cp-tree.h (maybe_splice_retval_cleanup): Adjust. - -2023-06-07 Jason Merrill - - * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the - INIT_EXPR. - -2023-06-06 Kwok Cheung Yeung - Tobias Burnus - - * parser.cc (cp_parser_omp_clause_defaultmap, - cp_parser_omp_clause_map): Parse 'present'. - (cp_parser_omp_clause_from_to): New; parse to/from - clauses with optional 'present' modifier. - (cp_parser_omp_all_clauses): Update call. - (cp_parser_omp_target_data, cp_parser_omp_target_enter_data, - cp_parser_omp_target_exit_data): Handle new enum value for - 'present' mapping. - * semantics.cc (finish_omp_target): Likewise. - -2023-06-04 Jason Merrill - - PR c++/97720 - * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN. - (call_terminate_fn): New macro. - * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it. - * except.cc (init_exception_processing): Set it. - (cp_protect_cleanup_actions): Return it. - -2023-06-03 Patrick Palka - - PR c++/109923 - * pt.cc (is_specialization_of_friend): Fix overbroad check for - a non-template member function of a class template. - -2023-06-03 Patrick Palka - - * pt.cc (iterative_hash_template_arg): Don't hash - TEMPLATE_TEMPLATE_PARM specially. - -2023-06-03 Patrick Palka - - * class.cc (build_base_path): Check in_template_context instead - of in_template_function. - (resolves_to_fixed_type_p): Likewise. - * cp-tree.h (in_template_context): Define. - (in_template_function): Remove. - * decl.cc (cp_make_fname_decl): Check current_function_decl - and in_template_context instead of in_template_function. - * decl2.cc (mark_used): Check in_template_context instead of - in_template_function. - * pt.cc (in_template_function): Remove. - * semantics.cc (enforce_access): Check in_template_context - instead of current_template_parms directly. - -2023-06-03 Patrick Palka - - PR c++/70790 - * mangle.cc (write_expression): Handle NOEXCEPT_EXPR. - -2023-06-02 Jason Merrill - - DR 2735 - PR c++/109247 - * call.cc (sfk_copy_or_move): New. - (joust): Add tiebreaker for explicit conv and copy ctor. - -2023-06-02 Jason Merrill - - PR c++/110070 - PR c++/105838 - * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE. - (convert_like_internal) [ck_list]: Set it. - (set_up_extended_ref_temp): Copy it. - * tree.cc (handle_no_unique_addr_attribute): Set it. - -2023-06-01 Jason Merrill - - * typeck2.cc (check_narrowing): Check flag_permissive. - -2023-05-30 Tobias Burnus - - PR c/109999 - * parser.cc (cp_parser_oacc_all_clauses, - cp_parser_omp_all_clauses): Improve error wording. - -2023-05-19 Andrew Pinski - - PR driver/33980 - * lang-specs.h ("@c++-header"): Add %w after - the --output-pch. - ("@c++-system-header"): Likewise. - ("@c++-user-header"): Likewise. - -2023-05-19 Patrick Palka - - * constraint.cc (normalize_concept_check): Avoid having to do - two norm_cache lookups. Remove unnecessary early exit for an - ill-formed concept definition. - -2023-05-19 Patrick Palka - - PR c++/97340 - * pt.cc (lookup_and_finish_template_variable): Don't call - convert_from_reference. - (tsubst_copy_and_build) : Call - convert_from_reference on the result of - lookup_and_finish_template_variable. - -2023-05-18 Bernhard Reutner-Fischer - - * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h. - (build_conditional_expr): Ditto. - (convert_like_internal): Ditto. - (convert_arg_to_ellipsis): Ditto. - (build_over_call): Ditto. - (compare_ics): Ditto. - * class.cc (is_empty_base_ref): Ditto. - * coroutines.cc (rewrite_param_uses): Ditto. - * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto. - (ARITHMETIC_TYPE_P): Ditto. - * cvt.cc (ocp_convert): Ditto. - * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto. - * decl.cc (layout_var_decl): Ditto. - (get_tuple_size): Ditto. - * error.cc (dump_simple_decl): Ditto. - * lambda.cc (start_lambda_scope): Ditto. - * mangle.cc (write_template_arg): Ditto. - * method.cc (spaceship_comp_cat): Ditto. - * module.cc (node_template_info): Ditto. - (trees_out::start): Ditto. - (trees_out::decl_node): Ditto. - (trees_in::read_var_def): Ditto. - (set_instantiating_module): Ditto. - * name-lookup.cc (maybe_record_mergeable_decl): Ditto. - (consider_decl): Ditto. - (maybe_add_fuzzy_decl): Ditto. - * pt.cc (convert_nontype_argument): Ditto. - * semantics.cc (handle_omp_array_sections_1): Ditto. - (finish_omp_clauses): Ditto. - (finish_omp_target_clauses_r): Ditto. - (is_this_parameter): Ditto. - * tree.cc (build_cplus_array_type): Ditto. - (is_this_expression): Ditto. - * typeck.cc (do_warn_enum_conversions): Ditto. - * typeck2.cc (store_init_value): Ditto. - (check_narrowing): Ditto. - -2023-05-17 Jakub Jelinek - - PR c++/109868 - * init.cc (build_zero_init_1): Don't initialize zero-width bitfields. - For unions only initialize the first FIELD_DECL. - -2023-05-16 Marek Polacek - - PR c++/109774 - * typeck.cc (check_return_expr): In a template, return only after - suppressing -Wdangling-reference. - -2023-05-16 Patrick Palka - - PR c++/109871 - * call.cc (add_list_candidates): Check for invalid designated - initialization sooner and even for types that have a list - constructor. - -2023-05-11 Patrick Palka - - PR c++/109745 - * typeck2.cc (poison_mutable_constructors): Define. - (store_init_value): Use it instead of setting - CONSTRUCTOR_MUTABLE_POISON directly. - -2023-05-11 Patrick Palka - Jonathan Wakely - - PR c++/83258 - PR c++/80488 - PR c++/97700 - * pt.cc (convert_nontype_argument_function): Remove linkage - requirement for C++17 and later. - (invalid_tparm_referent_p) : Restrict - DECL_ARTIFICIAL rejection test to VAR_DECL. - -2023-05-10 Marek Polacek - - PR c++/109680 - * method.cc (build_trait_object): New. - (assignable_expr): Use it. - (ref_xes_from_temporary): Likewise. - (is_convertible_helper): Likewise. Check FUNC_OR_METHOD_TYPE_P. - -2023-05-10 Jason Merrill - - * call.cc (convert_like_internal): Share ck_ref_bind handling - between all bad conversions. - -2023-05-10 Jason Merrill - - DR 2543 - * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve - TARGET_EXPR flags. - (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P. - * typeck2.cc (store_init_value): Diagnose constinit sooner. - -2023-05-10 Jason Merrill - - * constexpr.cc (cxx_eval_outermost_constant_expr): Always check - for address of immediate fn. - (maybe_constant_init_1): Evaluate PTRMEM_CST. - -2023-05-10 Jakub Jelinek - - PR c++/109756 - * parser.cc (cp_parser_std_attribute): For unknown attributes with - arguments set TREE_VALUE (attribute) to error_mark_node after skipping - the balanced tokens. - (cp_parser_std_attribute_list): If ... is used after attribute without - arguments, diagnose it and return error_mark_node. If - TREE_VALUE (attribute) is error_mark_node, don't call - make_pack_expansion nor return early error_mark_node. - -2023-05-09 Patrick Palka - - PR c++/109752 - * constraint.cc (satisfaction_cache::satisfaction_cache): In the - unexpected case of evaluating an atom for the first time noisily, - remove the cache slot that we inserted. - -2023-05-09 Patrick Palka - - PR c++/109761 - * parser.cc (cp_parser_class_specifier): Don't pass a class - context to noexcept_override_late_checks. - (noexcept_override_late_checks): Remove 'type' parameter - and use DECL_CONTEXT of 'fndecl' instead. - -2023-05-09 Jakub Jelinek - - PR c++/109756 - * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack - expansion of assume attribute. - -2023-05-08 Patrick Palka - - PR c++/106214 - PR c++/93107 - * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context - calls to happen before do_class_deduction. Add some - error_mark_node tests. - -2023-05-07 Patrick Palka - - PR c++/85979 - * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression) - : Consider ALIGNOF_EXPR_STD_P. - * error.cc (dump_expr) : Likewise. - -2023-05-07 Patrick Palka - - DR 2256 - PR c++/103091 - * decl.cc (decl_jump_unsafe): Return bool instead of int. - Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR. - (check_previous_goto_1): Simplify now that decl_jump_unsafe - returns bool instead of int. - (check_goto): Likewise. - -2023-05-07 Patrick Palka - - * pt.cc (instantiate_alias_template): Exit early upon - error from coerce_template_parms. Remove dependence test - guarding constraints_satisfied_p. - -2023-05-07 Patrick Palka - - * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via - TEMPLATE_TYPE_PARM_CHECK. - (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK. - (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via - TEMPLATE_TEMPLATE_PARM_CHECK. - * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier): - Guard PLACEHOLDER_TYPE_CONSTRAINTS access. - * error.cc (dump_type) : Use separate - variable to store CLASS_PLACEHOLDER_TEMPLATE result. - * pt.cc (outer_template_args): Use strip_innermost_template_args. - (any_type_dependent_arguments_p): Exit early if - !processing_template_decl. Use range-based for. - (any_dependent_template_arguments_p): Likewise. - -2023-05-07 Patrick Palka - - PR c++/98283 - * pt.cc (tsubst_copy_and_build) : Propagate - REF_PARENTHESIZED_P more generally via force_paren_expr. - * semantics.cc (force_paren_expr): Document default argument. - -2023-05-07 Patrick Palka - - PR c++/109651 - * pt.cc (coerce_template_args_for_ttp): Mention we can hit the - current_template_parms fallback when level-lowering a bound ttp. - (tsubst_template_decl): Add lambda_tparms parameter. Prefer to - use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS. - (tsubst_decl) : Pass NULL_TREE as lambda_tparms - to tsubst_template_decl. - (tsubst_lambda_expr): For a generic lambda, substitute - DECL_TEMPLATE_PARMS and set current_template_parms to it - before substituting the function type. Pass the substituted - DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl. - -2023-05-07 Patrick Palka - - PR c++/109480 - * semantics.cc (enforce_access): Check current_template_parms - instead of processing_template_decl when deciding whether to - defer the access check. - -2023-05-07 Patrick Palka - - PR c++/109480 - * constexpr.cc (potential_constant_expression_1) : - Reorganize to call get_fns sooner. Remove special handling of - the object argument of a non-static member function call. Remove - dead store to 'fun'. - -2023-05-05 Jason Merrill - - Revert: - 2023-04-27 Jason Merrill - - PR c++/61445 - * pt.cc (instantiate_decl): Assert !defer_ok for local - class members. - -2023-05-03 Jason Merrill - - PR c++/91618 - PR c++/109649 - * friend.cc (do_friend): Don't call check_explicit_specialization if - DECL_TEMPLATE_INFO is already set. - * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO. - * name-lookup.cc (set_decl_namespace): Likewise. - -2023-05-03 Jakub Jelinek - - * cp-gimplify.cc (cp_fold_data): Move definition earlier. - (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false - constructed data rather than &pset to cp_walk_tree with cp_fold_r. - -2023-05-03 Jason Merrill - - * pt.cc (reduce_template_parm_level): Fix comparison of - template template parm to cached version. - -2023-05-02 Jason Merrill - - * pt.cc (instantiate_class_template): Skip the RECORD_TYPE - of a class template. - (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE. - -2023-05-02 Jason Merrill - - * name-lookup.cc (pop_from_top_level): Don't - invalidate_class_lookup_cache. - -2023-05-02 Jason Merrill - - PR c++/109678 - * cp-tree.h (lookup_base): Add offset parm. - * constexpr.cc (cxx_fold_indirect_ref_1): Pass it. - * search.cc (struct lookup_base_data_s): Add offset. - (dfs_lookup_base): Handle it. - (lookup_base): Pass it. - -2023-05-02 Jason Merrill - - PR c++/109678 - * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first. - -2023-05-01 Jason Merrill - - PR c++/109666 - * name-lookup.cc (maybe_push_to_top_level) - (maybe_pop_from_top_level): Split out... - * pt.cc (instantiate_body): ...from here. - * init.cc (maybe_instantiate_nsdmi_init): Use them. - * name-lookup.h: Declare them.. - -2023-04-28 Eugene Rozenfeld - - * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries - -2023-04-27 Jason Merrill - - * call.cc (print_conversion_rejection): Use iloc_sentinel. - -2023-04-27 Jason Merrill - - PR c++/61445 - * pt.cc (instantiate_decl): Assert !defer_ok for local - class members. - -2023-04-26 Jason Merrill - - * init.cc (nsdmi_inst): Remove. - (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead. - -2023-04-26 Jason Merrill - - PR c++/109241 - * pt.cc (instantiate_class_template): Do partially instantiate. - (tsubst_expr): Do call complete_type for partial instantiations. - -2023-04-26 Jason Merrill - - PR c++/69836 - * pt.cc (regenerate_decl_from_template): Skip unique friends. - -2023-04-26 Patrick Palka - - * pt.cc (most_specialized_partial_spec): Exit early when - DECL_TEMPLATE_SPECIALIZATIONS is empty. Move local variable - declarations closer to their first use. Remove redundant - flag_concepts test. Remove redundant forward declaration. - -2023-04-25 Patrick Palka - - PR c++/108975 - * pt.cc (value_dependent_expression_p) : - Suppress conservative early exit for reference variables - when DECL_HAS_VALUE_EXPR_P. - -2023-04-25 Tobias Burnus - - * parser.cc (cp_parser_omp_scan_loop_body): Handle - zero exec statements before/after 'omp scan'. - -2023-04-24 Patrick Palka - - * cp-tree.h (cp_expr_location): Define here. - * tree.cc (cp_expr_location): Don't define here. - -2023-04-21 Jason Merrill - - PR c++/108099 - * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned - typedef' pedwarn. Use c_common_signed_or_unsigned_type. Also - handle 'signed typedef'. - -2023-04-21 Patrick Palka - - * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp. - : Use cp_unevaluated and WALK_SUBTREE. - : Likewise. - -2023-04-20 Patrick Palka - - * pt.cc (tsubst) : Don't recurse when - level lowering a cv-qualified type template parameter. Remove - recursive loop breaker in the level lowering case for constrained - autos. Use the TEMPLATE_PARM_DESCENDANTS cache in this case as - well. - -2023-04-20 Patrick Palka - - * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC - of arguments into a TREE_LIST for sake of pretty printing. - * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC - instead of TREE_LIST of trailing variadic trait arguments. - * method.cc (constructible_expr): Likewise. - (is_xible_helper): Likewise. - * parser.cc (cp_parser_trait): Represent trailing variadic trait - arguments as a TREE_VEC instead of TREE_LIST. - * pt.cc (value_dependent_expression_p): Handle TREE_VEC - instead of TREE_LIST of trailing variadic trait arguments. - * semantics.cc (finish_type_pack_element): Likewise. - (check_trait_type): Likewise. - -2023-04-20 Patrick Palka - - * tree.cc (strip_typedefs): Move TREE_LIST handling to - strip_typedefs_expr. Dispatch to strip_typedefs_expr for - non-type 't'. - : Remove manual dispatching to - strip_typedefs_expr. - : Likewise. - (strip_typedefs_expr): Replaces calls to strip_typedefs_expr - with strip_typedefs throughout. Don't dispatch to strip_typedefs - for type 't'. - : Replace this with the better version from - strip_typedefs. - -2023-04-19 Patrick Palka - Jonathan Wakely - - PR c++/100157 - * cp-trait.def (TYPE_PACK_ELEMENT): Define. - * cp-tree.h (finish_trait_type): Add complain parameter. - * cxx-pretty-print.cc (pp_cxx_trait): Handle - CPTK_TYPE_PACK_ELEMENT. - * parser.cc (cp_parser_constant_expression): Document default - arguments. - (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT. Pass - tf_warning_or_error to finish_trait_type. - * pt.cc (tsubst) : Handle non-type first - argument. Pass complain to finish_trait_type. - * semantics.cc (finish_type_pack_element): Define. - (finish_trait_type): Add complain parameter. Handle - CPTK_TYPE_PACK_ELEMENT. - * tree.cc (strip_typedefs): Handle non-type first argument. - Pass tf_warning_or_error to finish_trait_type. - * typeck.cc (structural_comptypes) : Use - cp_tree_equal instead of same_type_p for the first argument. - -2023-04-19 Patrick Palka - - PR c++/109556 - * pt.cc (try_class_unification): Don't ggc_free the copy of - 'targs'. - -2023-04-19 Jason Merrill - - PR c++/108099 - * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t. - -2023-04-17 Patrick Palka - - PR c++/109531 - * pt.cc (tsubst) : - In the level-lowering case just use lookup_template_class - to rebuild the bound ttp. - -2023-04-15 Jason Merrill - - PR c++/109357 - * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]: - Check for complex initializer. - -2023-04-13 Patrick Palka - - PR c++/109420 - * decl.cc (make_typename_type): Also ignore non-types during the - lookup if tag_type corresponds to an elaborated-type-specifier. - * pt.cc (tsubst) : Pass class_type or - enum_type as tag_type to make_typename_type accordingly instead - of always passing typename_type. - -2023-04-13 Jason Merrill - - PR c++/109277 - * semantics.cc (check_trait_type): Handle incomplete type directly. - * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert. - -2023-04-13 Jason Merrill - - * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool. - * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust. - -2023-04-12 Jakub Jelinek - - * Make-lang.in (s-cp-module-version): New target. - (cp/module.o): Depend on it. - (MODULE_VERSION): Remove variable. - (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just - cat s-cp-module-version. - -2023-04-09 Iain Sandoe - - * coroutines.cc (coro_rewrite_function_body): Ensure that added - bind expressions have scope blocks. - -2023-04-04 Jason Merrill - - PR c++/107484 - * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE. - -2023-04-03 Patrick Palka - - PR c++/109300 - * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction - with no initializer, instead of asserting. - -2023-04-01 Patrick Palka - - PR c++/109160 - * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter. - * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to - do_auto_deduction. - (tsubst_decl) : Pass 'tmpl' instead of 't' as - 'in_decl' to coerce_template_parms. - (unify) : Pass TPARMS_PRIMARY_TEMPLATE - as 'tmpl' to do_auto_deduction. - (do_auto_deduction): Document default arguments. Rename local - variable 'tmpl' to 'ctmpl'. Use 'tmpl' to obtain a full set of - template arguments for satisfaction in the adc_unify case. - -2023-04-01 Patrick Palka - - PR c++/53164 - PR c++/105848 - * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of - FUNCTION_DECL. - (instantiate_class_template): Call mark_template_arguments_used. - (tsubst_copy_and_build) : Revert r13-995 change. - (mark_template_arguments_used): Define. - (instantiate_body): Call mark_template_arguments_used. - -2023-04-01 Iain Sandoe - - PR c++/101118 - * coroutines.cc (flatten_await_stmt): Use the current count of - promoted temporaries to build a unique name for the frame entries. - -2023-03-30 Jason Merrill - - PR c++/105452 - * search.cc (type_context_for_name_lookup): New. - (accessible_p): Handle anonymous union. - * init.cc (maybe_instantiate_nsdmi_init): Use - type_context_for_name_lookup. - * parser.cc (cp_parser_class_specifier): Likewise. - * cp-tree.h (type_context_for_name_lookup): Declare. - -2023-03-30 Jason Merrill - - PR c++/105221 - * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer - conversions. - -2023-03-30 Jakub Jelinek - - PR c++/109319 - * decl2.cc (grok_array_decl): After emitting a pedwarn for - -Wcomma-subscript, if processing_template_decl set orig_index_exp - to compound expr from orig_index_exp_list. - -2023-03-30 Jason Merrill - - PR c++/107897 - PR c++/108887 - * decl2.cc (record_mangling): Use symtab_node::reset. - -2023-03-30 Jakub Jelinek - - PR c++/109278 - * call.cc (convert_like_internal): If pedwarn for extended float - type conversions doesn't report anything, avoid calling - maybe_inform_about_fndecl_for_bogus_argument_init. - -2023-03-29 Jason Merrill - - PR c++/109321 - PR c++/109320 - * pt.cc (alias_ctad_tweaks): Rewrite deduced args. - (type_targs_deducible_from): Handle null pack deduction. - -2023-03-28 David Malcolm - - PR c/107002 - * parser.cc (cp_parser_binary_expression): Update for new param of - check_for_xor_used_as_pow. - -2023-03-28 Jakub Jelinek - - PR c++/109309 - * contracts.cc: Include intl.h. - (check_postcondition_result): Don't form diagnostics from two halves - of an English message to allow translations. - -2023-03-24 Patrick Palka - - PR c++/106969 - * parser.cc (cp_parser_class_specifier): Clear current_class_ptr - and current_class_ref sooner, before parsing a class definition. - -2023-03-24 Jason Merrill - - PR c++/105481 - * pt.cc (type_unification_real): Adjust for partial ordering. - -2023-03-23 Jason Merrill - - PR c++/105996 - * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization - and location wrappers. - -2023-03-23 Marek Polacek - - PR c++/107532 - * call.cc (class_has_reference_member_p): New. - (class_has_reference_member_p_r): New. - (reference_like_class_p): Don't look for a specific constructor. - Use a DFS walk with class_has_reference_member_p_r. - -2023-03-23 Jason Merrill - - PR c++/109241 - * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO. - -2023-03-22 Jason Merrill - - PR c++/108390 - * pt.cc (unify): Use fold of build_nop instead of fold_convert. - -2023-03-22 Jason Merrill - - PR c++/108795 - * semantics.cc (finish_id_expression_1): Check scope before - returning id_expression. - -2023-03-22 Alex Coplan - - PR c++/109177 - * call.cc (build_over_call): Use make_temp_override to suppress - both unavailable and deprecated warnings when calling - build_addr_func. - -2023-03-21 Jason Merrill - - PR c++/106890 - * init.cc (maybe_instantiate_nsdmi_init): Don't leave - current_function_decl set to a constructor. - -2023-03-20 Marek Polacek - - PR c++/109159 - * call.cc (add_template_candidate_real): Add explicit decls to the - set of candidates when the initializer is a braced-init-list. - -2023-03-20 Jakub Jelinek - - PR c++/109164 - * cp-tree.h (var_needs_tls_wrapper): Declare. - * decl2.cc (var_needs_tls_wrapper): No longer static. - * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables - for which a TLS wrapper will be needed. - -2023-03-17 Jason Merrill - - PR c++/108975 - * lambda.cc (prune_lambda_captures): Don't bother in a template. - -2023-03-17 Jason Merrill - - PR c++/109172 - * except.cc (build_throw): Check dtor access. - -2023-03-17 Jason Merrill - - PR c++/69410 - * friend.cc (do_friend): Handle namespace as scope argument. - * decl.cc (grokdeclarator): Pass down in_namespace. - -2023-03-16 Jason Merrill - - PR c++/105809 - * init.cc (get_nsdmi): Split out... - (maybe_instantiate_nsdmi_init): ...this function. - * cp-tree.h: Declare it. - * pt.cc (tsubst_expr): Use it. - -2023-03-16 Jason Merrill - - PR c++/108242 - * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation. - -2023-03-16 Jason Merrill - - PR c++/101869 - * semantics.cc (finish_qualified_id_expr): Don't try to build a - pointer-to-member if the scope is an enumeration. - -2023-03-16 Patrick Palka - - PR c++/109030 - * constexpr.cc (maybe_constant_init_1): For an unevaluated - non-manifestly-constant operand, don't constant evaluate - and instead call fold_to_constant as in maybe_constant_value. - -2023-03-16 Patrick Palka - - PR c++/100288 - * constraint.cc (satisfaction_cache::get): Relax overly strict - checking assert in the constraint recursion case. - -2023-03-16 Jason Merrill - - PR c++/105406 - * coroutines.cc (build_co_await): Handle lvalue 'o'. - -2023-03-15 Jason Merrill - - PR c++/103871 - PR c++/98056 - * typeck.cc (cp_build_modify_expr): Allow array initialization of - DECL_ARTIFICIAL variable. - -2023-03-15 Marek Polacek - - PR c++/107280 - * constexpr.cc (cxx_eval_store_expression): Strip location wrappers. - -2023-03-15 Jason Merrill - - PR c++/58538 - * semantics.cc (check_template_template_default_arg): Check - maybe_get_template_decl_from_type_decl. - -2023-03-15 Jason Merrill - - PR c++/108179 - PR c++/104107 - PR c++/95036 - * pt.cc (coerce_template_template_parms): Use args from - DECL_CONTEXT (arg_tmpl) instead of outer_args. - -2023-03-15 Jason Merrill - - PR c++/108179 - * pt.cc (coerce_template_template_parms): Take the arg and parm - templates directly. - (coerce_template_template_parm): Adjust. - (template_template_parm_bindings_ok_p): Adjust. - (convert_template_argument): Adjust. - -2023-03-14 Patrick Palka - - PR c++/96830 - * pt.cc (push_inline_template_parms_recursive): Set - TEMPLATE_PARMS_CONSTRAINTS. - (push_template_decl): For an out-of-line declaration, verify - constraints for each enclosing template scope match those of the - original template declaratation. - -2023-03-14 Patrick Palka - - PR c++/96830 - * pt.cc (redeclare_class_template): Add missing "of" in - constraint mismatch diagnostic. - (tsubst_friend_class): For an already declared class template, - substitute and pass the friend declaration's constraints to - redeclare_class_template instead of passing the existing - template's constraints. - -2023-03-14 Jason Merrill - - PR c++/108468 - * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE - is non-null. - -2023-03-14 Jason Merrill - - PR c++/107310 - * cp-gimplify.cc (genericize_if_stmt): Restore folding - of constant conditions. - -2023-03-14 Jakub Jelinek - - PR c++/109096 - * tree.cc (record_has_unique_obj_representations): Ignore unnamed - bitfields. - -2023-03-13 Jason Merrill - - PR c++/107128 - * parser.cc (cp_parser_set_decl_spec_type): Use - redefined_builtin_type for extended_float_type_p. - -2023-03-13 Marek Polacek - - PR c++/107532 - * call.cc (reference_like_class_p): Check for std::span. - -2023-03-10 Jakub Jelinek - - PR c++/107558 - * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on - automatic non-aggregate variables just because of - -fmerge-all-constants. - -2023-03-10 Jakub Jelinek - - PR c++/109039 - * class.cc (end_of_class): For bit-fields, instead of computing - offset as sum of byte_position (field) and DECL_SIZE_UNIT (field), - compute it as sum of bit_position (field) and DECL_SIZE (field) - divided by BITS_PER_UNIT rounded up. - -2023-03-10 Jason Merrill - - PR c++/108972 - * lambda.cc (compare_lambda_template_head): Check more - for error_mark_node. - -2023-03-10 Jason Merrill - - PR c++/108566 - * mangle.cc (anon_aggr_naming_decl): New. - (write_unqualified_name): Use it. - -2023-03-10 Jakub Jelinek - - PR c/108079 - * decl.cc (poplevel): Suppress OPT_Wunused_variable warning - after diagnosing it. - -2023-03-10 Jason Merrill - - PR c++/108099 - * decl.cc (grokdeclarator): Handle non-typedef typedef_decl. - -2023-03-10 Jason Merrill - - PR c++/108542 - * class.cc (instantiate_type): Strip location wrapper. - -2023-03-09 Jason Merrill - - PR c++/108773 - * init.cc (find_allocator_temps_r): New. - (combine_allocator_temps): Replace find_allocator_temp. - (build_vec_init): Adjust. - -2023-03-09 Jason Merrill - - DR 2664 - PR c++/102529 - * pt.cc (alias_ctad_tweaks): Continue after deduction failure. - -2023-03-09 Jason Merrill - Michael Spertus - - PR c++/105841 - * pt.cc (corresponding_template_parameter_list): Split out... - (corresponding_template_parameter): ...from here. - (find_template_parameters): Factor out... - (find_template_parameter_info::find_in): ...this function. - (find_template_parameter_info::find_in_recursive): New. - (find_template_parameter_info::found): New. - (alias_ctad_tweaks): Only add parms used in the deduced args. - -2023-03-09 Jason Merrill - - * cp-trait.def (IS_DEDUCIBLE): Add space to name. - -2023-03-09 Jason Merrill - - PR c++/105841 - * cp-trait.def (IS_DEDUCIBLE): New. - * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type. - * parser.cc (cp_parser_trait): Likewise. - * tree.cc (cp_tree_equal): Likewise. - * pt.cc (tsubst_copy_and_build): Likewise. - (type_targs_deducible_from): New. - (alias_ctad_tweaks): Use it. - * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE. - (finish_trait_expr): Likewise. - * constraint.cc (diagnose_trait_expr): Likewise. - * cp-tree.h (type_targs_deducible_from): Declare. - -2023-03-07 Jason Merrill - - PR c++/108526 - PR c++/106651 - * pt.cc (tsubst_function_decl): Don't replace the closure - parameter if DECL_STATIC_FUNCTION_P. - -2023-03-07 Marek Polacek - - PR c++/107532 - * call.cc (reference_like_class_p): New. - (do_warn_dangling_reference): Add new bool parameter. See through - reference_like_class_p. - -2023-03-07 Jakub Jelinek - - PR c++/109042 - * rtti.cc (emit_support_tinfo_1): Don't assert that last - unemitted_tinfo_decls element is tinfo, instead pop from it only in - that case. - * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl - for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL. - -2023-03-07 Marek Polacek - - PR c++/109030 - * constexpr.cc (cxx_eval_call_expression): Relax assert. - -2023-03-07 Marek Polacek - - PR c++/107939 - * constexpr.cc (potential_constant_expression_1) : Pass - 'any' when recursing on a VAR_DECL and not a pointer to function. - -2023-03-04 Jakub Jelinek - - PR c++/108702 - * constexpr.cc: Include toplev.h. - (cxx_eval_constant_expression) : When seeing a local - static initialized by constant expression outside of a constexpr - function which has been deferred by make_rtl_for_nonlocal_decl, - call rest_of_decl_compilation on it. - -2023-03-03 Patrick Palka - - PR c++/108998 - * pt.cc (el_data::skipped_trees): New data member. - (extract_locals_r): Push to skipped_trees any unevaluated - contexts that we skipped over. - (extract_local_specs): For the second walk, start from each - tree in skipped_trees. - -2023-03-03 Alexandre Oliva - - * typeck.cc (cp_build_binary_op): Suppress redundant warning - for pfn null test in pmfn test with vbit-in-delta. - -2023-03-02 Jakub Jelinek - - PR target/108883 - * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE - enumerators. - (fallback_dfloat32_type, fallback_dfloat64_type, - fallback_dfloat128_type): Remove. - * rtti.cc (emit_support_tinfo_1): If not emitted already, call - emit_tinfo_decl and remove from unemitted_tinfo_decls right away. - (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array - into new fundamentals_with_fallback array. Call emit_support_tinfo_1 - on elements of that array too, with the difference that if - the type is NULL, use a fallback REAL_TYPE for it temporarily. - Drop the !targetm.decimal_float_supported_p () handling. Call - targetm.emit_support_tinfos at the end. - * mangle.cc (write_builtin_type): Remove references to - fallback_dfloat*_type. Handle bfloat16_type_node mangling. - -2023-03-02 Patrick Palka - - PR c++/108243 - PR c++/97553 - * cp-gimplify.cc (cp_fully_fold): Add an internal overload that - additionally takes and propagate an mce_value parameter, and - define the existing public overload in terms of it. - (cp_fully_fold_init): Pass mce_false to cp_fully_fold. - -2023-03-02 Patrick Palka - - PR c++/108243 - * constexpr.cc (maybe_constant_init_1): Override - manifestly_const_eval to true if is_static. - -2023-03-02 Jakub Jelinek - - PR debug/108716 - * cp-gimplify.cc (cp_genericize_r) : Set - DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location - of USING_STMT or input_location. - -2023-03-02 Marek Polacek - - PR c++/106259 - * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first - lookup of SPEC didn't find anything, try to look for - most_general_template. - -2023-03-02 Jakub Jelinek - - PR c++/105839 - * parser.cc (cp_convert_omp_range_for): Allow in assert - decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has - error_mark_node type. - (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back - on decls which have error_mark_node type. - -2023-03-01 Marek Polacek - - PR c++/107574 - * constexpr.cc (cxx_eval_constant_expression): Emit an error when - a PTRMEM_CST cannot be evaluated. - -2023-03-01 Patrick Palka - - * pt.cc (tsubst_scope): Define. - (tsubst_decl) : Call tsubst_scope instead of - calling tsubst_scope with tf_qualifying_scope set. - (tsubst_qualified_id): Call tsubst_scope instead of - calling tsubst with tf_qualifying_scope set. - (tsubst_copy): Immediately delegate to tsubst for all TYPE_P - trees. Remove tf_qualifying_scope manipulation. - : Call tsubst_scope instead of calling - tsubst with tf_qualifying_scope set. - -2023-03-01 Patrick Palka - Jason Merrill - - PR c++/108219 - PR c++/108218 - * constexpr.cc (fold_to_constant): Define. - (maybe_constant_value): Move up early exit test for unevaluated - operands. Try reducing an unevaluated operand to a constant via - fold_to_constant. - (fold_non_dependent_expr_template): Add early exit test for - CONSTANT_CLASS_P nodes. Try reducing an unevaluated operand - to a constant via fold_to_constant. - * cp-tree.h (fold_to_constant): Declare. - -2023-03-01 Jakub Jelinek - - PR c++/108606 - * constexpr.cc (potential_constant_expression_1) : - Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise - just return true. - -2023-02-28 Patrick Palka - - PR c++/108848 - * pt.cc (finish_template_variable): Move dependence check - to here from ... - (lookup_and_finish_template_variable): ... here. - * semantics.cc (finish_id_expression_1): Call - finish_template_variable sooner, before (and regardless of) the - type_dependent_expression_p test. - -2023-02-28 Marek Polacek - - PR c++/108550 - * pt.cc (lookup_and_finish_template_variable): Clear tf_partial. - -2023-02-20 Marek Polacek - - PR c++/101073 - * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial - constructor/op= with a checking assert. - -2023-02-20 Marek Polacek - - PR c++/108829 - * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P. - (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to - prepend_one_capture. - -2023-02-18 Jason Merrill - - DR 2518 - PR c++/52809 - PR c++/53638 - PR c++/87389 - PR c++/89741 - PR c++/92099 - PR c++/104041 - PR c++/104691 - * semantics.cc (finish_static_assert): Don't diagnose in - template context. - -2023-02-17 Patrick Palka - - PR c++/108243 - PR c++/97553 - * cp-gimplify.cc (enum fold_flags): Define. - (fold_flags_t): Declare. - (cp_fold_data::genericize): Replace this data member with ... - (cp_fold_data::fold_flags): ... this. - (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold. - (cp_fold_function): Likewise. - (cp_fold_maybe_rvalue): Add an internal overload that - additionally takes and propagates a fold_flags_t parameter, and - define the existing public overload in terms of it. - (cp_fold_rvalue): Likewise. - (cp_fully_fold_init): Adjust use of cp_fold_data. - (fold_cache): Replace with ... - (fold_caches): ... this 2-element array of caches. - (get_fold_cache): Define. - (clear_fold_cache): Adjust. - (cp_fold): Add fold_flags_t parameter. Use get_fold_cache. - Pass flags to calls to cp_fold, cp_fold_rvalue and - cp_fold_maybe_rvalue. - : If ff_mce_false is set, fold - __builtin_is_constant_evaluated to false and pass mce_false to - maybe_constant_value. - -2023-02-17 Patrick Palka - - * constexpr.cc (constexpr_call::manifestly_const_eval): Give - it type int instead of bool. - (constexpr_ctx::manifestly_const_eval): Give it type mce_value - instead of bool. - (cxx_eval_builtin_function_call): Adjust after making - manifestly_const_eval tri-state. - (cxx_eval_call_expression): Likewise. - (cxx_eval_binary_expression): Likewise. - (cxx_eval_conditional_expression): Likewise. - (cxx_eval_constant_expression): Likewise. - (cxx_eval_outermost_constant_expr): Likewise. - (cxx_constant_value): Likewise. - (cxx_constant_dtor): Likewise. - (maybe_constant_value): Give manifestly_const_eval parameter - type mce_value instead of bool and adjust accordingly. - (fold_non_dependent_expr_template): Adjust call - to cxx_eval_outermost_constant_expr. - (fold_non_dependent_expr): Likewise. - (maybe_constant_init_1): Likewise. - * constraint.cc (satisfy_atom): Adjust call to - maybe_constant_value. - * cp-tree.h (enum class mce_value): Define. - (maybe_constant_value): Adjust manifestly_const_eval parameter - type and default argument. - * decl.cc (compute_array_index_type_loc): Adjust call to - maybe_constant_value. - * pt.cc (convert_nontype_argument): Likewise. - -2023-02-16 Patrick Palka - - PR c++/107773 - * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope. - * decl.cc (make_typename_type): Use lookup_member instead of - lookup_field. If tf_qualifying_scope is set, pass want_type=true - instead of =false to lookup_member. Generalize format specifier - in diagnostic to handle both type and non-type bindings. - * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope. Tidy - the function. - (tsubst_decl) : Set tf_qualifying_scope when - substituting USING_DECL_SCOPE. - (tsubst): Clear tf_qualifying_scope right away and remember if - it was set. Do the same for tf_tst_ok sooner. - : Set tf_qualifying_scope when substituting - TYPE_CONTEXT. Pass tf_qualifying_scope to make_typename_type - if it was set. - (tsubst_qualified_id): Set tf_qualifying_scope when substituting - the scope. - (tsubst_copy): Clear tf_qualifying_scope and remember if it was - set. - : Set tf_qualifying_scope when substituting the - scope. - : Pass tf_qualifying_scope to tsubst if it was set. - * search.cc (lookup_member): Document default argument. - -2023-02-16 Patrick Palka - - * cp-tree.h: Mechanically drop static from static inline - functions via s/^static inline/inline/g. - -2023-02-15 Marek Polacek - - PR c++/106675 - * call.cc (joust_maybe_elide_copy): Return false for ck_ambig. - -2023-02-10 Marek Polacek - - PR c++/107079 - * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init. - -2023-02-09 Tobias Burnus - - * parser.cc (cp_parser_omp_allocate): Parse align - clause and check for restrictions. - -2023-02-09 Jakub Jelinek - - PR c++/108698 - * mangle.cc (write_expression, write_template_arg): Handle - EXCESS_PRECISION_EXPR with REAL_CST operand as - write_template_arg_literal on fold_convert of the REAL_CST - to EXCESS_PRECISION_EXPR type. - -2023-02-06 Patrick Palka - - PR c++/107461 - * cp-tree.h (call_expr_dependent_name): Declare. - * pt.cc (iterative_hash_template_arg) : Use - call_expr_dependent_name instead of dependent_name. - * tree.cc (call_expr_dependent_name): Define. - (called_fns_equal): Adjust to take two CALL_EXPRs instead of - CALL_EXPR_FNs thereof. Use call_expr_dependent_name instead - of dependent_name. - (cp_tree_equal) : Adjust call to called_fns_equal. - -2023-02-03 Marek Polacek - - PR c++/108158 - * constexpr.cc (cxx_eval_array_reference): Don't replace - new_ctx.object. - -2023-02-03 Patrick Palka - - PR c++/107461 - * semantics.cc (finish_call_expr): Strip ADDR_EXPR from - the selected callee during overload set pruning. - -2023-02-03 Patrick Palka - - PR c++/96745 - * class.cc (check_methods): Diagnose an unviable OVERLOAD - set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one. - Then prune the OVERLOAD to a single function. - (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being - an OVERLOAD when calling deduce_noexcept_on_destructor. - Document why it has to be called before check_methods. - -2023-02-03 Patrick Palka - - PR c++/108579 - * class.cc (check_methods): Swap order of constraints_satisfied_p - and copy/move_fn_p tests. - -2023-02-01 Marek Polacek - - PR c++/107755 - * call.cc (build_new_op): Don't call warn_logical_operator when - processing a template. - -2023-02-01 Jakub Jelinek - - PR c++/108607 - * constexpr.cc (cxx_eval_constant_expression): Handle OMP_* - and OACC_* constructs as non-constant. - (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE. - -2023-02-01 Jason Merrill - - * class.cc (note_name_declared_in_class): Change from permerror to - -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases. - -2023-01-31 Jason Merrill - - PR c++/108559 - * cp-gimplify.cc (any_non_eliding_target_exprs): New. - (cp_genericize_init): Check it. - -2023-01-31 Marek Polacek - - PR c++/107593 - PR c++/108597 - * cp-tree.h (instantiation_dependent_expression_p): Don't - declare here. - -2023-01-26 Marek Polacek - - PR c++/105300 - * parser.cc: Remove unnecessary forward declarations. - (cp_parser_string_literal): New wrapper. - (cp_parser_string_literal_common): Renamed from - cp_parser_string_literal. Add a bool parameter. Give an error when - UDLs are not permitted. - (cp_parser_userdef_string_literal): New wrapper. - (finish_userdef_string_literal): Renamed from - cp_parser_userdef_string_literal. - (cp_parser_primary_expression): Call cp_parser_userdef_string_literal - instead of cp_parser_string_literal. - (cp_parser_linkage_specification): Move a variable declaration closer - to its first use. - (cp_parser_static_assert): Likewise. - (cp_parser_operator): Call cp_parser_userdef_string_literal instead of - cp_parser_string_literal. - (cp_parser_asm_definition): Move a variable declaration closer to its - first use. - (cp_parser_asm_specification_opt): Move variable declarations closer to - their first use. - (cp_parser_asm_operand_list): Likewise. - (cp_parser_asm_clobber_list): Likewise. - -2023-01-26 Jakub Jelinek - - PR c++/108503 - * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been - called in !processing_template_decl with processing_template_decl - temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily. - (cp_finish_omp_range_for): And set it back again here. - -2023-01-25 Jakub Jelinek - - PR c++/108525 - * mangle.cc (write_closure_type_name): Don't assume all - lambda operator() fns are methods. - -2023-01-24 Jason Merrill - - PR c++/108504 - * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first - token, too. - -2023-01-24 Jason Merrill - - PR c++/108526 - * pt.cc (tsubst_function_decl): Handle static lambda. - -2023-01-24 Jakub Jelinek - - PR c++/108474 - * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes. - -2023-01-24 Jason Merrill - - PR c++/107303 - PR c++/107329 - * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double - TARGET_EXPR, keep the outer one instead of the inner one. - (maybe_replace_decl): New. - -2023-01-23 Jason Merrill - - PR c++/107267 - * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision - of trivial types. - -2023-01-23 Marek Polacek - - PR c++/107797 - * cvt.cc (ocp_convert): copy_warning when creating a new - COMPOUND_EXPR. - * init.cc (build_new_1): Suppress -Wunused-value on - compiler-generated COMPOUND_EXPRs. - -2023-01-23 Jason Merrill - - PR c++/108195 - * call.cc (build_user_type_conversion_1): Check whether the - iterators also find a list ctor. - -2023-01-23 Jason Merrill - - PR c++/108496 - * decl.cc (grokdeclarator): Check whether DECL_RESULT is already - set. - -2023-01-23 Jason Merrill - - PR c++/53288 - DR 1299 - * call.cc (extend_ref_init_temps_1): Handle ptrmem expression. - -2023-01-19 Jakub Jelinek - - PR c++/108437 - * cp-tree.h (keep_unused_object_arg): Declare. - * call.cc (keep_unused_object_arg): No longer static. - * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF - with overload being static member function. - -2023-01-19 Jakub Jelinek - - PR c++/53932 - * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace - DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding - DECL_VALUE_EXPR. - -2023-01-16 Jakub Jelinek - - PR c++/105593 - * decl.cc (cp_finish_decl): Check warning_enabled_at - at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead - of warn_init_self. - -2023-01-14 Jakub Jelinek - - PR c++/108365 - * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral - division or modulo. - -2023-01-13 Jakub Jelinek - - PR c++/108285 - * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR - use its operand except that for warning purposes use the original - EXCESS_PRECISION_EXPR. - * call.cc (convert_like_internal): Only look through - EXCESS_PRECISION_EXPR when calling cp_convert, not when calling - cp_convert_and_check. - -2023-01-09 Jakub Jelinek - - PR c++/105838 - PR c++/108047 - PR c++/108266 - * call.cc (maybe_init_list_as_range): Always return NULL_TREE if - processing_template_decl. - -2023-01-05 Patrick Palka - - PR c++/108275 - * parser.cc (cp_parser_class_head): Use dk_deferred instead of - dk_no_check when parsing the class name. - -2023-01-05 Jakub Jelinek - - PR c++/108286 - * semantics.cc (finish_omp_target_clauses): Ignore clauses other than - OMP_CLAUSE_MAP. - -2023-01-04 Patrick Palka - - PR c++/108282 - * decl2.cc (mark_single_function): Ignore mark_used failure - only in a non-SFINAE context rather than in a SFINAE one. - -2023-01-04 Jakub Jelinek - - PR c++/108206 - * decl.cc (merge_default_template_args): Return false if either - new_parm or old_parm are erroneous. - -Copyright (C) 2023 Free Software Foundation, Inc. +Copyright (C) 2024 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/cp/ChangeLog-2023 b/gcc/cp/ChangeLog-2023 new file mode 100644 index 0000000..8575676 --- /dev/null +++ b/gcc/cp/ChangeLog-2023 @@ -0,0 +1,4097 @@ +2023-12-22 Jason Merrill + + PR c++/81438 + * decl.cc (poplevel_named_label_1): Handle leaving catch. + (check_previous_goto_1): Likewise. + (check_goto_1): Likewise. + +2023-12-22 Jason Merrill + + PR c++/95298 + * mangle.cc (write_expression): Handle v18 sizeof... bug. + * pt.cc (tsubst_pack_expansion): Keep TREE_VEC for sizeof... + (tsubst_expr): Don't strip TREE_VEC here. + +2023-12-21 Patrick Palka + + * cp-tree.h (maybe_warn_unparenthesized_assignment): Add + 'nested_p' bool parameter. + * semantics.cc (boolish_class_type_p_cache): Define. + (boolish_class_type_p): Define. + (maybe_warn_unparenthesized_assignment): Add 'nested_p' + bool parameter. Suppress the warning for nested assignments + to bool and bool-like class types. + (maybe_convert_cond): Pass nested_p=false to + maybe_warn_unparenthesized_assignment. + * typeck.cc (convert_for_assignment): Pass nested_p=true to + maybe_warn_unparenthesized_assignment. Remove now redundant + check for 'rhs' having bool type. + +2023-12-21 Patrick Palka + + PR c++/84542 + * decl.cc (merge_attribute_bits): Merge TREE_DEPRECATED + and TREE_UNAVAILABLE. + +2023-12-21 Patrick Palka + + PR c++/70413 + PR c++/107906 + * decl2.cc (min_vis_expr_r): Handle PTRMEM_CST and TEMPLATE_DECL + other than those for alias templates. + +2023-12-21 Jakub Jelinek + + * cp-gimplify.cc (cp_genericize_r): If warn_alloc_size, call + warn_for_alloc_size for -Walloc-size diagnostics. + * semantics.cc (finish_call_expr): If warn_calloc_transposed_args, + call warn_for_calloc for -Wcalloc-transposed-args diagnostics. + +2023-12-21 Jason Merrill + + PR c++/37722 + * decl.cc (identify_goto): Adjust for computed goto. + (struct named_label_use_entry): Add computed_goto field. + (poplevel_named_label_1): Add to computed_goto vec. + (check_previous_goto_1): Dump computed_goto vec. + (check_goto_1): Split out from check_goto. + (check_goto): Check all addressable labels for computed goto. + (struct named_label_entry): Add addressed field. + (mark_label_addressed): New. + * parser.cc (cp_parser_unary_expression): Call it. + * cp-tree.h (mark_label_addressed): Declare it. + +2023-12-20 Jason Merrill + + PR c++/113088 + PR c++/33799 + * except.cc (maybe_splice_retval_cleanup): Handle an empty block. + +2023-12-20 Jason Merrill + + PR c++/103185 + * typeck.cc (cp_build_array_ref): Handle swapped operands. + +2023-12-19 Patrick Palka + + PR c++/113063 + * method.cc (synthesize_method): Use maybe_push_to_top_level + and maybe_pop_from_top_level. + +2023-12-19 Patrick Palka + + * name-lookup.cc (struct local_state_t): Define. + (local_state_stack): Define. + (maybe_push_to_top_level): Use them. + (maybe_pop_from_top_level): Likewise. + * pt.cc (instantiate_decl): Remove dead code for saving/restoring + cp_unevaluated_operand and c_inhibit_evaluation_warnings. + +2023-12-19 Nathaniel Shead + + PR c++/102420 + * constexpr.cc (cxx_bind_parameters_in_call): Check for calling + non-static member functions with a null pointer. + +2023-12-19 Sandra Loosemore + + * decl.cc (omp_declare_variant_finalize_one): Adjust for new + representations. + * parser.cc (omp_construct_selectors): Delete. + (omp_device_selectors): Delete. + (omp_implementation_selectors): Delete. + (omp_user_selectors): Delete. + (cp_parser_omp_context_selector): Adjust for new representations + and simplify dispatch logic. Uniformly warn instead of sometimes + error when an unknown selector is found. Adjust error messages + for extraneous/incorrect score. + (cp_parser_omp_context_selector_specification): Likewise. + * pt.cc (tsubst_attribute): Adjust for new representations. + +2023-12-19 Sandra Loosemore + + * parser.cc (cp_parser_omp_context_selector): Adjust for new + namelist property representation. + * pt.cc (tsubst_attribute): Likewise. + +2023-12-19 Sandra Loosemore + + * parser.cc (cp_parser_omp_context_selector): Use new constructors. + * pt.cc: Include omp-general.h. + (tsubst_attribute): Use new context selector accessors and + constructors. + +2023-12-19 Patrick Palka + + PR c++/90679 + * cp-tree.h (comp_template_args): Remove partial_order parameter. + (template_args_equal): Likewise. + * pt.cc (comparing_for_partial_ordering): New global flag. + (iterative_hash_template_arg) : Hash the template + and arguments for specializations that use structural equality. + (template_args_equal): Remove partial order parameter and + use comparing_for_partial_ordering instead. + (comp_template_args): Likewise. + (comp_template_args_porder): Set comparing_for_partial_ordering + instead. Make static. + (any_template_arguments_need_structural_equality_p): Return true + for an argument that's a dependent alias template specialization + or a class template specialization that itself needs structural + equality. + * tree.cc (cp_tree_equal) : Adjust call to + comp_template_args. + +2023-12-19 Patrick Palka + + PR c++/90679 + * cp-tree.h (TEMPLATE_DECL_COMPLEX_ALIAS_P): Remove. + (most_general_template): Constify parameter. + * pt.cc (push_template_decl): Adjust after removing + TEMPLATE_DECL_COMPLEX_ALIAS_P. + (complex_alias_tmpl_info): New hash_map. + (uses_all_template_parms_data::seen): Change type to + tree* from bool*. + (complex_alias_template_r): Adjust accordingly. + (complex_alias_template_p): Add 'seen_out' out parameter. + Call most_general_template and check PRIMARY_TEMPLATE_P. + Use complex_alias_tmpl_info to cache the result and set + '*seen_out' accordigly. + (dependent_alias_template_spec_p): Add !processing_template_decl + early exit test. Consider dependence of only template arguments + corresponding to seen template parameters as per + +2023-12-19 Thomas Schwinge + + PR c++/90868 + * parser.cc (cp_parser_oacc_declare): For "more than once", check + the DECL that we're actually setting the attribute on. + +2023-12-16 Nathaniel Shead + + PR c++/106363 + * module.cc (module_state::write_cluster): Don't skip first + depset for bindings. + +2023-12-16 Nathaniel Shead + + PR c++/113031 + * constexpr.cc (cxx_fold_indirect_ref_1): Check for CLASS_TYPE + before using CLASSTYPE_AS_BASE. + +2023-12-16 Andrew Carlotti + + * decl2.cc (check_classfn): Update comment to include + target_version attributes. + +2023-12-15 Patrick Palka + + PR c++/70435 + PR c++/88061 + * pt.cc (tsubst_function_decl): Propagate DECL_SECTION_NAME + via set_decl_section_name. + (tsubst_decl) : Likewise. + +2023-12-15 Patrick Palka + + PR c++/109715 + * mangle.cc (get_abi_tags): Strip TEMPLATE_DECL before looking + up the abi_tag attribute. + +2023-12-14 Marek Polacek + + PR c++/112482 + * decl.cc (grokdeclarator): Do not issue the auto parameter error while + tentatively parsing a function parameter. + * parser.cc (cp_parser_parameter_declaration_clause): Check it here. + +2023-12-14 Marek Polacek + + PR c++/112869 + * cp-gimplify.cc (cp_fold_immediate_r): Check cp_unevaluated_operand + and DECL_IMMEDIATE_FUNCTION_P rather than in_immediate_context. + +2023-12-14 Patrick Palka + + * cp-tree.h (type_targs_deducible_from): Adjust return type. + * pt.cc (alias_ctad_tweaks): Also handle C++23 inherited CTAD. + (inherited_ctad_tweaks): Define. + (type_targs_deducible_from): Return the deduced arguments or + NULL_TREE instead of a bool. Handle 'tmpl' being a TREE_LIST + representing a synthetic alias template. + (ctor_deduction_guides_for): Do inherited_ctad_tweaks for each + USING_DECL in C++23 mode. + (deduction_guides_for): Add FIXME for stale cache entries in + light of inherited CTAD. + +2023-12-14 Jakub Jelinek + + PR c++/112968 + * pt.cc (freelist::reinit): Make whole obj->common + defined for valgrind annotations rather than just obj->base, + and do it even for ENABLE_GC_CHECKING. If not ENABLE_GC_CHECKING, + clear TREE_CHAIN (obj) and TREE_TYPE (obj). + +2023-12-13 Patrick Palka + + * call.cc (print_z_candidates): Only print ignored candidates + when -fdiagnostics-all-candidates is set, otherwise suggest + the flag. + (build_over_call): When diagnosing deletedness, note + other candidates only if -fdiagnostics-all-candidates is + set, otherwise suggest the flag. + +2023-12-13 Patrick Palka + + * call.cc (enum rejection_reason_code): Add rr_ignored. + (add_ignored_candidate): Define. + (ignored_candidate_p): Define. + (add_template_candidate_real): Do add_ignored_candidate + instead of returning NULL. + (splice_viable): Put ignored (non-viable) candidates last. + (print_z_candidate): Handle ignored candidates. + (build_new_function_call): Refine shortcut that calls + cp_build_function_call_vec now that non-templates can + appear in the candidate list for a template-id call. + (add_candidates): Replace 'bad_fns' overload with 'bad_cands' + candidate list. When not considering a candidate, add it + to the list as an ignored candidate. Add all 'bad_cands' + to the overload set as well. + +2023-12-13 Patrick Palka + + * call.cc: Include "tristate.h". + (splice_viable): Sort the candidate list according to viability. + Don't remove non-viable candidates from the list. + (print_z_candidates): Add defaulted only_viable_p parameter. + By default only print non-viable candidates if there is no + viable candidate. + (tourney): Ignore non-viable candidates. Move the true champ to + the front of the candidates list, and update 'candidates' to + point to the front. Rename champ_compared_to_predecessor to + previous_worse_champ. + +2023-12-13 Patrick Palka + + PR c++/99186 + PR c++/104867 + * pt.cc (unify) : Compare types as well. + +2023-12-13 Patrick Palka + + PR c++/93740 + * pt.cc (unify) : Handle it like FIELD_DECL + and TEMPLATE_DECL. + +2023-12-13 Jason Merrill + + * call.cc (convert_for_arg_passing) + * typeck.cc (convert_for_assignment): Adjust call to + warn_for_address_of_packed_member. + +2023-12-13 Julian Brown + + * parser.cc (cp_parser_oacc_all_clauses): Add TARGET_P parameter. Use + to select region type for finish_omp_clauses call. + (cp_parser_omp_target_data, cp_parser_omp_target_enter_data): Support + GOMP_MAP_ATTACH kind. + (cp_parser_omp_target_exit_data): Support GOMP_MAP_DETACH kind. + (cp_parser_oacc_declare): Update call to cp_parser_oacc_all_clauses. + (cp_parser_oacc_loop): Update calls to cp_parser_oacc_all_clauses. + (cp_parser_oacc_compute): Likewise. + * pt.cc (tsubst_expr): Use C_ORT_ACC_TARGET for call to + tsubst_omp_clauses for OpenACC compute regions. + * semantics.cc (cp_omp_address_inspector): New class, derived from + c_omp_address_inspector. + (handle_omp_array_sections_1, handle_omp_array_sections, + finish_omp_clauses): Use cp_omp_address_inspector class and OMP address + tokenizer to analyze and expand OpenMP map clause expressions. Fix + some diagnostics. Support C_ORT_ACC_TARGET. + (finish_omp_target): Handle GOMP_MAP_POINTER. + +2023-12-13 Julian Brown + + * semantics.cc (finish_omp_clause): Add braces and reindent + OMP_CLAUSE_TO/OMP_CLAUSE_FROM/OMP_CLAUSE__CACHE_ stanza. + +2023-12-13 Jason Merrill + + PR c++/96997 + * tree.cc (bot_manip): Check data.clear_location for TARGET_EXPR. + +2023-12-13 Nathaniel Shead + + PR c++/71093 + * constexpr.cc (constexpr_global_ctx::get_value_ptr): Don't + return NULL_TREE for objects we're initializing. + (constexpr_global_ctx::destroy_value): Rename from remove_value. + Only mark real variables as outside lifetime. + (constexpr_global_ctx::clear_value): New function. + (destroy_value_checked): New function. + (cxx_eval_call_expression): Defer complaining about non-constant + arg0 for operator delete. Use remove_value_safe. + (cxx_fold_indirect_ref_1): Handle conversion to 'as base' type. + (outside_lifetime_error): Include name of object we're + accessing. + (cxx_eval_store_expression): Handle clobbers. Improve error + messages. + (cxx_eval_constant_expression): Use remove_value_safe. Clear + bind variables before entering body. + +2023-12-13 Jason Merrill + + * constexpr.cc (cxx_eval_call_expression): Handle missing in-charge + argument. + +2023-12-13 Jason Merrill + + PR c++/108243 + * constexpr.cc (cxx_eval_outermost_constant_expr): Turn + a constructor CALL_EXPR into a TARGET_EXPR. + +2023-12-13 Jason Merrill + + * tree.cc (build_aggr_init_expr): Copy EXPR_LOCATION. + +2023-12-12 Jason Merrill + Jason Xu + + * class.cc (propagate_class_warmth_attribute): Handle + member templates. + +2023-12-12 Jason Merrill + Nathaniel Shead + + * call.cc (build_trivial_dtor_call): Use CLOBBER_OBJECT_END. + * decl.cc (build_clobber_this): Take clobber_kind argument. + (start_preparsed_function): Pass CLOBBER_OBJECT_BEGIN. + (begin_destructor_body): Pass CLOBBER_OBJECT_END. + +2023-12-11 Patrick Palka + + * pt.cc (alias_ctad_tweaks): Pass use_spec_table=false to + tsubst_decl. + +2023-12-11 Tobias Burnus + + * parser.cc (cp_parser_omp_requires): Handle acquires/release + in atomic_default_mem_order clause. + (cp_parser_omp_atomic): Update. + +2023-12-11 Nathaniel Shead + + PR c++/96090 + PR c++/100470 + * call.cc (build_over_call): Prevent folding of trivial special + members when checking for noexcept. + * method.cc (constructible_expr): Perform value-initialisation + for empty parameter lists. + (is_nothrow_xible): Treat as noexcept operator. + +2023-12-11 Nathaniel Shead + + PR c++/104234 + PR c++/112580 + * pt.cc (tsubst_template_decl): Clear + DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __remove_pointer. + * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_POINTER. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_object. + * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_OBJECT. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_function. + * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_FUNCTION. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_reference. + * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_REFERENCE. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_member_object_pointer. + * constraint.cc (diagnose_trait_expr): Handle + CPTK_IS_MEMBER_OBJECT_POINTER. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_member_function_pointer. + * constraint.cc (diagnose_trait_expr): Handle + CPTK_IS_MEMBER_FUNCTION_POINTER. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_member_pointer. + * constraint.cc (diagnose_trait_expr): Handle + CPTK_IS_MEMBER_POINTER. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_scoped_enum. + * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_SCOPED_ENUM. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_bounded_array. + * constraint.cc (diagnose_trait_expr): Handle + CPTK_IS_BOUNDED_ARRAY. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Ken Matsui + + * cp-trait.def: Define __is_array. + * constraint.cc (diagnose_trait_expr): Handle CPTK_IS_ARRAY. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + +2023-12-10 Jason Merrill + + * parser.cc (cp_parser_simple_type_specifier): Move trait + handling to default label. + +2023-12-10 Ken Matsui + + * parser.cc (cp_lexer_lookup_trait): Rename to ... + (cp_lexer_peek_trait): ... this. Handle a subsequent token for + the corresponding built-in trait. + (cp_lexer_lookup_trait_expr): Rename to ... + (cp_lexer_peek_trait_expr): ... this. + (cp_lexer_lookup_trait_type): Rename to ... + (cp_lexer_peek_trait_type): ... this. + (cp_lexer_next_token_is_decl_specifier_keyword): Call + cp_lexer_peek_trait_type. + (cp_parser_simple_type_specifier): Likewise. + (cp_parser_primary_expression): Call cp_lexer_peek_trait_expr. + +2023-12-10 Ken Matsui + Patrick Palka + + * cp-objcp-common.cc (names_builtin_p): Remove all RID value + cases for built-in traits. Check for built-in traits via + the new cik_trait kind. + * cp-tree.h (enum cp_trait_kind): Set its underlying type to + addr_space_t. + (struct cp_trait): New struct to hold trait information. + (cp_traits): New array to hold a mapping to all traits. + (cik_reserved_for_udlit): Rename to ... + (cik_trait): ... this. + (IDENTIFIER_ANY_OP_P): Exclude cik_trait. + (IDENTIFIER_TRAIT_P): New macro to detect cik_trait. + * lex.cc (cp_traits): Define its values, declared in cp-tree.h. + (init_cp_traits): New function to set cik_trait and + IDENTIFIER_CP_INDEX for all built-in trait identifiers. + (cxx_init): Call init_cp_traits function. + * parser.cc (cp_lexer_lookup_trait): New function to look up a + built-in trait by IDENTIFIER_CP_INDEX. + (cp_lexer_lookup_trait_expr): Likewise, look up an + expression-yielding built-in trait. + (cp_lexer_lookup_trait_type): Likewise, look up a type-yielding + built-in trait. + (cp_keyword_starts_decl_specifier_p): Remove all RID value cases + for built-in traits. + (cp_lexer_next_token_is_decl_specifier_keyword): Handle + type-yielding built-in traits. + (cp_parser_primary_expression): Remove all RID value cases for + built-in traits. Handle expression-yielding built-in traits. + (cp_parser_trait): Handle cp_trait instead of enum rid. + (cp_parser_simple_type_specifier): Remove all RID value cases + for built-in traits. Handle type-yielding built-in traits. + +2023-12-10 Ken Matsui + + * constraint.cc (diagnose_trait_expr): Sort built-in traits + alphabetically. + * cp-trait.def: Likewise. + * semantics.cc (trait_expr_value): Likewise. + (finish_trait_expr): Likewise. + (finish_trait_type): Likewise. + +2023-12-09 Jakub Jelinek + + * parser.cc (cp_parser_statement, cp_parser_expression_statement, + cp_parser_declaration, cp_parser_asm_definition): Don't diagnose + ignored attributes if !any_nonignored_attribute_p. + * decl.cc (grokdeclarator): Likewise. + * name-lookup.cc (handle_namespace_attrs, finish_using_directive): + Don't diagnose ignoring of attr_ignored_p attributes. + +2023-12-08 Patrick Palka + + PR c++/83167 + * semantics.cc (capture_decltype): Inline into its only caller ... + (finish_decltype_type): ... here. Update nearby comment to refer + to recent standard. Add FIXME. Restrict uncaptured variable type + transformation to happen only for lambdas with a by-copy + capture-default. + +2023-12-08 Jakub Jelinek + + * parser.cc (cp_parser_std_attribute_spec): Return void_list_node + rather than NULL_TREE if token is neither CPP_OPEN_SQUARE nor + RID_ALIGNAS CPP_KEYWORD. + (cp_parser_std_attribute_spec_seq): For attr_spec == void_list_node + break, for attr_spec == NULL_TREE continue. + +2023-12-08 Jakub Jelinek + + PR sanitizer/112727 + * cp-gimplify.cc (cp_fold): If SAVE_EXPR has been previously + folded, unshare_expr what is returned. + +2023-12-08 Patrick Palka + + PR c++/112658 + * parser.cc (cp_parser_expression_statement): If the statement + is error_mark_node, make sure we've seen_error(). + +2023-12-08 Patrick Palka + + PR c++/112658 + PR c++/94264 + * typeck.cc (cp_build_c_cast): If we're committed to a const_cast + and the result is erroneous, call build_const_cast_1 a second + time to issue errors. Use complain=tf_none instead of =false. + +2023-12-06 David Malcolm + + * cp-tree.h (cxx_print_error_function): Make diagnostic_info param + const. + * error.cc (cxx_print_error_function): Likewise. + (cp_diagnostic_starter): Likewise. + (cp_print_error_function): Likewise. + +2023-12-06 Jason Merrill + + DR 532 + PR c++/53499 + * pt.cc (more_specialized_fn): Fix object parameter handling. + +2023-12-05 Jakub Jelinek + + PR c++/112795 + * cp-tree.h (cp_check_pragma_unroll): Declare. + * semantics.cc (cp_check_pragma_unroll): New function. + * parser.cc (cp_parser_pragma_unroll): Use cp_check_pragma_unroll. + * pt.cc (tsubst_expr) : Likewise. + (tsubst_stmt) : Likwsie. + +2023-12-05 Richard Sandiford + + * tree.cc (cxx_gnu_attribute_table): Add extra braces to work + around PR 16333 in older compilers. + +2023-12-05 Jakub Jelinek + + PR c++/110734 + * parser.cc (cp_parser_block_declaration): Implement C++ DR 2262 + - Attributes for asm-definition. Call cp_parser_asm_definition + even if RID_ASM token is only seen after sequence of standard + attributes. + (cp_parser_asm_definition): Parse standard attributes before + RID_ASM token and warn for them with -Wattributes. + +2023-12-05 Marek Polacek + + PR c++/107687 + PR c++/110997 + * call.cc (in_immediate_context): No longer static. + * constexpr.cc (cxx_eval_call_expression): Adjust assert. + * cp-gimplify.cc (deferred_escalating_exprs): New vec. + (remember_escalating_expr): New. + (enum fold_flags): Remove ff_fold_immediate. + (immediate_escalating_function_p): New. + (unchecked_immediate_escalating_function_p): New. + (promote_function_to_consteval): New. + (cp_fold_immediate): Move above. Return non-null if any errors were + emitted. + (maybe_explain_promoted_consteval): New. + (cp_gimplify_expr) : Assert we've handled all + immediate invocations. + (taking_address_of_imm_fn_error): New. + (cp_fold_immediate_r): Merge ADDR_EXPR and PTRMEM_CST cases. Implement + P2564 - promoting functions to consteval. + : Implement P2564 - promoting functions to consteval. + (cp_fold_r): If an expression turns into a CALL_EXPR after cp_fold, + call cp_fold_immediate_r on the CALL_EXPR. + (cp_fold_function): Set DECL_ESCALATION_CHECKED_P if + deferred_escalating_exprs does not contain current_function_decl. + (process_and_check_pending_immediate_escalating_fns): New. + * cp-tree.h (struct lang_decl_fn): Add escalated_p bit-field. + (DECL_ESCALATION_CHECKED_P): New. + (immediate_invocation_p): Declare. + (process_pending_immediate_escalating_fns): Likewise. + * decl2.cc (c_parse_final_cleanups): Set at_eof to 2 after all + templates have been instantiated; and to 3 at the end of the function. + Call process_pending_immediate_escalating_fns. + * error.cc (dump_template_bindings): Check at_eof against an updated + value. + * module.cc (trees_out::lang_decl_bools): Stream escalated_p. + (trees_in::lang_decl_bools): Likewise. + * pt.cc (push_tinst_level_loc): Set at_eof to 3, not 2. + * typeck.cc (cp_build_addr_expr_1): Don't check + DECL_IMMEDIATE_FUNCTION_P. + +2023-12-04 Jason Merrill + + * constexpr.cc (potential_constant_expression_1): Fix + check for loading volatile lvalue. + +2023-12-04 Jakub Jelinek + + PR c++/112795 + * cp-tree.h (cp_convert_range_for): Change UNROLL type from + unsigned short to tree. + (finish_while_stmt_cond, finish_do_stmt, finish_for_cond): Likewise. + * parser.cc (cp_parser_statement): Pass NULL_TREE rather than 0 to + cp_parser_iteration_statement UNROLL argument. + (cp_parser_for, cp_parser_c_for): Change UNROLL type from + unsigned short to tree. + (cp_parser_range_for): Likewise. Set RANGE_FOR_UNROLL to just UNROLL + rather than build_int_cst from it. + (cp_convert_range_for, cp_parser_iteration_statement): Change UNROLL + type from unsigned short to tree. + (cp_parser_omp_loop_nest): Pass NULL_TREE rather than 0 to + cp_parser_range_for UNROLL argument. + (cp_parser_pragma_unroll): Return tree rather than unsigned short. + If parsed expression is type dependent, just return it, don't diagnose + issues with value if it is value dependent. + (cp_parser_pragma): Change UNROLL type from unsigned short to tree. + * semantics.cc (finish_while_stmt_cond): Change UNROLL type from + unsigned short to tree. Build ANNOTATE_EXPR with UNROLL as its last + operand rather than build_int_cst from it. + (finish_do_stmt, finish_for_cond): Likewise. + * pt.cc (tsubst_stmt) : Change UNROLL type from + unsigned short to tree and set it to RECUR on RANGE_FOR_UNROLL (t). + (tsubst_expr) : For annot_expr_unroll_kind repeat + checks on UNROLL value from cp_parser_pragma_unroll. + +2023-12-02 Richard Sandiford + + * cp-tree.h (cxx_attribute_table): Delete. + (cxx_gnu_attribute_table, std_attribute_table): Declare. + * cp-objcp-common.h (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Delete. + (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Delete. + (cp_objcp_attribute_table): New table. + (LANG_HOOKS_ATTRIBUTE_TABLE): Redefine. + * tree.cc (cxx_attribute_table): Replace with... + (cxx_gnu_attributes, cxx_gnu_attribute_table): ...these globals. + (std_attribute_table): Change type to scoped_attribute_specs, using... + (std_attributes): ...this as the underlying array. + (init_tree): Remove call to register_scoped_attributes. + +2023-12-01 Jason Merrill + + * mangle.cc (write_type): Mangle placeholder as its template. + +2023-12-01 Jason Merrill + + * cp-tree.h (TEMPLATE_ARGS_TYPE_CONSTRAINT_P): New. + (get_concept_check_template): Declare. + * constraint.cc (combine_constraint_expressions) + (finish_shorthand_constraint): Use UNKNOWN_LOCATION. + * pt.cc (convert_generic_types_to_packs): Likewise. + * mangle.cc (write_constraint_expression) + (write_tparms_constraints, write_type_constraint) + (template_parm_natural_p, write_requirement) + (write_requires_expr): New. + (write_encoding): Mangle trailing requires-clause. + (write_name): Pass parms to write_template_args. + (write_template_param_decl): Factor out from... + (write_closure_template_head): ...here. + (write_template_args): Mangle non-natural parms + and requires-clause. + (write_expression): Handle REQUIRES_EXPR. + +2023-12-01 Jason Merrill + + * semantics.cc (finish_non_static_data_member) + (finish_decltype_type, capture_decltype): + Handle deduced closure parameter. + +2023-11-30 Marek Polacek + + PR c++/112744 + * typeck.cc (finish_class_member_access_expr): When accessing + a static data member, use ba_any for lookup_base. + +2023-11-30 Jakub Jelinek + + PR c++/110349 + * cp-tree.h: Implement C++26 P2169R4 - Placeholder variables with no + name. + (OVL_NAME_INDEPENDENT_DECL_P): Define. + (add_capture): Add unsigned * argument. + (name_independent_decl_p): New inline function. + * name-lookup.cc (class name_lookup): Make ambiguous and + add_value members public. + (name_independent_linear_search): New function. + (get_class_binding_direct): Handle member_vec_binary_search + returning OVL_NAME_INDEPENDENT_DECL_P OVERLOAD. Use + name_independent_linear_search rather than fields_linear_search + for linear lookup of _ name if !want_type. + (member_name_cmp): Sort name-independent declarations first. + (member_vec_dedup): Handle name-independent declarations. + (pop_local_binding): Handle binding->value being a TREE_LIST for + ambiguous name-independent declarations. + (supplement_binding): Handle name-independent declarations. + (update_binding): Likewise. + (check_local_shadow): Return tree rather than void, normally + NULL_TREE but old for name-independent declarations which used + to conflict with outer scope declaration. Don't emit -Wshadow* + warnings for name-independent declarations. + (pushdecl): Handle name-independent declarations. + * search.cc (lookup_field_r): Handle nval being a TREE_LIST. + * lambda.cc (build_capture_proxy): Adjust for ___. + names of members. + (add_capture): Add NAME_INDEPENDENT_CNT argument. Use ___. + name rather than ___ for second and following capture with + _ name. + (add_default_capture): Adjust add_capture caller. + * decl.cc (poplevel): Don't warn about name-independent declarations. + (duplicate_decls): If in C++26 a _ named declaration conflicts with + earlier declarations, emit explaining note why the new declaration + is not name-independent. + (reshape_init_class): If field is a TREE_LIST, emit an ambiguity + error with list of candidates rather than error about non-existing + non-static data member. + * parser.cc (cp_parser_lambda_introducer): Adjust add_capture callers. + Allow name-independent capture redeclarations. + (cp_parser_decomposition_declaration): Set decl_specs.storage_class + to sc_static for static structured bindings. + * pt.cc (tsubst_lambda_expr): Adjust add_capture caller. + +2023-11-30 Alexandre Oliva + + * decl.cc (finish_enum_value_list): Set TYPE_PACKED if + use_short_enum, and propagate it to variants. + +2023-11-30 Jason Merrill + + * cp-tree.h (LAMBDA_EXPR_MUTABLE_P): Remove. + * cp-tree.def: Remove documentation. + * lambda.cc (build_lambda_expr): Remove reference. + * parser.cc (cp_parser_lambda_declarator_opt): Likewise. + * pt.cc (tsubst_lambda_expr): Likewise. + * ptree.cc (cxx_print_lambda_node): Likewise. + * semantics.cc (capture_decltype): Get the object quals + from the object instead. + +2023-11-29 Marek Polacek + + PR c++/106650 + * constexpr.cc (cxx_eval_constant_expression) : Allow + reference to unknown/this as per P2280. + : Allow reference to unknown as per P2280. + +2023-11-29 Patrick Palka + + PR c++/112765 + * pt.cc (tsubst_expr) : Look through implicit + INDIRECT_REF when propagating -Wparentheses warning suppression. + * semantics.cc (maybe_warn_unparenthesized_assignment): Replace + REFERENCE_REF_P handling with STRIP_REFERENCE_REF. + (finish_parenthesized_expr): Likewise. + +2023-11-29 Jakub Jelinek + + * semantics.cc (finish_static_assert): Free buf on error return. + +2023-11-29 Alexandre Oliva + + * decl.cc (maybe_prepare_return_this): Split out of... + (maybe_return_this): ... this. + * cp-tree.h (maybe_prepare_return_this): Declare. + * class.cc (build_clone): Call it. + +2023-11-29 Alexandre Oliva + + * contracts.cc (check_postcondition_result): Cope with + cdtor_return_this. + +2023-11-28 Jason Merrill + + PR c++/94264 + PR c++/53220 + * call.cc (convert_like_internal): Remove obsolete comment. + * typeck.cc (decay_conversion): Allow array prvalue. + (maybe_warn_about_returning_address_of_local): Check + for returning pointer to temporary. + +2023-11-28 Jakub Jelinek + + * cp-objcp-common.cc (cp_feature_table): Evaluate + __has_extension (cxx_init_captures) to 1 even for -std=c++11. + +2023-11-27 Alex Coplan + Iain Sandoe + + PR c++/60512 + * cp-lang.cc (c_family_register_lang_features): New. + * cp-objcp-common.cc (struct cp_feature_selector): New. + (cp_feature_selector::has_feature): New. + (struct cp_feature_info): New. + (cp_register_features): New. + * cp-objcp-common.h (cp_register_features): New. + +2023-11-25 Nathaniel Shead + + * name-lookup.cc (check_can_export_using_decl): New. + (do_nonmember_using_decl): Use above to check if names can be + exported. + +2023-11-25 Nathaniel Shead + + PR c++/102341 + * decl.cc (duplicate_decls): Allow exporting a redeclaration of + a typedef. + +2023-11-24 Tobias Burnus + + * parser.cc (cp_parser_omp_clause_dist_schedule, + cp_parser_omp_scan_loop_body, cp_parser_omp_assumption_clauses, + cp_parser_omp_depobj): Add OPT_Wopenmp to warning_at. + * semantics.cc (finish_omp_clauses): Likewise. + +2023-11-24 Tobias Burnus + + * parser.cc (cp_parser_omp_depobj): Accept optionally an argument + to the destroy clause. + +2023-11-24 Nathaniel Shead + + PR c++/99232 + * decl.cc (grokvardecl): Don't mark variables attached to + modules as internal. + +2023-11-24 Nathaniel Shead + + PR c++/107398 + * module.cc (trees_out::get_merge_kind): Handle lambdas in class + scope. + (maybe_key_decl): Remove assertion and fix whitespace. + +2023-11-24 Nathaniel Shead + + PR c++/98885 + * decl.cc (duplicate_decls): Adjust error message. + (xref_tag): Adjust error message. Check exporting decl that is + already declared as non-exporting. + +2023-11-23 Jakub Jelinek + + PR c++/110348 + * parser.cc: Implement C++26 P2741R3 - user-generated static_assert + messages. + (cp_parser_static_assert): Parse message argument as + conditional-expression if it is not a pure string literal or + several of them concatenated followed by closing paren. + * semantics.cc (finish_static_assert): Handle message which is not + STRING_CST. For condition with bare parameter packs return early. + * pt.cc (tsubst_expr) : Also tsubst_expr + message and make sure that if it wasn't originally STRING_CST, it + isn't after tsubst_expr either. + +2023-11-22 Patrick Palka + + PR c++/112633 + * pt.cc (tsubst_aggr_type): Handle empty TYPE_TEMPLATE_INFO + in the entering_scope adjustment. + +2023-11-22 Jason Merrill + + * decl.cc (start_preparsed_function): Clarify ctype logic. + +2023-11-20 Marc Poulhiès + + * lambda.cc (compare_lambda_sig): Fix typo in variadic. + +2023-11-20 Jason Merrill + + * pt.cc (comp_template_parms): Just one level. + (template_parameter_lists_equivalent_p): Likewise. + +2023-11-20 Jason Merrill + + * cp-tree.h (DECL_TEMPLATE_PARM_CHECK): New. + (DECL_IMPLICIT_TEMPLATE_PARM_P): New. + (decl_template_parm_check): New. + * mangle.cc (write_closure_template_head): Use it. + * parser.cc (synthesize_implicit_template_parm): Likewise. + * pt.cc (template_parameters_equivalent_p): Likewise. + +2023-11-19 Nathaniel Shead + + PR c++/99187 + * cp-tree.h (enum cp_tree_index): Add CPTI_THREAD_ATEXIT. + (thread_atexit_node): New. + * decl.cc (get_thread_atexit_node): Cache in thread_atexit_node. + +2023-11-19 David Malcolm + + * mapper-client.cc: Include "rich-location.h". + +2023-11-16 Jakub Jelinek + + PR c++/112365 + * class.cc (layout_class_type): Don't + SET_DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD on FIELD_DECLs with + error_mark_node type. + +2023-11-16 Patrick Palka + + PR c++/111703 + PR c++/107939 + * constexpr.cc (potential_constant_expression_1) : + Fix FUNCTION_POINTER_TYPE_P test. + +2023-11-16 Marek Polacek + + PR c++/112410 + * parser.cc (cp_parser_direct_declarator): Maybe call + abort_fully_implicit_template if it turned out the parameter list was + ill-formed. + +2023-11-15 Bernhard Reutner-Fischer + + * tree.cc (build_cplus_array_type): Revert using the macro + CAN_HAVE_LOCATION_P. + +2023-11-15 Patrick Palka + + PR c++/112515 + * decl.cc (is_direct_enum_init): Check type-dependence of the + single element. + +2023-11-15 Patrick Palka + + PR c++/101043 + * tree.cc (strip_typedefs_expr) : Handle + non-empty TREE_PURPOSE. + +2023-11-15 Patrick Palka + + PR c++/112427 + * tree.cc (build_min_non_dep): Propagate TREE_SIDE_EFFECTS from + the original arguments. + (build_min_non_dep_call_vec): Likewise. + * typeck2.cc (build_m_component_ref): Use cp_convert, build2 and + cp_fully_fold instead of fold_build_pointer_plus and fold_convert. + Don't build the POINTER_PLUS_EXPR in a template context. + +2023-11-15 Patrick Palka + + PR c++/111703 + PR c++/112269 + * constexpr.cc (potential_constant_expression_1) : + Only consider var_in_maybe_constexpr_fn if 'now' is false. + : Likewise. + +2023-11-15 Jakub Jelinek + + * typeck.cc: Implement C++26 P2864R2 - Remove Deprecated Arithmetic + Conversion on Enumerations From C++26. + (do_warn_enum_conversions): Return bool rather than void, add COMPLAIN + argument. Use pedwarn rather than warning_at for C++26 and remove + " is deprecated" part of the diagnostics in that case. For SFINAE + in C++26 return true on newly erroneous cases. + (cp_build_binary_op): For C++26 call do_warn_enum_conversions + unconditionally, pass complain argument to it and if it returns true, + return error_mark_node. + * call.cc (build_conditional_expr): Use pedwarn rather than warning_at + for C++26 and remove " is deprecated" part of the diagnostics in that + case and check for complain & tf_warning_or_error. Use emit_diagnostic + with cxx_dialect >= cxx26 ? DK_PEDWARN : DK_WARNING. For SFINAE in + C++26 return error_mark_node on newly erroneous cases. + (build_new_op): Use emit_diagnostic with cxx_dialect >= cxx26 + ? DK_PEDWARN : DK_WARNING and complain & tf_warning_or_error check + for C++26. For SFINAE in C++26 return error_mark_node on newly + erroneous cases. + +2023-11-14 Nathaniel Shead + + PR c++/103499 + * module.cc (trees_out::decl_node): Write DECL_VINDEX for + virtual clones. + (trees_in::tree_node): Read DECL_VINDEX for virtual clones. + +2023-11-14 Nathaniel Shead + + PR c++/106849 + * name-lookup.cc (do_nonmember_using_decl): Handle + TEMPLATE_DECLs when checking module attachment. + +2023-11-14 David Malcolm + + * decl.cc (finish_function): Update call to + global_dc->m_option_enabled to use option_enabled_p. + +2023-11-14 David Malcolm + + * contracts.cc (build_comment): Use global_dc's file_cache. + +2023-11-14 Jonathan Wakely + + PR c++/111842 + PR c++/112498 + * call.cc (convert_like_internal): Use OPT_Wnarrowing for + pedwarns about illformed conversions involving extended + floating-point types. Clarify that ISO C++ requires these + diagnostics. + +2023-11-14 Jakub Jelinek + + PR c/111309 + * call.cc (magic_varargs_p): Return 4 for + BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. + (build_over_call): Don't promote first argument of + BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G. + * cp-gimplify.cc (cp_gimplify_expr): For BUILT_IN_C{L,T}ZG use + c_gimplify_expr. + +2023-11-10 Patrick Palka + + PR c++/79620 + * cp-tree.h (STRIP_REFERENCE_REF): Define. + * semantics.cc (outer_var_p): Assert REFERENCE_REF_P is false. + (finish_decltype_type): Look through implicit INDIRECT_REF when + deciding whether to call capture_decltype. + +2023-11-10 Patrick Palka + + PR c++/79378 + PR c++/96917 + * semantics.cc (finish_decltype_type): Handle an id-expression + naming a capture proxy specially. + +2023-11-07 Kwok Cheung Yeung + + * cp-tree.h (cp_omp_declare_target_attr): Add indirect field. + * decl2.cc (cplus_decl_attributes): Add attribute for indirect + functions. + * parser.cc (cp_parser_omp_clause_name): Handle indirect clause. + (cp_parser_omp_clause_indirect): New. + (cp_parser_omp_all_clauses): Handle indirect clause. + (handle_omp_declare_target_clause): Add extra parameter. Add + indirect attribute for indirect functions. + (OMP_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. + (cp_parser_omp_declare_target): Handle indirect clause. Emit error + message if device_type or indirect clauses used alone. Emit error + if indirect clause used with device_type that is not 'any'. + (OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. + (cp_parser_omp_begin): Handle indirect clause. + * semantics.cc (finish_omp_clauses): Handle indirect clause. + +2023-11-04 Jakub Jelinek + + * parser.h (struct cp_parser): Adjust comment on omp_attrs_forbidden_p + member. + * parser.cc (cp_parser_omp_section_scan): Allow __directive__ spelling. + +2023-11-04 David Malcolm + + * call.cc: Update for changes to diagnostic_context. + * class.cc: Likewise. + * decl.cc: Likewise. + * error.cc: Likewise. + * except.cc: Likewise. + * pt.cc: Likewise. + +2023-11-02 Jason Merrill + + * semantics.cc (nrv_data): Change visited to hash_set. + (finalize_nrv_r): Reorganize. + +2023-11-02 Jason Merrill + + PR c++/112301 + PR c++/102191 + PR c++/33799 + * except.cc (maybe_splice_retval_cleanup): Clear + current_retval_sentinel when destroying retval. + * semantics.cc (nrv_data): Add in_nrv_cleanup. + (finalize_nrv): Set it. + (finalize_nrv_r): Fix handling of throwing cleanups. + +2023-11-02 Jakub Jelinek + + PR c++/110342 + * parser.cc: Implement C++26 P2361R6 - Unevaluated strings. + (uneval_string_attr): New enumerator. + (cp_parser_string_literal_common): Add UNEVAL argument. If true, + pass CPP_UNEVAL_STRING rather than CPP_STRING to + cpp_interpret_string_notranslate. + (cp_parser_string_literal, cp_parser_userdef_string_literal): Adjust + callers of cp_parser_string_literal_common. + (cp_parser_unevaluated_string_literal): New function. + (cp_parser_parenthesized_expression_list): Handle uneval_string_attr. + (cp_parser_linkage_specification): Use + cp_parser_unevaluated_string_literal for C++26. + (cp_parser_static_assert): Likewise. + (cp_parser_std_attribute): Use uneval_string_attr for standard + deprecated and nodiscard attributes. + +2023-10-31 David Malcolm + + * module.cc (ordinary_loc_of): Update for removal of + MACRO_MAP_EXPANSION_POINT_LOCATION. + (module_state::note_location): Update for renaming of field. + (module_state::write_macro_maps): Likewise. + +2023-10-27 Patrick Palka + + PR c++/111929 + * init.cc (build_new_1): Remove unnecessary call to convert + on 'nelts'. Use build2 instead of fold_build2 for + 'outer_nelts_checks'. + +2023-10-27 Patrick Palka + + * cp-tree.h (maybe_warn_unparenthesized_assignment): Declare. + * semantics.cc (is_assignment_op_expr_p): Generalize to return + true for any assignment operator expression, not just one that + has been resolved to an operator overload. + (maybe_warn_unparenthesized_assignment): Factored out from ... + (maybe_convert_cond): ... here. + (finish_parenthesized_expr): Mention + maybe_warn_unparenthesized_assignment. + * typeck.cc (convert_for_assignment): Replace -Wparentheses + warning logic with maybe_warn_unparenthesized_assignment. + +2023-10-27 Lewis Hyatt + + PR preprocessor/87299 + * parser.cc (cp_lexer_new_main): Call c_reset_target_pragmas () + after preprocessing is complete, before starting compilation. + +2023-10-26 liuhongt + + * typeck.cc (build_vec_cmp): Pass type of arg0 to + truth_type_for. + +2023-10-25 Jason Merrill + + * cp-tree.def: Improve OFFSET_REF comment. + * cp-gimplify.cc (cp_fold_immediate): Add to comment. + +2023-10-25 Thomas Schwinge + + * parser.cc (cp_parser_omp_clause_name): Return + 'PRAGMA_OACC_CLAUSE_SELF' for "self". + (cp_parser_oacc_data_clause, OACC_UPDATE_CLAUSE_MASK): Adjust. + (cp_parser_oacc_all_clauses): Remove 'bool compute_p' formal + parameter, and instead locally determine whether we're called for + an OpenACC compute construct or OpenACC 'update' directive. + (cp_parser_oacc_compute): Adjust. + +2023-10-25 Chung-Lin Tang + + * parser.cc (cp_parser_oacc_compute_clause_self): New function. + (cp_parser_oacc_all_clauses): Add new 'bool compute_p = false' + parameter, add parsing of self clause when compute_p is true. + (OACC_KERNELS_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_SELF. + (OACC_PARALLEL_CLAUSE_MASK): Likewise, + (OACC_SERIAL_CLAUSE_MASK): Likewise. + (cp_parser_oacc_compute): Adjust call to c_parser_oacc_all_clauses to + set compute_p argument to true. + * pt.cc (tsubst_omp_clauses): Add OMP_CLAUSE_SELF case. + * semantics.cc (c_finish_omp_clauses): Add OMP_CLAUSE_SELF case, merged + with OMP_CLAUSE_IF case. + +2023-10-25 Marek Polacek + + PR c++/111895 + * typeck.cc (build_static_cast_1): Call decay_conversion. + +2023-10-24 Patrick Palka + + PR c++/111929 + * init.cc (build_new_1): Use convert, build2, build3 and + cp_fully_fold instead of fold_convert, size_binop and + fold_build3 when building up 'size'. + +2023-10-24 Patrick Palka + + PR c++/111919 + * tree.cc (cp_stabilize_reference): Do nothing when + processing_template_decl. + +2023-10-22 Patrick Palka + + PR objc++/111920 + * pt.cc (tsubst_expr) : Use tsubst instead + of tsubst_expr. + +2023-10-20 Jason Merrill + + * call.cc (implicit_conversion_1): Rename... + (implicit_conversion): ...to this. Remove the old wrapper. + +2023-10-20 Jason Merrill + + * call.cc (tourney): Only skip champ_compared_to_predecessor. + +2023-10-20 Nathan Sidwell + + PR c++/105322 + * module.cc (trees_out::core_vals): Stream CONSTRUCTOR operands + after the type. + (trees_in::core_vals): Likewise. + +2023-10-20 Patrick Palka + + * cp-lang.cc (objcp_tsubst_copy_and_build): Rename to ... + (objcp_tsubst_expr): ... this. + * cp-objcp-common.h (objcp_tsubst_copy_and_build): Rename to ... + (objcp_tsubst_expr): ... this. + * cp-tree.h (tsubst_copy_and_build): Remove declaration. + * init.cc (maybe_instantiate_nsdmi_init): Use tsubst_expr + instead of tsubst_copy_and_build. + * pt.cc (expand_integer_pack): Likewise. + (instantiate_non_dependent_expr_internal): Likewise. + (instantiate_class_template): Use tsubst_stmt instead of + tsubst_expr for STATIC_ASSERT. + (tsubst_function_decl): Adjust tsubst_copy_and_build uses. + (tsubst_arg_types): Likewise. + (tsubst_exception_specification): Likewise. + (tsubst_tree_list): Likewise. + (tsubst): Likewise. + (tsubst_name): Likewise. + (tsubst_omp_clause_decl): Use tsubst_stmt instead of tsubst_expr. + (tsubst_omp_clauses): Likewise. + (tsubst_copy_asm_operands): Adjust tsubst_copy_and_build use. + (tsubst_omp_for_iterator): Use tsubst_stmt instead of tsubst_expr. + (tsubst_expr): Rename to ... + (tsubst_stmt): ... this. + : Move to tsubst_expr. + (tsubst_omp_udr): Use tsubst_stmt instead of tsubst_expr. + (tsubst_non_call_postfix_expression): Adjust tsubst_copy_and_build + use. + (tsubst_lambda_expr): Likewise. Use tsubst_stmt instead of + tsubst_expr for the body of a lambda. + (tsubst_copy_and_build_call_args): Rename to ... + (tsubst_call_args): ... this. Adjust tsubst_copy_and_build use. + (tsubst_copy_and_build): Rename to tsubst_expr. Adjust + tsubst_copy_and_build and tsubst_copy_and_build_call_args use. + : Use tsubst_stmt instead of tsubst_expr. + (maybe_instantiate_noexcept): Adjust tsubst_copy_and_build use. + (instantiate_body): Use tsubst_stmt instead of tsubst_expr for + substituting the function body. + (tsubst_initializer_list): Adjust tsubst_copy_and_build use. + +2023-10-20 Patrick Palka + + * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup. + * pt.cc (tsubst_pack_expansion): Use tsubst for substituting + BASES_TYPE. + (tsubst_decl) : Use tsubst_name instead of + tsubst_copy. + (tsubst) : Use tsubst_copy_and_build + instead of tsubst_copy for substituting + CLASS_PLACEHOLDER_TEMPLATE. + : Use tsubst_name instead of tsubst_copy for + substituting TYPENAME_TYPE_FULLNAME. + (tsubst_name): Define. + (tsubst_qualified_id): Use tsubst_name instead of tsubst_copy + for substituting the component name of a SCOPE_REF. + (tsubst_copy): Remove. + (tsubst_copy_and_build): Clear tf_no_name_lookup at the start, + and remember if it was set. Call maybe_dependent_member_ref if + tf_no_name_lookup was not set. + : Don't do name lookup if tf_no_name_lookup + was set. + : If tf_no_name_lookup was set, use + tsubst_name instead of tsubst_copy_and_build to substitute the + template and don't finish the template-id. + : Handle identifier and type operand (if + tf_no_name_lookup was set). + : Avoid trying to resolve a SCOPE_REF if + tf_no_name_lookup was set by calling build_qualified_name directly + instead of tsubst_qualified_id. + : Handling of sizeof... copied from tsubst_copy. + : Use tsubst_name instead of tsubst_copy to + substitute a TEMPLATE_ID_EXPR callee naming an unresolved template. + : Likewise to substitute the member. + : Copied from tsubst_copy and merged with ... + : ... these. Initial handling copied + from tsubst_copy. Optimize local variable substitution by + trying retrieve_local_specialization before checking + uses_template_parms. + : Copied from tsubst_copy. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Likewise. + : Use tsubst and tsubst_copy_and_build instead + of tsubst_copy. + : Copied from tsubst_copy. + (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build + instead of tsubst_copy. + +2023-10-20 Patrick Palka + + PR c++/106086 + * parser.cc (cp_parser_postfix_expression): Consolidate three + calls to finish_call_expr, one to build_new_method_call and + one to build_min_nt_call_vec into one call to finish_call_expr. + Don't call maybe_generic_this_capture here. + * pt.cc (tsubst_copy_and_build) : Remove + COMPONENT_REF callee handling. + (type_dependent_expression_p): Use t_d_object_e_p instead of + t_d_e_p for COMPONENT_REF and OFFSET_REF. + * semantics.cc (finish_call_expr): In the type-dependent case, + call maybe_generic_this_capture here instead. + +2023-10-20 Patrick Palka + + * call.cc (build_new_method_call): Remove calls to + build_non_dependent_expr and/or make_args_non_dependent. + * coroutines.cc (finish_co_return_stmt): Likewise. + * cp-tree.h (build_non_dependent_expr): Remove. + (make_args_non_dependent): Remove. + * decl2.cc (grok_array_decl): Remove calls to + build_non_dependent_expr and/or make_args_non_dependent. + (build_offset_ref_call_from_tree): Likewise. + * init.cc (build_new): Likewise. + * pt.cc (make_args_non_dependent): Remove. + (test_build_non_dependent_expr): Remove. + (cp_pt_cc_tests): Adjust. + * semantics.cc (finish_expr_stmt): Remove calls to + build_non_dependent_expr and/or make_args_non_dependent. + (finish_for_expr): Likewise. + (finish_call_expr): Likewise. + (finish_omp_atomic): Likewise. + * typeck.cc (finish_class_member_access_expr): Likewise. + (build_x_indirect_ref): Likewise. + (build_x_binary_op): Likewise. + (build_x_array_ref): Likewise. + (build_x_vec_perm_expr): Likewise. + (build_x_shufflevector): Likewise. + (build_x_unary_op): Likewise. + (cp_build_addressof): Likewise. + (build_x_conditional_expr): Likewise. + (build_x_compound_expr): Likewise. + (build_static_cast): Likewise. + (build_x_modify_expr): Likewise. + (check_return_expr): Likewise. + * typeck2.cc (build_x_arrow): Likewise. + +2023-10-20 Patrick Palka + + * class.cc (instantiate_type): Remove NON_DEPENDENT_EXPR + handling. + * constexpr.cc (cxx_eval_constant_expression): Likewise. + (potential_constant_expression_1): Likewise. + * coroutines.cc (coro_validate_builtin_call): Don't + expect ALIGNOF_EXPR to be wrapped in NON_DEPENDENT_EXPR. + * cp-objcp-common.cc (cp_common_init_ts): Remove + NON_DEPENDENT_EXPR handling. + * cp-tree.def (NON_DEPENDENT_EXPR): Remove. + * cp-tree.h (build_non_dependent_expr): Temporarily redefine as + the identity function. + * cvt.cc (maybe_warn_nodiscard): Handle type-dependent and + variable callee of CALL_EXPR. + * cxx-pretty-print.cc (cxx_pretty_printer::expression): Remove + NON_DEPENDENT_EXPR handling. + * error.cc (dump_decl): Likewise. + (dump_expr): Likewise. + * expr.cc (mark_use): Likewise. + (mark_exp_read): Likewise. + * pt.cc (build_non_dependent_expr): Remove. + * tree.cc (lvalue_kind): Remove NON_DEPENDENT_EXPR handling. + (cp_stabilize_reference): Likewise. + * typeck.cc (warn_for_null_address): Likewise. + (cp_build_binary_op): Handle type-dependent SIZEOF_EXPR operands. + (cp_build_unary_op) : Don't fold inside a + template. + +2023-10-20 Alexandre Oliva + + * decl.cc (push_throw_library_fn): Mark with ECF_XTHROW. + * except.cc (build_throw): Likewise __cxa_throw, + _ITM_cxa_throw, __cxa_rethrow. + +2023-10-20 Nathaniel Shead + + PR c++/101631 + PR c++/102286 + * call.cc (build_over_call): Fold more indirect refs for trivial + assignment op. + * class.cc (type_has_non_deleted_trivial_default_ctor): Create. + * constexpr.cc (cxx_eval_call_expression): Start lifetime of + union member before entering constructor. + (cxx_eval_component_reference): Check against first member of + value-initialised union. + (cxx_eval_store_expression): Activate member for + value-initialised union. Check for accessing inactive union + member indirectly. + * cp-tree.h (type_has_non_deleted_trivial_default_ctor): + Forward declare. + +2023-10-20 Nathaniel Shead + + * constexpr.cc (is_std_source_location_current): New. + (cxx_eval_constant_expression): Only ignore cast from void* for + specific cases and improve other diagnostics. + +2023-10-19 Marek Polacek + + * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value. + +2023-10-19 Jason Merrill + + * typeck2.cc (check_narrowing): Adjust. + +2023-10-19 Jason Merrill + + * parser.cc (cp_parser_primary_expression): Use G_. + (cp_parser_using_enum): Likewise. + * decl.cc (identify_goto): Likewise. + +2023-10-18 Jason Merrill + + * typeck2.cc (check_narrowing): Use permerror. + +2023-10-17 Marek Polacek + + PR c++/111840 + * parser.cc (cp_parser_simple_declaration): Do cp_parser_error + for FUNCTION_DECLs. + +2023-10-17 Marek Polacek + + PR c++/111660 + * cp-gimplify.cc (cp_fold_immediate_r) : Don't + handle it here. + (cp_fold_r): Handle COND_EXPR here. + +2023-10-17 Jason Merrill + + * mangle.cc (abi_check): New. + (write_prefix, write_unqualified_name, write_discriminator) + (write_type, write_member_name, write_expression) + (write_template_arg, write_template_param): Use it. + (start_mangling): Assign from {}. + * cp-tree.h: Update comment. + +2023-10-17 Nathaniel Shead + + * constexpr.cc (cxx_eval_dynamic_cast_fn): Add missing + auto_diagnostic_group. + (cxx_eval_call_expression): Likewise. + (diag_array_subscript): Likewise. + (outside_lifetime_error): Likewise. + (potential_constant_expression_1): Likewise. + +2023-10-16 Jason Merrill + + * parser.cc (cp_parser_fold_expression): Track location range. + * semantics.cc (finish_unary_fold_expr) + (finish_left_unary_fold_expr, finish_right_unary_fold_expr) + (finish_binary_fold_expr): Add location parm. + * constraint.cc (finish_shorthand_constraint): Pass it. + * pt.cc (convert_generic_types_to_packs): Likewise. + * cp-tree.h: Adjust. + +2023-10-16 Marek Polacek + + PR c++/111272 + * constexpr.cc (explain_invalid_constexpr_fn): Also check the body of + a constructor in C++14 and up. + +2023-10-14 Jakub Jelinek + + PR c/102989 + * module.cc (trees_out::start, trees_in::start): Remove + TREE_INT_CST_OFFSET_NUNITS handling. + +2023-10-10 Jason Merrill + + PR c++/109422 + * mangle.cc (write_template_param): Also mangle level. + +2023-10-08 David Malcolm + + * module.cc (module_state::read_location): Update for renaming of + get_combined_adhoc_loc. + +2023-10-03 David Malcolm + + * error.cc (print_instantiation_partial_context_line): Call + diagnostic_show_locus. + +2023-10-03 David Malcolm + + * error.cc: Update for "m_" prefixes to text_info fields. + +2023-09-30 Eugene Rozenfeld + + * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY + +2023-09-28 Richard Sandiford + + * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables. + +2023-09-22 Jason Merrill + + PR c++/111357 + * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR. + +2023-09-22 Jason Merrill + + * constexpr.cc (free_constructor): Handle null ce->value. + +2023-09-22 Jason Merrill + + PR c++/111529 + * parser.cc (cp_parser_lambda_declarator_opt): Don't suggest + -std=c++14 for lambda templates. + * pt.cc (tsubst_expr): Move ANNOTATE_EXPR handling... + (tsubst_copy_and_build): ...here. + +2023-09-22 Patrick Palka + + PR c++/111493 + * decl2.cc (grok_array_decl): Guard diagnostic and backward + compatibility fallback code paths with tf_error. + +2023-09-22 Patrick Palka + + PR c++/111485 + * pt.cc (is_compatible_template_arg): New parameter 'args'. + Add the outer template arguments 'args' to 'new_args'. + (convert_template_argument): Pass 'args' to + is_compatible_template_arg. + +2023-09-20 Jakub Jelinek + + * parser.cc (cp_parser_postfix_expression): Parse + __builtin_classify_type call with typename as argument. + * pt.cc (tsubst_copy_and_build): Handle __builtin_classify_type + with dependent typename as argument. + +2023-09-20 Patrick Palka + + PR c++/111471 + * cxx-pretty-print.cc (cxx_pretty_printer::expression) + : Handle class NTTP objects by printing + their type and value. + : Strip const VIEW_CONVERT_EXPR + wrappers for class NTTPs. + (pp_cxx_template_argument_list): Don't handle class NTTP + objects here. + +2023-09-20 Patrick Palka + + * pt.cc (tsubst_function_decl): Don't bother computing 'argvec' + when 'lambda_fntype' is set. + (tsubst_template_decl): Make sure we return a TEMPLATE_DECL + during specialization lookup. In the non-class non-function + template case, use tsubst_decl directly with use_spec_table=false, + update DECL_TI_ARGS and call register_specialization like + tsubst_decl would have done if use_spec_table=true. + +2023-09-20 Jakub Jelinek + + PR c++/111392 + * parser.h (struct cp_lexer): Add in_omp_decl_attribute member. + * cp-tree.h (cp_maybe_parse_omp_decl): Declare. + * parser.cc (cp_parser_handle_statement_omp_attributes): Diagnose + omp::decl attribute on statements. Adjust diagnostic wording for + omp::decl. + (cp_parser_omp_directive_args): Add DECL_P argument, set TREE_PUBLIC + to it on the DEFERRED_PARSE tree. + (cp_parser_omp_sequence_args): Adjust caller. + (cp_parser_std_attribute): Handle omp::decl attribute. + (cp_parser_omp_var_list): If parser->lexer->in_omp_decl_attribute + don't expect any arguments, instead create clause or TREE_LIST for + that decl. + (cp_parser_late_parsing_omp_declare_simd): Adjust diagnostic wording + for omp::decl. + (cp_maybe_parse_omp_decl): New function. + (cp_parser_omp_declare_target): If + parser->lexer->in_omp_decl_attribute and first token isn't name or + comma invoke cp_parser_omp_var_list. + * decl2.cc (cplus_decl_attributes): Adjust diagnostic wording for + omp::decl. Handle omp::decl on declarations. + * name-lookup.cc (finish_using_directive): Adjust diagnostic wording + for omp::decl. + +2023-09-19 Ben Boeckel + + * mapper-client.cc, mapper-client.h (open_module_client): Accept + dependency tracking and track module mapper files as + dependencies. + * module.cc (make_mapper, get_mapper): Pass the dependency + tracking class down. + +2023-09-19 Ben Boeckel + + * module.cc (do_import): Report imported CMI files as + dependencies. + +2023-09-19 Ben Boeckel + + * module.cc (preprocessed_module): Pass whether the module is + exported to dependency tracking. + +2023-09-19 Javier Martinez + + * class.cc (propagate_class_warmth_attribute): New function. + (check_bases_and_members): propagate hot and cold attributes + to all FUNCTION_DECL when the record is marked hot or cold. + * cp-tree.h (maybe_propagate_warmth_attributes): New function. + * decl2.cc (maybe_propagate_warmth_attributes): New function. + * method.cc (lazily_declare_fn): propagate hot and cold + attributes to lazily declared functions when the record is + marked hot or cold. + +2023-09-19 Patrick Palka + + * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC + test guarding TYPE_TEMPLATE_INFO. + +2023-09-19 Jason Merrill + + DR 2799 + * class.cc (add_implicit_default_ctor): Split out... + (add_implicitly_declared_members): ...from here. + Also call it when inheriting a default ctor. + +2023-09-19 Marek Polacek + + * call.cc (build_over_call): Set ADDR_EXPR_DENOTES_CALL_P. Don't handle + immediate_invocation_p here. + * constexpr.cc (cxx_eval_call_expression): Use mce_true for + DECL_IMMEDIATE_FUNCTION_P. + (cxx_eval_conditional_expression): Call cp_fold_immediate. + * cp-gimplify.cc (enum fold_flags): Add ff_fold_immediate. + (maybe_replace_decl): Make static. + (cp_fold_r): Expand immediate invocations. + (cp_fold_immediate_r): New. + (cp_fold_immediate): New. + * cp-tree.h (ADDR_EXPR_DENOTES_CALL_P): Define. + (cp_fold_immediate): Declare. + * tree.cc (bot_replace): Don't handle immediate invocations here. + +2023-09-19 Patrick Palka + + PR c++/111419 + * cvt.cc (convert_to_void) : Only call + complete_type if the type is volatile. + : Likewise. + +2023-09-19 Patrick Palka + + PR c++/99631 + * semantics.cc (finish_decltype_type): For an NTTP object, + return its type modulo cv-quals. + +2023-09-18 Patrick Palka + + PR c++/89231 + * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality + test by not calling most_general_template. Only unify the + innermost levels of template arguments. + (unify) : Only unify the innermost levels of + template arguments, and only if the template is primary. + +2023-09-18 Patrick Palka + + PR c++/63198 + PR c++/18474 + * semantics.cc (maybe_convert_cond): Look through implicit + INDIRECT_REF when deciding whether to issue a -Wparentheses + warning, and consider templated assignment expressions as well. + (finish_parenthesized_expr): Look through implicit INDIRECT_REF + when suppressing -Wparentheses warning. + * typeck.cc (build_x_modify_expr): Check simple assignments + ahead time too, not just compound assignments. Give the second + operand of MODOP_EXPR a non-null type so that it's not considered + always instantiation-dependent. Don't call suppress_warning. + +2023-09-18 Patrick Palka + + PR c++/108347 + * pt.cc (unify): Return unify_success for identical dependent + DECL_P 'arg' and 'parm'. + : Remove handling. + +2023-09-18 Patrick Palka + + * call.cc (add_template_candidate_real): Check arity even + when there are no explicit template arguments. Combine the + two adjacent '!obj' tests into one. + +2023-09-18 Patrick Palka + + * pt.cc (register_specialization): Remove now-unnecessary + early exit for FUNCTION_DECL partial instantiation. + (tsubst_template_decl): Pass use_spec_table=false to + tsubst_function_decl. Set DECL_TI_ARGS of a non-lambda + FUNCTION_DECL specialization to the full set of arguments. + Simplify register_specialization call accordingly. + +2023-09-18 Jason Merrill + + * class.cc (check_subobject_offset): Use similar_type_p. + +2023-09-12 Jason Merrill + + PR c++/111357 + * pt.cc (expand_integer_pack): Convert argument to int. + +2023-09-12 Jason Merrill + + PR c++/107198 + * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR + regardless of seen_error. + +2023-09-08 Patrick Palka + + PR c++/99599 + * pt.cc (check_non_deducible_conversions): Add bool parameter + passed down to check_non_deducible_conversion. + (fn_type_unification): Call check_non_deducible_conversions + an extra time before satisfaction with noninst_only_p=true. + (conversion_may_instantiate_p): Define. + (check_non_deducible_conversion): Add bool parameter controlling + whether to compute only conversions that are guaranteed to + not induce template instantiation. + +2023-09-07 Sandra Loosemore + + PR c++/111274 + * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK. + +2023-09-06 Jason Merrill + + * class.cc (check_subobject_offset): Check + same_type_ignoring_top_level_qualifiers_p. + +2023-09-05 Marek Polacek + + PR c++/91483 + * constexpr.cc (verify_constant_explain_r): New. + (verify_constant): Call it. + +2023-09-05 Jakub Jelinek + + PR c++/52953 + * name-lookup.cc (check_local_shadow): Don't punt early for + DECL_EXTERNAL decls, instead just disable the shadowing of namespace + decls check for those and emit a pedwarn rather than error_at or + permerror for those. Formatting fix. + +2023-09-05 Jakub Jelinek + + PR c++/52953 + * name-lookup.h (struct cp_binding_level): Add artificial bit-field. + Formatting fixes. + * name-lookup.cc (check_local_shadow): Skip artificial bindings when + checking if parameter scope is parent scope. Don't special case + FUNCTION_NEEDS_BODY_BLOCK. Diagnose the in_function_try_handler + cases in the b->kind == sk_function_parms test and verify no + non-artificial intervening scopes. Add missing auto_diagnostic_group. + * decl.cc (begin_function_body): Set + current_binding_level->artificial. + * semantics.cc (begin_function_try_block): Likewise. + +2023-09-05 Patrick Palka + + * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass + nullptr as non_constant_p to cp_parser_braced_list if our + non_constant_p is null. + (cp_parser_initializer_list): Likewise to + cp_parser_initializer_clause. Avoid inspecting + clause_non_constant_p if it's uninitialized. + +2023-09-05 Patrick Palka + + * call.cc (build_user_type_conversion): Free allocated + conversions. + (build_converted_constant_expr_internal): Use + conversion_obstack_sentinel instead. + (perform_dguide_overload_resolution): Likewise. + (build_new_function_call): Likewise. + (build_operator_new_call): Free allocated conversions. + (build_op_call): Use conversion_obstack_sentinel instead. + (build_conditional_expr): Use conversion_obstack_sentinel + instead, and hoist it out to the outermost scope. + (build_new_op): Use conversion_obstack_sentinel instead + and set it up before the first goto. Remove second unneeded goto. + (build_op_subscript): Use conversion_obstack_sentinel instead. + (ref_conv_binds_to_temporary): Likewise. + (build_new_method_call): Likewise. + (can_convert_arg): Likewise. + (can_convert_arg_bad): Likewise. + (perform_implicit_conversion_flags): Likewise. + (perform_direct_initialization_if_possible): Likewise. + (initialize_reference): Likewise. + +2023-09-01 Jakub Jelinek + + PR c++/111069 + * cp-tree.h (determine_local_discriminator): Add NAME argument with + NULL_TREE default. + (struct cp_decomp): New type. + (cp_finish_decl): Add DECOMP argument defaulted to nullptr. + (cp_maybe_mangle_decomp): Remove declaration. + (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned + args. + (cp_convert_range_for): Likewise. + * decl.cc (determine_local_discriminator): Add NAME argument, use it + if non-NULL, otherwise compute it the old way. + (maybe_commonize_var): Don't return early for structured bindings. + (cp_finish_decl): Add DECOMP argument, if non-NULL, call + cp_maybe_mangle_decomp. + (cp_maybe_mangle_decomp): Make it static with a forward declaration. + Call determine_local_discriminator. Replace FIRST and COUNT arguments + with DECOMP argument. + (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP + argument. + * mangle.cc (find_decomp_unqualified_name): Remove. + (write_unqualified_name): Don't call find_decomp_unqualified_name. + (mangle_decomp): Handle mangling of static function/block scope + structured bindings. Don't call decl_mangling_context twice. Call + check_abi_tags, call write_abi_tags for abi version >= 19 and emit + -Wabi warnings if needed. + (write_guarded_var_name): Handle structured bindings. + (mangle_ref_init_variable): Use write_guarded_var_name. + * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction + and cp_convert_range_for callers. + (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and + DECOMP_CNT arguments with DECOMP. Adjust cp_finish_decomp caller. + (cp_convert_range_for): Replace DECOMP_FIRST_NAME and + DECOMP_CNT arguments with DECOMP. Don't call cp_maybe_mangle_decomp, + adjust cp_finish_decl and cp_finish_decomp callers. + (cp_parser_decomposition_declaration): Don't call + cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp + callers. + (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction + and cp_finish_decomp callers. + (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp, + adjust cp_finish_decl and cp_finish_decomp callers. + * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names + caller. + (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP. + (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust + tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and + cp_convert_range_for callers. + +2023-08-30 Marek Polacek + + PR c++/91319 + * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT + when the designated initializer is of the .x{} form. + +2023-08-30 Marek Polacek + + PR c++/111173 + * decl.cc (grokdeclarator): Disallow constinit on functions. + +2023-08-29 Marek Polacek + + * call.cc (convert_like_internal): Show where the conversion function + was declared. + (maybe_show_nonconverting_candidate): New. + * cp-tree.h (maybe_show_nonconverting_candidate): Declare. + * typeck.cc (convert_for_assignment): Call it. + +2023-08-25 Sandra Loosemore + + * cp-tree.h (cp_convert_omp_range_for): Adjust declaration. + * parser.cc (struct omp_for_parse_data): New. + (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime + in intervening code. + (check_omp_intervening_code): New. + (cp_parser_statement_seq_opt): Special-case nested loops, blocks, + and other constructs for OpenMP loops. + (cp_parser_iteration_statement): Reject loops in intervening code. + (cp_parser_omp_for_loop_init): Expand comments and tweak the + interface slightly to better distinguish input/output parameters. + (cp_convert_omp_range_for): Likewise. + (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop + and largely rewritten. Add more comments. + (insert_structured_blocks): New. + (find_structured_blocks): New. + (struct sit_data, substitute_in_tree_walker, substitute_in_tree): + New. + (fixup_blocks_walker): New. + (cp_parser_omp_for_loop): Rewrite to use recursive descent instead + of a loop. Add logic to reshuffle the bits of code collected + during parsing so intervening code gets moved to the loop body. + (cp_parser_omp_loop): Remove call to finish_omp_for_block, which + is now redundant. + (cp_parser_omp_simd): Likewise. + (cp_parser_omp_for): Likewise. + (cp_parser_omp_distribute): Likewise. + (cp_parser_oacc_loop): Likewise. + (cp_parser_omp_taskloop): Likewise. + (cp_parser_pragma): Reject OpenMP pragmas in intervening code. + * parser.h (struct cp_parser): Add omp_for_parse_state field. + * pt.cc (tsubst_omp_for_iterator): Adjust call to + cp_convert_omp_range_for. + * semantics.cc (finish_omp_for): Try harder to preserve location + of loop variable init expression for use in diagnostics. + (struct fofb_data, finish_omp_for_block_walker): New. + (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR + nested inside BIND instead of directly in BIND itself. + +2023-08-25 Sandra Loosemore + + * constexpr.cc (cxx_eval_constant_expression): Handle + OMP_STRUCTURED_BLOCK. + * pt.cc (tsubst_expr): Likewise. + +2023-08-25 Uros Bizjak + + * call.cc (build_conditional_expr): + Rename TRUE/FALSE to true/false. + (build_new_op): Ditto. + +2023-08-22 Jason Merrill + + * pt.cc (outer_template_args): Handle non-template argument. + * constraint.cc (maybe_substitute_reqs_for): Pass decl to it. + * cp-tree.h (outer_template_args): Adjust. + +2023-08-22 Jason Merrill + + PR c++/109751 + * cp-tree.h (member_like_constrained_friend_p): Declare. + * decl.cc (member_like_constrained_friend_p): New. + (function_requirements_equivalent_p): Check it. + (duplicate_decls): Check it. + (grokfndecl): Check friend template constraints. + * mangle.cc (decl_mangling_context): Check it. + (write_unqualified_name): Check it. + * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends. + (tsubst_friend_function): Don't check satisfaction. + +2023-08-22 Tobias Burnus + + * parser.cc (cp_parser_omp_clause_defaultmap): Parse + 'all' as category. + +2023-08-15 Chung-Lin Tang + Thomas Schwinge + + * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT. + +2023-08-14 gnaggnoyil + + DR 2386 + PR c++/110216 + * decl.cc (get_tuple_size): Update implementation for DR 2386. + +2023-08-14 Jason Merrill + + * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14 + -fconcepts. + +2023-08-12 Patrick Palka + Jason Merrill + + PR c++/106604 + * decl.cc (redeclaration_error_message): Remove special handling + for deduction guides. + (grokfndecl): Give deduction guides a dummy DECL_INITIAL. + +2023-08-11 Patrick Palka + + PR c++/110927 + * parser.cc (cp_parser_type_requirement): Pass + check_dependency_p=true instead of =false. + +2023-08-11 Patrick Palka + + PR c++/71954 + * decl.cc (grokdeclarator): Pass 'dname' instead of + 'unqualified_id' as the name when building the VAR_DECL for a + static data member. Call check_explicit_specialization for a + TEMPLATE_ID_EXPR such member. + * pt.cc (finish_member_template_decl): Return NULL_TREE + instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not + set. + +2023-08-11 Patrick Palka + + * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and + TS_DECL_COMMON only when necessary. Print DECL_TEMPLATE_INFO + for all decls that have it, not just VAR_DECL or FUNCTION_DECL. + Also print DECL_USE_TEMPLATE. + (cxx_print_type): Print TYPE_TEMPLATE_INFO. + : Don't print TYPE_TI_ARGS + anymore. + : Print TEMPLATE_TYPE_PARM_INDEX + instead of printing the index, level and original level + individually. + +2023-08-08 Marek Polacek + + * parser.cc (cp_parser_postfix_expression): Adjust the call to + cp_parser_braced_list. + (cp_parser_postfix_open_square_expression): Likewise. + (cp_parser_new_initializer): Likewise. + (cp_parser_assignment_expression): Adjust the call to + cp_parser_initializer_clause. + (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer. + (cp_parser_range_for): Adjust the call to cp_parser_braced_list. + (cp_parser_jump_statement): Likewise. + (cp_parser_mem_initializer): Likewise. + (cp_parser_template_argument): Likewise. + (cp_parser_default_argument): Adjust the call to cp_parser_initializer. + (cp_parser_initializer): Handle null is_direct_init and non_constant_p + arguments. + (cp_parser_initializer_clause): Handle null non_constant_p argument. + (cp_parser_braced_list): Likewise. + (cp_parser_initializer_list): Likewise. + (cp_parser_member_declaration): Adjust the call to + cp_parser_initializer_clause and cp_parser_initializer. + (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list. + (cp_parser_functional_cast): Likewise. + (cp_parser_late_parse_one_default_arg): Adjust the call to + cp_parser_initializer. + (cp_parser_omp_for_loop_init): Likewise. + (cp_parser_omp_declare_reduction_exprs): Likewise. + +2023-08-08 Nathaniel Shead + + PR c++/100482 + * parser.cc (cp_parser_decltype_expr): Report errors raised by + finish_id_expression. + +2023-08-04 Tamar Christina + + * cp-tree.h (RANGE_FOR_NOVECTOR): New. + (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt, + finish_for_cond): Add novector param. + * init.cc (build_vec_init): Default novector to false. + * method.cc (build_comparison_op): Likewise. + * parser.cc (cp_parser_statement): Likewise. + (cp_parser_for, cp_parser_c_for, cp_parser_range_for, + cp_convert_range_for, cp_parser_iteration_statement, + cp_parser_omp_for_loop, cp_parser_pragma): Support novector. + (cp_parser_pragma_novector): New. + * pt.cc (tsubst_expr): Likewise. + * semantics.cc (finish_while_stmt_cond, finish_do_stmt, + finish_for_cond): Likewise. + +2023-08-01 Lewis Hyatt + + * parser.cc (c_init_preprocess): New function. + (maybe_read_tokens_for_pragma_lex): New function. + (pragma_lex): Support preprocess-only mode. + (pragma_lex_discard_to_eol): New function. + +2023-07-31 Chung-Lin Tang + + * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC + host_data construct to have an use_device clause. + +2023-07-28 Ng YongXiang + + PR c++/110057 + PR ipa/83054 + * init.cc (build_vec_delete_1): Devirtualize array destruction. + +2023-07-27 Patrick Palka + + PR c++/110197 + * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an + empty subobject even if CONSTRUCTOR_NO_CLEARING is set. + (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally + whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx, + i.e. whenever initializing an subobject of empty type. + (cxx_eval_vec_init_1): Define 'no_slot' as above and use it + accordingly. + +2023-07-27 Nathaniel Shead + + PR c++/103497 + * pt.cc (type_uses_auto): Check inside parameter packs. + +2023-07-26 Patrick Palka + + PR c++/110566 + PR c++/108179 + * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO + on the DECL_TEMPLATE_RESULT of the new ttp. + (add_defaults_to_ttp): Make a copy of the original ttp's + DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO + as well. + (coerce_template_template_parms): Make sure 'scope_args' has + the right amount of levels for the ttp argument. + (most_general_template): Handle template template parameters. + (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the + DECL_TEMPLATE_RESULT of the new ttp. + +2023-07-26 Patrick Palka + + PR c++/110566 + PR c++/108179 + * pt.cc (coerce_template_template_parms): Simplify by using + DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts. + Always pass the parameters of the most general template to + coerce_template_parms. + +2023-07-26 Patrick Palka + + PR c++/110809 + * pt.cc (unify) : Generalize to handle + REAL_CST as well. + +2023-07-26 Marek Polacek + + * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be + nullptr even when allow_non_constant_p is true. Don't call + _rvalue_constant_expression when not necessary. Move local variable + declarations closer to their first use. + (cp_parser_static_assert): Don't pass a dummy down to + cp_parser_constant_expression. + +2023-07-26 Jason Merrill + + PR c++/106310 + * parser.cc (cp_parser_template_name): Skip non-member + lookup after the template keyword. + (cp_parser_lookup_name): Pass down template_keyword_p. + +2023-07-26 Nathaniel Shead + + PR c++/96630 + PR c++/98675 + PR c++/70331 + * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New + function. + (constexpr_global_ctx::get_value): Don't return expired values. + (constexpr_global_ctx::get_value_ptr): Likewise. + (constexpr_global_ctx::remove_value): Mark value outside + lifetime. + (outside_lifetime_error): New function. + (cxx_eval_call_expression): No longer track save_exprs. + (cxx_eval_loop_expr): Likewise. + (cxx_eval_constant_expression): Add checks for outside lifetime + values. Remove local variables at end of bind exprs, and + temporaries after cleanup points. + +2023-07-26 Nathaniel Shead + + PR c++/110619 + * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to + not return dangling pointers. + * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag. + (check_return_expr): Add a new parameter. + * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR + when referring to dangling pointer. + * typeck.cc (check_return_expr): Disable transformation of + dangling pointers, instead pass this information to caller. + +2023-07-26 Nathaniel Shead + + * constexpr.cc (modifying_const_object_error): Find the source + location of the const object's declaration. + (cxx_eval_constant_expression): Update input_location to the + location of the currently evaluated expression, if possible. + +2023-07-25 Marek Polacek + + PR c++/108960 + * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial + here. + (instantiate_template): Reset all complain flags except + tf_warning_or_error. + +2023-07-25 Marek Polacek + + PR c++/110382 + * constexpr.cc (cxx_eval_array_reference): Create a new constructor + only when we don't already have a matching one. Clear the object + when the type is non-scalar. + +2023-07-21 Marek Polacek + + PR c++/110106 + * constexpr.cc (potential_constant_expression_1): Try to complete the + type when !processing_template_decl. + +2023-07-20 Marek Polacek + + PR c++/110114 + * call.cc (implicit_conversion_1): Return early if the type isn't + complete. + +2023-07-19 Marek Polacek + + PR c++/110745 + * error.cc (dump_simple_decl): Print base class name. + +2023-07-19 Marek Polacek + + PR c++/110064 + * typeck2.cc (process_init_constructor_record): Don't emit + -Wmissing-field-initializers for empty classes. + +2023-07-19 Patrick Palka + + * pt.cc (type_unification_real): Test for PARM_DECL instead + of TEMPLATE_PARM_INDEX to distinguish a type vs non-type + template parameter pack. + (type_targs_deducible_from): Likewise. + +2023-07-19 Patrick Palka + + * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table' + flag parameter. Don't look up or insert into the specializations + table if 'use_spec_table' is false. + (tsubst_decl): Add defaulted 'use_spec_table' flag parameter. + Check for error_mark_node. + : Pass 'use_spec_table' to + tsubst_function_decl. + : Don't call coerce_template_parms. + Don't look up or insert into the specializations table if + 'use_spec_table' is false. Exit earlier if the substituted + type is erroneous and we're not complaining, and do so for + alias specializations as well. + (instantiate_template): Pass false as 'use_spec_table' + to tsubst_decl. Call register_specialization afterwards. + +2023-07-18 Jason Merrill + + * constexpr.cc (cxx_eval_bit_cast): Check that the result of + native_interpret_aggregate doesn't need more evaluation. + +2023-07-18 Patrick Palka + + * call.cc (add_template_conv_candidate): Don't check for + non-empty 'candidates' here. + (build_op_call): Check it here, before we've considered any + conversion functions. + +2023-07-18 Patrick Palka + + PR c++/110535 + * call.cc (add_conv_candidate): Check constraints. + +2023-07-17 Jason Merrill + + * constexpr.cc (cxx_eval_call_expression): Only cache + reduced_constant_expression_p results. + (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type. + (cxx_eval_constant_expression): Fold vectors here. + (cxx_eval_bare_aggregate): Not here. + +2023-07-15 Patrick Palka + + PR c++/110441 + * call.cc (keep_unused_object_arg): Use cp_build_compound_expr + instead of building a COMPOUND_EXPR directly. + +2023-07-15 Patrick Palka + + PR c++/110524 + * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR + whose template is already an IDENTIFIER_NODE. + +2023-07-14 Nathaniel Shead + + * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value. + +2023-07-14 Jason Merrill + + PR c++/110344 + * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling + after heap handling. + * name-lookup.cc (get_cxx_dialect_name): Add C++26. + +2023-07-14 Marek Polacek + Jason Merrill + + PR c++/109876 + * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing + an object of empty class type. + * pt.cc (value_dependent_expression_p) : Treat a + constexpr-declared non-constant variable as value-dependent. + +2023-07-11 Patrick Palka + + PR c++/110580 + * pt.cc (lookup_template_variable): Pass all levels of arguments + to coerce_template_parms, and use the parameters from the most + general template. + +2023-07-10 Patrick Palka + + PR c++/110523 + * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT + assert, and downgrade it to a checking assert. + +2023-06-30 Patrick Palka + + * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden. + (TEMPLATE_TYPE_DESCENDANTS): Define. + (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define. + * pt.cc (reduce_template_parm_level): Revert + r14-418-g0bc2a1dc327af9 change. + (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P + appropriately. + (uses_outer_template_parms): Determine the outer depth of + a template template parm without relying on DECL_CONTEXT. + (tsubst) : Cache lowering a + simple template template parm. Consistently use 'code'. + +2023-06-29 Patrick Palka + + PR c++/110468 + * init.cc (maybe_instantiate_nsdmi_init): Mask out all + tsubst flags except for tf_warning_or_error. + +2023-06-29 Patrick Palka + + PR c++/110463 + * cp-gimplify.cc (cp_fold) : Propagate + CONSTRUCTOR_MUTABLE_POISON. + +2023-06-29 Patrick Palka + + * cp-tree.h (tree_template_info::partial): New data member. + (TI_PARTIAL_INFO): New tree accessor. + (most_specialized_partial_spec): Add defaulted bool parameter. + * module.cc (trees_out::core_vals) : Stream + TI_PARTIAL_INFO. + (trees_in::core_vals) : Likewise. + * parser.cc (specialization_of): Adjust after making + most_specialized_partial_spec return TEMPLATE_INFO instead + of TREE_LIST. + * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO + of 'decl' to point back to the partial TEMPLATE_DECL. Likewise + (and pass rechecking=true to most_specialization_partial_spec). + (instantiate_class_template): Likewise. + (instantiate_template): Set TI_PARTIAL_INFO to the result of + most_specialization_partial_spec after forming a variable + template specialization. + (most_specialized_partial_spec): Add 'rechecking' parameter. + Exit early if the template is not primary. Use the TI_PARTIAL_INFO + of the corresponding TEMPLATE_INFO as a cache unless 'rechecking' + is true. Don't bother setting TREE_TYPE of each TREE_LIST. + (instantiate_decl): Adjust after making + most_specialized_partial_spec return TEMPLATE_INFO instead of + TREE_LIST. + * ptree.cc (cxx_print_xnode) : Dump + TI_PARTIAL_INFO. + +2023-06-29 Eugene Rozenfeld + + * Make-lang.in: Pass correct stage cc1plus when processing + profile data collected while building target libraries + +2023-06-28 Patrick Palka + + PR c++/89442 + PR c++/107437 + * cp-tree.h (lookup_template_variable): Add complain parameter. + * parser.cc (cp_parser_template_id): Pass tf_warning_or_error + to lookup_template_variable. + * pt.cc (lookup_template_variable): Add complain parameter. + Coerce template arguments here ... + (finish_template_variable): ... instead of here. + (lookup_and_finish_template_variable): Check for error_mark_node + result from lookup_template_variable. + (tsubst_copy) : Pass complain to + lookup_template_variable. + (instantiate_template): Use build2 instead of + lookup_template_variable to build a TEMPLATE_ID_EXPR + for most_specialized_partial_spec. + +2023-06-28 Marek Polacek + + PR c++/110175 + * typeck.cc (cp_build_unary_op): Check tf_warning before warning. + +2023-06-28 Jason Merrill + + PR c++/110334 + * cp-tree.h (clone_attrs): Declare. + * method.cc (implicitly_declare_fn): Use it for inherited + constructor. + * optimize.cc (clone_attrs): New. + (maybe_clone_body): Use it. + +2023-06-28 Jason Merrill + + PR c++/110344 + * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast + from void* to the type of a pointed-to object. + +2023-06-23 David Malcolm + + PR c++/110164 + * cp-name-hint.h (maybe_suggest_missing_header): New decl. + * decl.cc: Define INCLUDE_MEMORY. Add include of + "cp/cp-name-hint.h". + (start_decl_1): Call maybe_suggest_missing_header. + * name-lookup.cc (maybe_suggest_missing_header): Remove "static". + +2023-06-16 Alex Coplan + + * parser.cc (cp_parser_enum_specifier): Don't reject + elaborated-type-specifier with enum-base, instead emit new + Welaborated-enum-base warning. + +2023-06-14 Jason Merrill + + DR 2327 + PR c++/86521 + * call.cc (joust_maybe_elide_copy): Don't change cand. + (joust): Move the elided tiebreaker later. + +2023-06-13 David Malcolm + + PR c/84890 + * name-lookup.cc (missing_std_header::~missing_std_header): Reword + note to avoid negative tone of "forgetting". + +2023-06-13 Jason Merrill + + * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P. + +2023-06-12 Tobias Burnus + + * parser.cc (cp_parser_omp_clause_map): Reword error message for + clearness especially with 'omp target (enter/exit) data.' + * semantics.cc (handle_omp_array_sections): Handle + GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values. + +2023-06-12 Jason Merrill + + PR c++/105838 + * call.cc (convert_like_internal) [ck_list]: Use + maybe_init_list_as_array. + * constexpr.cc (cxx_eval_vec_init_1): Init might have + a different type. + * tree.cc (build_vec_init_elt): Likewise. + * init.cc (build_vec_init): Handle from_array from a + TARGET_EXPR. Retain TARGET_EXPR of a different type. + +2023-06-11 Patrick Palka + + PR c++/110122 + * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted + functions needed for constant evaluation. + (instantiate_cx_fn_r): Likewise. + +2023-06-11 Patrick Palka + + PR c++/110122 + * pt.cc (lookup_template_class): Extend shortcut for looking up the + current class scope to consider outer class scopes too, and use + current_nonlambda_class_type instead of current_class_type. Only + call coerce_template_parms when specializing a primary template. + +2023-06-10 Nathan Sidwell + + PR c++/61663 + * pt.cc (maybe_adjust_types_for_deduction): Implement DR976. + +2023-06-09 Jason Merrill + + PR c++/110185 + PR c++/58487 + * method.cc (build_comparison_op): Give retval a name. + * typeck.cc (check_return_expr): Fix for nameless variables. + +2023-06-09 Jason Merrill + + * parser.cc (cp_parser_simple_type_specifier): Check for auto + in template argument. + (cp_parser_template_type_arg): Remove auto checking. + +2023-06-09 Jason Merrill + + PR c++/110102 + * call.cc (maybe_init_list_as_array): Check that the element type is + copyable. + +2023-06-07 Jason Merrill + + PR c++/58487 + PR c++/53637 + * cp-tree.h (INIT_EXPR_NRV_P): New. + * semantics.cc (finalize_nrv_r): Check it. + * name-lookup.h (decl_in_scope_p): Declare. + * name-lookup.cc (decl_in_scope_p): New. + * typeck.cc (check_return_expr): Allow non-NRV + returns if the NRV is no longer in scope. + +2023-06-07 Jason Merrill + + PR c++/58487 + * typeck.cc (want_nrvo_p): New. + (check_return_expr): Handle -Wnrvo. + +2023-06-07 Jason Merrill + + PR c++/51571 + PR c++/92407 + * decl.cc (finish_function): Simplify NRV handling. + * except.cc (maybe_set_retval_sentinel): Also set if NRV. + (maybe_splice_retval_cleanup): Don't add the cleanup region + if we don't need it. + * semantics.cc (nrv_data): Add simple field. + (finalize_nrv): Set it. + (finalize_nrv_r): Check it and retval sentinel. + * cp-tree.h (finalize_nrv): Adjust declaration. + * typeck.cc (check_return_expr): Remove named_labels check. + +2023-06-07 Jason Merrill + + PR c++/92407 + * typeck.cc (check_return_expr): Prevent NRV in the presence of + named labels. + +2023-06-07 Jason Merrill + + PR c++/33799 + * except.cc (maybe_splice_retval_cleanup): Change + recognition of function body and try scopes. + * semantics.cc (do_poplevel): Call it after poplevel. + (at_try_scope): New. + * cp-tree.h (maybe_splice_retval_cleanup): Adjust. + +2023-06-07 Jason Merrill + + * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the + INIT_EXPR. + +2023-06-06 Kwok Cheung Yeung + Tobias Burnus + + * parser.cc (cp_parser_omp_clause_defaultmap, + cp_parser_omp_clause_map): Parse 'present'. + (cp_parser_omp_clause_from_to): New; parse to/from + clauses with optional 'present' modifier. + (cp_parser_omp_all_clauses): Update call. + (cp_parser_omp_target_data, cp_parser_omp_target_enter_data, + cp_parser_omp_target_exit_data): Handle new enum value for + 'present' mapping. + * semantics.cc (finish_omp_target): Likewise. + +2023-06-04 Jason Merrill + + PR c++/97720 + * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN. + (call_terminate_fn): New macro. + * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it. + * except.cc (init_exception_processing): Set it. + (cp_protect_cleanup_actions): Return it. + +2023-06-03 Patrick Palka + + PR c++/109923 + * pt.cc (is_specialization_of_friend): Fix overbroad check for + a non-template member function of a class template. + +2023-06-03 Patrick Palka + + * pt.cc (iterative_hash_template_arg): Don't hash + TEMPLATE_TEMPLATE_PARM specially. + +2023-06-03 Patrick Palka + + * class.cc (build_base_path): Check in_template_context instead + of in_template_function. + (resolves_to_fixed_type_p): Likewise. + * cp-tree.h (in_template_context): Define. + (in_template_function): Remove. + * decl.cc (cp_make_fname_decl): Check current_function_decl + and in_template_context instead of in_template_function. + * decl2.cc (mark_used): Check in_template_context instead of + in_template_function. + * pt.cc (in_template_function): Remove. + * semantics.cc (enforce_access): Check in_template_context + instead of current_template_parms directly. + +2023-06-03 Patrick Palka + + PR c++/70790 + * mangle.cc (write_expression): Handle NOEXCEPT_EXPR. + +2023-06-02 Jason Merrill + + DR 2735 + PR c++/109247 + * call.cc (sfk_copy_or_move): New. + (joust): Add tiebreaker for explicit conv and copy ctor. + +2023-06-02 Jason Merrill + + PR c++/110070 + PR c++/105838 + * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE. + (convert_like_internal) [ck_list]: Set it. + (set_up_extended_ref_temp): Copy it. + * tree.cc (handle_no_unique_addr_attribute): Set it. + +2023-06-01 Jason Merrill + + * typeck2.cc (check_narrowing): Check flag_permissive. + +2023-05-30 Tobias Burnus + + PR c/109999 + * parser.cc (cp_parser_oacc_all_clauses, + cp_parser_omp_all_clauses): Improve error wording. + +2023-05-19 Andrew Pinski + + PR driver/33980 + * lang-specs.h ("@c++-header"): Add %w after + the --output-pch. + ("@c++-system-header"): Likewise. + ("@c++-user-header"): Likewise. + +2023-05-19 Patrick Palka + + * constraint.cc (normalize_concept_check): Avoid having to do + two norm_cache lookups. Remove unnecessary early exit for an + ill-formed concept definition. + +2023-05-19 Patrick Palka + + PR c++/97340 + * pt.cc (lookup_and_finish_template_variable): Don't call + convert_from_reference. + (tsubst_copy_and_build) : Call + convert_from_reference on the result of + lookup_and_finish_template_variable. + +2023-05-18 Bernhard Reutner-Fischer + + * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h. + (build_conditional_expr): Ditto. + (convert_like_internal): Ditto. + (convert_arg_to_ellipsis): Ditto. + (build_over_call): Ditto. + (compare_ics): Ditto. + * class.cc (is_empty_base_ref): Ditto. + * coroutines.cc (rewrite_param_uses): Ditto. + * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto. + (ARITHMETIC_TYPE_P): Ditto. + * cvt.cc (ocp_convert): Ditto. + * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto. + * decl.cc (layout_var_decl): Ditto. + (get_tuple_size): Ditto. + * error.cc (dump_simple_decl): Ditto. + * lambda.cc (start_lambda_scope): Ditto. + * mangle.cc (write_template_arg): Ditto. + * method.cc (spaceship_comp_cat): Ditto. + * module.cc (node_template_info): Ditto. + (trees_out::start): Ditto. + (trees_out::decl_node): Ditto. + (trees_in::read_var_def): Ditto. + (set_instantiating_module): Ditto. + * name-lookup.cc (maybe_record_mergeable_decl): Ditto. + (consider_decl): Ditto. + (maybe_add_fuzzy_decl): Ditto. + * pt.cc (convert_nontype_argument): Ditto. + * semantics.cc (handle_omp_array_sections_1): Ditto. + (finish_omp_clauses): Ditto. + (finish_omp_target_clauses_r): Ditto. + (is_this_parameter): Ditto. + * tree.cc (build_cplus_array_type): Ditto. + (is_this_expression): Ditto. + * typeck.cc (do_warn_enum_conversions): Ditto. + * typeck2.cc (store_init_value): Ditto. + (check_narrowing): Ditto. + +2023-05-17 Jakub Jelinek + + PR c++/109868 + * init.cc (build_zero_init_1): Don't initialize zero-width bitfields. + For unions only initialize the first FIELD_DECL. + +2023-05-16 Marek Polacek + + PR c++/109774 + * typeck.cc (check_return_expr): In a template, return only after + suppressing -Wdangling-reference. + +2023-05-16 Patrick Palka + + PR c++/109871 + * call.cc (add_list_candidates): Check for invalid designated + initialization sooner and even for types that have a list + constructor. + +2023-05-11 Patrick Palka + + PR c++/109745 + * typeck2.cc (poison_mutable_constructors): Define. + (store_init_value): Use it instead of setting + CONSTRUCTOR_MUTABLE_POISON directly. + +2023-05-11 Patrick Palka + Jonathan Wakely + + PR c++/83258 + PR c++/80488 + PR c++/97700 + * pt.cc (convert_nontype_argument_function): Remove linkage + requirement for C++17 and later. + (invalid_tparm_referent_p) : Restrict + DECL_ARTIFICIAL rejection test to VAR_DECL. + +2023-05-10 Marek Polacek + + PR c++/109680 + * method.cc (build_trait_object): New. + (assignable_expr): Use it. + (ref_xes_from_temporary): Likewise. + (is_convertible_helper): Likewise. Check FUNC_OR_METHOD_TYPE_P. + +2023-05-10 Jason Merrill + + * call.cc (convert_like_internal): Share ck_ref_bind handling + between all bad conversions. + +2023-05-10 Jason Merrill + + DR 2543 + * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve + TARGET_EXPR flags. + (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P. + * typeck2.cc (store_init_value): Diagnose constinit sooner. + +2023-05-10 Jason Merrill + + * constexpr.cc (cxx_eval_outermost_constant_expr): Always check + for address of immediate fn. + (maybe_constant_init_1): Evaluate PTRMEM_CST. + +2023-05-10 Jakub Jelinek + + PR c++/109756 + * parser.cc (cp_parser_std_attribute): For unknown attributes with + arguments set TREE_VALUE (attribute) to error_mark_node after skipping + the balanced tokens. + (cp_parser_std_attribute_list): If ... is used after attribute without + arguments, diagnose it and return error_mark_node. If + TREE_VALUE (attribute) is error_mark_node, don't call + make_pack_expansion nor return early error_mark_node. + +2023-05-09 Patrick Palka + + PR c++/109752 + * constraint.cc (satisfaction_cache::satisfaction_cache): In the + unexpected case of evaluating an atom for the first time noisily, + remove the cache slot that we inserted. + +2023-05-09 Patrick Palka + + PR c++/109761 + * parser.cc (cp_parser_class_specifier): Don't pass a class + context to noexcept_override_late_checks. + (noexcept_override_late_checks): Remove 'type' parameter + and use DECL_CONTEXT of 'fndecl' instead. + +2023-05-09 Jakub Jelinek + + PR c++/109756 + * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack + expansion of assume attribute. + +2023-05-08 Patrick Palka + + PR c++/106214 + PR c++/93107 + * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context + calls to happen before do_class_deduction. Add some + error_mark_node tests. + +2023-05-07 Patrick Palka + + PR c++/85979 + * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression) + : Consider ALIGNOF_EXPR_STD_P. + * error.cc (dump_expr) : Likewise. + +2023-05-07 Patrick Palka + + DR 2256 + PR c++/103091 + * decl.cc (decl_jump_unsafe): Return bool instead of int. + Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR. + (check_previous_goto_1): Simplify now that decl_jump_unsafe + returns bool instead of int. + (check_goto): Likewise. + +2023-05-07 Patrick Palka + + * pt.cc (instantiate_alias_template): Exit early upon + error from coerce_template_parms. Remove dependence test + guarding constraints_satisfied_p. + +2023-05-07 Patrick Palka + + * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via + TEMPLATE_TYPE_PARM_CHECK. + (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK. + (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via + TEMPLATE_TEMPLATE_PARM_CHECK. + * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier): + Guard PLACEHOLDER_TYPE_CONSTRAINTS access. + * error.cc (dump_type) : Use separate + variable to store CLASS_PLACEHOLDER_TEMPLATE result. + * pt.cc (outer_template_args): Use strip_innermost_template_args. + (any_type_dependent_arguments_p): Exit early if + !processing_template_decl. Use range-based for. + (any_dependent_template_arguments_p): Likewise. + +2023-05-07 Patrick Palka + + PR c++/98283 + * pt.cc (tsubst_copy_and_build) : Propagate + REF_PARENTHESIZED_P more generally via force_paren_expr. + * semantics.cc (force_paren_expr): Document default argument. + +2023-05-07 Patrick Palka + + PR c++/109651 + * pt.cc (coerce_template_args_for_ttp): Mention we can hit the + current_template_parms fallback when level-lowering a bound ttp. + (tsubst_template_decl): Add lambda_tparms parameter. Prefer to + use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS. + (tsubst_decl) : Pass NULL_TREE as lambda_tparms + to tsubst_template_decl. + (tsubst_lambda_expr): For a generic lambda, substitute + DECL_TEMPLATE_PARMS and set current_template_parms to it + before substituting the function type. Pass the substituted + DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl. + +2023-05-07 Patrick Palka + + PR c++/109480 + * semantics.cc (enforce_access): Check current_template_parms + instead of processing_template_decl when deciding whether to + defer the access check. + +2023-05-07 Patrick Palka + + PR c++/109480 + * constexpr.cc (potential_constant_expression_1) : + Reorganize to call get_fns sooner. Remove special handling of + the object argument of a non-static member function call. Remove + dead store to 'fun'. + +2023-05-05 Jason Merrill + + Revert: + 2023-04-27 Jason Merrill + + PR c++/61445 + * pt.cc (instantiate_decl): Assert !defer_ok for local + class members. + +2023-05-03 Jason Merrill + + PR c++/91618 + PR c++/109649 + * friend.cc (do_friend): Don't call check_explicit_specialization if + DECL_TEMPLATE_INFO is already set. + * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO. + * name-lookup.cc (set_decl_namespace): Likewise. + +2023-05-03 Jakub Jelinek + + * cp-gimplify.cc (cp_fold_data): Move definition earlier. + (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false + constructed data rather than &pset to cp_walk_tree with cp_fold_r. + +2023-05-03 Jason Merrill + + * pt.cc (reduce_template_parm_level): Fix comparison of + template template parm to cached version. + +2023-05-02 Jason Merrill + + * pt.cc (instantiate_class_template): Skip the RECORD_TYPE + of a class template. + (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE. + +2023-05-02 Jason Merrill + + * name-lookup.cc (pop_from_top_level): Don't + invalidate_class_lookup_cache. + +2023-05-02 Jason Merrill + + PR c++/109678 + * cp-tree.h (lookup_base): Add offset parm. + * constexpr.cc (cxx_fold_indirect_ref_1): Pass it. + * search.cc (struct lookup_base_data_s): Add offset. + (dfs_lookup_base): Handle it. + (lookup_base): Pass it. + +2023-05-02 Jason Merrill + + PR c++/109678 + * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first. + +2023-05-01 Jason Merrill + + PR c++/109666 + * name-lookup.cc (maybe_push_to_top_level) + (maybe_pop_from_top_level): Split out... + * pt.cc (instantiate_body): ...from here. + * init.cc (maybe_instantiate_nsdmi_init): Use them. + * name-lookup.h: Declare them.. + +2023-04-28 Eugene Rozenfeld + + * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries + +2023-04-27 Jason Merrill + + * call.cc (print_conversion_rejection): Use iloc_sentinel. + +2023-04-27 Jason Merrill + + PR c++/61445 + * pt.cc (instantiate_decl): Assert !defer_ok for local + class members. + +2023-04-26 Jason Merrill + + * init.cc (nsdmi_inst): Remove. + (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead. + +2023-04-26 Jason Merrill + + PR c++/109241 + * pt.cc (instantiate_class_template): Do partially instantiate. + (tsubst_expr): Do call complete_type for partial instantiations. + +2023-04-26 Jason Merrill + + PR c++/69836 + * pt.cc (regenerate_decl_from_template): Skip unique friends. + +2023-04-26 Patrick Palka + + * pt.cc (most_specialized_partial_spec): Exit early when + DECL_TEMPLATE_SPECIALIZATIONS is empty. Move local variable + declarations closer to their first use. Remove redundant + flag_concepts test. Remove redundant forward declaration. + +2023-04-25 Patrick Palka + + PR c++/108975 + * pt.cc (value_dependent_expression_p) : + Suppress conservative early exit for reference variables + when DECL_HAS_VALUE_EXPR_P. + +2023-04-25 Tobias Burnus + + * parser.cc (cp_parser_omp_scan_loop_body): Handle + zero exec statements before/after 'omp scan'. + +2023-04-24 Patrick Palka + + * cp-tree.h (cp_expr_location): Define here. + * tree.cc (cp_expr_location): Don't define here. + +2023-04-21 Jason Merrill + + PR c++/108099 + * decl.cc (grokdeclarator): Don't clear typedef_decl after 'unsigned + typedef' pedwarn. Use c_common_signed_or_unsigned_type. Also + handle 'signed typedef'. + +2023-04-21 Patrick Palka + + * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp. + : Use cp_unevaluated and WALK_SUBTREE. + : Likewise. + +2023-04-20 Patrick Palka + + * pt.cc (tsubst) : Don't recurse when + level lowering a cv-qualified type template parameter. Remove + recursive loop breaker in the level lowering case for constrained + autos. Use the TEMPLATE_PARM_DESCENDANTS cache in this case as + well. + +2023-04-20 Patrick Palka + + * constraint.cc (diagnose_trait_expr): Convert a TREE_VEC + of arguments into a TREE_LIST for sake of pretty printing. + * cxx-pretty-print.cc (pp_cxx_trait): Handle TREE_VEC + instead of TREE_LIST of trailing variadic trait arguments. + * method.cc (constructible_expr): Likewise. + (is_xible_helper): Likewise. + * parser.cc (cp_parser_trait): Represent trailing variadic trait + arguments as a TREE_VEC instead of TREE_LIST. + * pt.cc (value_dependent_expression_p): Handle TREE_VEC + instead of TREE_LIST of trailing variadic trait arguments. + * semantics.cc (finish_type_pack_element): Likewise. + (check_trait_type): Likewise. + +2023-04-20 Patrick Palka + + * tree.cc (strip_typedefs): Move TREE_LIST handling to + strip_typedefs_expr. Dispatch to strip_typedefs_expr for + non-type 't'. + : Remove manual dispatching to + strip_typedefs_expr. + : Likewise. + (strip_typedefs_expr): Replaces calls to strip_typedefs_expr + with strip_typedefs throughout. Don't dispatch to strip_typedefs + for type 't'. + : Replace this with the better version from + strip_typedefs. + +2023-04-19 Patrick Palka + Jonathan Wakely + + PR c++/100157 + * cp-trait.def (TYPE_PACK_ELEMENT): Define. + * cp-tree.h (finish_trait_type): Add complain parameter. + * cxx-pretty-print.cc (pp_cxx_trait): Handle + CPTK_TYPE_PACK_ELEMENT. + * parser.cc (cp_parser_constant_expression): Document default + arguments. + (cp_parser_trait): Handle CPTK_TYPE_PACK_ELEMENT. Pass + tf_warning_or_error to finish_trait_type. + * pt.cc (tsubst) : Handle non-type first + argument. Pass complain to finish_trait_type. + * semantics.cc (finish_type_pack_element): Define. + (finish_trait_type): Add complain parameter. Handle + CPTK_TYPE_PACK_ELEMENT. + * tree.cc (strip_typedefs): Handle non-type first argument. + Pass tf_warning_or_error to finish_trait_type. + * typeck.cc (structural_comptypes) : Use + cp_tree_equal instead of same_type_p for the first argument. + +2023-04-19 Patrick Palka + + PR c++/109556 + * pt.cc (try_class_unification): Don't ggc_free the copy of + 'targs'. + +2023-04-19 Jason Merrill + + PR c++/108099 + * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t. + +2023-04-17 Patrick Palka + + PR c++/109531 + * pt.cc (tsubst) : + In the level-lowering case just use lookup_template_class + to rebuild the bound ttp. + +2023-04-15 Jason Merrill + + PR c++/109357 + * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]: + Check for complex initializer. + +2023-04-13 Patrick Palka + + PR c++/109420 + * decl.cc (make_typename_type): Also ignore non-types during the + lookup if tag_type corresponds to an elaborated-type-specifier. + * pt.cc (tsubst) : Pass class_type or + enum_type as tag_type to make_typename_type accordingly instead + of always passing typename_type. + +2023-04-13 Jason Merrill + + PR c++/109277 + * semantics.cc (check_trait_type): Handle incomplete type directly. + * typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert. + +2023-04-13 Jason Merrill + + * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool. + * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust. + +2023-04-12 Jakub Jelinek + + * Make-lang.in (s-cp-module-version): New target. + (cp/module.o): Depend on it. + (MODULE_VERSION): Remove variable. + (CFLAGS-cp/module.o): For -DMODULE_VERSION= argument just + cat s-cp-module-version. + +2023-04-09 Iain Sandoe + + * coroutines.cc (coro_rewrite_function_body): Ensure that added + bind expressions have scope blocks. + +2023-04-04 Jason Merrill + + PR c++/107484 + * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE. + +2023-04-03 Patrick Palka + + PR c++/109300 + * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction + with no initializer, instead of asserting. + +2023-04-01 Patrick Palka + + PR c++/109160 + * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter. + * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to + do_auto_deduction. + (tsubst_decl) : Pass 'tmpl' instead of 't' as + 'in_decl' to coerce_template_parms. + (unify) : Pass TPARMS_PRIMARY_TEMPLATE + as 'tmpl' to do_auto_deduction. + (do_auto_deduction): Document default arguments. Rename local + variable 'tmpl' to 'ctmpl'. Use 'tmpl' to obtain a full set of + template arguments for satisfaction in the adc_unify case. + +2023-04-01 Patrick Palka + + PR c++/53164 + PR c++/105848 + * pt.cc (invalid_tparm_referent_p): Accept ADDR_EXPR of + FUNCTION_DECL. + (instantiate_class_template): Call mark_template_arguments_used. + (tsubst_copy_and_build) : Revert r13-995 change. + (mark_template_arguments_used): Define. + (instantiate_body): Call mark_template_arguments_used. + +2023-04-01 Iain Sandoe + + PR c++/101118 + * coroutines.cc (flatten_await_stmt): Use the current count of + promoted temporaries to build a unique name for the frame entries. + +2023-03-30 Jason Merrill + + PR c++/105452 + * search.cc (type_context_for_name_lookup): New. + (accessible_p): Handle anonymous union. + * init.cc (maybe_instantiate_nsdmi_init): Use + type_context_for_name_lookup. + * parser.cc (cp_parser_class_specifier): Likewise. + * cp-tree.h (type_context_for_name_lookup): Declare. + +2023-03-30 Jason Merrill + + PR c++/105221 + * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer + conversions. + +2023-03-30 Jakub Jelinek + + PR c++/109319 + * decl2.cc (grok_array_decl): After emitting a pedwarn for + -Wcomma-subscript, if processing_template_decl set orig_index_exp + to compound expr from orig_index_exp_list. + +2023-03-30 Jason Merrill + + PR c++/107897 + PR c++/108887 + * decl2.cc (record_mangling): Use symtab_node::reset. + +2023-03-30 Jakub Jelinek + + PR c++/109278 + * call.cc (convert_like_internal): If pedwarn for extended float + type conversions doesn't report anything, avoid calling + maybe_inform_about_fndecl_for_bogus_argument_init. + +2023-03-29 Jason Merrill + + PR c++/109321 + PR c++/109320 + * pt.cc (alias_ctad_tweaks): Rewrite deduced args. + (type_targs_deducible_from): Handle null pack deduction. + +2023-03-28 David Malcolm + + PR c/107002 + * parser.cc (cp_parser_binary_expression): Update for new param of + check_for_xor_used_as_pow. + +2023-03-28 Jakub Jelinek + + PR c++/109309 + * contracts.cc: Include intl.h. + (check_postcondition_result): Don't form diagnostics from two halves + of an English message to allow translations. + +2023-03-24 Patrick Palka + + PR c++/106969 + * parser.cc (cp_parser_class_specifier): Clear current_class_ptr + and current_class_ref sooner, before parsing a class definition. + +2023-03-24 Jason Merrill + + PR c++/105481 + * pt.cc (type_unification_real): Adjust for partial ordering. + +2023-03-23 Jason Merrill + + PR c++/105996 + * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization + and location wrappers. + +2023-03-23 Marek Polacek + + PR c++/107532 + * call.cc (class_has_reference_member_p): New. + (class_has_reference_member_p_r): New. + (reference_like_class_p): Don't look for a specific constructor. + Use a DFS walk with class_has_reference_member_p_r. + +2023-03-23 Jason Merrill + + PR c++/109241 + * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO. + +2023-03-22 Jason Merrill + + PR c++/108390 + * pt.cc (unify): Use fold of build_nop instead of fold_convert. + +2023-03-22 Jason Merrill + + PR c++/108795 + * semantics.cc (finish_id_expression_1): Check scope before + returning id_expression. + +2023-03-22 Alex Coplan + + PR c++/109177 + * call.cc (build_over_call): Use make_temp_override to suppress + both unavailable and deprecated warnings when calling + build_addr_func. + +2023-03-21 Jason Merrill + + PR c++/106890 + * init.cc (maybe_instantiate_nsdmi_init): Don't leave + current_function_decl set to a constructor. + +2023-03-20 Marek Polacek + + PR c++/109159 + * call.cc (add_template_candidate_real): Add explicit decls to the + set of candidates when the initializer is a braced-init-list. + +2023-03-20 Jakub Jelinek + + PR c++/109164 + * cp-tree.h (var_needs_tls_wrapper): Declare. + * decl2.cc (var_needs_tls_wrapper): No longer static. + * decl.cc (cp_finish_decl): Clear TREE_READONLY on TLS variables + for which a TLS wrapper will be needed. + +2023-03-17 Jason Merrill + + PR c++/108975 + * lambda.cc (prune_lambda_captures): Don't bother in a template. + +2023-03-17 Jason Merrill + + PR c++/109172 + * except.cc (build_throw): Check dtor access. + +2023-03-17 Jason Merrill + + PR c++/69410 + * friend.cc (do_friend): Handle namespace as scope argument. + * decl.cc (grokdeclarator): Pass down in_namespace. + +2023-03-16 Jason Merrill + + PR c++/105809 + * init.cc (get_nsdmi): Split out... + (maybe_instantiate_nsdmi_init): ...this function. + * cp-tree.h: Declare it. + * pt.cc (tsubst_expr): Use it. + +2023-03-16 Jason Merrill + + PR c++/108242 + * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation. + +2023-03-16 Jason Merrill + + PR c++/101869 + * semantics.cc (finish_qualified_id_expr): Don't try to build a + pointer-to-member if the scope is an enumeration. + +2023-03-16 Patrick Palka + + PR c++/109030 + * constexpr.cc (maybe_constant_init_1): For an unevaluated + non-manifestly-constant operand, don't constant evaluate + and instead call fold_to_constant as in maybe_constant_value. + +2023-03-16 Patrick Palka + + PR c++/100288 + * constraint.cc (satisfaction_cache::get): Relax overly strict + checking assert in the constraint recursion case. + +2023-03-16 Jason Merrill + + PR c++/105406 + * coroutines.cc (build_co_await): Handle lvalue 'o'. + +2023-03-15 Jason Merrill + + PR c++/103871 + PR c++/98056 + * typeck.cc (cp_build_modify_expr): Allow array initialization of + DECL_ARTIFICIAL variable. + +2023-03-15 Marek Polacek + + PR c++/107280 + * constexpr.cc (cxx_eval_store_expression): Strip location wrappers. + +2023-03-15 Jason Merrill + + PR c++/58538 + * semantics.cc (check_template_template_default_arg): Check + maybe_get_template_decl_from_type_decl. + +2023-03-15 Jason Merrill + + PR c++/108179 + PR c++/104107 + PR c++/95036 + * pt.cc (coerce_template_template_parms): Use args from + DECL_CONTEXT (arg_tmpl) instead of outer_args. + +2023-03-15 Jason Merrill + + PR c++/108179 + * pt.cc (coerce_template_template_parms): Take the arg and parm + templates directly. + (coerce_template_template_parm): Adjust. + (template_template_parm_bindings_ok_p): Adjust. + (convert_template_argument): Adjust. + +2023-03-14 Patrick Palka + + PR c++/96830 + * pt.cc (push_inline_template_parms_recursive): Set + TEMPLATE_PARMS_CONSTRAINTS. + (push_template_decl): For an out-of-line declaration, verify + constraints for each enclosing template scope match those of the + original template declaratation. + +2023-03-14 Patrick Palka + + PR c++/96830 + * pt.cc (redeclare_class_template): Add missing "of" in + constraint mismatch diagnostic. + (tsubst_friend_class): For an already declared class template, + substitute and pass the friend declaration's constraints to + redeclare_class_template instead of passing the existing + template's constraints. + +2023-03-14 Jason Merrill + + PR c++/108468 + * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE + is non-null. + +2023-03-14 Jason Merrill + + PR c++/107310 + * cp-gimplify.cc (genericize_if_stmt): Restore folding + of constant conditions. + +2023-03-14 Jakub Jelinek + + PR c++/109096 + * tree.cc (record_has_unique_obj_representations): Ignore unnamed + bitfields. + +2023-03-13 Jason Merrill + + PR c++/107128 + * parser.cc (cp_parser_set_decl_spec_type): Use + redefined_builtin_type for extended_float_type_p. + +2023-03-13 Marek Polacek + + PR c++/107532 + * call.cc (reference_like_class_p): Check for std::span. + +2023-03-10 Jakub Jelinek + + PR c++/107558 + * decl.cc (cp_finish_decl): Don't clear TREE_READONLY on + automatic non-aggregate variables just because of + -fmerge-all-constants. + +2023-03-10 Jakub Jelinek + + PR c++/109039 + * class.cc (end_of_class): For bit-fields, instead of computing + offset as sum of byte_position (field) and DECL_SIZE_UNIT (field), + compute it as sum of bit_position (field) and DECL_SIZE (field) + divided by BITS_PER_UNIT rounded up. + +2023-03-10 Jason Merrill + + PR c++/108972 + * lambda.cc (compare_lambda_template_head): Check more + for error_mark_node. + +2023-03-10 Jason Merrill + + PR c++/108566 + * mangle.cc (anon_aggr_naming_decl): New. + (write_unqualified_name): Use it. + +2023-03-10 Jakub Jelinek + + PR c/108079 + * decl.cc (poplevel): Suppress OPT_Wunused_variable warning + after diagnosing it. + +2023-03-10 Jason Merrill + + PR c++/108099 + * decl.cc (grokdeclarator): Handle non-typedef typedef_decl. + +2023-03-10 Jason Merrill + + PR c++/108542 + * class.cc (instantiate_type): Strip location wrapper. + +2023-03-09 Jason Merrill + + PR c++/108773 + * init.cc (find_allocator_temps_r): New. + (combine_allocator_temps): Replace find_allocator_temp. + (build_vec_init): Adjust. + +2023-03-09 Jason Merrill + + DR 2664 + PR c++/102529 + * pt.cc (alias_ctad_tweaks): Continue after deduction failure. + +2023-03-09 Jason Merrill + Michael Spertus + + PR c++/105841 + * pt.cc (corresponding_template_parameter_list): Split out... + (corresponding_template_parameter): ...from here. + (find_template_parameters): Factor out... + (find_template_parameter_info::find_in): ...this function. + (find_template_parameter_info::find_in_recursive): New. + (find_template_parameter_info::found): New. + (alias_ctad_tweaks): Only add parms used in the deduced args. + +2023-03-09 Jason Merrill + + * cp-trait.def (IS_DEDUCIBLE): Add space to name. + +2023-03-09 Jason Merrill + + PR c++/105841 + * cp-trait.def (IS_DEDUCIBLE): New. + * cxx-pretty-print.cc (pp_cxx_trait): Handle non-type. + * parser.cc (cp_parser_trait): Likewise. + * tree.cc (cp_tree_equal): Likewise. + * pt.cc (tsubst_copy_and_build): Likewise. + (type_targs_deducible_from): New. + (alias_ctad_tweaks): Use it. + * semantics.cc (trait_expr_value): Handle CPTK_IS_DEDUCIBLE. + (finish_trait_expr): Likewise. + * constraint.cc (diagnose_trait_expr): Likewise. + * cp-tree.h (type_targs_deducible_from): Declare. + +2023-03-07 Jason Merrill + + PR c++/108526 + PR c++/106651 + * pt.cc (tsubst_function_decl): Don't replace the closure + parameter if DECL_STATIC_FUNCTION_P. + +2023-03-07 Marek Polacek + + PR c++/107532 + * call.cc (reference_like_class_p): New. + (do_warn_dangling_reference): Add new bool parameter. See through + reference_like_class_p. + +2023-03-07 Jakub Jelinek + + PR c++/109042 + * rtti.cc (emit_support_tinfo_1): Don't assert that last + unemitted_tinfo_decls element is tinfo, instead pop from it only in + that case. + * decl2.cc (c_parse_final_cleanups): Don't call emit_tinfo_decl + for unemitted_tinfO_decls which have already non-NULL DECL_INITIAL. + +2023-03-07 Marek Polacek + + PR c++/109030 + * constexpr.cc (cxx_eval_call_expression): Relax assert. + +2023-03-07 Marek Polacek + + PR c++/107939 + * constexpr.cc (potential_constant_expression_1) : Pass + 'any' when recursing on a VAR_DECL and not a pointer to function. + +2023-03-04 Jakub Jelinek + + PR c++/108702 + * constexpr.cc: Include toplev.h. + (cxx_eval_constant_expression) : When seeing a local + static initialized by constant expression outside of a constexpr + function which has been deferred by make_rtl_for_nonlocal_decl, + call rest_of_decl_compilation on it. + +2023-03-03 Patrick Palka + + PR c++/108998 + * pt.cc (el_data::skipped_trees): New data member. + (extract_locals_r): Push to skipped_trees any unevaluated + contexts that we skipped over. + (extract_local_specs): For the second walk, start from each + tree in skipped_trees. + +2023-03-03 Alexandre Oliva + + * typeck.cc (cp_build_binary_op): Suppress redundant warning + for pfn null test in pmfn test with vbit-in-delta. + +2023-03-02 Jakub Jelinek + + PR target/108883 + * cp-tree.h (enum cp_tree_index): Remove CPTI_FALLBACK_DFLOAT*_TYPE + enumerators. + (fallback_dfloat32_type, fallback_dfloat64_type, + fallback_dfloat128_type): Remove. + * rtti.cc (emit_support_tinfo_1): If not emitted already, call + emit_tinfo_decl and remove from unemitted_tinfo_decls right away. + (emit_support_tinfos): Move &dfloat*_type_node from fundamentals array + into new fundamentals_with_fallback array. Call emit_support_tinfo_1 + on elements of that array too, with the difference that if + the type is NULL, use a fallback REAL_TYPE for it temporarily. + Drop the !targetm.decimal_float_supported_p () handling. Call + targetm.emit_support_tinfos at the end. + * mangle.cc (write_builtin_type): Remove references to + fallback_dfloat*_type. Handle bfloat16_type_node mangling. + +2023-03-02 Patrick Palka + + PR c++/108243 + PR c++/97553 + * cp-gimplify.cc (cp_fully_fold): Add an internal overload that + additionally takes and propagate an mce_value parameter, and + define the existing public overload in terms of it. + (cp_fully_fold_init): Pass mce_false to cp_fully_fold. + +2023-03-02 Patrick Palka + + PR c++/108243 + * constexpr.cc (maybe_constant_init_1): Override + manifestly_const_eval to true if is_static. + +2023-03-02 Jakub Jelinek + + PR debug/108716 + * cp-gimplify.cc (cp_genericize_r) : Set + DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location + of USING_STMT or input_location. + +2023-03-02 Marek Polacek + + PR c++/106259 + * parser.cc (class_decl_loc_t::diag_mismatched_tags): If the first + lookup of SPEC didn't find anything, try to look for + most_general_template. + +2023-03-02 Jakub Jelinek + + PR c++/105839 + * parser.cc (cp_convert_omp_range_for): Allow in assert + decomp_first_name without DECL_HAS_VALUE_EXPR_P if it has + error_mark_node type. + (cp_finish_omp_range_for): Don't set DECL_HAS_VALUE_EXPR_P back + on decls which have error_mark_node type. + +2023-03-01 Marek Polacek + + PR c++/107574 + * constexpr.cc (cxx_eval_constant_expression): Emit an error when + a PTRMEM_CST cannot be evaluated. + +2023-03-01 Patrick Palka + + * pt.cc (tsubst_scope): Define. + (tsubst_decl) : Call tsubst_scope instead of + calling tsubst_scope with tf_qualifying_scope set. + (tsubst_qualified_id): Call tsubst_scope instead of + calling tsubst with tf_qualifying_scope set. + (tsubst_copy): Immediately delegate to tsubst for all TYPE_P + trees. Remove tf_qualifying_scope manipulation. + : Call tsubst_scope instead of calling + tsubst with tf_qualifying_scope set. + +2023-03-01 Patrick Palka + Jason Merrill + + PR c++/108219 + PR c++/108218 + * constexpr.cc (fold_to_constant): Define. + (maybe_constant_value): Move up early exit test for unevaluated + operands. Try reducing an unevaluated operand to a constant via + fold_to_constant. + (fold_non_dependent_expr_template): Add early exit test for + CONSTANT_CLASS_P nodes. Try reducing an unevaluated operand + to a constant via fold_to_constant. + * cp-tree.h (fold_to_constant): Declare. + +2023-03-01 Jakub Jelinek + + PR c++/108606 + * constexpr.cc (potential_constant_expression_1) : + Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise + just return true. + +2023-02-28 Patrick Palka + + PR c++/108848 + * pt.cc (finish_template_variable): Move dependence check + to here from ... + (lookup_and_finish_template_variable): ... here. + * semantics.cc (finish_id_expression_1): Call + finish_template_variable sooner, before (and regardless of) the + type_dependent_expression_p test. + +2023-02-28 Marek Polacek + + PR c++/108550 + * pt.cc (lookup_and_finish_template_variable): Clear tf_partial. + +2023-02-20 Marek Polacek + + PR c++/101073 + * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial + constructor/op= with a checking assert. + +2023-02-20 Marek Polacek + + PR c++/108829 + * pt.cc (prepend_one_capture): Set LAMBDA_CAPTURE_EXPLICIT_P. + (tsubst_lambda_expr): Pass LAMBDA_CAPTURE_EXPLICIT_P to + prepend_one_capture. + +2023-02-18 Jason Merrill + + DR 2518 + PR c++/52809 + PR c++/53638 + PR c++/87389 + PR c++/89741 + PR c++/92099 + PR c++/104041 + PR c++/104691 + * semantics.cc (finish_static_assert): Don't diagnose in + template context. + +2023-02-17 Patrick Palka + + PR c++/108243 + PR c++/97553 + * cp-gimplify.cc (enum fold_flags): Define. + (fold_flags_t): Declare. + (cp_fold_data::genericize): Replace this data member with ... + (cp_fold_data::fold_flags): ... this. + (cp_fold_r): Adjust use of cp_fold_data and calls to cp_fold. + (cp_fold_function): Likewise. + (cp_fold_maybe_rvalue): Add an internal overload that + additionally takes and propagates a fold_flags_t parameter, and + define the existing public overload in terms of it. + (cp_fold_rvalue): Likewise. + (cp_fully_fold_init): Adjust use of cp_fold_data. + (fold_cache): Replace with ... + (fold_caches): ... this 2-element array of caches. + (get_fold_cache): Define. + (clear_fold_cache): Adjust. + (cp_fold): Add fold_flags_t parameter. Use get_fold_cache. + Pass flags to calls to cp_fold, cp_fold_rvalue and + cp_fold_maybe_rvalue. + : If ff_mce_false is set, fold + __builtin_is_constant_evaluated to false and pass mce_false to + maybe_constant_value. + +2023-02-17 Patrick Palka + + * constexpr.cc (constexpr_call::manifestly_const_eval): Give + it type int instead of bool. + (constexpr_ctx::manifestly_const_eval): Give it type mce_value + instead of bool. + (cxx_eval_builtin_function_call): Adjust after making + manifestly_const_eval tri-state. + (cxx_eval_call_expression): Likewise. + (cxx_eval_binary_expression): Likewise. + (cxx_eval_conditional_expression): Likewise. + (cxx_eval_constant_expression): Likewise. + (cxx_eval_outermost_constant_expr): Likewise. + (cxx_constant_value): Likewise. + (cxx_constant_dtor): Likewise. + (maybe_constant_value): Give manifestly_const_eval parameter + type mce_value instead of bool and adjust accordingly. + (fold_non_dependent_expr_template): Adjust call + to cxx_eval_outermost_constant_expr. + (fold_non_dependent_expr): Likewise. + (maybe_constant_init_1): Likewise. + * constraint.cc (satisfy_atom): Adjust call to + maybe_constant_value. + * cp-tree.h (enum class mce_value): Define. + (maybe_constant_value): Adjust manifestly_const_eval parameter + type and default argument. + * decl.cc (compute_array_index_type_loc): Adjust call to + maybe_constant_value. + * pt.cc (convert_nontype_argument): Likewise. + +2023-02-16 Patrick Palka + + PR c++/107773 + * cp-tree.h (enum tsubst_flags): New flag tf_qualifying_scope. + * decl.cc (make_typename_type): Use lookup_member instead of + lookup_field. If tf_qualifying_scope is set, pass want_type=true + instead of =false to lookup_member. Generalize format specifier + in diagnostic to handle both type and non-type bindings. + * pt.cc (tsubst_aggr_type_1): Clear tf_qualifying_scope. Tidy + the function. + (tsubst_decl) : Set tf_qualifying_scope when + substituting USING_DECL_SCOPE. + (tsubst): Clear tf_qualifying_scope right away and remember if + it was set. Do the same for tf_tst_ok sooner. + : Set tf_qualifying_scope when substituting + TYPE_CONTEXT. Pass tf_qualifying_scope to make_typename_type + if it was set. + (tsubst_qualified_id): Set tf_qualifying_scope when substituting + the scope. + (tsubst_copy): Clear tf_qualifying_scope and remember if it was + set. + : Set tf_qualifying_scope when substituting the + scope. + : Pass tf_qualifying_scope to tsubst if it was set. + * search.cc (lookup_member): Document default argument. + +2023-02-16 Patrick Palka + + * cp-tree.h: Mechanically drop static from static inline + functions via s/^static inline/inline/g. + +2023-02-15 Marek Polacek + + PR c++/106675 + * call.cc (joust_maybe_elide_copy): Return false for ck_ambig. + +2023-02-10 Marek Polacek + + PR c++/107079 + * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init. + +2023-02-09 Tobias Burnus + + * parser.cc (cp_parser_omp_allocate): Parse align + clause and check for restrictions. + +2023-02-09 Jakub Jelinek + + PR c++/108698 + * mangle.cc (write_expression, write_template_arg): Handle + EXCESS_PRECISION_EXPR with REAL_CST operand as + write_template_arg_literal on fold_convert of the REAL_CST + to EXCESS_PRECISION_EXPR type. + +2023-02-06 Patrick Palka + + PR c++/107461 + * cp-tree.h (call_expr_dependent_name): Declare. + * pt.cc (iterative_hash_template_arg) : Use + call_expr_dependent_name instead of dependent_name. + * tree.cc (call_expr_dependent_name): Define. + (called_fns_equal): Adjust to take two CALL_EXPRs instead of + CALL_EXPR_FNs thereof. Use call_expr_dependent_name instead + of dependent_name. + (cp_tree_equal) : Adjust call to called_fns_equal. + +2023-02-03 Marek Polacek + + PR c++/108158 + * constexpr.cc (cxx_eval_array_reference): Don't replace + new_ctx.object. + +2023-02-03 Patrick Palka + + PR c++/107461 + * semantics.cc (finish_call_expr): Strip ADDR_EXPR from + the selected callee during overload set pruning. + +2023-02-03 Patrick Palka + + PR c++/96745 + * class.cc (check_methods): Diagnose an unviable OVERLOAD + set for CLASSTYPE_DESTRUCTOR differently from an ambiguous one. + Then prune the OVERLOAD to a single function. + (check_bases_and_members): Handle CLASSTYPE_DESTRUCTOR being + an OVERLOAD when calling deduce_noexcept_on_destructor. + Document why it has to be called before check_methods. + +2023-02-03 Patrick Palka + + PR c++/108579 + * class.cc (check_methods): Swap order of constraints_satisfied_p + and copy/move_fn_p tests. + +2023-02-01 Marek Polacek + + PR c++/107755 + * call.cc (build_new_op): Don't call warn_logical_operator when + processing a template. + +2023-02-01 Jakub Jelinek + + PR c++/108607 + * constexpr.cc (cxx_eval_constant_expression): Handle OMP_* + and OACC_* constructs as non-constant. + (potential_constant_expression_1): Handle OMP_SCAN and OMP_SCOPE. + +2023-02-01 Jason Merrill + + * class.cc (note_name_declared_in_class): Change from permerror to + -Wchanges-meaning pedwarn, forcing -pedantic-errors for most cases. + +2023-01-31 Jason Merrill + + PR c++/108559 + * cp-gimplify.cc (any_non_eliding_target_exprs): New. + (cp_genericize_init): Check it. + +2023-01-31 Marek Polacek + + PR c++/107593 + PR c++/108597 + * cp-tree.h (instantiation_dependent_expression_p): Don't + declare here. + +2023-01-26 Marek Polacek + + PR c++/105300 + * parser.cc: Remove unnecessary forward declarations. + (cp_parser_string_literal): New wrapper. + (cp_parser_string_literal_common): Renamed from + cp_parser_string_literal. Add a bool parameter. Give an error when + UDLs are not permitted. + (cp_parser_userdef_string_literal): New wrapper. + (finish_userdef_string_literal): Renamed from + cp_parser_userdef_string_literal. + (cp_parser_primary_expression): Call cp_parser_userdef_string_literal + instead of cp_parser_string_literal. + (cp_parser_linkage_specification): Move a variable declaration closer + to its first use. + (cp_parser_static_assert): Likewise. + (cp_parser_operator): Call cp_parser_userdef_string_literal instead of + cp_parser_string_literal. + (cp_parser_asm_definition): Move a variable declaration closer to its + first use. + (cp_parser_asm_specification_opt): Move variable declarations closer to + their first use. + (cp_parser_asm_operand_list): Likewise. + (cp_parser_asm_clobber_list): Likewise. + +2023-01-26 Jakub Jelinek + + PR c++/108503 + * parser.cc (cp_convert_omp_range_for): If cp_finish_decomp has been + called in !processing_template_decl with processing_template_decl + temporarily set, clear DECL_HAS_VALUE_EXPR_P on the vars temporarily. + (cp_finish_omp_range_for): And set it back again here. + +2023-01-25 Jakub Jelinek + + PR c++/108525 + * mangle.cc (write_closure_type_name): Don't assume all + lambda operator() fns are methods. + +2023-01-24 Jason Merrill + + PR c++/108504 + * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first + token, too. + +2023-01-24 Jason Merrill + + PR c++/108526 + * pt.cc (tsubst_function_decl): Handle static lambda. + +2023-01-24 Jakub Jelinek + + PR c++/108474 + * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes. + +2023-01-24 Jason Merrill + + PR c++/107303 + PR c++/107329 + * cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: In case of double + TARGET_EXPR, keep the outer one instead of the inner one. + (maybe_replace_decl): New. + +2023-01-23 Jason Merrill + + PR c++/107267 + * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision + of trivial types. + +2023-01-23 Marek Polacek + + PR c++/107797 + * cvt.cc (ocp_convert): copy_warning when creating a new + COMPOUND_EXPR. + * init.cc (build_new_1): Suppress -Wunused-value on + compiler-generated COMPOUND_EXPRs. + +2023-01-23 Jason Merrill + + PR c++/108195 + * call.cc (build_user_type_conversion_1): Check whether the + iterators also find a list ctor. + +2023-01-23 Jason Merrill + + PR c++/108496 + * decl.cc (grokdeclarator): Check whether DECL_RESULT is already + set. + +2023-01-23 Jason Merrill + + PR c++/53288 + DR 1299 + * call.cc (extend_ref_init_temps_1): Handle ptrmem expression. + +2023-01-19 Jakub Jelinek + + PR c++/108437 + * cp-tree.h (keep_unused_object_arg): Declare. + * call.cc (keep_unused_object_arg): No longer static. + * tree.cc (build_min_non_dep_op_overload): Handle ARRAY_REF + with overload being static member function. + +2023-01-19 Jakub Jelinek + + PR c++/53932 + * cp-gimplify.cc (cp_fold_r): During cp_fully_fold_init replace + DECL_ANON_UNION_VAR_P VAR_DECLs with their corresponding + DECL_VALUE_EXPR. + +2023-01-16 Jakub Jelinek + + PR c++/105593 + * decl.cc (cp_finish_decl): Check warning_enabled_at + at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead + of warn_init_self. + +2023-01-14 Jakub Jelinek + + PR c++/108365 + * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral + division or modulo. + +2023-01-13 Jakub Jelinek + + PR c++/108285 + * cvt.cc (cp_convert_and_check): For EXCESS_PRECISION_EXPR + use its operand except that for warning purposes use the original + EXCESS_PRECISION_EXPR. + * call.cc (convert_like_internal): Only look through + EXCESS_PRECISION_EXPR when calling cp_convert, not when calling + cp_convert_and_check. + +2023-01-09 Jakub Jelinek + + PR c++/105838 + PR c++/108047 + PR c++/108266 + * call.cc (maybe_init_list_as_range): Always return NULL_TREE if + processing_template_decl. + +2023-01-05 Patrick Palka + + PR c++/108275 + * parser.cc (cp_parser_class_head): Use dk_deferred instead of + dk_no_check when parsing the class name. + +2023-01-05 Jakub Jelinek + + PR c++/108286 + * semantics.cc (finish_omp_target_clauses): Ignore clauses other than + OMP_CLAUSE_MAP. + +2023-01-04 Patrick Palka + + PR c++/108282 + * decl2.cc (mark_single_function): Ignore mark_used failure + only in a non-SFINAE context rather than in a SFINAE one. + +2023-01-04 Jakub Jelinek + + PR c++/108206 + * decl.cc (merge_default_template_args): Return false if either + new_parm or old_parm are erroneous. + + +Copyright (C) 2023 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. -- cgit v1.1