aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2024-01-03 11:28:42 +0100
committerJakub Jelinek <jakub@redhat.com>2024-01-03 11:29:39 +0100
commit8c22aed4b09ce6ffa7bd669377355e38f04614d6 (patch)
tree6e874a9e0a340c9513d966f6e6185b9952cec95a /gcc/cp
parent87acfc36194e3101b8ebcc599a78e2481224922d (diff)
downloadgcc-8c22aed4b09ce6ffa7bd669377355e38f04614d6.zip
gcc-8c22aed4b09ce6ffa7bd669377355e38f04614d6.tar.gz
gcc-8c22aed4b09ce6ffa7bd669377355e38f04614d6.tar.bz2
Rotate ChangeLog files.
Rotate ChangeLog files for ChangeLogs with yearly cadence.
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog4093
-rw-r--r--gcc/cp/ChangeLog-20234097
2 files changed, 4098 insertions, 4092 deletions
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 <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/84542
- * decl.cc (merge_attribute_bits): Merge TREE_DEPRECATED
- and TREE_UNAVAILABLE.
-
-2023-12-21 Patrick Palka <ppalka@redhat.com>
-
- 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 <jakub@redhat.com>
-
- * 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 <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/113088
- PR c++/33799
- * except.cc (maybe_splice_retval_cleanup): Handle an empty block.
-
-2023-12-20 Jason Merrill <jason@redhat.com>
-
- PR c++/103185
- * typeck.cc (cp_build_array_ref): Handle swapped operands.
-
-2023-12-19 Patrick Palka <ppalka@redhat.com>
-
- PR c++/113063
- * method.cc (synthesize_method): Use maybe_push_to_top_level
- and maybe_pop_from_top_level.
-
-2023-12-19 Patrick Palka <ppalka@redhat.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- 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 <sandra@codesourcery.com>
-
- * 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 <sandra@codesourcery.com>
-
- * parser.cc (cp_parser_omp_context_selector): Adjust for new
- namelist property representation.
- * pt.cc (tsubst_attribute): Likewise.
-
-2023-12-19 Sandra Loosemore <sandra@codesourcery.com>
-
- * 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 <ppalka@redhat.com>
-
- 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) <case tcc_type>: 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) <case TREE_VEC>: Adjust call to
- comp_template_args.
-
-2023-12-19 Patrick Palka <ppalka@redhat.com>
-
- 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 <thomas@codesourcery.com>
-
- 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 <nathanieloshead@gmail.com>
-
- PR c++/106363
- * module.cc (module_state::write_cluster): Don't skip first
- depset for bindings.
-
-2023-12-16 Nathaniel Shead <nathanieloshead@gmail.com>
-
- PR c++/113031
- * constexpr.cc (cxx_fold_indirect_ref_1): Check for CLASS_TYPE
- before using CLASSTYPE_AS_BASE.
-
-2023-12-16 Andrew Carlotti <andrew.carlotti@arm.com>
-
- * decl2.cc (check_classfn): Update comment to include
- target_version attributes.
-
-2023-12-15 Patrick Palka <ppalka@redhat.com>
-
- PR c++/70435
- PR c++/88061
- * pt.cc (tsubst_function_decl): Propagate DECL_SECTION_NAME
- via set_decl_section_name.
- (tsubst_decl) <case VAR_DECL>: Likewise.
-
-2023-12-15 Patrick Palka <ppalka@redhat.com>
-
- PR c++/109715
- * mangle.cc (get_abi_tags): Strip TEMPLATE_DECL before looking
- up the abi_tag attribute.
-
-2023-12-14 Marek Polacek <polacek@redhat.com>
-
- 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 <polacek@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * 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 <jakub@redhat.com>
-
- PR c++/112968
- * pt.cc (freelist<tree_node>::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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/99186
- PR c++/104867
- * pt.cc (unify) <case INTEGER_CST>: Compare types as well.
-
-2023-12-13 Patrick Palka <ppalka@redhat.com>
-
- PR c++/93740
- * pt.cc (unify) <case FUNCTION_DECL>: Handle it like FIELD_DECL
- and TEMPLATE_DECL.
-
-2023-12-13 Jason Merrill <jason@redhat.com>
-
- * 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 <julian@codesourcery.com>
-
- * 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 <julian@codesourcery.com>
-
- * semantics.cc (finish_omp_clause): Add braces and reindent
- OMP_CLAUSE_TO/OMP_CLAUSE_FROM/OMP_CLAUSE__CACHE_ stanza.
-
-2023-12-13 Jason Merrill <jason@redhat.com>
-
- PR c++/96997
- * tree.cc (bot_manip): Check data.clear_location for TARGET_EXPR.
-
-2023-12-13 Nathaniel Shead <nathanieloshead@gmail.com>
-
- 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 <jason@redhat.com>
-
- * constexpr.cc (cxx_eval_call_expression): Handle missing in-charge
- argument.
-
-2023-12-13 Jason Merrill <jason@redhat.com>
-
- PR c++/108243
- * constexpr.cc (cxx_eval_outermost_constant_expr): Turn
- a constructor CALL_EXPR into a TARGET_EXPR.
-
-2023-12-13 Jason Merrill <jason@redhat.com>
-
- * tree.cc (build_aggr_init_expr): Copy EXPR_LOCATION.
-
-2023-12-12 Jason Merrill <jason@redhat.com>
- Jason Xu <rxu@DRWHoldings.com>
-
- * class.cc (propagate_class_warmth_attribute): Handle
- member templates.
-
-2023-12-12 Jason Merrill <jason@redhat.com>
- Nathaniel Shead <nathanieloshead@gmail.com>
-
- * 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 <ppalka@redhat.com>
-
- * pt.cc (alias_ctad_tweaks): Pass use_spec_table=false to
- tsubst_decl.
-
-2023-12-11 Tobias Burnus <tobias@codesourcery.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- 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 <nathanieloshead@gmail.com>
-
- PR c++/104234
- PR c++/112580
- * pt.cc (tsubst_template_decl): Clear
- DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P.
-
-2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org>
-
- * cp-trait.def: Define __remove_pointer.
- * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_POINTER.
-
-2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <jason@redhat.com>
-
- * parser.cc (cp_parser_simple_type_specifier): Move trait
- handling to default label.
-
-2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org>
-
- * 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 <kmatsui@gcc.gnu.org>
- Patrick Palka <ppalka@redhat.com>
-
- * 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 <kmatsui@gcc.gnu.org>
-
- * 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 <jakub@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- 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 <jakub@redhat.com>
-
- * 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 <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <dmalcolm@redhat.com>
-
- * 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 <jason@redhat.com>
-
- DR 532
- PR c++/53499
- * pt.cc (more_specialized_fn): Fix object parameter handling.
-
-2023-12-05 Jakub Jelinek <jakub@redhat.com>
-
- 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) <case ANNOTATE_EXPR>: Likewise.
- (tsubst_stmt) <case RANGE_FOR_STMT>: Likwsie.
-
-2023-12-05 Richard Sandiford <richard.sandiford@arm.com>
-
- * tree.cc (cxx_gnu_attribute_table): Add extra braces to work
- around PR 16333 in older compilers.
-
-2023-12-05 Jakub Jelinek <jakub@redhat.com>
-
- 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 <polacek@redhat.com>
-
- 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) <case CALL_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.
- <case CALL_EXPR>: 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 <jason@redhat.com>
-
- * constexpr.cc (potential_constant_expression_1): Fix
- check for loading volatile lvalue.
-
-2023-12-04 Jakub Jelinek <jakub@redhat.com>
-
- 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) <case RANGE_FOR_STMT>: Change UNROLL type from
- unsigned short to tree and set it to RECUR on RANGE_FOR_UNROLL (t).
- (tsubst_expr) <case ANNOTATE_EXPR>: For annot_expr_unroll_kind repeat
- checks on UNROLL value from cp_parser_pragma_unroll.
-
-2023-12-02 Richard Sandiford <richard.sandiford@arm.com>
-
- * 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 <jason@redhat.com>
-
- * mangle.cc (write_type): Mangle placeholder as its template.
-
-2023-12-01 Jason Merrill <jason@redhat.com>
-
- * 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 <jason@redhat.com>
-
- * semantics.cc (finish_non_static_data_member)
- (finish_decltype_type, capture_decltype):
- Handle deduced closure parameter.
-
-2023-11-30 Marek Polacek <polacek@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 ___.<number>
- names of members.
- (add_capture): Add NAME_INDEPENDENT_CNT argument. Use ___.<number>
- 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 <oliva@adacore.com>
-
- * decl.cc (finish_enum_value_list): Set TYPE_PACKED if
- use_short_enum, and propagate it to variants.
-
-2023-11-30 Jason Merrill <jason@redhat.com>
-
- * 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 <polacek@redhat.com>
-
- PR c++/106650
- * constexpr.cc (cxx_eval_constant_expression) <case PARM_DECL>: Allow
- reference to unknown/this as per P2280.
- <case VAR_DECL>: Allow reference to unknown as per P2280.
-
-2023-11-29 Patrick Palka <ppalka@redhat.com>
-
- PR c++/112765
- * pt.cc (tsubst_expr) <case MODOP_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 <jakub@redhat.com>
-
- * semantics.cc (finish_static_assert): Free buf on error return.
-
-2023-11-29 Alexandre Oliva <oliva@adacore.com>
-
- * 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 <oliva@adacore.com>
-
- * contracts.cc (check_postcondition_result): Cope with
- cdtor_return_this.
-
-2023-11-28 Jason Merrill <jason@redhat.com>
-
- 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 <jakub@redhat.com>
-
- * 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 <alex.coplan@arm.com>
- Iain Sandoe <iain@sandoe.co.uk>
-
- 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 <nathanieloshead@gmail.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- PR c++/102341
- * decl.cc (duplicate_decls): Allow exporting a redeclaration of
- a typedef.
-
-2023-11-24 Tobias Burnus <tobias@codesourcery.com>
-
- * 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 <tobias@codesourcery.com>
-
- * parser.cc (cp_parser_omp_depobj): Accept optionally an argument
- to the destroy clause.
-
-2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com>
-
- PR c++/99232
- * decl.cc (grokvardecl): Don't mark variables attached to
- modules as internal.
-
-2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com>
-
- 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 <nathanieloshead@gmail.com>
-
- 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 <jakub@redhat.com>
-
- 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) <case STATIC_ASSERT>: 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 <ppalka@redhat.com>
-
- PR c++/112633
- * pt.cc (tsubst_aggr_type): Handle empty TYPE_TEMPLATE_INFO
- in the entering_scope adjustment.
-
-2023-11-22 Jason Merrill <jason@redhat.com>
-
- * decl.cc (start_preparsed_function): Clarify ctype logic.
-
-2023-11-20 Marc Poulhiès <dkm@kataplop.net>
-
- * lambda.cc (compare_lambda_sig): Fix typo in variadic.
-
-2023-11-20 Jason Merrill <jason@redhat.com>
-
- * pt.cc (comp_template_parms): Just one level.
- (template_parameter_lists_equivalent_p): Likewise.
-
-2023-11-20 Jason Merrill <jason@redhat.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- 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 <dmalcolm@redhat.com>
-
- * mapper-client.cc: Include "rich-location.h".
-
-2023-11-16 Jakub Jelinek <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/111703
- PR c++/107939
- * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
- Fix FUNCTION_POINTER_TYPE_P test.
-
-2023-11-16 Marek Polacek <polacek@redhat.com>
-
- 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 <aldot@gcc.gnu.org>
-
- * tree.cc (build_cplus_array_type): Revert using the macro
- CAN_HAVE_LOCATION_P.
-
-2023-11-15 Patrick Palka <ppalka@redhat.com>
-
- PR c++/112515
- * decl.cc (is_direct_enum_init): Check type-dependence of the
- single element.
-
-2023-11-15 Patrick Palka <ppalka@redhat.com>
-
- PR c++/101043
- * tree.cc (strip_typedefs_expr) <case TREE_LIST>: Handle
- non-empty TREE_PURPOSE.
-
-2023-11-15 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/111703
- PR c++/112269
- * constexpr.cc (potential_constant_expression_1) <case VAR_DECL>:
- Only consider var_in_maybe_constexpr_fn if 'now' is false.
- <case INDIRECT_REF>: Likewise.
-
-2023-11-15 Jakub Jelinek <jakub@redhat.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- 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 <nathanieloshead@gmail.com>
-
- PR c++/106849
- * name-lookup.cc (do_nonmember_using_decl): Handle
- TEMPLATE_DECLs when checking module attachment.
-
-2023-11-14 David Malcolm <dmalcolm@redhat.com>
-
- * decl.cc (finish_function): Update call to
- global_dc->m_option_enabled to use option_enabled_p.
-
-2023-11-14 David Malcolm <dmalcolm@redhat.com>
-
- * contracts.cc (build_comment): Use global_dc's file_cache.
-
-2023-11-14 Jonathan Wakely <jwakely@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <kcy@codesourcery.com>
-
- * 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 <jakub@redhat.com>
-
- * 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 <dmalcolm@redhat.com>
-
- * 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 <jason@redhat.com>
-
- * semantics.cc (nrv_data): Change visited to hash_set.
- (finalize_nrv_r): Reorganize.
-
-2023-11-02 Jason Merrill <jason@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <dmalcolm@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * 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 <lhyatt@gmail.com>
-
- 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 <hongtao.liu@intel.com>
-
- * typeck.cc (build_vec_cmp): Pass type of arg0 to
- truth_type_for.
-
-2023-10-25 Jason Merrill <jason@redhat.com>
-
- * cp-tree.def: Improve OFFSET_REF comment.
- * cp-gimplify.cc (cp_fold_immediate): Add to comment.
-
-2023-10-25 Thomas Schwinge <thomas@codesourcery.com>
-
- * 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 <cltang@codesourcery.com>
-
- * 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 <polacek@redhat.com>
-
- PR c++/111895
- * typeck.cc (build_static_cast_1): Call decay_conversion.
-
-2023-10-24 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/111919
- * tree.cc (cp_stabilize_reference): Do nothing when
- processing_template_decl.
-
-2023-10-22 Patrick Palka <ppalka@redhat.com>
-
- PR objc++/111920
- * pt.cc (tsubst_expr) <case AT_ENCODE_EXPR>: Use tsubst instead
- of tsubst_expr.
-
-2023-10-20 Jason Merrill <jason@redhat.com>
-
- * call.cc (implicit_conversion_1): Rename...
- (implicit_conversion): ...to this. Remove the old wrapper.
-
-2023-10-20 Jason Merrill <jason@redhat.com>
-
- * call.cc (tourney): Only skip champ_compared_to_predecessor.
-
-2023-10-20 Nathan Sidwell <nathan@acm.org>
-
- 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 <ppalka@redhat.com>
-
- * 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.
- <case CO_YIELD_EXPR, CO_AWAIT_EXPR>: 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.
- <case TRANSACTION_EXPR>: 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 <ppalka@redhat.com>
-
- * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup.
- * pt.cc (tsubst_pack_expansion): Use tsubst for substituting
- BASES_TYPE.
- (tsubst_decl) <case USING_DECL>: Use tsubst_name instead of
- tsubst_copy.
- (tsubst) <case TEMPLATE_TYPE_PARM>: Use tsubst_copy_and_build
- instead of tsubst_copy for substituting
- CLASS_PLACEHOLDER_TEMPLATE.
- <case TYPENAME_TYPE>: 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.
- <case IDENTIFIER_NODE>: Don't do name lookup if tf_no_name_lookup
- was set.
- <case TEMPLATE_ID_EXPR>: 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.
- <case BIT_NOT_EXPR>: Handle identifier and type operand (if
- tf_no_name_lookup was set).
- <case SCOPE_REF>: 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.
- <case SIZEOF_EXPR>: Handling of sizeof... copied from tsubst_copy.
- <case CALL_EXPR>: Use tsubst_name instead of tsubst_copy to
- substitute a TEMPLATE_ID_EXPR callee naming an unresolved template.
- <case COMPONENT_REF>: Likewise to substitute the member.
- <case FUNCTION_DECL>: Copied from tsubst_copy and merged with ...
- <case VAR_DECL, PARM_DECL>: ... these. Initial handling copied
- from tsubst_copy. Optimize local variable substitution by
- trying retrieve_local_specialization before checking
- uses_template_parms.
- <case CONST_DECL>: Copied from tsubst_copy.
- <case FIELD_DECL>: Likewise.
- <case NAMESPACE_DECL>: Likewise.
- <case OVERLOAD>: Likewise.
- <case TEMPLATE_DECL>: Likewise.
- <case TEMPLATE_PARM_INDEX>: Likewise.
- <case TYPE_DECL>: Likewise.
- <case CLEANUP_POINT_EXPR>: Likewise.
- <case OFFSET_REF>: Likewise.
- <case EXPR_PACK_EXPANSION>: Likewise.
- <case NONTYPE_ARGUMENT_PACK>: Likewise.
- <case *_CST>: Likewise.
- <case *_*_FOLD_EXPR>: Likewise.
- <case DEBUG_BEGIN_STMT>: Likewise.
- <case CO_AWAIT_EXPR>: Likewise.
- <case TRAIT_EXPR>: Use tsubst and tsubst_copy_and_build instead
- of tsubst_copy.
- <default>: Copied from tsubst_copy.
- (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build
- instead of tsubst_copy.
-
-2023-10-20 Patrick Palka <ppalka@redhat.com>
-
- 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) <case CALL_EXPR>: 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * 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) <case TRUTH_NOT_EXPR>: Don't fold inside a
- template.
-
-2023-10-20 Alexandre Oliva <oliva@adacore.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- 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 <nathanieloshead@gmail.com>
-
- * 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 <polacek@redhat.com>
-
- * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value.
-
-2023-10-19 Jason Merrill <jason@redhat.com>
-
- * typeck2.cc (check_narrowing): Adjust.
-
-2023-10-19 Jason Merrill <jason@redhat.com>
-
- * parser.cc (cp_parser_primary_expression): Use G_.
- (cp_parser_using_enum): Likewise.
- * decl.cc (identify_goto): Likewise.
-
-2023-10-18 Jason Merrill <jason@redhat.com>
-
- * typeck2.cc (check_narrowing): Use permerror.
-
-2023-10-17 Marek Polacek <polacek@redhat.com>
-
- PR c++/111840
- * parser.cc (cp_parser_simple_declaration): Do cp_parser_error
- for FUNCTION_DECLs.
-
-2023-10-17 Marek Polacek <polacek@redhat.com>
-
- PR c++/111660
- * cp-gimplify.cc (cp_fold_immediate_r) <case COND_EXPR>: Don't
- handle it here.
- (cp_fold_r): Handle COND_EXPR here.
-
-2023-10-17 Jason Merrill <jason@redhat.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- * 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 <jason@redhat.com>
-
- * 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 <polacek@redhat.com>
-
- 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 <jakub@redhat.com>
-
- PR c/102989
- * module.cc (trees_out::start, trees_in::start): Remove
- TREE_INT_CST_OFFSET_NUNITS handling.
-
-2023-10-10 Jason Merrill <jason@redhat.com>
-
- PR c++/109422
- * mangle.cc (write_template_param): Also mangle level.
-
-2023-10-08 David Malcolm <dmalcolm@redhat.com>
-
- * module.cc (module_state::read_location): Update for renaming of
- get_combined_adhoc_loc.
-
-2023-10-03 David Malcolm <dmalcolm@redhat.com>
-
- * error.cc (print_instantiation_partial_context_line): Call
- diagnostic_show_locus.
-
-2023-10-03 David Malcolm <dmalcolm@redhat.com>
-
- * error.cc: Update for "m_" prefixes to text_info fields.
-
-2023-09-30 Eugene Rozenfeld <erozen@microsoft.com>
-
- * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY
-
-2023-09-28 Richard Sandiford <richard.sandiford@arm.com>
-
- * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables.
-
-2023-09-22 Jason Merrill <jason@redhat.com>
-
- PR c++/111357
- * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR.
-
-2023-09-22 Jason Merrill <jason@redhat.com>
-
- * constexpr.cc (free_constructor): Handle null ce->value.
-
-2023-09-22 Jason Merrill <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/111493
- * decl2.cc (grok_array_decl): Guard diagnostic and backward
- compatibility fallback code paths with tf_error.
-
-2023-09-22 Patrick Palka <ppalka@redhat.com>
-
- 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 <jakub@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/111471
- * cxx-pretty-print.cc (cxx_pretty_printer::expression)
- <case VAR_DECL>: Handle class NTTP objects by printing
- their type and value.
- <case VIEW_CONVERT_EXPR>: 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 <ppalka@redhat.com>
-
- * 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 <jakub@redhat.com>
-
- 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 <ben.boeckel@kitware.com>
-
- * 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 <ben.boeckel@kitware.com>
-
- * module.cc (do_import): Report imported CMI files as
- dependencies.
-
-2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
-
- * module.cc (preprocessed_module): Pass whether the module is
- exported to dependency tracking.
-
-2023-09-19 Javier Martinez <javier.martinez.bugzilla@gmail.com>
-
- * 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 <ppalka@redhat.com>
-
- * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC
- test guarding TYPE_TEMPLATE_INFO.
-
-2023-09-19 Jason Merrill <jason@redhat.com>
-
- 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 <polacek@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/111419
- * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call
- complete_type if the type is volatile.
- <case VAR_DECL>: Likewise.
-
-2023-09-19 Patrick Palka <ppalka@redhat.com>
-
- PR c++/99631
- * semantics.cc (finish_decltype_type): For an NTTP object,
- return its type modulo cv-quals.
-
-2023-09-18 Patrick Palka <ppalka@redhat.com>
-
- 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) <case CLASS_TYPE>: Only unify the innermost levels of
- template arguments, and only if the template is primary.
-
-2023-09-18 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/108347
- * pt.cc (unify): Return unify_success for identical dependent
- DECL_P 'arg' and 'parm'.
- <case CONST_DECL>: Remove handling.
-
-2023-09-18 Patrick Palka <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * 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 <jason@redhat.com>
-
- * class.cc (check_subobject_offset): Use similar_type_p.
-
-2023-09-12 Jason Merrill <jason@redhat.com>
-
- PR c++/111357
- * pt.cc (expand_integer_pack): Convert argument to int.
-
-2023-09-12 Jason Merrill <jason@redhat.com>
-
- PR c++/107198
- * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR
- regardless of seen_error.
-
-2023-09-08 Patrick Palka <ppalka@redhat.com>
-
- 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 <sandra@codesourcery.com>
-
- PR c++/111274
- * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK.
-
-2023-09-06 Jason Merrill <jason@redhat.com>
-
- * class.cc (check_subobject_offset): Check
- same_type_ignoring_top_level_qualifiers_p.
-
-2023-09-05 Marek Polacek <polacek@redhat.com>
-
- PR c++/91483
- * constexpr.cc (verify_constant_explain_r): New.
- (verify_constant): Call it.
-
-2023-09-05 Jakub Jelinek <jakub@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * 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 <jakub@redhat.com>
-
- 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 <polacek@redhat.com>
-
- 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 <polacek@redhat.com>
-
- PR c++/111173
- * decl.cc (grokdeclarator): Disallow constinit on functions.
-
-2023-08-29 Marek Polacek <polacek@redhat.com>
-
- * 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 <sandra@codesourcery.com>
-
- * 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 <sandra@codesourcery.com>
-
- * constexpr.cc (cxx_eval_constant_expression): Handle
- OMP_STRUCTURED_BLOCK.
- * pt.cc (tsubst_expr): Likewise.
-
-2023-08-25 Uros Bizjak <ubizjak@gmail.com>
-
- * call.cc (build_conditional_expr):
- Rename TRUE/FALSE to true/false.
- (build_new_op): Ditto.
-
-2023-08-22 Jason Merrill <jason@redhat.com>
-
- * 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 <jason@redhat.com>
-
- 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 <tobias@codesourcery.com>
-
- * parser.cc (cp_parser_omp_clause_defaultmap): Parse
- 'all' as category.
-
-2023-08-15 Chung-Lin Tang <cltang@codesourcery.com>
- Thomas Schwinge <thomas@codesourcery.com>
-
- * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
-
-2023-08-14 gnaggnoyil <gnaggnoyil@gmail.com>
-
- DR 2386
- PR c++/110216
- * decl.cc (get_tuple_size): Update implementation for DR 2386.
-
-2023-08-14 Jason Merrill <jason@redhat.com>
-
- * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14
- -fconcepts.
-
-2023-08-12 Patrick Palka <ppalka@redhat.com>
- Jason Merrill <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/110927
- * parser.cc (cp_parser_type_requirement): Pass
- check_dependency_p=true instead of =false.
-
-2023-08-11 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * 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.
- <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS
- anymore.
- <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX
- instead of printing the index, level and original level
- individually.
-
-2023-08-08 Marek Polacek <polacek@redhat.com>
-
- * 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 <nathanieloshead@gmail.com>
-
- PR c++/100482
- * parser.cc (cp_parser_decltype_expr): Report errors raised by
- finish_id_expression.
-
-2023-08-04 Tamar Christina <tamar.christina@arm.com>
-
- * 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 <lhyatt@gmail.com>
-
- * 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 <cltang@codesourcery.com>
-
- * 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 <yongxiangng@gmail.com>
-
- PR c++/110057
- PR ipa/83054
- * init.cc (build_vec_delete_1): Devirtualize array destruction.
-
-2023-07-27 Patrick Palka <ppalka@redhat.com>
-
- 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 <nathanieloshead@gmail.com>
-
- PR c++/103497
- * pt.cc (type_uses_auto): Check inside parameter packs.
-
-2023-07-26 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/110809
- * pt.cc (unify) <case INTEGER_CST>: Generalize to handle
- REAL_CST as well.
-
-2023-07-26 Marek Polacek <polacek@redhat.com>
-
- * 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 <jason@redhat.com>
-
- 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 <nathanieloshead@gmail.com>
-
- 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 <nathanieloshead@gmail.com>
-
- 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 <nathanieloshead@gmail.com>
-
- * 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 <polacek@redhat.com>
-
- 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 <polacek@redhat.com>
-
- 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 <polacek@redhat.com>
-
- PR c++/110106
- * constexpr.cc (potential_constant_expression_1): Try to complete the
- type when !processing_template_decl.
-
-2023-07-20 Marek Polacek <polacek@redhat.com>
-
- PR c++/110114
- * call.cc (implicit_conversion_1): Return early if the type isn't
- complete.
-
-2023-07-19 Marek Polacek <polacek@redhat.com>
-
- PR c++/110745
- * error.cc (dump_simple_decl): Print base class name.
-
-2023-07-19 Marek Polacek <polacek@redhat.com>
-
- PR c++/110064
- * typeck2.cc (process_init_constructor_record): Don't emit
- -Wmissing-field-initializers for empty classes.
-
-2023-07-19 Patrick Palka <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * 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.
- <case FUNCTION_DECL>: Pass 'use_spec_table' to
- tsubst_function_decl.
- <case TYPE/VAR_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 <jason@redhat.com>
-
- * constexpr.cc (cxx_eval_bit_cast): Check that the result of
- native_interpret_aggregate doesn't need more evaluation.
-
-2023-07-18 Patrick Palka <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/110535
- * call.cc (add_conv_candidate): Check constraints.
-
-2023-07-17 Jason Merrill <jason@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/110524
- * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
- whose template is already an IDENTIFIER_NODE.
-
-2023-07-14 Nathaniel Shead <nathanieloshead@gmail.com>
-
- * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
-
-2023-07-14 Jason Merrill <jason@redhat.com>
-
- 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 <polacek@redhat.com>
- Jason Merrill <jason@redhat.com>
-
- 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) <case VAR_DECL>: Treat a
- constexpr-declared non-constant variable as value-dependent.
-
-2023-07-11 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * 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) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
- simple template template parm. Consistently use 'code'.
-
-2023-06-29 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/110463
- * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
- CONSTRUCTOR_MUTABLE_POISON.
-
-2023-06-29 Patrick Palka <ppalka@redhat.com>
-
- * 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) <case TEMPLATE_INFO>: Stream
- TI_PARTIAL_INFO.
- (trees_in::core_vals) <case TEMPLATE_INFO>: 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) <case TEMPLATE_INFO>: Dump
- TI_PARTIAL_INFO.
-
-2023-06-29 Eugene Rozenfeld <erozen@microsoft.com>
-
- * Make-lang.in: Pass correct stage cc1plus when processing
- profile data collected while building target libraries
-
-2023-06-28 Patrick Palka <ppalka@redhat.com>
-
- 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) <case TEMPLATE_ID_EXPR>: 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 <polacek@redhat.com>
-
- PR c++/110175
- * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
-
-2023-06-28 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- 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 <dmalcolm@redhat.com>
-
- 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 <alex.coplan@arm.com>
-
- * 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 <jason@redhat.com>
-
- 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 <dmalcolm@redhat.com>
-
- 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 <jason@redhat.com>
-
- * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
-
-2023-06-12 Tobias Burnus <tobias@codesourcery.com>
-
- * 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 <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <nathan@acm.org>
-
- PR c++/61663
- * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
-
-2023-06-09 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- * 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 <jason@redhat.com>
-
- PR c++/110102
- * call.cc (maybe_init_list_as_array): Check that the element type is
- copyable.
-
-2023-06-07 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/58487
- * typeck.cc (want_nrvo_p): New.
- (check_return_expr): Handle -Wnrvo.
-
-2023-06-07 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/92407
- * typeck.cc (check_return_expr): Prevent NRV in the presence of
- named labels.
-
-2023-06-07 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
- INIT_EXPR.
-
-2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
- Tobias Burnus <tobias@codesourcery.com>
-
- * 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 <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * pt.cc (iterative_hash_template_arg): Don't hash
- TEMPLATE_TEMPLATE_PARM specially.
-
-2023-06-03 Patrick Palka <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/70790
- * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
-
-2023-06-02 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- * typeck2.cc (check_narrowing): Check flag_permissive.
-
-2023-05-30 Tobias Burnus <tobias@codesourcery.com>
-
- PR c/109999
- * parser.cc (cp_parser_oacc_all_clauses,
- cp_parser_omp_all_clauses): Improve error wording.
-
-2023-05-19 Andrew Pinski <apinski@marvell.com>
-
- 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/97340
- * pt.cc (lookup_and_finish_template_variable): Don't call
- convert_from_reference.
- (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
- convert_from_reference on the result of
- lookup_and_finish_template_variable.
-
-2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
-
- * 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 <jakub@redhat.com>
-
- 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 <polacek@redhat.com>
-
- PR c++/109774
- * typeck.cc (check_return_expr): In a template, return only after
- suppressing -Wdangling-reference.
-
-2023-05-16 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
- Jonathan Wakely <jwakely@redhat.com>
-
- 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) <case ADDR_EXPR>: Restrict
- DECL_ARTIFICIAL rejection test to VAR_DECL.
-
-2023-05-10 Marek Polacek <polacek@redhat.com>
-
- 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 <jason@redhat.com>
-
- * call.cc (convert_like_internal): Share ck_ref_bind handling
- between all bad conversions.
-
-2023-05-10 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- * 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 <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <jakub@redhat.com>
-
- PR c++/109756
- * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
- expansion of assume attribute.
-
-2023-05-08 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/85979
- * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
- <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
- * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
-
-2023-05-07 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * 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) <case TEMPLATE_TYPE_PARM>: 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 <ppalka@redhat.com>
-
- PR c++/98283
- * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
- REF_PARENTHESIZED_P more generally via force_paren_expr.
- * semantics.cc (force_paren_expr): Document default argument.
-
-2023-05-07 Patrick Palka <ppalka@redhat.com>
-
- 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) <case TEMPLATE_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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/109480
- * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
- 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 <jason@redhat.com>
-
- Revert:
- 2023-04-27 Jason Merrill <jason@redhat.com>
-
- PR c++/61445
- * pt.cc (instantiate_decl): Assert !defer_ok for local
- class members.
-
-2023-05-03 Jason Merrill <jason@redhat.com>
-
- 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 <jakub@redhat.com>
-
- * 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 <jason@redhat.com>
-
- * pt.cc (reduce_template_parm_level): Fix comparison of
- template template parm to cached version.
-
-2023-05-02 Jason Merrill <jason@redhat.com>
-
- * 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 <jason@redhat.com>
-
- * name-lookup.cc (pop_from_top_level): Don't
- invalidate_class_lookup_cache.
-
-2023-05-02 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/109678
- * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
-
-2023-05-01 Jason Merrill <jason@redhat.com>
-
- 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 <erozen@microsoft.com>
-
- * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
-
-2023-04-27 Jason Merrill <jason@redhat.com>
-
- * call.cc (print_conversion_rejection): Use iloc_sentinel.
-
-2023-04-27 Jason Merrill <jason@redhat.com>
-
- PR c++/61445
- * pt.cc (instantiate_decl): Assert !defer_ok for local
- class members.
-
-2023-04-26 Jason Merrill <jason@redhat.com>
-
- * init.cc (nsdmi_inst): Remove.
- (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
-
-2023-04-26 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/69836
- * pt.cc (regenerate_decl_from_template): Skip unique friends.
-
-2023-04-26 Patrick Palka <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- PR c++/108975
- * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
- Suppress conservative early exit for reference variables
- when DECL_HAS_VALUE_EXPR_P.
-
-2023-04-25 Tobias Burnus <tobias@codesourcery.com>
-
- * parser.cc (cp_parser_omp_scan_loop_body): Handle
- zero exec statements before/after 'omp scan'.
-
-2023-04-24 Patrick Palka <ppalka@redhat.com>
-
- * cp-tree.h (cp_expr_location): Define here.
- * tree.cc (cp_expr_location): Don't define here.
-
-2023-04-21 Jason Merrill <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
- <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
- <case ALIGNOF_EXPR etc>: Likewise.
-
-2023-04-20 Patrick Palka <ppalka@redhat.com>
-
- * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- * tree.cc (strip_typedefs): Move TREE_LIST handling to
- strip_typedefs_expr. Dispatch to strip_typedefs_expr for
- non-type 't'.
- <case TYPENAME_TYPE>: Remove manual dispatching to
- strip_typedefs_expr.
- <case TRAIT_TYPE>: Likewise.
- (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
- with strip_typedefs throughout. Don't dispatch to strip_typedefs
- for type 't'.
- <case TREE_LIST>: Replace this with the better version from
- strip_typedefs.
-
-2023-04-19 Patrick Palka <ppalka@redhat.com>
- Jonathan Wakely <jwakely@redhat.com>
-
- 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) <case TRAIT_TYPE>: 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) <case TRAIT_TYPE>: Use
- cp_tree_equal instead of same_type_p for the first argument.
-
-2023-04-19 Patrick Palka <ppalka@redhat.com>
-
- PR c++/109556
- * pt.cc (try_class_unification): Don't ggc_free the copy of
- 'targs'.
-
-2023-04-19 Jason Merrill <jason@redhat.com>
-
- PR c++/108099
- * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
-
-2023-04-17 Patrick Palka <ppalka@redhat.com>
-
- PR c++/109531
- * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
- In the level-lowering case just use lookup_template_class
- to rebuild the bound ttp.
-
-2023-04-15 Jason Merrill <jason@redhat.com>
-
- PR c++/109357
- * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
- Check for complex initializer.
-
-2023-04-13 Patrick Palka <ppalka@redhat.com>
-
- 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) <case TYPENAME_TYPE>: 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 <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
- * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
-
-2023-04-12 Jakub Jelinek <jakub@redhat.com>
-
- * 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 <iain@sandoe.co.uk>
-
- * coroutines.cc (coro_rewrite_function_body): Ensure that added
- bind expressions have scope blocks.
-
-2023-04-04 Jason Merrill <jason@redhat.com>
-
- PR c++/107484
- * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
-
-2023-04-03 Patrick Palka <ppalka@redhat.com>
-
- PR c++/109300
- * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
- with no initializer, instead of asserting.
-
-2023-04-01 Patrick Palka <ppalka@redhat.com>
-
- 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) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
- 'in_decl' to coerce_template_parms.
- (unify) <case TEMPLATE_PARM_INDEX>: 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 <ppalka@redhat.com>
-
- 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) <case CALL_EXPR>: Revert r13-995 change.
- (mark_template_arguments_used): Define.
- (instantiate_body): Call mark_template_arguments_used.
-
-2023-04-01 Iain Sandoe <iain@sandoe.co.uk>
-
- 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 <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/105221
- * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
- conversions.
-
-2023-03-30 Jakub Jelinek <jakub@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/107897
- PR c++/108887
- * decl2.cc (record_mangling): Use symtab_node::reset.
-
-2023-03-30 Jakub Jelinek <jakub@redhat.com>
-
- 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 <jason@redhat.com>
-
- 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 <dmalcolm@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/105481
- * pt.cc (type_unification_real): Adjust for partial ordering.
-
-2023-03-23 Jason Merrill <jason@redhat.com>
-
- PR c++/105996
- * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
- and location wrappers.
-
-2023-03-23 Marek Polacek <polacek@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/109241
- * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
-
-2023-03-22 Jason Merrill <jason@redhat.com>
-
- PR c++/108390
- * pt.cc (unify): Use fold of build_nop instead of fold_convert.
-
-2023-03-22 Jason Merrill <jason@redhat.com>
-
- PR c++/108795
- * semantics.cc (finish_id_expression_1): Check scope before
- returning id_expression.
-
-2023-03-22 Alex Coplan <alex.coplan@arm.com>
-
- 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 <jason@redhat.com>
-
- PR c++/106890
- * init.cc (maybe_instantiate_nsdmi_init): Don't leave
- current_function_decl set to a constructor.
-
-2023-03-20 Marek Polacek <polacek@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/108975
- * lambda.cc (prune_lambda_captures): Don't bother in a template.
-
-2023-03-17 Jason Merrill <jason@redhat.com>
-
- PR c++/109172
- * except.cc (build_throw): Check dtor access.
-
-2023-03-17 Jason Merrill <jason@redhat.com>
-
- PR c++/69410
- * friend.cc (do_friend): Handle namespace as scope argument.
- * decl.cc (grokdeclarator): Pass down in_namespace.
-
-2023-03-16 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/108242
- * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
-
-2023-03-16 Jason Merrill <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/100288
- * constraint.cc (satisfaction_cache::get): Relax overly strict
- checking assert in the constraint recursion case.
-
-2023-03-16 Jason Merrill <jason@redhat.com>
-
- PR c++/105406
- * coroutines.cc (build_co_await): Handle lvalue 'o'.
-
-2023-03-15 Jason Merrill <jason@redhat.com>
-
- PR c++/103871
- PR c++/98056
- * typeck.cc (cp_build_modify_expr): Allow array initialization of
- DECL_ARTIFICIAL variable.
-
-2023-03-15 Marek Polacek <polacek@redhat.com>
-
- PR c++/107280
- * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
-
-2023-03-15 Jason Merrill <jason@redhat.com>
-
- PR c++/58538
- * semantics.cc (check_template_template_default_arg): Check
- maybe_get_template_decl_from_type_decl.
-
-2023-03-15 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/108468
- * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
- is non-null.
-
-2023-03-14 Jason Merrill <jason@redhat.com>
-
- PR c++/107310
- * cp-gimplify.cc (genericize_if_stmt): Restore folding
- of constant conditions.
-
-2023-03-14 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/109096
- * tree.cc (record_has_unique_obj_representations): Ignore unnamed
- bitfields.
-
-2023-03-13 Jason Merrill <jason@redhat.com>
-
- 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 <polacek@redhat.com>
-
- PR c++/107532
- * call.cc (reference_like_class_p): Check for std::span.
-
-2023-03-10 Jakub Jelinek <jakub@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/108972
- * lambda.cc (compare_lambda_template_head): Check more
- for error_mark_node.
-
-2023-03-10 Jason Merrill <jason@redhat.com>
-
- PR c++/108566
- * mangle.cc (anon_aggr_naming_decl): New.
- (write_unqualified_name): Use it.
-
-2023-03-10 Jakub Jelinek <jakub@redhat.com>
-
- PR c/108079
- * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
- after diagnosing it.
-
-2023-03-10 Jason Merrill <jason@redhat.com>
-
- PR c++/108099
- * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
-
-2023-03-10 Jason Merrill <jason@redhat.com>
-
- PR c++/108542
- * class.cc (instantiate_type): Strip location wrapper.
-
-2023-03-09 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- DR 2664
- PR c++/102529
- * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
-
-2023-03-09 Jason Merrill <jason@redhat.com>
- Michael Spertus <mike@spertus.com>
-
- 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 <jason@redhat.com>
-
- * cp-trait.def (IS_DEDUCIBLE): Add space to name.
-
-2023-03-09 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- 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 <polacek@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <polacek@redhat.com>
-
- PR c++/109030
- * constexpr.cc (cxx_eval_call_expression): Relax assert.
-
-2023-03-07 Marek Polacek <polacek@redhat.com>
-
- PR c++/107939
- * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
- 'any' when recursing on a VAR_DECL and not a pointer to function.
-
-2023-03-04 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/108702
- * constexpr.cc: Include toplev.h.
- (cxx_eval_constant_expression) <case DECL_EXPR>: 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 <ppalka@redhat.com>
-
- 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 <oliva@adacore.com>
-
- * 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 <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/108243
- * constexpr.cc (maybe_constant_init_1): Override
- manifestly_const_eval to true if is_static.
-
-2023-03-02 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/108716
- * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
- DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
- of USING_STMT or input_location.
-
-2023-03-02 Marek Polacek <polacek@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <polacek@redhat.com>
-
- PR c++/107574
- * constexpr.cc (cxx_eval_constant_expression): Emit an error when
- a PTRMEM_CST cannot be evaluated.
-
-2023-03-01 Patrick Palka <ppalka@redhat.com>
-
- * pt.cc (tsubst_scope): Define.
- (tsubst_decl) <case USING_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.
- <case SCOPE_REF>: Call tsubst_scope instead of calling
- tsubst with tf_qualifying_scope set.
-
-2023-03-01 Patrick Palka <ppalka@redhat.com>
- Jason Merrill <jason@redhat.com>
-
- 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 <jakub@redhat.com>
-
- PR c++/108606
- * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
- Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
- just return true.
-
-2023-02-28 Patrick Palka <ppalka@redhat.com>
-
- 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 <polacek@redhat.com>
-
- PR c++/108550
- * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
-
-2023-02-20 Marek Polacek <polacek@redhat.com>
-
- PR c++/101073
- * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
- constructor/op= with a checking assert.
-
-2023-02-20 Marek Polacek <polacek@redhat.com>
-
- 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 <jason@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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.
- <case CALL_EXPR>: 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 <ppalka@redhat.com>
-
- * 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 <ppalka@redhat.com>
-
- 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) <case USING_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.
- <case TYPENAME_TYPE>: 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.
- <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
- scope.
- <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
- * search.cc (lookup_member): Document default argument.
-
-2023-02-16 Patrick Palka <ppalka@redhat.com>
-
- * cp-tree.h: Mechanically drop static from static inline
- functions via s/^static inline/inline/g.
-
-2023-02-15 Marek Polacek <polacek@redhat.com>
-
- PR c++/106675
- * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
-
-2023-02-10 Marek Polacek <polacek@redhat.com>
-
- PR c++/107079
- * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
-
-2023-02-09 Tobias Burnus <tobias@codesourcery.com>
-
- * parser.cc (cp_parser_omp_allocate): Parse align
- clause and check for restrictions.
-
-2023-02-09 Jakub Jelinek <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/107461
- * cp-tree.h (call_expr_dependent_name): Declare.
- * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: 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) <case CALL_EXPR>: Adjust call to called_fns_equal.
-
-2023-02-03 Marek Polacek <polacek@redhat.com>
-
- PR c++/108158
- * constexpr.cc (cxx_eval_array_reference): Don't replace
- new_ctx.object.
-
-2023-02-03 Patrick Palka <ppalka@redhat.com>
-
- PR c++/107461
- * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
- the selected callee during overload set pruning.
-
-2023-02-03 Patrick Palka <ppalka@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- PR c++/108579
- * class.cc (check_methods): Swap order of constraints_satisfied_p
- and copy/move_fn_p tests.
-
-2023-02-01 Marek Polacek <polacek@redhat.com>
-
- PR c++/107755
- * call.cc (build_new_op): Don't call warn_logical_operator when
- processing a template.
-
-2023-02-01 Jakub Jelinek <jakub@redhat.com>
-
- 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 <jason@redhat.com>
-
- * 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 <jason@redhat.com>
-
- PR c++/108559
- * cp-gimplify.cc (any_non_eliding_target_exprs): New.
- (cp_genericize_init): Check it.
-
-2023-01-31 Marek Polacek <polacek@redhat.com>
-
- PR c++/107593
- PR c++/108597
- * cp-tree.h (instantiation_dependent_expression_p): Don't
- declare here.
-
-2023-01-26 Marek Polacek <polacek@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <jakub@redhat.com>
-
- PR c++/108525
- * mangle.cc (write_closure_type_name): Don't assume all
- lambda operator() fns are methods.
-
-2023-01-24 Jason Merrill <jason@redhat.com>
-
- PR c++/108504
- * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
- token, too.
-
-2023-01-24 Jason Merrill <jason@redhat.com>
-
- PR c++/108526
- * pt.cc (tsubst_function_decl): Handle static lambda.
-
-2023-01-24 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/108474
- * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
-
-2023-01-24 Jason Merrill <jason@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/107267
- * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
- of trivial types.
-
-2023-01-23 Marek Polacek <polacek@redhat.com>
-
- 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 <jason@redhat.com>
-
- PR c++/108195
- * call.cc (build_user_type_conversion_1): Check whether the
- iterators also find a list ctor.
-
-2023-01-23 Jason Merrill <jason@redhat.com>
-
- PR c++/108496
- * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
- set.
-
-2023-01-23 Jason Merrill <jason@redhat.com>
-
- PR c++/53288
- DR 1299
- * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
-
-2023-01-19 Jakub Jelinek <jakub@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <jakub@redhat.com>
-
- PR c++/108365
- * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
- division or modulo.
-
-2023-01-13 Jakub Jelinek <jakub@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <ppalka@redhat.com>
-
- 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 <jakub@redhat.com>
-
- PR c++/108286
- * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
- OMP_CLAUSE_MAP.
-
-2023-01-04 Patrick Palka <ppalka@redhat.com>
-
- 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 <jakub@redhat.com>
-
- 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 <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/84542
+ * decl.cc (merge_attribute_bits): Merge TREE_DEPRECATED
+ and TREE_UNAVAILABLE.
+
+2023-12-21 Patrick Palka <ppalka@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/113088
+ PR c++/33799
+ * except.cc (maybe_splice_retval_cleanup): Handle an empty block.
+
+2023-12-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/103185
+ * typeck.cc (cp_build_array_ref): Handle swapped operands.
+
+2023-12-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/113063
+ * method.cc (synthesize_method): Use maybe_push_to_top_level
+ and maybe_pop_from_top_level.
+
+2023-12-19 Patrick Palka <ppalka@redhat.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ 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 <sandra@codesourcery.com>
+
+ * 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 <sandra@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_context_selector): Adjust for new
+ namelist property representation.
+ * pt.cc (tsubst_attribute): Likewise.
+
+2023-12-19 Sandra Loosemore <sandra@codesourcery.com>
+
+ * 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 <ppalka@redhat.com>
+
+ 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) <case tcc_type>: 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) <case TREE_VEC>: Adjust call to
+ comp_template_args.
+
+2023-12-19 Patrick Palka <ppalka@redhat.com>
+
+ 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 <thomas@codesourcery.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ PR c++/106363
+ * module.cc (module_state::write_cluster): Don't skip first
+ depset for bindings.
+
+2023-12-16 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/113031
+ * constexpr.cc (cxx_fold_indirect_ref_1): Check for CLASS_TYPE
+ before using CLASSTYPE_AS_BASE.
+
+2023-12-16 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ * decl2.cc (check_classfn): Update comment to include
+ target_version attributes.
+
+2023-12-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/70435
+ PR c++/88061
+ * pt.cc (tsubst_function_decl): Propagate DECL_SECTION_NAME
+ via set_decl_section_name.
+ (tsubst_decl) <case VAR_DECL>: Likewise.
+
+2023-12-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109715
+ * mangle.cc (get_abi_tags): Strip TEMPLATE_DECL before looking
+ up the abi_tag attribute.
+
+2023-12-14 Marek Polacek <polacek@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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 <jakub@redhat.com>
+
+ PR c++/112968
+ * pt.cc (freelist<tree_node>::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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/99186
+ PR c++/104867
+ * pt.cc (unify) <case INTEGER_CST>: Compare types as well.
+
+2023-12-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/93740
+ * pt.cc (unify) <case FUNCTION_DECL>: Handle it like FIELD_DECL
+ and TEMPLATE_DECL.
+
+2023-12-13 Jason Merrill <jason@redhat.com>
+
+ * 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 <julian@codesourcery.com>
+
+ * 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 <julian@codesourcery.com>
+
+ * semantics.cc (finish_omp_clause): Add braces and reindent
+ OMP_CLAUSE_TO/OMP_CLAUSE_FROM/OMP_CLAUSE__CACHE_ stanza.
+
+2023-12-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/96997
+ * tree.cc (bot_manip): Check data.clear_location for TARGET_EXPR.
+
+2023-12-13 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ 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 <jason@redhat.com>
+
+ * constexpr.cc (cxx_eval_call_expression): Handle missing in-charge
+ argument.
+
+2023-12-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/108243
+ * constexpr.cc (cxx_eval_outermost_constant_expr): Turn
+ a constructor CALL_EXPR into a TARGET_EXPR.
+
+2023-12-13 Jason Merrill <jason@redhat.com>
+
+ * tree.cc (build_aggr_init_expr): Copy EXPR_LOCATION.
+
+2023-12-12 Jason Merrill <jason@redhat.com>
+ Jason Xu <rxu@DRWHoldings.com>
+
+ * class.cc (propagate_class_warmth_attribute): Handle
+ member templates.
+
+2023-12-12 Jason Merrill <jason@redhat.com>
+ Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * pt.cc (alias_ctad_tweaks): Pass use_spec_table=false to
+ tsubst_decl.
+
+2023-12-11 Tobias Burnus <tobias@codesourcery.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ PR c++/104234
+ PR c++/112580
+ * pt.cc (tsubst_template_decl): Clear
+ DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P.
+
+2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org>
+
+ * cp-trait.def: Define __remove_pointer.
+ * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_POINTER.
+
+2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <jason@redhat.com>
+
+ * parser.cc (cp_parser_simple_type_specifier): Move trait
+ handling to default label.
+
+2023-12-10 Ken Matsui <kmatsui@gcc.gnu.org>
+
+ * 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 <kmatsui@gcc.gnu.org>
+ Patrick Palka <ppalka@redhat.com>
+
+ * 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 <kmatsui@gcc.gnu.org>
+
+ * 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 <jakub@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <dmalcolm@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ DR 532
+ PR c++/53499
+ * pt.cc (more_specialized_fn): Fix object parameter handling.
+
+2023-12-05 Jakub Jelinek <jakub@redhat.com>
+
+ 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) <case ANNOTATE_EXPR>: Likewise.
+ (tsubst_stmt) <case RANGE_FOR_STMT>: Likwsie.
+
+2023-12-05 Richard Sandiford <richard.sandiford@arm.com>
+
+ * tree.cc (cxx_gnu_attribute_table): Add extra braces to work
+ around PR 16333 in older compilers.
+
+2023-12-05 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ 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) <case CALL_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.
+ <case CALL_EXPR>: 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 <jason@redhat.com>
+
+ * constexpr.cc (potential_constant_expression_1): Fix
+ check for loading volatile lvalue.
+
+2023-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ 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) <case RANGE_FOR_STMT>: Change UNROLL type from
+ unsigned short to tree and set it to RECUR on RANGE_FOR_UNROLL (t).
+ (tsubst_expr) <case ANNOTATE_EXPR>: For annot_expr_unroll_kind repeat
+ checks on UNROLL value from cp_parser_pragma_unroll.
+
+2023-12-02 Richard Sandiford <richard.sandiford@arm.com>
+
+ * 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 <jason@redhat.com>
+
+ * mangle.cc (write_type): Mangle placeholder as its template.
+
+2023-12-01 Jason Merrill <jason@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ * semantics.cc (finish_non_static_data_member)
+ (finish_decltype_type, capture_decltype):
+ Handle deduced closure parameter.
+
+2023-11-30 Marek Polacek <polacek@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 ___.<number>
+ names of members.
+ (add_capture): Add NAME_INDEPENDENT_CNT argument. Use ___.<number>
+ 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 <oliva@adacore.com>
+
+ * decl.cc (finish_enum_value_list): Set TYPE_PACKED if
+ use_short_enum, and propagate it to variants.
+
+2023-11-30 Jason Merrill <jason@redhat.com>
+
+ * 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 <polacek@redhat.com>
+
+ PR c++/106650
+ * constexpr.cc (cxx_eval_constant_expression) <case PARM_DECL>: Allow
+ reference to unknown/this as per P2280.
+ <case VAR_DECL>: Allow reference to unknown as per P2280.
+
+2023-11-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/112765
+ * pt.cc (tsubst_expr) <case MODOP_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 <jakub@redhat.com>
+
+ * semantics.cc (finish_static_assert): Free buf on error return.
+
+2023-11-29 Alexandre Oliva <oliva@adacore.com>
+
+ * 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 <oliva@adacore.com>
+
+ * contracts.cc (check_postcondition_result): Cope with
+ cdtor_return_this.
+
+2023-11-28 Jason Merrill <jason@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ * 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 <alex.coplan@arm.com>
+ Iain Sandoe <iain@sandoe.co.uk>
+
+ 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 <nathanieloshead@gmail.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ PR c++/102341
+ * decl.cc (duplicate_decls): Allow exporting a redeclaration of
+ a typedef.
+
+2023-11-24 Tobias Burnus <tobias@codesourcery.com>
+
+ * 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 <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_depobj): Accept optionally an argument
+ to the destroy clause.
+
+2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/99232
+ * decl.cc (grokvardecl): Don't mark variables attached to
+ modules as internal.
+
+2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ 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 <jakub@redhat.com>
+
+ 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) <case STATIC_ASSERT>: 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 <ppalka@redhat.com>
+
+ PR c++/112633
+ * pt.cc (tsubst_aggr_type): Handle empty TYPE_TEMPLATE_INFO
+ in the entering_scope adjustment.
+
+2023-11-22 Jason Merrill <jason@redhat.com>
+
+ * decl.cc (start_preparsed_function): Clarify ctype logic.
+
+2023-11-20 Marc Poulhiès <dkm@kataplop.net>
+
+ * lambda.cc (compare_lambda_sig): Fix typo in variadic.
+
+2023-11-20 Jason Merrill <jason@redhat.com>
+
+ * pt.cc (comp_template_parms): Just one level.
+ (template_parameter_lists_equivalent_p): Likewise.
+
+2023-11-20 Jason Merrill <jason@redhat.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ 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 <dmalcolm@redhat.com>
+
+ * mapper-client.cc: Include "rich-location.h".
+
+2023-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/111703
+ PR c++/107939
+ * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
+ Fix FUNCTION_POINTER_TYPE_P test.
+
+2023-11-16 Marek Polacek <polacek@redhat.com>
+
+ 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 <aldot@gcc.gnu.org>
+
+ * tree.cc (build_cplus_array_type): Revert using the macro
+ CAN_HAVE_LOCATION_P.
+
+2023-11-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/112515
+ * decl.cc (is_direct_enum_init): Check type-dependence of the
+ single element.
+
+2023-11-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/101043
+ * tree.cc (strip_typedefs_expr) <case TREE_LIST>: Handle
+ non-empty TREE_PURPOSE.
+
+2023-11-15 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/111703
+ PR c++/112269
+ * constexpr.cc (potential_constant_expression_1) <case VAR_DECL>:
+ Only consider var_in_maybe_constexpr_fn if 'now' is false.
+ <case INDIRECT_REF>: Likewise.
+
+2023-11-15 Jakub Jelinek <jakub@redhat.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ PR c++/106849
+ * name-lookup.cc (do_nonmember_using_decl): Handle
+ TEMPLATE_DECLs when checking module attachment.
+
+2023-11-14 David Malcolm <dmalcolm@redhat.com>
+
+ * decl.cc (finish_function): Update call to
+ global_dc->m_option_enabled to use option_enabled_p.
+
+2023-11-14 David Malcolm <dmalcolm@redhat.com>
+
+ * contracts.cc (build_comment): Use global_dc's file_cache.
+
+2023-11-14 Jonathan Wakely <jwakely@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <kcy@codesourcery.com>
+
+ * 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 <jakub@redhat.com>
+
+ * 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 <dmalcolm@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ * semantics.cc (nrv_data): Change visited to hash_set.
+ (finalize_nrv_r): Reorganize.
+
+2023-11-02 Jason Merrill <jason@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <dmalcolm@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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 <lhyatt@gmail.com>
+
+ 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 <hongtao.liu@intel.com>
+
+ * typeck.cc (build_vec_cmp): Pass type of arg0 to
+ truth_type_for.
+
+2023-10-25 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.def: Improve OFFSET_REF comment.
+ * cp-gimplify.cc (cp_fold_immediate): Add to comment.
+
+2023-10-25 Thomas Schwinge <thomas@codesourcery.com>
+
+ * 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 <cltang@codesourcery.com>
+
+ * 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 <polacek@redhat.com>
+
+ PR c++/111895
+ * typeck.cc (build_static_cast_1): Call decay_conversion.
+
+2023-10-24 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/111919
+ * tree.cc (cp_stabilize_reference): Do nothing when
+ processing_template_decl.
+
+2023-10-22 Patrick Palka <ppalka@redhat.com>
+
+ PR objc++/111920
+ * pt.cc (tsubst_expr) <case AT_ENCODE_EXPR>: Use tsubst instead
+ of tsubst_expr.
+
+2023-10-20 Jason Merrill <jason@redhat.com>
+
+ * call.cc (implicit_conversion_1): Rename...
+ (implicit_conversion): ...to this. Remove the old wrapper.
+
+2023-10-20 Jason Merrill <jason@redhat.com>
+
+ * call.cc (tourney): Only skip champ_compared_to_predecessor.
+
+2023-10-20 Nathan Sidwell <nathan@acm.org>
+
+ 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 <ppalka@redhat.com>
+
+ * 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.
+ <case CO_YIELD_EXPR, CO_AWAIT_EXPR>: 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.
+ <case TRANSACTION_EXPR>: 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 <ppalka@redhat.com>
+
+ * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup.
+ * pt.cc (tsubst_pack_expansion): Use tsubst for substituting
+ BASES_TYPE.
+ (tsubst_decl) <case USING_DECL>: Use tsubst_name instead of
+ tsubst_copy.
+ (tsubst) <case TEMPLATE_TYPE_PARM>: Use tsubst_copy_and_build
+ instead of tsubst_copy for substituting
+ CLASS_PLACEHOLDER_TEMPLATE.
+ <case TYPENAME_TYPE>: 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.
+ <case IDENTIFIER_NODE>: Don't do name lookup if tf_no_name_lookup
+ was set.
+ <case TEMPLATE_ID_EXPR>: 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.
+ <case BIT_NOT_EXPR>: Handle identifier and type operand (if
+ tf_no_name_lookup was set).
+ <case SCOPE_REF>: 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.
+ <case SIZEOF_EXPR>: Handling of sizeof... copied from tsubst_copy.
+ <case CALL_EXPR>: Use tsubst_name instead of tsubst_copy to
+ substitute a TEMPLATE_ID_EXPR callee naming an unresolved template.
+ <case COMPONENT_REF>: Likewise to substitute the member.
+ <case FUNCTION_DECL>: Copied from tsubst_copy and merged with ...
+ <case VAR_DECL, PARM_DECL>: ... these. Initial handling copied
+ from tsubst_copy. Optimize local variable substitution by
+ trying retrieve_local_specialization before checking
+ uses_template_parms.
+ <case CONST_DECL>: Copied from tsubst_copy.
+ <case FIELD_DECL>: Likewise.
+ <case NAMESPACE_DECL>: Likewise.
+ <case OVERLOAD>: Likewise.
+ <case TEMPLATE_DECL>: Likewise.
+ <case TEMPLATE_PARM_INDEX>: Likewise.
+ <case TYPE_DECL>: Likewise.
+ <case CLEANUP_POINT_EXPR>: Likewise.
+ <case OFFSET_REF>: Likewise.
+ <case EXPR_PACK_EXPANSION>: Likewise.
+ <case NONTYPE_ARGUMENT_PACK>: Likewise.
+ <case *_CST>: Likewise.
+ <case *_*_FOLD_EXPR>: Likewise.
+ <case DEBUG_BEGIN_STMT>: Likewise.
+ <case CO_AWAIT_EXPR>: Likewise.
+ <case TRAIT_EXPR>: Use tsubst and tsubst_copy_and_build instead
+ of tsubst_copy.
+ <default>: Copied from tsubst_copy.
+ (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build
+ instead of tsubst_copy.
+
+2023-10-20 Patrick Palka <ppalka@redhat.com>
+
+ 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) <case CALL_EXPR>: 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * 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) <case TRUTH_NOT_EXPR>: Don't fold inside a
+ template.
+
+2023-10-20 Alexandre Oliva <oliva@adacore.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ * 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 <polacek@redhat.com>
+
+ * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value.
+
+2023-10-19 Jason Merrill <jason@redhat.com>
+
+ * typeck2.cc (check_narrowing): Adjust.
+
+2023-10-19 Jason Merrill <jason@redhat.com>
+
+ * parser.cc (cp_parser_primary_expression): Use G_.
+ (cp_parser_using_enum): Likewise.
+ * decl.cc (identify_goto): Likewise.
+
+2023-10-18 Jason Merrill <jason@redhat.com>
+
+ * typeck2.cc (check_narrowing): Use permerror.
+
+2023-10-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111840
+ * parser.cc (cp_parser_simple_declaration): Do cp_parser_error
+ for FUNCTION_DECLs.
+
+2023-10-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111660
+ * cp-gimplify.cc (cp_fold_immediate_r) <case COND_EXPR>: Don't
+ handle it here.
+ (cp_fold_r): Handle COND_EXPR here.
+
+2023-10-17 Jason Merrill <jason@redhat.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ * 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 <jason@redhat.com>
+
+ * 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 <polacek@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ PR c/102989
+ * module.cc (trees_out::start, trees_in::start): Remove
+ TREE_INT_CST_OFFSET_NUNITS handling.
+
+2023-10-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/109422
+ * mangle.cc (write_template_param): Also mangle level.
+
+2023-10-08 David Malcolm <dmalcolm@redhat.com>
+
+ * module.cc (module_state::read_location): Update for renaming of
+ get_combined_adhoc_loc.
+
+2023-10-03 David Malcolm <dmalcolm@redhat.com>
+
+ * error.cc (print_instantiation_partial_context_line): Call
+ diagnostic_show_locus.
+
+2023-10-03 David Malcolm <dmalcolm@redhat.com>
+
+ * error.cc: Update for "m_" prefixes to text_info fields.
+
+2023-09-30 Eugene Rozenfeld <erozen@microsoft.com>
+
+ * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY
+
+2023-09-28 Richard Sandiford <richard.sandiford@arm.com>
+
+ * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables.
+
+2023-09-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/111357
+ * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR.
+
+2023-09-22 Jason Merrill <jason@redhat.com>
+
+ * constexpr.cc (free_constructor): Handle null ce->value.
+
+2023-09-22 Jason Merrill <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/111493
+ * decl2.cc (grok_array_decl): Guard diagnostic and backward
+ compatibility fallback code paths with tf_error.
+
+2023-09-22 Patrick Palka <ppalka@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/111471
+ * cxx-pretty-print.cc (cxx_pretty_printer::expression)
+ <case VAR_DECL>: Handle class NTTP objects by printing
+ their type and value.
+ <case VIEW_CONVERT_EXPR>: 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 <ppalka@redhat.com>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <ben.boeckel@kitware.com>
+
+ * 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 <ben.boeckel@kitware.com>
+
+ * module.cc (do_import): Report imported CMI files as
+ dependencies.
+
+2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
+
+ * module.cc (preprocessed_module): Pass whether the module is
+ exported to dependency tracking.
+
+2023-09-19 Javier Martinez <javier.martinez.bugzilla@gmail.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC
+ test guarding TYPE_TEMPLATE_INFO.
+
+2023-09-19 Jason Merrill <jason@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/111419
+ * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call
+ complete_type if the type is volatile.
+ <case VAR_DECL>: Likewise.
+
+2023-09-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99631
+ * semantics.cc (finish_decltype_type): For an NTTP object,
+ return its type modulo cv-quals.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ 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) <case CLASS_TYPE>: Only unify the innermost levels of
+ template arguments, and only if the template is primary.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/108347
+ * pt.cc (unify): Return unify_success for identical dependent
+ DECL_P 'arg' and 'parm'.
+ <case CONST_DECL>: Remove handling.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ * class.cc (check_subobject_offset): Use similar_type_p.
+
+2023-09-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/111357
+ * pt.cc (expand_integer_pack): Convert argument to int.
+
+2023-09-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/107198
+ * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR
+ regardless of seen_error.
+
+2023-09-08 Patrick Palka <ppalka@redhat.com>
+
+ 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 <sandra@codesourcery.com>
+
+ PR c++/111274
+ * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK.
+
+2023-09-06 Jason Merrill <jason@redhat.com>
+
+ * class.cc (check_subobject_offset): Check
+ same_type_ignoring_top_level_qualifiers_p.
+
+2023-09-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91483
+ * constexpr.cc (verify_constant_explain_r): New.
+ (verify_constant): Call it.
+
+2023-09-05 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ PR c++/111173
+ * decl.cc (grokdeclarator): Disallow constinit on functions.
+
+2023-08-29 Marek Polacek <polacek@redhat.com>
+
+ * 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 <sandra@codesourcery.com>
+
+ * 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 <sandra@codesourcery.com>
+
+ * constexpr.cc (cxx_eval_constant_expression): Handle
+ OMP_STRUCTURED_BLOCK.
+ * pt.cc (tsubst_expr): Likewise.
+
+2023-08-25 Uros Bizjak <ubizjak@gmail.com>
+
+ * call.cc (build_conditional_expr):
+ Rename TRUE/FALSE to true/false.
+ (build_new_op): Ditto.
+
+2023-08-22 Jason Merrill <jason@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ 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 <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_clause_defaultmap): Parse
+ 'all' as category.
+
+2023-08-15 Chung-Lin Tang <cltang@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
+
+2023-08-14 gnaggnoyil <gnaggnoyil@gmail.com>
+
+ DR 2386
+ PR c++/110216
+ * decl.cc (get_tuple_size): Update implementation for DR 2386.
+
+2023-08-14 Jason Merrill <jason@redhat.com>
+
+ * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14
+ -fconcepts.
+
+2023-08-12 Patrick Palka <ppalka@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/110927
+ * parser.cc (cp_parser_type_requirement): Pass
+ check_dependency_p=true instead of =false.
+
+2023-08-11 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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.
+ <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS
+ anymore.
+ <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX
+ instead of printing the index, level and original level
+ individually.
+
+2023-08-08 Marek Polacek <polacek@redhat.com>
+
+ * 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 <nathanieloshead@gmail.com>
+
+ PR c++/100482
+ * parser.cc (cp_parser_decltype_expr): Report errors raised by
+ finish_id_expression.
+
+2023-08-04 Tamar Christina <tamar.christina@arm.com>
+
+ * 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 <lhyatt@gmail.com>
+
+ * 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 <cltang@codesourcery.com>
+
+ * 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 <yongxiangng@gmail.com>
+
+ PR c++/110057
+ PR ipa/83054
+ * init.cc (build_vec_delete_1): Devirtualize array destruction.
+
+2023-07-27 Patrick Palka <ppalka@redhat.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ PR c++/103497
+ * pt.cc (type_uses_auto): Check inside parameter packs.
+
+2023-07-26 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/110809
+ * pt.cc (unify) <case INTEGER_CST>: Generalize to handle
+ REAL_CST as well.
+
+2023-07-26 Marek Polacek <polacek@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ 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 <nathanieloshead@gmail.com>
+
+ * 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 <polacek@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ PR c++/110106
+ * constexpr.cc (potential_constant_expression_1): Try to complete the
+ type when !processing_template_decl.
+
+2023-07-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110114
+ * call.cc (implicit_conversion_1): Return early if the type isn't
+ complete.
+
+2023-07-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110745
+ * error.cc (dump_simple_decl): Print base class name.
+
+2023-07-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110064
+ * typeck2.cc (process_init_constructor_record): Don't emit
+ -Wmissing-field-initializers for empty classes.
+
+2023-07-19 Patrick Palka <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * 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.
+ <case FUNCTION_DECL>: Pass 'use_spec_table' to
+ tsubst_function_decl.
+ <case TYPE/VAR_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 <jason@redhat.com>
+
+ * constexpr.cc (cxx_eval_bit_cast): Check that the result of
+ native_interpret_aggregate doesn't need more evaluation.
+
+2023-07-18 Patrick Palka <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/110535
+ * call.cc (add_conv_candidate): Check constraints.
+
+2023-07-17 Jason Merrill <jason@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/110524
+ * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
+ whose template is already an IDENTIFIER_NODE.
+
+2023-07-14 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
+
+2023-07-14 Jason Merrill <jason@redhat.com>
+
+ 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 <polacek@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ 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) <case VAR_DECL>: Treat a
+ constexpr-declared non-constant variable as value-dependent.
+
+2023-07-11 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
+ simple template template parm. Consistently use 'code'.
+
+2023-06-29 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/110463
+ * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
+ CONSTRUCTOR_MUTABLE_POISON.
+
+2023-06-29 Patrick Palka <ppalka@redhat.com>
+
+ * 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) <case TEMPLATE_INFO>: Stream
+ TI_PARTIAL_INFO.
+ (trees_in::core_vals) <case TEMPLATE_INFO>: 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) <case TEMPLATE_INFO>: Dump
+ TI_PARTIAL_INFO.
+
+2023-06-29 Eugene Rozenfeld <erozen@microsoft.com>
+
+ * Make-lang.in: Pass correct stage cc1plus when processing
+ profile data collected while building target libraries
+
+2023-06-28 Patrick Palka <ppalka@redhat.com>
+
+ 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) <case TEMPLATE_ID_EXPR>: 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 <polacek@redhat.com>
+
+ PR c++/110175
+ * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
+
+2023-06-28 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ 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 <dmalcolm@redhat.com>
+
+ 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 <alex.coplan@arm.com>
+
+ * 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 <jason@redhat.com>
+
+ 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 <dmalcolm@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
+
+2023-06-12 Tobias Burnus <tobias@codesourcery.com>
+
+ * 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 <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <nathan@acm.org>
+
+ PR c++/61663
+ * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
+
+2023-06-09 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ PR c++/110102
+ * call.cc (maybe_init_list_as_array): Check that the element type is
+ copyable.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/58487
+ * typeck.cc (want_nrvo_p): New.
+ (check_return_expr): Handle -Wnrvo.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/92407
+ * typeck.cc (check_return_expr): Prevent NRV in the presence of
+ named labels.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
+ INIT_EXPR.
+
+2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
+ Tobias Burnus <tobias@codesourcery.com>
+
+ * 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 <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * pt.cc (iterative_hash_template_arg): Don't hash
+ TEMPLATE_TEMPLATE_PARM specially.
+
+2023-06-03 Patrick Palka <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/70790
+ * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
+
+2023-06-02 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * typeck2.cc (check_narrowing): Check flag_permissive.
+
+2023-05-30 Tobias Burnus <tobias@codesourcery.com>
+
+ PR c/109999
+ * parser.cc (cp_parser_oacc_all_clauses,
+ cp_parser_omp_all_clauses): Improve error wording.
+
+2023-05-19 Andrew Pinski <apinski@marvell.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/97340
+ * pt.cc (lookup_and_finish_template_variable): Don't call
+ convert_from_reference.
+ (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
+ convert_from_reference on the result of
+ lookup_and_finish_template_variable.
+
+2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ PR c++/109774
+ * typeck.cc (check_return_expr): In a template, return only after
+ suppressing -Wdangling-reference.
+
+2023-05-16 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+ Jonathan Wakely <jwakely@redhat.com>
+
+ 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) <case ADDR_EXPR>: Restrict
+ DECL_ARTIFICIAL rejection test to VAR_DECL.
+
+2023-05-10 Marek Polacek <polacek@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * call.cc (convert_like_internal): Share ck_ref_bind handling
+ between all bad conversions.
+
+2023-05-10 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ PR c++/109756
+ * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
+ expansion of assume attribute.
+
+2023-05-08 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/85979
+ * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
+ <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
+ * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * 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) <case TEMPLATE_TYPE_PARM>: 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 <ppalka@redhat.com>
+
+ PR c++/98283
+ * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
+ REF_PARENTHESIZED_P more generally via force_paren_expr.
+ * semantics.cc (force_paren_expr): Document default argument.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ 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) <case TEMPLATE_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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/109480
+ * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
+ 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 <jason@redhat.com>
+
+ Revert:
+ 2023-04-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/61445
+ * pt.cc (instantiate_decl): Assert !defer_ok for local
+ class members.
+
+2023-05-03 Jason Merrill <jason@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ * pt.cc (reduce_template_parm_level): Fix comparison of
+ template template parm to cached version.
+
+2023-05-02 Jason Merrill <jason@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ * name-lookup.cc (pop_from_top_level): Don't
+ invalidate_class_lookup_cache.
+
+2023-05-02 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/109678
+ * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
+
+2023-05-01 Jason Merrill <jason@redhat.com>
+
+ 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 <erozen@microsoft.com>
+
+ * Make-lang.in: Merge perf data collected when compiling cc1plus and runtime libraries
+
+2023-04-27 Jason Merrill <jason@redhat.com>
+
+ * call.cc (print_conversion_rejection): Use iloc_sentinel.
+
+2023-04-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/61445
+ * pt.cc (instantiate_decl): Assert !defer_ok for local
+ class members.
+
+2023-04-26 Jason Merrill <jason@redhat.com>
+
+ * init.cc (nsdmi_inst): Remove.
+ (maybe_instantiate_nsdmi_init): Use DECL_INITIAL instead.
+
+2023-04-26 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/69836
+ * pt.cc (regenerate_decl_from_template): Skip unique friends.
+
+2023-04-26 Patrick Palka <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ PR c++/108975
+ * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
+ Suppress conservative early exit for reference variables
+ when DECL_HAS_VALUE_EXPR_P.
+
+2023-04-25 Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_scan_loop_body): Handle
+ zero exec statements before/after 'omp scan'.
+
+2023-04-24 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (cp_expr_location): Define here.
+ * tree.cc (cp_expr_location): Don't define here.
+
+2023-04-21 Jason Merrill <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ * tree.cc (cp_walk_subtrees): Avoid repeatedly dereferencing tp.
+ <case DECLTYPE_TYPE>: Use cp_unevaluated and WALK_SUBTREE.
+ <case ALIGNOF_EXPR etc>: Likewise.
+
+2023-04-20 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (tsubst) <case TEMPLATE_TYPE_PARM>: 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ * tree.cc (strip_typedefs): Move TREE_LIST handling to
+ strip_typedefs_expr. Dispatch to strip_typedefs_expr for
+ non-type 't'.
+ <case TYPENAME_TYPE>: Remove manual dispatching to
+ strip_typedefs_expr.
+ <case TRAIT_TYPE>: Likewise.
+ (strip_typedefs_expr): Replaces calls to strip_typedefs_expr
+ with strip_typedefs throughout. Don't dispatch to strip_typedefs
+ for type 't'.
+ <case TREE_LIST>: Replace this with the better version from
+ strip_typedefs.
+
+2023-04-19 Patrick Palka <ppalka@redhat.com>
+ Jonathan Wakely <jwakely@redhat.com>
+
+ 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) <case TRAIT_TYPE>: 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) <case TRAIT_TYPE>: Use
+ cp_tree_equal instead of same_type_p for the first argument.
+
+2023-04-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109556
+ * pt.cc (try_class_unification): Don't ggc_free the copy of
+ 'targs'.
+
+2023-04-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/108099
+ * decl.cc (grokdeclarator): Keep typedef_decl for __int128_t.
+
+2023-04-17 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109531
+ * pt.cc (tsubst) <case BOUND_TEMPLATE_TEMPLATE_PARM>:
+ In the level-lowering case just use lookup_template_class
+ to rebuild the bound ttp.
+
+2023-04-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/109357
+ * constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]:
+ Check for complex initializer.
+
+2023-04-13 Patrick Palka <ppalka@redhat.com>
+
+ 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) <case TYPENAME_TYPE>: 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 <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * typeck2.cc (cxx_incomplete_type_diagnostic): Return bool.
+ * cp-tree.h (cxx_incomplete_type_diagnostic): Adjust.
+
+2023-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ * 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 <iain@sandoe.co.uk>
+
+ * coroutines.cc (coro_rewrite_function_body): Ensure that added
+ bind expressions have scope blocks.
+
+2023-04-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/107484
+ * decl2.cc (find_last_decl): Return early if DECL_USE_TEMPLATE.
+
+2023-04-03 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109300
+ * decl.cc (cp_finish_decl): Diagnose ordinary auto deduction
+ with no initializer, instead of asserting.
+
+2023-04-01 Patrick Palka <ppalka@redhat.com>
+
+ 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) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as
+ 'in_decl' to coerce_template_parms.
+ (unify) <case TEMPLATE_PARM_INDEX>: 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 <ppalka@redhat.com>
+
+ 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) <case CALL_EXPR>: Revert r13-995 change.
+ (mark_template_arguments_used): Define.
+ (instantiate_body): Call mark_template_arguments_used.
+
+2023-04-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ 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 <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/105221
+ * pt.cc (unify) [FUNCTION_TYPE]: Handle function pointer
+ conversions.
+
+2023-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/107897
+ PR c++/108887
+ * decl2.cc (record_mangling): Use symtab_node::reset.
+
+2023-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ 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 <dmalcolm@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/105481
+ * pt.cc (type_unification_real): Adjust for partial ordering.
+
+2023-03-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/105996
+ * typeck.cc (build_ptrmemfunc): Drop 0-offset optimization
+ and location wrappers.
+
+2023-03-23 Marek Polacek <polacek@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/109241
+ * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO.
+
+2023-03-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/108390
+ * pt.cc (unify): Use fold of build_nop instead of fold_convert.
+
+2023-03-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/108795
+ * semantics.cc (finish_id_expression_1): Check scope before
+ returning id_expression.
+
+2023-03-22 Alex Coplan <alex.coplan@arm.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/106890
+ * init.cc (maybe_instantiate_nsdmi_init): Don't leave
+ current_function_decl set to a constructor.
+
+2023-03-20 Marek Polacek <polacek@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/108975
+ * lambda.cc (prune_lambda_captures): Don't bother in a template.
+
+2023-03-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/109172
+ * except.cc (build_throw): Check dtor access.
+
+2023-03-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/69410
+ * friend.cc (do_friend): Handle namespace as scope argument.
+ * decl.cc (grokdeclarator): Pass down in_namespace.
+
+2023-03-16 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/108242
+ * pt.cc (tsubst_expr) [TAG_DEFN]: Handle partial instantiation.
+
+2023-03-16 Jason Merrill <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/100288
+ * constraint.cc (satisfaction_cache::get): Relax overly strict
+ checking assert in the constraint recursion case.
+
+2023-03-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/105406
+ * coroutines.cc (build_co_await): Handle lvalue 'o'.
+
+2023-03-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/103871
+ PR c++/98056
+ * typeck.cc (cp_build_modify_expr): Allow array initialization of
+ DECL_ARTIFICIAL variable.
+
+2023-03-15 Marek Polacek <polacek@redhat.com>
+
+ PR c++/107280
+ * constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
+
+2023-03-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/58538
+ * semantics.cc (check_template_template_default_arg): Check
+ maybe_get_template_decl_from_type_decl.
+
+2023-03-15 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/108468
+ * pt.cc (unify_pack_expansion): Check that TPARMS_PRIMARY_TEMPLATE
+ is non-null.
+
+2023-03-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/107310
+ * cp-gimplify.cc (genericize_if_stmt): Restore folding
+ of constant conditions.
+
+2023-03-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/109096
+ * tree.cc (record_has_unique_obj_representations): Ignore unnamed
+ bitfields.
+
+2023-03-13 Jason Merrill <jason@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ PR c++/107532
+ * call.cc (reference_like_class_p): Check for std::span.
+
+2023-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/108972
+ * lambda.cc (compare_lambda_template_head): Check more
+ for error_mark_node.
+
+2023-03-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/108566
+ * mangle.cc (anon_aggr_naming_decl): New.
+ (write_unqualified_name): Use it.
+
+2023-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/108079
+ * decl.cc (poplevel): Suppress OPT_Wunused_variable warning
+ after diagnosing it.
+
+2023-03-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/108099
+ * decl.cc (grokdeclarator): Handle non-typedef typedef_decl.
+
+2023-03-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/108542
+ * class.cc (instantiate_type): Strip location wrapper.
+
+2023-03-09 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ DR 2664
+ PR c++/102529
+ * pt.cc (alias_ctad_tweaks): Continue after deduction failure.
+
+2023-03-09 Jason Merrill <jason@redhat.com>
+ Michael Spertus <mike@spertus.com>
+
+ 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 <jason@redhat.com>
+
+ * cp-trait.def (IS_DEDUCIBLE): Add space to name.
+
+2023-03-09 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ PR c++/109030
+ * constexpr.cc (cxx_eval_call_expression): Relax assert.
+
+2023-03-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/107939
+ * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>: Pass
+ 'any' when recursing on a VAR_DECL and not a pointer to function.
+
+2023-03-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/108702
+ * constexpr.cc: Include toplev.h.
+ (cxx_eval_constant_expression) <case DECL_EXPR>: 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 <ppalka@redhat.com>
+
+ 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 <oliva@adacore.com>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/108243
+ * constexpr.cc (maybe_constant_init_1): Override
+ manifestly_const_eval to true if is_static.
+
+2023-03-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/108716
+ * cp-gimplify.cc (cp_genericize_r) <case USING_STMT>: Set
+ DECL_SOURCE_LOCATION on IMPORTED_DECL to expression location
+ of USING_STMT or input_location.
+
+2023-03-02 Marek Polacek <polacek@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ PR c++/107574
+ * constexpr.cc (cxx_eval_constant_expression): Emit an error when
+ a PTRMEM_CST cannot be evaluated.
+
+2023-03-01 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (tsubst_scope): Define.
+ (tsubst_decl) <case USING_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.
+ <case SCOPE_REF>: Call tsubst_scope instead of calling
+ tsubst with tf_qualifying_scope set.
+
+2023-03-01 Patrick Palka <ppalka@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ PR c++/108606
+ * constexpr.cc (potential_constant_expression_1) <case DECL_EXPR>:
+ Only recurse on DECL_INITIAL (tmp) if tmp is a VAR_DECL, otherwise
+ just return true.
+
+2023-02-28 Patrick Palka <ppalka@redhat.com>
+
+ 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 <polacek@redhat.com>
+
+ PR c++/108550
+ * pt.cc (lookup_and_finish_template_variable): Clear tf_partial.
+
+2023-02-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/101073
+ * constexpr.cc (cxx_eval_call_expression): Replace shortcutting trivial
+ constructor/op= with a checking assert.
+
+2023-02-20 Marek Polacek <polacek@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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.
+ <case CALL_EXPR>: 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 <ppalka@redhat.com>
+
+ * 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 <ppalka@redhat.com>
+
+ 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) <case USING_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.
+ <case TYPENAME_TYPE>: 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.
+ <case SCOPE_REF>: Set tf_qualifying_scope when substituting the
+ scope.
+ <case *_TYPE>: Pass tf_qualifying_scope to tsubst if it was set.
+ * search.cc (lookup_member): Document default argument.
+
+2023-02-16 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h: Mechanically drop static from static inline
+ functions via s/^static inline/inline/g.
+
+2023-02-15 Marek Polacek <polacek@redhat.com>
+
+ PR c++/106675
+ * call.cc (joust_maybe_elide_copy): Return false for ck_ambig.
+
+2023-02-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/107079
+ * call.cc (set_up_extended_ref_temp): Pass var to maybe_constant_init.
+
+2023-02-09 Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_allocate): Parse align
+ clause and check for restrictions.
+
+2023-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/107461
+ * cp-tree.h (call_expr_dependent_name): Declare.
+ * pt.cc (iterative_hash_template_arg) <case CALL_EXPR>: 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) <case CALL_EXPR>: Adjust call to called_fns_equal.
+
+2023-02-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/108158
+ * constexpr.cc (cxx_eval_array_reference): Don't replace
+ new_ctx.object.
+
+2023-02-03 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/107461
+ * semantics.cc (finish_call_expr): Strip ADDR_EXPR from
+ the selected callee during overload set pruning.
+
+2023-02-03 Patrick Palka <ppalka@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ PR c++/108579
+ * class.cc (check_methods): Swap order of constraints_satisfied_p
+ and copy/move_fn_p tests.
+
+2023-02-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/107755
+ * call.cc (build_new_op): Don't call warn_logical_operator when
+ processing a template.
+
+2023-02-01 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ * 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 <jason@redhat.com>
+
+ PR c++/108559
+ * cp-gimplify.cc (any_non_eliding_target_exprs): New.
+ (cp_genericize_init): Check it.
+
+2023-01-31 Marek Polacek <polacek@redhat.com>
+
+ PR c++/107593
+ PR c++/108597
+ * cp-tree.h (instantiation_dependent_expression_p): Don't
+ declare here.
+
+2023-01-26 Marek Polacek <polacek@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ PR c++/108525
+ * mangle.cc (write_closure_type_name): Don't assume all
+ lambda operator() fns are methods.
+
+2023-01-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/108504
+ * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first
+ token, too.
+
+2023-01-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/108526
+ * pt.cc (tsubst_function_decl): Handle static lambda.
+
+2023-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/108474
+ * cp-gimplify.cc (cp_fold_r): Revert 2023-01-19 changes.
+
+2023-01-24 Jason Merrill <jason@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/107267
+ * cp-gimplify.cc (cp_gimplify_init_expr): Allow unexpected elision
+ of trivial types.
+
+2023-01-23 Marek Polacek <polacek@redhat.com>
+
+ 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 <jason@redhat.com>
+
+ PR c++/108195
+ * call.cc (build_user_type_conversion_1): Check whether the
+ iterators also find a list ctor.
+
+2023-01-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/108496
+ * decl.cc (grokdeclarator): Check whether DECL_RESULT is already
+ set.
+
+2023-01-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/53288
+ DR 1299
+ * call.cc (extend_ref_init_temps_1): Handle ptrmem expression.
+
+2023-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ PR c++/108365
+ * typeck.cc (cp_build_binary_op): Use may_shorten_divmod for integral
+ division or modulo.
+
+2023-01-13 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <ppalka@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ PR c++/108286
+ * semantics.cc (finish_omp_target_clauses): Ignore clauses other than
+ OMP_CLAUSE_MAP.
+
+2023-01-04 Patrick Palka <ppalka@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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.