]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/cp/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / cp / ChangeLog
index ff4b3977d9511f6da3bea2786a499116ee6a926c..ed86fa348d79aa9884a5139c257078744860c063 100644 (file)
+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.