+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