+2023-11-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/94264
+ PR c++/53220
+ * call.cc (convert_like_internal): Remove obsolete comment.
+ * typeck.cc (decay_conversion): Allow array prvalue.
+ (maybe_warn_about_returning_address_of_local): Check
+ for returning pointer to temporary.
+
+2023-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-objcp-common.cc (cp_feature_table): Evaluate
+ __has_extension (cxx_init_captures) to 1 even for -std=c++11.
+
+2023-11-27 Alex Coplan <alex.coplan@arm.com>
+ Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/60512
+ * cp-lang.cc (c_family_register_lang_features): New.
+ * cp-objcp-common.cc (struct cp_feature_selector): New.
+ (cp_feature_selector::has_feature): New.
+ (struct cp_feature_info): New.
+ (cp_register_features): New.
+ * cp-objcp-common.h (cp_register_features): New.
+
+2023-11-25 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * name-lookup.cc (check_can_export_using_decl): New.
+ (do_nonmember_using_decl): Use above to check if names can be
+ exported.
+
+2023-11-25 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/102341
+ * decl.cc (duplicate_decls): Allow exporting a redeclaration of
+ a typedef.
+
+2023-11-24 Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_clause_dist_schedule,
+ cp_parser_omp_scan_loop_body, cp_parser_omp_assumption_clauses,
+ cp_parser_omp_depobj): Add OPT_Wopenmp to warning_at.
+ * semantics.cc (finish_omp_clauses): Likewise.
+
+2023-11-24 Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_depobj): Accept optionally an argument
+ to the destroy clause.
+
+2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/99232
+ * decl.cc (grokvardecl): Don't mark variables attached to
+ modules as internal.
+
+2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/107398
+ * module.cc (trees_out::get_merge_kind): Handle lambdas in class
+ scope.
+ (maybe_key_decl): Remove assertion and fix whitespace.
+
+2023-11-24 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/98885
+ * decl.cc (duplicate_decls): Adjust error message.
+ (xref_tag): Adjust error message. Check exporting decl that is
+ already declared as non-exporting.
+
+2023-11-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/110348
+ * parser.cc: Implement C++26 P2741R3 - user-generated static_assert
+ messages.
+ (cp_parser_static_assert): Parse message argument as
+ conditional-expression if it is not a pure string literal or
+ several of them concatenated followed by closing paren.
+ * semantics.cc (finish_static_assert): Handle message which is not
+ STRING_CST. For condition with bare parameter packs return early.
+ * pt.cc (tsubst_expr) <case STATIC_ASSERT>: Also tsubst_expr
+ message and make sure that if it wasn't originally STRING_CST, it
+ isn't after tsubst_expr either.
+
+2023-11-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/112633
+ * pt.cc (tsubst_aggr_type): Handle empty TYPE_TEMPLATE_INFO
+ in the entering_scope adjustment.
+
+2023-11-22 Jason Merrill <jason@redhat.com>
+
+ * decl.cc (start_preparsed_function): Clarify ctype logic.
+
+2023-11-20 Marc Poulhiès <dkm@kataplop.net>
+
+ * lambda.cc (compare_lambda_sig): Fix typo in variadic.
+
+2023-11-20 Jason Merrill <jason@redhat.com>
+
+ * pt.cc (comp_template_parms): Just one level.
+ (template_parameter_lists_equivalent_p): Likewise.
+
+2023-11-20 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.h (DECL_TEMPLATE_PARM_CHECK): New.
+ (DECL_IMPLICIT_TEMPLATE_PARM_P): New.
+ (decl_template_parm_check): New.
+ * mangle.cc (write_closure_template_head): Use it.
+ * parser.cc (synthesize_implicit_template_parm): Likewise.
+ * pt.cc (template_parameters_equivalent_p): Likewise.
+
+2023-11-19 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/99187
+ * cp-tree.h (enum cp_tree_index): Add CPTI_THREAD_ATEXIT.
+ (thread_atexit_node): New.
+ * decl.cc (get_thread_atexit_node): Cache in thread_atexit_node.
+
+2023-11-19 David Malcolm <dmalcolm@redhat.com>
+
+ * mapper-client.cc: Include "rich-location.h".
+
+2023-11-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/112365
+ * class.cc (layout_class_type): Don't
+ SET_DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD on FIELD_DECLs with
+ error_mark_node type.
+
+2023-11-16 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111703
+ PR c++/107939
+ * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
+ Fix FUNCTION_POINTER_TYPE_P test.
+
+2023-11-16 Marek Polacek <polacek@redhat.com>
+
+ PR c++/112410
+ * parser.cc (cp_parser_direct_declarator): Maybe call
+ abort_fully_implicit_template if it turned out the parameter list was
+ ill-formed.
+
+2023-11-15 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
+
+ * tree.cc (build_cplus_array_type): Revert using the macro
+ CAN_HAVE_LOCATION_P.
+
+2023-11-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/112515
+ * decl.cc (is_direct_enum_init): Check type-dependence of the
+ single element.
+
+2023-11-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/101043
+ * tree.cc (strip_typedefs_expr) <case TREE_LIST>: Handle
+ non-empty TREE_PURPOSE.
+
+2023-11-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/112427
+ * tree.cc (build_min_non_dep): Propagate TREE_SIDE_EFFECTS from
+ the original arguments.
+ (build_min_non_dep_call_vec): Likewise.
+ * typeck2.cc (build_m_component_ref): Use cp_convert, build2 and
+ cp_fully_fold instead of fold_build_pointer_plus and fold_convert.
+ Don't build the POINTER_PLUS_EXPR in a template context.
+
+2023-11-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111703
+ PR c++/112269
+ * constexpr.cc (potential_constant_expression_1) <case VAR_DECL>:
+ Only consider var_in_maybe_constexpr_fn if 'now' is false.
+ <case INDIRECT_REF>: Likewise.
+
+2023-11-15 Jakub Jelinek <jakub@redhat.com>
+
+ * typeck.cc: Implement C++26 P2864R2 - Remove Deprecated Arithmetic
+ Conversion on Enumerations From C++26.
+ (do_warn_enum_conversions): Return bool rather than void, add COMPLAIN
+ argument. Use pedwarn rather than warning_at for C++26 and remove
+ " is deprecated" part of the diagnostics in that case. For SFINAE
+ in C++26 return true on newly erroneous cases.
+ (cp_build_binary_op): For C++26 call do_warn_enum_conversions
+ unconditionally, pass complain argument to it and if it returns true,
+ return error_mark_node.
+ * call.cc (build_conditional_expr): Use pedwarn rather than warning_at
+ for C++26 and remove " is deprecated" part of the diagnostics in that
+ case and check for complain & tf_warning_or_error. Use emit_diagnostic
+ with cxx_dialect >= cxx26 ? DK_PEDWARN : DK_WARNING. For SFINAE in
+ C++26 return error_mark_node on newly erroneous cases.
+ (build_new_op): Use emit_diagnostic with cxx_dialect >= cxx26
+ ? DK_PEDWARN : DK_WARNING and complain & tf_warning_or_error check
+ for C++26. For SFINAE in C++26 return error_mark_node on newly
+ erroneous cases.
+
+2023-11-14 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/103499
+ * module.cc (trees_out::decl_node): Write DECL_VINDEX for
+ virtual clones.
+ (trees_in::tree_node): Read DECL_VINDEX for virtual clones.
+
+2023-11-14 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/106849
+ * name-lookup.cc (do_nonmember_using_decl): Handle
+ TEMPLATE_DECLs when checking module attachment.
+
+2023-11-14 David Malcolm <dmalcolm@redhat.com>
+
+ * decl.cc (finish_function): Update call to
+ global_dc->m_option_enabled to use option_enabled_p.
+
+2023-11-14 David Malcolm <dmalcolm@redhat.com>
+
+ * contracts.cc (build_comment): Use global_dc's file_cache.
+
+2023-11-14 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/111842
+ PR c++/112498
+ * call.cc (convert_like_internal): Use OPT_Wnarrowing for
+ pedwarns about illformed conversions involving extended
+ floating-point types. Clarify that ISO C++ requires these
+ diagnostics.
+
+2023-11-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/111309
+ * call.cc (magic_varargs_p): Return 4 for
+ BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G.
+ (build_over_call): Don't promote first argument of
+ BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G.
+ * cp-gimplify.cc (cp_gimplify_expr): For BUILT_IN_C{L,T}ZG use
+ c_gimplify_expr.
+
+2023-11-10 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/79620
+ * cp-tree.h (STRIP_REFERENCE_REF): Define.
+ * semantics.cc (outer_var_p): Assert REFERENCE_REF_P is false.
+ (finish_decltype_type): Look through implicit INDIRECT_REF when
+ deciding whether to call capture_decltype.
+
+2023-11-10 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/79378
+ PR c++/96917
+ * semantics.cc (finish_decltype_type): Handle an id-expression
+ naming a capture proxy specially.
+
+2023-11-07 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * cp-tree.h (cp_omp_declare_target_attr): Add indirect field.
+ * decl2.cc (cplus_decl_attributes): Add attribute for indirect
+ functions.
+ * parser.cc (cp_parser_omp_clause_name): Handle indirect clause.
+ (cp_parser_omp_clause_indirect): New.
+ (cp_parser_omp_all_clauses): Handle indirect clause.
+ (handle_omp_declare_target_clause): Add extra parameter. Add
+ indirect attribute for indirect functions.
+ (OMP_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask.
+ (cp_parser_omp_declare_target): Handle indirect clause. Emit error
+ message if device_type or indirect clauses used alone. Emit error
+ if indirect clause used with device_type that is not 'any'.
+ (OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask.
+ (cp_parser_omp_begin): Handle indirect clause.
+ * semantics.cc (finish_omp_clauses): Handle indirect clause.
+
+2023-11-04 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.h (struct cp_parser): Adjust comment on omp_attrs_forbidden_p
+ member.
+ * parser.cc (cp_parser_omp_section_scan): Allow __directive__ spelling.
+
+2023-11-04 David Malcolm <dmalcolm@redhat.com>
+
+ * call.cc: Update for changes to diagnostic_context.
+ * class.cc: Likewise.
+ * decl.cc: Likewise.
+ * error.cc: Likewise.
+ * except.cc: Likewise.
+ * pt.cc: Likewise.
+
+2023-11-02 Jason Merrill <jason@redhat.com>
+
+ * semantics.cc (nrv_data): Change visited to hash_set.
+ (finalize_nrv_r): Reorganize.
+
+2023-11-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/112301
+ PR c++/102191
+ PR c++/33799
+ * except.cc (maybe_splice_retval_cleanup): Clear
+ current_retval_sentinel when destroying retval.
+ * semantics.cc (nrv_data): Add in_nrv_cleanup.
+ (finalize_nrv): Set it.
+ (finalize_nrv_r): Fix handling of throwing cleanups.
+
+2023-11-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/110342
+ * parser.cc: Implement C++26 P2361R6 - Unevaluated strings.
+ (uneval_string_attr): New enumerator.
+ (cp_parser_string_literal_common): Add UNEVAL argument. If true,
+ pass CPP_UNEVAL_STRING rather than CPP_STRING to
+ cpp_interpret_string_notranslate.
+ (cp_parser_string_literal, cp_parser_userdef_string_literal): Adjust
+ callers of cp_parser_string_literal_common.
+ (cp_parser_unevaluated_string_literal): New function.
+ (cp_parser_parenthesized_expression_list): Handle uneval_string_attr.
+ (cp_parser_linkage_specification): Use
+ cp_parser_unevaluated_string_literal for C++26.
+ (cp_parser_static_assert): Likewise.
+ (cp_parser_std_attribute): Use uneval_string_attr for standard
+ deprecated and nodiscard attributes.
+
+2023-10-31 David Malcolm <dmalcolm@redhat.com>
+
+ * module.cc (ordinary_loc_of): Update for removal of
+ MACRO_MAP_EXPANSION_POINT_LOCATION.
+ (module_state::note_location): Update for renaming of field.
+ (module_state::write_macro_maps): Likewise.
+
+2023-10-27 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111929
+ * init.cc (build_new_1): Remove unnecessary call to convert
+ on 'nelts'. Use build2 instead of fold_build2 for
+ 'outer_nelts_checks'.
+
+2023-10-27 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (maybe_warn_unparenthesized_assignment): Declare.
+ * semantics.cc (is_assignment_op_expr_p): Generalize to return
+ true for any assignment operator expression, not just one that
+ has been resolved to an operator overload.
+ (maybe_warn_unparenthesized_assignment): Factored out from ...
+ (maybe_convert_cond): ... here.
+ (finish_parenthesized_expr): Mention
+ maybe_warn_unparenthesized_assignment.
+ * typeck.cc (convert_for_assignment): Replace -Wparentheses
+ warning logic with maybe_warn_unparenthesized_assignment.
+
+2023-10-27 Lewis Hyatt <lhyatt@gmail.com>
+
+ PR preprocessor/87299
+ * parser.cc (cp_lexer_new_main): Call c_reset_target_pragmas ()
+ after preprocessing is complete, before starting compilation.
+
+2023-10-26 liuhongt <hongtao.liu@intel.com>
+
+ * typeck.cc (build_vec_cmp): Pass type of arg0 to
+ truth_type_for.
+
+2023-10-25 Jason Merrill <jason@redhat.com>
+
+ * cp-tree.def: Improve OFFSET_REF comment.
+ * cp-gimplify.cc (cp_fold_immediate): Add to comment.
+
+2023-10-25 Thomas Schwinge <thomas@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_clause_name): Return
+ 'PRAGMA_OACC_CLAUSE_SELF' for "self".
+ (cp_parser_oacc_data_clause, OACC_UPDATE_CLAUSE_MASK): Adjust.
+ (cp_parser_oacc_all_clauses): Remove 'bool compute_p' formal
+ parameter, and instead locally determine whether we're called for
+ an OpenACC compute construct or OpenACC 'update' directive.
+ (cp_parser_oacc_compute): Adjust.
+
+2023-10-25 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * parser.cc (cp_parser_oacc_compute_clause_self): New function.
+ (cp_parser_oacc_all_clauses): Add new 'bool compute_p = false'
+ parameter, add parsing of self clause when compute_p is true.
+ (OACC_KERNELS_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_SELF.
+ (OACC_PARALLEL_CLAUSE_MASK): Likewise,
+ (OACC_SERIAL_CLAUSE_MASK): Likewise.
+ (cp_parser_oacc_compute): Adjust call to c_parser_oacc_all_clauses to
+ set compute_p argument to true.
+ * pt.cc (tsubst_omp_clauses): Add OMP_CLAUSE_SELF case.
+ * semantics.cc (c_finish_omp_clauses): Add OMP_CLAUSE_SELF case, merged
+ with OMP_CLAUSE_IF case.
+
+2023-10-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111895
+ * typeck.cc (build_static_cast_1): Call decay_conversion.
+
+2023-10-24 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111929
+ * init.cc (build_new_1): Use convert, build2, build3 and
+ cp_fully_fold instead of fold_convert, size_binop and
+ fold_build3 when building up 'size'.
+
+2023-10-24 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111919
+ * tree.cc (cp_stabilize_reference): Do nothing when
+ processing_template_decl.
+
+2023-10-22 Patrick Palka <ppalka@redhat.com>
+
+ PR objc++/111920
+ * pt.cc (tsubst_expr) <case AT_ENCODE_EXPR>: Use tsubst instead
+ of tsubst_expr.
+
+2023-10-20 Jason Merrill <jason@redhat.com>
+
+ * call.cc (implicit_conversion_1): Rename...
+ (implicit_conversion): ...to this. Remove the old wrapper.
+
+2023-10-20 Jason Merrill <jason@redhat.com>
+
+ * call.cc (tourney): Only skip champ_compared_to_predecessor.
+
+2023-10-20 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/105322
+ * module.cc (trees_out::core_vals): Stream CONSTRUCTOR operands
+ after the type.
+ (trees_in::core_vals): Likewise.
+
+2023-10-20 Patrick Palka <ppalka@redhat.com>
+
+ * cp-lang.cc (objcp_tsubst_copy_and_build): Rename to ...
+ (objcp_tsubst_expr): ... this.
+ * cp-objcp-common.h (objcp_tsubst_copy_and_build): Rename to ...
+ (objcp_tsubst_expr): ... this.
+ * cp-tree.h (tsubst_copy_and_build): Remove declaration.
+ * init.cc (maybe_instantiate_nsdmi_init): Use tsubst_expr
+ instead of tsubst_copy_and_build.
+ * pt.cc (expand_integer_pack): Likewise.
+ (instantiate_non_dependent_expr_internal): Likewise.
+ (instantiate_class_template): Use tsubst_stmt instead of
+ tsubst_expr for STATIC_ASSERT.
+ (tsubst_function_decl): Adjust tsubst_copy_and_build uses.
+ (tsubst_arg_types): Likewise.
+ (tsubst_exception_specification): Likewise.
+ (tsubst_tree_list): Likewise.
+ (tsubst): Likewise.
+ (tsubst_name): Likewise.
+ (tsubst_omp_clause_decl): Use tsubst_stmt instead of tsubst_expr.
+ (tsubst_omp_clauses): Likewise.
+ (tsubst_copy_asm_operands): Adjust tsubst_copy_and_build use.
+ (tsubst_omp_for_iterator): Use tsubst_stmt instead of tsubst_expr.
+ (tsubst_expr): Rename to ...
+ (tsubst_stmt): ... this.
+ <case CO_YIELD_EXPR, CO_AWAIT_EXPR>: Move to tsubst_expr.
+ (tsubst_omp_udr): Use tsubst_stmt instead of tsubst_expr.
+ (tsubst_non_call_postfix_expression): Adjust tsubst_copy_and_build
+ use.
+ (tsubst_lambda_expr): Likewise. Use tsubst_stmt instead of
+ tsubst_expr for the body of a lambda.
+ (tsubst_copy_and_build_call_args): Rename to ...
+ (tsubst_call_args): ... this. Adjust tsubst_copy_and_build use.
+ (tsubst_copy_and_build): Rename to tsubst_expr. Adjust
+ tsubst_copy_and_build and tsubst_copy_and_build_call_args use.
+ <case TRANSACTION_EXPR>: Use tsubst_stmt instead of tsubst_expr.
+ (maybe_instantiate_noexcept): Adjust tsubst_copy_and_build use.
+ (instantiate_body): Use tsubst_stmt instead of tsubst_expr for
+ substituting the function body.
+ (tsubst_initializer_list): Adjust tsubst_copy_and_build use.
+
+2023-10-20 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (enum tsubst_flags): Add tf_no_name_lookup.
+ * pt.cc (tsubst_pack_expansion): Use tsubst for substituting
+ BASES_TYPE.
+ (tsubst_decl) <case USING_DECL>: Use tsubst_name instead of
+ tsubst_copy.
+ (tsubst) <case TEMPLATE_TYPE_PARM>: Use tsubst_copy_and_build
+ instead of tsubst_copy for substituting
+ CLASS_PLACEHOLDER_TEMPLATE.
+ <case TYPENAME_TYPE>: Use tsubst_name instead of tsubst_copy for
+ substituting TYPENAME_TYPE_FULLNAME.
+ (tsubst_name): Define.
+ (tsubst_qualified_id): Use tsubst_name instead of tsubst_copy
+ for substituting the component name of a SCOPE_REF.
+ (tsubst_copy): Remove.
+ (tsubst_copy_and_build): Clear tf_no_name_lookup at the start,
+ and remember if it was set. Call maybe_dependent_member_ref if
+ tf_no_name_lookup was not set.
+ <case IDENTIFIER_NODE>: Don't do name lookup if tf_no_name_lookup
+ was set.
+ <case TEMPLATE_ID_EXPR>: If tf_no_name_lookup was set, use
+ tsubst_name instead of tsubst_copy_and_build to substitute the
+ template and don't finish the template-id.
+ <case BIT_NOT_EXPR>: Handle identifier and type operand (if
+ tf_no_name_lookup was set).
+ <case SCOPE_REF>: Avoid trying to resolve a SCOPE_REF if
+ tf_no_name_lookup was set by calling build_qualified_name directly
+ instead of tsubst_qualified_id.
+ <case SIZEOF_EXPR>: Handling of sizeof... copied from tsubst_copy.
+ <case CALL_EXPR>: Use tsubst_name instead of tsubst_copy to
+ substitute a TEMPLATE_ID_EXPR callee naming an unresolved template.
+ <case COMPONENT_REF>: Likewise to substitute the member.
+ <case FUNCTION_DECL>: Copied from tsubst_copy and merged with ...
+ <case VAR_DECL, PARM_DECL>: ... these. Initial handling copied
+ from tsubst_copy. Optimize local variable substitution by
+ trying retrieve_local_specialization before checking
+ uses_template_parms.
+ <case CONST_DECL>: Copied from tsubst_copy.
+ <case FIELD_DECL>: Likewise.
+ <case NAMESPACE_DECL>: Likewise.
+ <case OVERLOAD>: Likewise.
+ <case TEMPLATE_DECL>: Likewise.
+ <case TEMPLATE_PARM_INDEX>: Likewise.
+ <case TYPE_DECL>: Likewise.
+ <case CLEANUP_POINT_EXPR>: Likewise.
+ <case OFFSET_REF>: Likewise.
+ <case EXPR_PACK_EXPANSION>: Likewise.
+ <case NONTYPE_ARGUMENT_PACK>: Likewise.
+ <case *_CST>: Likewise.
+ <case *_*_FOLD_EXPR>: Likewise.
+ <case DEBUG_BEGIN_STMT>: Likewise.
+ <case CO_AWAIT_EXPR>: Likewise.
+ <case TRAIT_EXPR>: Use tsubst and tsubst_copy_and_build instead
+ of tsubst_copy.
+ <default>: Copied from tsubst_copy.
+ (tsubst_initializer_list): Use tsubst and tsubst_copy_and_build
+ instead of tsubst_copy.
+
+2023-10-20 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/106086
+ * parser.cc (cp_parser_postfix_expression): Consolidate three
+ calls to finish_call_expr, one to build_new_method_call and
+ one to build_min_nt_call_vec into one call to finish_call_expr.
+ Don't call maybe_generic_this_capture here.
+ * pt.cc (tsubst_copy_and_build) <case CALL_EXPR>: Remove
+ COMPONENT_REF callee handling.
+ (type_dependent_expression_p): Use t_d_object_e_p instead of
+ t_d_e_p for COMPONENT_REF and OFFSET_REF.
+ * semantics.cc (finish_call_expr): In the type-dependent case,
+ call maybe_generic_this_capture here instead.
+
+2023-10-20 Patrick Palka <ppalka@redhat.com>
+
+ * call.cc (build_new_method_call): Remove calls to
+ build_non_dependent_expr and/or make_args_non_dependent.
+ * coroutines.cc (finish_co_return_stmt): Likewise.
+ * cp-tree.h (build_non_dependent_expr): Remove.
+ (make_args_non_dependent): Remove.
+ * decl2.cc (grok_array_decl): Remove calls to
+ build_non_dependent_expr and/or make_args_non_dependent.
+ (build_offset_ref_call_from_tree): Likewise.
+ * init.cc (build_new): Likewise.
+ * pt.cc (make_args_non_dependent): Remove.
+ (test_build_non_dependent_expr): Remove.
+ (cp_pt_cc_tests): Adjust.
+ * semantics.cc (finish_expr_stmt): Remove calls to
+ build_non_dependent_expr and/or make_args_non_dependent.
+ (finish_for_expr): Likewise.
+ (finish_call_expr): Likewise.
+ (finish_omp_atomic): Likewise.
+ * typeck.cc (finish_class_member_access_expr): Likewise.
+ (build_x_indirect_ref): Likewise.
+ (build_x_binary_op): Likewise.
+ (build_x_array_ref): Likewise.
+ (build_x_vec_perm_expr): Likewise.
+ (build_x_shufflevector): Likewise.
+ (build_x_unary_op): Likewise.
+ (cp_build_addressof): Likewise.
+ (build_x_conditional_expr): Likewise.
+ (build_x_compound_expr): Likewise.
+ (build_static_cast): Likewise.
+ (build_x_modify_expr): Likewise.
+ (check_return_expr): Likewise.
+ * typeck2.cc (build_x_arrow): Likewise.
+
+2023-10-20 Patrick Palka <ppalka@redhat.com>
+
+ * class.cc (instantiate_type): Remove NON_DEPENDENT_EXPR
+ handling.
+ * constexpr.cc (cxx_eval_constant_expression): Likewise.
+ (potential_constant_expression_1): Likewise.
+ * coroutines.cc (coro_validate_builtin_call): Don't
+ expect ALIGNOF_EXPR to be wrapped in NON_DEPENDENT_EXPR.
+ * cp-objcp-common.cc (cp_common_init_ts): Remove
+ NON_DEPENDENT_EXPR handling.
+ * cp-tree.def (NON_DEPENDENT_EXPR): Remove.
+ * cp-tree.h (build_non_dependent_expr): Temporarily redefine as
+ the identity function.
+ * cvt.cc (maybe_warn_nodiscard): Handle type-dependent and
+ variable callee of CALL_EXPR.
+ * cxx-pretty-print.cc (cxx_pretty_printer::expression): Remove
+ NON_DEPENDENT_EXPR handling.
+ * error.cc (dump_decl): Likewise.
+ (dump_expr): Likewise.
+ * expr.cc (mark_use): Likewise.
+ (mark_exp_read): Likewise.
+ * pt.cc (build_non_dependent_expr): Remove.
+ * tree.cc (lvalue_kind): Remove NON_DEPENDENT_EXPR handling.
+ (cp_stabilize_reference): Likewise.
+ * typeck.cc (warn_for_null_address): Likewise.
+ (cp_build_binary_op): Handle type-dependent SIZEOF_EXPR operands.
+ (cp_build_unary_op) <case TRUTH_NOT_EXPR>: Don't fold inside a
+ template.
+
+2023-10-20 Alexandre Oliva <oliva@adacore.com>
+
+ * decl.cc (push_throw_library_fn): Mark with ECF_XTHROW.
+ * except.cc (build_throw): Likewise __cxa_throw,
+ _ITM_cxa_throw, __cxa_rethrow.
+
+2023-10-20 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/101631
+ PR c++/102286
+ * call.cc (build_over_call): Fold more indirect refs for trivial
+ assignment op.
+ * class.cc (type_has_non_deleted_trivial_default_ctor): Create.
+ * constexpr.cc (cxx_eval_call_expression): Start lifetime of
+ union member before entering constructor.
+ (cxx_eval_component_reference): Check against first member of
+ value-initialised union.
+ (cxx_eval_store_expression): Activate member for
+ value-initialised union. Check for accessing inactive union
+ member indirectly.
+ * cp-tree.h (type_has_non_deleted_trivial_default_ctor):
+ Forward declare.
+
+2023-10-20 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * constexpr.cc (is_std_source_location_current): New.
+ (cxx_eval_constant_expression): Only ignore cast from void* for
+ specific cases and improve other diagnostics.
+
+2023-10-19 Marek Polacek <polacek@redhat.com>
+
+ * cp-gimplify.cc (cp_fold_r): Don't call maybe_constant_value.
+
+2023-10-19 Jason Merrill <jason@redhat.com>
+
+ * typeck2.cc (check_narrowing): Adjust.
+
+2023-10-19 Jason Merrill <jason@redhat.com>
+
+ * parser.cc (cp_parser_primary_expression): Use G_.
+ (cp_parser_using_enum): Likewise.
+ * decl.cc (identify_goto): Likewise.
+
+2023-10-18 Jason Merrill <jason@redhat.com>
+
+ * typeck2.cc (check_narrowing): Use permerror.
+
+2023-10-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111840
+ * parser.cc (cp_parser_simple_declaration): Do cp_parser_error
+ for FUNCTION_DECLs.
+
+2023-10-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111660
+ * cp-gimplify.cc (cp_fold_immediate_r) <case COND_EXPR>: Don't
+ handle it here.
+ (cp_fold_r): Handle COND_EXPR here.
+
+2023-10-17 Jason Merrill <jason@redhat.com>
+
+ * mangle.cc (abi_check): New.
+ (write_prefix, write_unqualified_name, write_discriminator)
+ (write_type, write_member_name, write_expression)
+ (write_template_arg, write_template_param): Use it.
+ (start_mangling): Assign from {}.
+ * cp-tree.h: Update comment.
+
+2023-10-17 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * constexpr.cc (cxx_eval_dynamic_cast_fn): Add missing
+ auto_diagnostic_group.
+ (cxx_eval_call_expression): Likewise.
+ (diag_array_subscript): Likewise.
+ (outside_lifetime_error): Likewise.
+ (potential_constant_expression_1): Likewise.
+
+2023-10-16 Jason Merrill <jason@redhat.com>
+
+ * parser.cc (cp_parser_fold_expression): Track location range.
+ * semantics.cc (finish_unary_fold_expr)
+ (finish_left_unary_fold_expr, finish_right_unary_fold_expr)
+ (finish_binary_fold_expr): Add location parm.
+ * constraint.cc (finish_shorthand_constraint): Pass it.
+ * pt.cc (convert_generic_types_to_packs): Likewise.
+ * cp-tree.h: Adjust.
+
+2023-10-16 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111272
+ * constexpr.cc (explain_invalid_constexpr_fn): Also check the body of
+ a constructor in C++14 and up.
+
+2023-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/102989
+ * module.cc (trees_out::start, trees_in::start): Remove
+ TREE_INT_CST_OFFSET_NUNITS handling.
+
+2023-10-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/109422
+ * mangle.cc (write_template_param): Also mangle level.
+
+2023-10-08 David Malcolm <dmalcolm@redhat.com>
+
+ * module.cc (module_state::read_location): Update for renaming of
+ get_combined_adhoc_loc.
+
+2023-10-03 David Malcolm <dmalcolm@redhat.com>
+
+ * error.cc (print_instantiation_partial_context_line): Call
+ diagnostic_show_locus.
+
+2023-10-03 David Malcolm <dmalcolm@redhat.com>
+
+ * error.cc: Update for "m_" prefixes to text_info fields.
+
+2023-09-30 Eugene Rozenfeld <erozen@microsoft.com>
+
+ * Make-lang.in: Make create_fdas_for_cc1plus target not .PHONY
+
+2023-09-28 Richard Sandiford <richard.sandiford@arm.com>
+
+ * constexpr.cc (cxx_fold_indirect_ref): Remove unused variables.
+
+2023-09-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/111357
+ * pt.cc (expand_integer_pack): Use IMPLICIT_CONV_EXPR.
+
+2023-09-22 Jason Merrill <jason@redhat.com>
+
+ * constexpr.cc (free_constructor): Handle null ce->value.
+
+2023-09-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/111529
+ * parser.cc (cp_parser_lambda_declarator_opt): Don't suggest
+ -std=c++14 for lambda templates.
+ * pt.cc (tsubst_expr): Move ANNOTATE_EXPR handling...
+ (tsubst_copy_and_build): ...here.
+
+2023-09-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111493
+ * decl2.cc (grok_array_decl): Guard diagnostic and backward
+ compatibility fallback code paths with tf_error.
+
+2023-09-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111485
+ * pt.cc (is_compatible_template_arg): New parameter 'args'.
+ Add the outer template arguments 'args' to 'new_args'.
+ (convert_template_argument): Pass 'args' to
+ is_compatible_template_arg.
+
+2023-09-20 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.cc (cp_parser_postfix_expression): Parse
+ __builtin_classify_type call with typename as argument.
+ * pt.cc (tsubst_copy_and_build): Handle __builtin_classify_type
+ with dependent typename as argument.
+
+2023-09-20 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111471
+ * cxx-pretty-print.cc (cxx_pretty_printer::expression)
+ <case VAR_DECL>: Handle class NTTP objects by printing
+ their type and value.
+ <case VIEW_CONVERT_EXPR>: Strip const VIEW_CONVERT_EXPR
+ wrappers for class NTTPs.
+ (pp_cxx_template_argument_list): Don't handle class NTTP
+ objects here.
+
+2023-09-20 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (tsubst_function_decl): Don't bother computing 'argvec'
+ when 'lambda_fntype' is set.
+ (tsubst_template_decl): Make sure we return a TEMPLATE_DECL
+ during specialization lookup. In the non-class non-function
+ template case, use tsubst_decl directly with use_spec_table=false,
+ update DECL_TI_ARGS and call register_specialization like
+ tsubst_decl would have done if use_spec_table=true.
+
+2023-09-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/111392
+ * parser.h (struct cp_lexer): Add in_omp_decl_attribute member.
+ * cp-tree.h (cp_maybe_parse_omp_decl): Declare.
+ * parser.cc (cp_parser_handle_statement_omp_attributes): Diagnose
+ omp::decl attribute on statements. Adjust diagnostic wording for
+ omp::decl.
+ (cp_parser_omp_directive_args): Add DECL_P argument, set TREE_PUBLIC
+ to it on the DEFERRED_PARSE tree.
+ (cp_parser_omp_sequence_args): Adjust caller.
+ (cp_parser_std_attribute): Handle omp::decl attribute.
+ (cp_parser_omp_var_list): If parser->lexer->in_omp_decl_attribute
+ don't expect any arguments, instead create clause or TREE_LIST for
+ that decl.
+ (cp_parser_late_parsing_omp_declare_simd): Adjust diagnostic wording
+ for omp::decl.
+ (cp_maybe_parse_omp_decl): New function.
+ (cp_parser_omp_declare_target): If
+ parser->lexer->in_omp_decl_attribute and first token isn't name or
+ comma invoke cp_parser_omp_var_list.
+ * decl2.cc (cplus_decl_attributes): Adjust diagnostic wording for
+ omp::decl. Handle omp::decl on declarations.
+ * name-lookup.cc (finish_using_directive): Adjust diagnostic wording
+ for omp::decl.
+
+2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
+
+ * mapper-client.cc, mapper-client.h (open_module_client): Accept
+ dependency tracking and track module mapper files as
+ dependencies.
+ * module.cc (make_mapper, get_mapper): Pass the dependency
+ tracking class down.
+
+2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
+
+ * module.cc (do_import): Report imported CMI files as
+ dependencies.
+
+2023-09-19 Ben Boeckel <ben.boeckel@kitware.com>
+
+ * module.cc (preprocessed_module): Pass whether the module is
+ exported to dependency tracking.
+
+2023-09-19 Javier Martinez <javier.martinez.bugzilla@gmail.com>
+
+ * class.cc (propagate_class_warmth_attribute): New function.
+ (check_bases_and_members): propagate hot and cold attributes
+ to all FUNCTION_DECL when the record is marked hot or cold.
+ * cp-tree.h (maybe_propagate_warmth_attributes): New function.
+ * decl2.cc (maybe_propagate_warmth_attributes): New function.
+ * method.cc (lazily_declare_fn): propagate hot and cold
+ attributes to lazily declared functions when the record is
+ marked hot or cold.
+
+2023-09-19 Patrick Palka <ppalka@redhat.com>
+
+ * ptree.cc (cxx_print_type): Remove TYPE_LANG_SPECIFIC
+ test guarding TYPE_TEMPLATE_INFO.
+
+2023-09-19 Jason Merrill <jason@redhat.com>
+
+ DR 2799
+ * class.cc (add_implicit_default_ctor): Split out...
+ (add_implicitly_declared_members): ...from here.
+ Also call it when inheriting a default ctor.
+
+2023-09-19 Marek Polacek <polacek@redhat.com>
+
+ * call.cc (build_over_call): Set ADDR_EXPR_DENOTES_CALL_P. Don't handle
+ immediate_invocation_p here.
+ * constexpr.cc (cxx_eval_call_expression): Use mce_true for
+ DECL_IMMEDIATE_FUNCTION_P.
+ (cxx_eval_conditional_expression): Call cp_fold_immediate.
+ * cp-gimplify.cc (enum fold_flags): Add ff_fold_immediate.
+ (maybe_replace_decl): Make static.
+ (cp_fold_r): Expand immediate invocations.
+ (cp_fold_immediate_r): New.
+ (cp_fold_immediate): New.
+ * cp-tree.h (ADDR_EXPR_DENOTES_CALL_P): Define.
+ (cp_fold_immediate): Declare.
+ * tree.cc (bot_replace): Don't handle immediate invocations here.
+
+2023-09-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/111419
+ * cvt.cc (convert_to_void) <case INDIRECT_REF>: Only call
+ complete_type if the type is volatile.
+ <case VAR_DECL>: Likewise.
+
+2023-09-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99631
+ * semantics.cc (finish_decltype_type): For an NTTP object,
+ return its type modulo cv-quals.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/89231
+ * pt.cc (try_class_unification): Strengthen TI_TEMPLATE equality
+ test by not calling most_general_template. Only unify the
+ innermost levels of template arguments.
+ (unify) <case CLASS_TYPE>: Only unify the innermost levels of
+ template arguments, and only if the template is primary.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/63198
+ PR c++/18474
+ * semantics.cc (maybe_convert_cond): Look through implicit
+ INDIRECT_REF when deciding whether to issue a -Wparentheses
+ warning, and consider templated assignment expressions as well.
+ (finish_parenthesized_expr): Look through implicit INDIRECT_REF
+ when suppressing -Wparentheses warning.
+ * typeck.cc (build_x_modify_expr): Check simple assignments
+ ahead time too, not just compound assignments. Give the second
+ operand of MODOP_EXPR a non-null type so that it's not considered
+ always instantiation-dependent. Don't call suppress_warning.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/108347
+ * pt.cc (unify): Return unify_success for identical dependent
+ DECL_P 'arg' and 'parm'.
+ <case CONST_DECL>: Remove handling.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ * call.cc (add_template_candidate_real): Check arity even
+ when there are no explicit template arguments. Combine the
+ two adjacent '!obj' tests into one.
+
+2023-09-18 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (register_specialization): Remove now-unnecessary
+ early exit for FUNCTION_DECL partial instantiation.
+ (tsubst_template_decl): Pass use_spec_table=false to
+ tsubst_function_decl. Set DECL_TI_ARGS of a non-lambda
+ FUNCTION_DECL specialization to the full set of arguments.
+ Simplify register_specialization call accordingly.
+
+2023-09-18 Jason Merrill <jason@redhat.com>
+
+ * class.cc (check_subobject_offset): Use similar_type_p.
+
+2023-09-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/111357
+ * pt.cc (expand_integer_pack): Convert argument to int.
+
+2023-09-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/107198
+ * typeck2.cc (process_init_constructor_array): Use VEC_INIT_EXPR
+ regardless of seen_error.
+
+2023-09-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/99599
+ * pt.cc (check_non_deducible_conversions): Add bool parameter
+ passed down to check_non_deducible_conversion.
+ (fn_type_unification): Call check_non_deducible_conversions
+ an extra time before satisfaction with noninst_only_p=true.
+ (conversion_may_instantiate_p): Define.
+ (check_non_deducible_conversion): Add bool parameter controlling
+ whether to compute only conversions that are guaranteed to
+ not induce template instantiation.
+
+2023-09-07 Sandra Loosemore <sandra@codesourcery.com>
+
+ PR c++/111274
+ * parser.cc (fixup_blocks_walker): Check for null BIND_EXPR_BLOCK.
+
+2023-09-06 Jason Merrill <jason@redhat.com>
+
+ * class.cc (check_subobject_offset): Check
+ same_type_ignoring_top_level_qualifiers_p.
+
+2023-09-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91483
+ * constexpr.cc (verify_constant_explain_r): New.
+ (verify_constant): Call it.
+
+2023-09-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/52953
+ * name-lookup.cc (check_local_shadow): Don't punt early for
+ DECL_EXTERNAL decls, instead just disable the shadowing of namespace
+ decls check for those and emit a pedwarn rather than error_at or
+ permerror for those. Formatting fix.
+
+2023-09-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/52953
+ * name-lookup.h (struct cp_binding_level): Add artificial bit-field.
+ Formatting fixes.
+ * name-lookup.cc (check_local_shadow): Skip artificial bindings when
+ checking if parameter scope is parent scope. Don't special case
+ FUNCTION_NEEDS_BODY_BLOCK. Diagnose the in_function_try_handler
+ cases in the b->kind == sk_function_parms test and verify no
+ non-artificial intervening scopes. Add missing auto_diagnostic_group.
+ * decl.cc (begin_function_body): Set
+ current_binding_level->artificial.
+ * semantics.cc (begin_function_try_block): Likewise.
+
+2023-09-05 Patrick Palka <ppalka@redhat.com>
+
+ * parser.cc (cp_parser_parenthesized_expression_list_elt): Pass
+ nullptr as non_constant_p to cp_parser_braced_list if our
+ non_constant_p is null.
+ (cp_parser_initializer_list): Likewise to
+ cp_parser_initializer_clause. Avoid inspecting
+ clause_non_constant_p if it's uninitialized.
+
+2023-09-05 Patrick Palka <ppalka@redhat.com>
+
+ * call.cc (build_user_type_conversion): Free allocated
+ conversions.
+ (build_converted_constant_expr_internal): Use
+ conversion_obstack_sentinel instead.
+ (perform_dguide_overload_resolution): Likewise.
+ (build_new_function_call): Likewise.
+ (build_operator_new_call): Free allocated conversions.
+ (build_op_call): Use conversion_obstack_sentinel instead.
+ (build_conditional_expr): Use conversion_obstack_sentinel
+ instead, and hoist it out to the outermost scope.
+ (build_new_op): Use conversion_obstack_sentinel instead
+ and set it up before the first goto. Remove second unneeded goto.
+ (build_op_subscript): Use conversion_obstack_sentinel instead.
+ (ref_conv_binds_to_temporary): Likewise.
+ (build_new_method_call): Likewise.
+ (can_convert_arg): Likewise.
+ (can_convert_arg_bad): Likewise.
+ (perform_implicit_conversion_flags): Likewise.
+ (perform_direct_initialization_if_possible): Likewise.
+ (initialize_reference): Likewise.
+
+2023-09-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/111069
+ * cp-tree.h (determine_local_discriminator): Add NAME argument with
+ NULL_TREE default.
+ (struct cp_decomp): New type.
+ (cp_finish_decl): Add DECOMP argument defaulted to nullptr.
+ (cp_maybe_mangle_decomp): Remove declaration.
+ (cp_finish_decomp): Add cp_decomp * argument, remove tree and unsigned
+ args.
+ (cp_convert_range_for): Likewise.
+ * decl.cc (determine_local_discriminator): Add NAME argument, use it
+ if non-NULL, otherwise compute it the old way.
+ (maybe_commonize_var): Don't return early for structured bindings.
+ (cp_finish_decl): Add DECOMP argument, if non-NULL, call
+ cp_maybe_mangle_decomp.
+ (cp_maybe_mangle_decomp): Make it static with a forward declaration.
+ Call determine_local_discriminator. Replace FIRST and COUNT arguments
+ with DECOMP argument.
+ (cp_finish_decomp): Replace FIRST and COUNT arguments with DECOMP
+ argument.
+ * mangle.cc (find_decomp_unqualified_name): Remove.
+ (write_unqualified_name): Don't call find_decomp_unqualified_name.
+ (mangle_decomp): Handle mangling of static function/block scope
+ structured bindings. Don't call decl_mangling_context twice. Call
+ check_abi_tags, call write_abi_tags for abi version >= 19 and emit
+ -Wabi warnings if needed.
+ (write_guarded_var_name): Handle structured bindings.
+ (mangle_ref_init_variable): Use write_guarded_var_name.
+ * parser.cc (cp_parser_range_for): Adjust do_range_for_auto_deduction
+ and cp_convert_range_for callers.
+ (do_range_for_auto_deduction): Replace DECOMP_FIRST_NAME and
+ DECOMP_CNT arguments with DECOMP. Adjust cp_finish_decomp caller.
+ (cp_convert_range_for): Replace DECOMP_FIRST_NAME and
+ DECOMP_CNT arguments with DECOMP. Don't call cp_maybe_mangle_decomp,
+ adjust cp_finish_decl and cp_finish_decomp callers.
+ (cp_parser_decomposition_declaration): Don't call
+ cp_maybe_mangle_decomp, adjust cp_finish_decl and cp_finish_decomp
+ callers.
+ (cp_convert_omp_range_for): Adjust do_range_for_auto_deduction
+ and cp_finish_decomp callers.
+ (cp_finish_omp_range_for): Don't call cp_maybe_mangle_decomp,
+ adjust cp_finish_decl and cp_finish_decomp callers.
+ * pt.cc (tsubst_omp_for_iterator): Adjust tsubst_decomp_names
+ caller.
+ (tsubst_decomp_names): Replace FIRST and CNT arguments with DECOMP.
+ (tsubst_expr): Don't call cp_maybe_mangle_decomp, adjust
+ tsubst_decomp_names, cp_finish_decl, cp_finish_decomp and
+ cp_convert_range_for callers.
+
+2023-08-30 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91319
+ * parser.cc (cp_parser_initializer_list): Set CONSTRUCTOR_IS_DIRECT_INIT
+ when the designated initializer is of the .x{} form.
+
+2023-08-30 Marek Polacek <polacek@redhat.com>
+
+ PR c++/111173
+ * decl.cc (grokdeclarator): Disallow constinit on functions.
+
+2023-08-29 Marek Polacek <polacek@redhat.com>
+
+ * call.cc (convert_like_internal): Show where the conversion function
+ was declared.
+ (maybe_show_nonconverting_candidate): New.
+ * cp-tree.h (maybe_show_nonconverting_candidate): Declare.
+ * typeck.cc (convert_for_assignment): Call it.
+
+2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
+
+ * cp-tree.h (cp_convert_omp_range_for): Adjust declaration.
+ * parser.cc (struct omp_for_parse_data): New.
+ (cp_parser_postfix_expression): Diagnose calls to OpenMP runtime
+ in intervening code.
+ (check_omp_intervening_code): New.
+ (cp_parser_statement_seq_opt): Special-case nested loops, blocks,
+ and other constructs for OpenMP loops.
+ (cp_parser_iteration_statement): Reject loops in intervening code.
+ (cp_parser_omp_for_loop_init): Expand comments and tweak the
+ interface slightly to better distinguish input/output parameters.
+ (cp_convert_omp_range_for): Likewise.
+ (cp_parser_omp_loop_nest): New, split from cp_parser_omp_for_loop
+ and largely rewritten. Add more comments.
+ (insert_structured_blocks): New.
+ (find_structured_blocks): New.
+ (struct sit_data, substitute_in_tree_walker, substitute_in_tree):
+ New.
+ (fixup_blocks_walker): New.
+ (cp_parser_omp_for_loop): Rewrite to use recursive descent instead
+ of a loop. Add logic to reshuffle the bits of code collected
+ during parsing so intervening code gets moved to the loop body.
+ (cp_parser_omp_loop): Remove call to finish_omp_for_block, which
+ is now redundant.
+ (cp_parser_omp_simd): Likewise.
+ (cp_parser_omp_for): Likewise.
+ (cp_parser_omp_distribute): Likewise.
+ (cp_parser_oacc_loop): Likewise.
+ (cp_parser_omp_taskloop): Likewise.
+ (cp_parser_pragma): Reject OpenMP pragmas in intervening code.
+ * parser.h (struct cp_parser): Add omp_for_parse_state field.
+ * pt.cc (tsubst_omp_for_iterator): Adjust call to
+ cp_convert_omp_range_for.
+ * semantics.cc (finish_omp_for): Try harder to preserve location
+ of loop variable init expression for use in diagnostics.
+ (struct fofb_data, finish_omp_for_block_walker): New.
+ (finish_omp_for_block): Allow variables to be bound in a BIND_EXPR
+ nested inside BIND instead of directly in BIND itself.
+
+2023-08-25 Sandra Loosemore <sandra@codesourcery.com>
+
+ * constexpr.cc (cxx_eval_constant_expression): Handle
+ OMP_STRUCTURED_BLOCK.
+ * pt.cc (tsubst_expr): Likewise.
+
+2023-08-25 Uros Bizjak <ubizjak@gmail.com>
+
+ * call.cc (build_conditional_expr):
+ Rename TRUE/FALSE to true/false.
+ (build_new_op): Ditto.
+
+2023-08-22 Jason Merrill <jason@redhat.com>
+
+ * pt.cc (outer_template_args): Handle non-template argument.
+ * constraint.cc (maybe_substitute_reqs_for): Pass decl to it.
+ * cp-tree.h (outer_template_args): Adjust.
+
+2023-08-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/109751
+ * cp-tree.h (member_like_constrained_friend_p): Declare.
+ * decl.cc (member_like_constrained_friend_p): New.
+ (function_requirements_equivalent_p): Check it.
+ (duplicate_decls): Check it.
+ (grokfndecl): Check friend template constraints.
+ * mangle.cc (decl_mangling_context): Check it.
+ (write_unqualified_name): Check it.
+ * pt.cc (uses_outer_template_parms_in_constraints): Fix for friends.
+ (tsubst_friend_function): Don't check satisfaction.
+
+2023-08-22 Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_clause_defaultmap): Parse
+ 'all' as category.
+
+2023-08-15 Chung-Lin Tang <cltang@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ * parser.cc (OACC_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
+
+2023-08-14 gnaggnoyil <gnaggnoyil@gmail.com>
+
+ DR 2386
+ PR c++/110216
+ * decl.cc (get_tuple_size): Update implementation for DR 2386.
+
+2023-08-14 Jason Merrill <jason@redhat.com>
+
+ * parser.cc (cp_parser_simple_type_specifier): Handle -std=c++14
+ -fconcepts.
+
+2023-08-12 Patrick Palka <ppalka@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/106604
+ * decl.cc (redeclaration_error_message): Remove special handling
+ for deduction guides.
+ (grokfndecl): Give deduction guides a dummy DECL_INITIAL.
+
+2023-08-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110927
+ * parser.cc (cp_parser_type_requirement): Pass
+ check_dependency_p=true instead of =false.
+
+2023-08-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/71954
+ * decl.cc (grokdeclarator): Pass 'dname' instead of
+ 'unqualified_id' as the name when building the VAR_DECL for a
+ static data member. Call check_explicit_specialization for a
+ TEMPLATE_ID_EXPR such member.
+ * pt.cc (finish_member_template_decl): Return NULL_TREE
+ instead of 'decl' when DECL_TEMPLATE_SPECIALIZATION is not
+ set.
+
+2023-08-11 Patrick Palka <ppalka@redhat.com>
+
+ * ptree.cc (cxx_print_decl): Check for DECL_LANG_SPECIFIC and
+ TS_DECL_COMMON only when necessary. Print DECL_TEMPLATE_INFO
+ for all decls that have it, not just VAR_DECL or FUNCTION_DECL.
+ Also print DECL_USE_TEMPLATE.
+ (cxx_print_type): Print TYPE_TEMPLATE_INFO.
+ <case BOUND_TEMPLATE_TEMPLATE_PARM>: Don't print TYPE_TI_ARGS
+ anymore.
+ <case TEMPLATE_TYPE/TEMPLATE_PARM>: Print TEMPLATE_TYPE_PARM_INDEX
+ instead of printing the index, level and original level
+ individually.
+
+2023-08-08 Marek Polacek <polacek@redhat.com>
+
+ * parser.cc (cp_parser_postfix_expression): Adjust the call to
+ cp_parser_braced_list.
+ (cp_parser_postfix_open_square_expression): Likewise.
+ (cp_parser_new_initializer): Likewise.
+ (cp_parser_assignment_expression): Adjust the call to
+ cp_parser_initializer_clause.
+ (cp_parser_lambda_introducer): Adjust the call to cp_parser_initializer.
+ (cp_parser_range_for): Adjust the call to cp_parser_braced_list.
+ (cp_parser_jump_statement): Likewise.
+ (cp_parser_mem_initializer): Likewise.
+ (cp_parser_template_argument): Likewise.
+ (cp_parser_default_argument): Adjust the call to cp_parser_initializer.
+ (cp_parser_initializer): Handle null is_direct_init and non_constant_p
+ arguments.
+ (cp_parser_initializer_clause): Handle null non_constant_p argument.
+ (cp_parser_braced_list): Likewise.
+ (cp_parser_initializer_list): Likewise.
+ (cp_parser_member_declaration): Adjust the call to
+ cp_parser_initializer_clause and cp_parser_initializer.
+ (cp_parser_yield_expression): Adjust the call to cp_parser_braced_list.
+ (cp_parser_functional_cast): Likewise.
+ (cp_parser_late_parse_one_default_arg): Adjust the call to
+ cp_parser_initializer.
+ (cp_parser_omp_for_loop_init): Likewise.
+ (cp_parser_omp_declare_reduction_exprs): Likewise.
+
+2023-08-08 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/100482
+ * parser.cc (cp_parser_decltype_expr): Report errors raised by
+ finish_id_expression.
+
+2023-08-04 Tamar Christina <tamar.christina@arm.com>
+
+ * cp-tree.h (RANGE_FOR_NOVECTOR): New.
+ (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt,
+ finish_for_cond): Add novector param.
+ * init.cc (build_vec_init): Default novector to false.
+ * method.cc (build_comparison_op): Likewise.
+ * parser.cc (cp_parser_statement): Likewise.
+ (cp_parser_for, cp_parser_c_for, cp_parser_range_for,
+ cp_convert_range_for, cp_parser_iteration_statement,
+ cp_parser_omp_for_loop, cp_parser_pragma): Support novector.
+ (cp_parser_pragma_novector): New.
+ * pt.cc (tsubst_expr): Likewise.
+ * semantics.cc (finish_while_stmt_cond, finish_do_stmt,
+ finish_for_cond): Likewise.
+
+2023-08-01 Lewis Hyatt <lhyatt@gmail.com>
+
+ * parser.cc (c_init_preprocess): New function.
+ (maybe_read_tokens_for_pragma_lex): New function.
+ (pragma_lex): Support preprocess-only mode.
+ (pragma_lex_discard_to_eol): New function.
+
+2023-07-31 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * parser.cc (cp_parser_oacc_host_data): Add checking requiring OpenACC
+ host_data construct to have an use_device clause.
+
+2023-07-28 Ng YongXiang <yongxiangng@gmail.com>
+
+ PR c++/110057
+ PR ipa/83054
+ * init.cc (build_vec_delete_1): Devirtualize array destruction.
+
+2023-07-27 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110197
+ * constexpr.cc (cxx_eval_array_reference): Allow synthesizing an
+ empty subobject even if CONSTRUCTOR_NO_CLEARING is set.
+ (cxx_eval_bare_aggregate): Set 'no_slot' to true more generally
+ whenever new_ctx.ctor is set to NULL_TREE by init_subob_ctx,
+ i.e. whenever initializing an subobject of empty type.
+ (cxx_eval_vec_init_1): Define 'no_slot' as above and use it
+ accordingly.
+
+2023-07-27 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/103497
+ * pt.cc (type_uses_auto): Check inside parameter packs.
+
+2023-07-26 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110566
+ PR c++/108179
+ * pt.cc (reduce_template_parm_level): Set DECL_TEMPLATE_INFO
+ on the DECL_TEMPLATE_RESULT of the new ttp.
+ (add_defaults_to_ttp): Make a copy of the original ttp's
+ DECL_TEMPLATE_RESULT, and update this copy's DECL_TEMPLATE_INFO
+ as well.
+ (coerce_template_template_parms): Make sure 'scope_args' has
+ the right amount of levels for the ttp argument.
+ (most_general_template): Handle template template parameters.
+ (rewrite_template_parm): Set DECL_TEMPLATE_RESULT on the
+ DECL_TEMPLATE_RESULT of the new ttp.
+
+2023-07-26 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110566
+ PR c++/108179
+ * pt.cc (coerce_template_template_parms): Simplify by using
+ DECL_INNERMOST_TEMPLATE_PARMS and removing redundant asserts.
+ Always pass the parameters of the most general template to
+ coerce_template_parms.
+
+2023-07-26 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110809
+ * pt.cc (unify) <case INTEGER_CST>: Generalize to handle
+ REAL_CST as well.
+
+2023-07-26 Marek Polacek <polacek@redhat.com>
+
+ * parser.cc (cp_parser_constant_expression): Allow non_constant_p to be
+ nullptr even when allow_non_constant_p is true. Don't call
+ _rvalue_constant_expression when not necessary. Move local variable
+ declarations closer to their first use.
+ (cp_parser_static_assert): Don't pass a dummy down to
+ cp_parser_constant_expression.
+
+2023-07-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/106310
+ * parser.cc (cp_parser_template_name): Skip non-member
+ lookup after the template keyword.
+ (cp_parser_lookup_name): Pass down template_keyword_p.
+
+2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/96630
+ PR c++/98675
+ PR c++/70331
+ * constexpr.cc (constexpr_global_ctx::is_outside_lifetime): New
+ function.
+ (constexpr_global_ctx::get_value): Don't return expired values.
+ (constexpr_global_ctx::get_value_ptr): Likewise.
+ (constexpr_global_ctx::remove_value): Mark value outside
+ lifetime.
+ (outside_lifetime_error): New function.
+ (cxx_eval_call_expression): No longer track save_exprs.
+ (cxx_eval_loop_expr): Likewise.
+ (cxx_eval_constant_expression): Add checks for outside lifetime
+ values. Remove local variables at end of bind exprs, and
+ temporaries after cleanup points.
+
+2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ PR c++/110619
+ * cp-gimplify.cc (cp_genericize_r): Transform RETURN_EXPRs to
+ not return dangling pointers.
+ * cp-tree.h (RETURN_EXPR_LOCAL_ADDR_P): New flag.
+ (check_return_expr): Add a new parameter.
+ * semantics.cc (finish_return_stmt): Set flag on RETURN_EXPR
+ when referring to dangling pointer.
+ * typeck.cc (check_return_expr): Disable transformation of
+ dangling pointers, instead pass this information to caller.
+
+2023-07-26 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * constexpr.cc (modifying_const_object_error): Find the source
+ location of the const object's declaration.
+ (cxx_eval_constant_expression): Update input_location to the
+ location of the currently evaluated expression, if possible.
+
+2023-07-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/108960
+ * pt.cc (lookup_and_finish_template_variable): Don't clear tf_partial
+ here.
+ (instantiate_template): Reset all complain flags except
+ tf_warning_or_error.
+
+2023-07-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110382
+ * constexpr.cc (cxx_eval_array_reference): Create a new constructor
+ only when we don't already have a matching one. Clear the object
+ when the type is non-scalar.
+
+2023-07-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110106
+ * constexpr.cc (potential_constant_expression_1): Try to complete the
+ type when !processing_template_decl.
+
+2023-07-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110114
+ * call.cc (implicit_conversion_1): Return early if the type isn't
+ complete.
+
+2023-07-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110745
+ * error.cc (dump_simple_decl): Print base class name.
+
+2023-07-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110064
+ * typeck2.cc (process_init_constructor_record): Don't emit
+ -Wmissing-field-initializers for empty classes.
+
+2023-07-19 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (type_unification_real): Test for PARM_DECL instead
+ of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
+ template parameter pack.
+ (type_targs_deducible_from): Likewise.
+
+2023-07-19 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (tsubst_function_decl): Add defaulted 'use_spec_table'
+ flag parameter. Don't look up or insert into the specializations
+ table if 'use_spec_table' is false.
+ (tsubst_decl): Add defaulted 'use_spec_table' flag parameter.
+ Check for error_mark_node.
+ <case FUNCTION_DECL>: Pass 'use_spec_table' to
+ tsubst_function_decl.
+ <case TYPE/VAR_DECL>: Don't call coerce_template_parms.
+ Don't look up or insert into the specializations table if
+ 'use_spec_table' is false. Exit earlier if the substituted
+ type is erroneous and we're not complaining, and do so for
+ alias specializations as well.
+ (instantiate_template): Pass false as 'use_spec_table'
+ to tsubst_decl. Call register_specialization afterwards.
+
+2023-07-18 Jason Merrill <jason@redhat.com>
+
+ * constexpr.cc (cxx_eval_bit_cast): Check that the result of
+ native_interpret_aggregate doesn't need more evaluation.
+
+2023-07-18 Patrick Palka <ppalka@redhat.com>
+
+ * call.cc (add_template_conv_candidate): Don't check for
+ non-empty 'candidates' here.
+ (build_op_call): Check it here, before we've considered any
+ conversion functions.
+
+2023-07-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110535
+ * call.cc (add_conv_candidate): Check constraints.
+
+2023-07-17 Jason Merrill <jason@redhat.com>
+
+ * constexpr.cc (cxx_eval_call_expression): Only cache
+ reduced_constant_expression_p results.
+ (reduced_constant_expression_p): Handle CONSTRUCTOR of scalar type.
+ (cxx_eval_constant_expression): Fold vectors here.
+ (cxx_eval_bare_aggregate): Not here.
+
+2023-07-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110441
+ * call.cc (keep_unused_object_arg): Use cp_build_compound_expr
+ instead of building a COMPOUND_EXPR directly.
+
+2023-07-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110524
+ * mangle.cc (write_expression): Handle TEMPLATE_ID_EXPR
+ whose template is already an IDENTIFIER_NODE.
+
+2023-07-14 Nathaniel Shead <nathanieloshead@gmail.com>
+
+ * constexpr.cc (cxx_eval_constant_expression): Pass t to get_value.
+
+2023-07-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/110344
+ * constexpr.cc (cxx_eval_constant_expression): Move P2738 handling
+ after heap handling.
+ * name-lookup.cc (get_cxx_dialect_name): Add C++26.
+
+2023-07-14 Marek Polacek <polacek@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/109876
+ * decl.cc (cp_finish_decl): Set TREE_CONSTANT when initializing
+ an object of empty class type.
+ * pt.cc (value_dependent_expression_p) <case VAR_DECL>: Treat a
+ constexpr-declared non-constant variable as value-dependent.
+
+2023-07-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110580
+ * pt.cc (lookup_template_variable): Pass all levels of arguments
+ to coerce_template_parms, and use the parameters from the most
+ general template.
+
+2023-07-10 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110523
+ * pt.cc (redeclare_class_template): Relax the ttp DECL_CONTEXT
+ assert, and downgrade it to a checking assert.
+
+2023-06-30 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (TEMPLATE_PARM_DESCENDANTS): Harden.
+ (TEMPLATE_TYPE_DESCENDANTS): Define.
+ (TEMPLATE_TEMPLATE_PARM_SIMPLE_P): Define.
+ * pt.cc (reduce_template_parm_level): Revert
+ r14-418-g0bc2a1dc327af9 change.
+ (process_template_parm): Set TEMPLATE_TEMPLATE_PARM_SIMPLE_P
+ appropriately.
+ (uses_outer_template_parms): Determine the outer depth of
+ a template template parm without relying on DECL_CONTEXT.
+ (tsubst) <case TEMPLATE_TEMPLATE_PARM>: Cache lowering a
+ simple template template parm. Consistently use 'code'.
+
+2023-06-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110468
+ * init.cc (maybe_instantiate_nsdmi_init): Mask out all
+ tsubst flags except for tf_warning_or_error.
+
+2023-06-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110463
+ * cp-gimplify.cc (cp_fold) <case CONSTRUCTOR>: Propagate
+ CONSTRUCTOR_MUTABLE_POISON.
+
+2023-06-29 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (tree_template_info::partial): New data member.
+ (TI_PARTIAL_INFO): New tree accessor.
+ (most_specialized_partial_spec): Add defaulted bool parameter.
+ * module.cc (trees_out::core_vals) <case TEMPLATE_INFO>: Stream
+ TI_PARTIAL_INFO.
+ (trees_in::core_vals) <case TEMPLATE_INFO>: Likewise.
+ * parser.cc (specialization_of): Adjust after making
+ most_specialized_partial_spec return TEMPLATE_INFO instead
+ of TREE_LIST.
+ * pt.cc (process_partial_specialization): Set TI_PARTIAL_INFO
+ of 'decl' to point back to the partial TEMPLATE_DECL. Likewise
+ (and pass rechecking=true to most_specialization_partial_spec).
+ (instantiate_class_template): Likewise.
+ (instantiate_template): Set TI_PARTIAL_INFO to the result of
+ most_specialization_partial_spec after forming a variable
+ template specialization.
+ (most_specialized_partial_spec): Add 'rechecking' parameter.
+ Exit early if the template is not primary. Use the TI_PARTIAL_INFO
+ of the corresponding TEMPLATE_INFO as a cache unless 'rechecking'
+ is true. Don't bother setting TREE_TYPE of each TREE_LIST.
+ (instantiate_decl): Adjust after making
+ most_specialized_partial_spec return TEMPLATE_INFO instead of
+ TREE_LIST.
+ * ptree.cc (cxx_print_xnode) <case TEMPLATE_INFO>: Dump
+ TI_PARTIAL_INFO.
+
+2023-06-29 Eugene Rozenfeld <erozen@microsoft.com>
+
+ * Make-lang.in: Pass correct stage cc1plus when processing
+ profile data collected while building target libraries
+
+2023-06-28 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/89442
+ PR c++/107437
+ * cp-tree.h (lookup_template_variable): Add complain parameter.
+ * parser.cc (cp_parser_template_id): Pass tf_warning_or_error
+ to lookup_template_variable.
+ * pt.cc (lookup_template_variable): Add complain parameter.
+ Coerce template arguments here ...
+ (finish_template_variable): ... instead of here.
+ (lookup_and_finish_template_variable): Check for error_mark_node
+ result from lookup_template_variable.
+ (tsubst_copy) <case TEMPLATE_ID_EXPR>: Pass complain to
+ lookup_template_variable.
+ (instantiate_template): Use build2 instead of
+ lookup_template_variable to build a TEMPLATE_ID_EXPR
+ for most_specialized_partial_spec.
+
+2023-06-28 Marek Polacek <polacek@redhat.com>
+
+ PR c++/110175
+ * typeck.cc (cp_build_unary_op): Check tf_warning before warning.
+
+2023-06-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/110334
+ * cp-tree.h (clone_attrs): Declare.
+ * method.cc (implicitly_declare_fn): Use it for inherited
+ constructor.
+ * optimize.cc (clone_attrs): New.
+ (maybe_clone_body): Use it.
+
+2023-06-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/110344
+ * constexpr.cc (cxx_eval_constant_expression): In C++26, allow cast
+ from void* to the type of a pointed-to object.
+
+2023-06-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/110164
+ * cp-name-hint.h (maybe_suggest_missing_header): New decl.
+ * decl.cc: Define INCLUDE_MEMORY. Add include of
+ "cp/cp-name-hint.h".
+ (start_decl_1): Call maybe_suggest_missing_header.
+ * name-lookup.cc (maybe_suggest_missing_header): Remove "static".
+
+2023-06-16 Alex Coplan <alex.coplan@arm.com>
+
+ * parser.cc (cp_parser_enum_specifier): Don't reject
+ elaborated-type-specifier with enum-base, instead emit new
+ Welaborated-enum-base warning.
+
+2023-06-14 Jason Merrill <jason@redhat.com>
+
+ DR 2327
+ PR c++/86521
+ * call.cc (joust_maybe_elide_copy): Don't change cand.
+ (joust): Move the elided tiebreaker later.
+
+2023-06-13 David Malcolm <dmalcolm@redhat.com>
+
+ PR c/84890
+ * name-lookup.cc (missing_std_header::~missing_std_header): Reword
+ note to avoid negative tone of "forgetting".
+
+2023-06-13 Jason Merrill <jason@redhat.com>
+
+ * tree.cc (build_target_expr): Check TYPE_HAS_MUTABLE_P.
+
+2023-06-12 Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_clause_map): Reword error message for
+ clearness especially with 'omp target (enter/exit) data.'
+ * semantics.cc (handle_omp_array_sections): Handle
+ GOMP_MAP_{ALWAYS_,}PRESENT_{TO,TOFROM,FROM,ALLOC} enum values.
+
+2023-06-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/105838
+ * call.cc (convert_like_internal) [ck_list]: Use
+ maybe_init_list_as_array.
+ * constexpr.cc (cxx_eval_vec_init_1): Init might have
+ a different type.
+ * tree.cc (build_vec_init_elt): Likewise.
+ * init.cc (build_vec_init): Handle from_array from a
+ TARGET_EXPR. Retain TARGET_EXPR of a different type.
+
+2023-06-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110122
+ * constexpr.cc (cxx_eval_call_expression): Synthesize defaulted
+ functions needed for constant evaluation.
+ (instantiate_cx_fn_r): Likewise.
+
+2023-06-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/110122
+ * pt.cc (lookup_template_class): Extend shortcut for looking up the
+ current class scope to consider outer class scopes too, and use
+ current_nonlambda_class_type instead of current_class_type. Only
+ call coerce_template_parms when specializing a primary template.
+
+2023-06-10 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/61663
+ * pt.cc (maybe_adjust_types_for_deduction): Implement DR976.
+
+2023-06-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/110185
+ PR c++/58487
+ * method.cc (build_comparison_op): Give retval a name.
+ * typeck.cc (check_return_expr): Fix for nameless variables.
+
+2023-06-09 Jason Merrill <jason@redhat.com>
+
+ * parser.cc (cp_parser_simple_type_specifier): Check for auto
+ in template argument.
+ (cp_parser_template_type_arg): Remove auto checking.
+
+2023-06-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/110102
+ * call.cc (maybe_init_list_as_array): Check that the element type is
+ copyable.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/58487
+ PR c++/53637
+ * cp-tree.h (INIT_EXPR_NRV_P): New.
+ * semantics.cc (finalize_nrv_r): Check it.
+ * name-lookup.h (decl_in_scope_p): Declare.
+ * name-lookup.cc (decl_in_scope_p): New.
+ * typeck.cc (check_return_expr): Allow non-NRV
+ returns if the NRV is no longer in scope.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/58487
+ * typeck.cc (want_nrvo_p): New.
+ (check_return_expr): Handle -Wnrvo.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/51571
+ PR c++/92407
+ * decl.cc (finish_function): Simplify NRV handling.
+ * except.cc (maybe_set_retval_sentinel): Also set if NRV.
+ (maybe_splice_retval_cleanup): Don't add the cleanup region
+ if we don't need it.
+ * semantics.cc (nrv_data): Add simple field.
+ (finalize_nrv): Set it.
+ (finalize_nrv_r): Check it and retval sentinel.
+ * cp-tree.h (finalize_nrv): Adjust declaration.
+ * typeck.cc (check_return_expr): Remove named_labels check.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/92407
+ * typeck.cc (check_return_expr): Prevent NRV in the presence of
+ named labels.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/33799
+ * except.cc (maybe_splice_retval_cleanup): Change
+ recognition of function body and try scopes.
+ * semantics.cc (do_poplevel): Call it after poplevel.
+ (at_try_scope): New.
+ * cp-tree.h (maybe_splice_retval_cleanup): Adjust.
+
+2023-06-07 Jason Merrill <jason@redhat.com>
+
+ * semantics.cc (finalize_nrv_r): [RETURN_EXPR]: Only replace the
+ INIT_EXPR.
+
+2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
+ Tobias Burnus <tobias@codesourcery.com>
+
+ * parser.cc (cp_parser_omp_clause_defaultmap,
+ cp_parser_omp_clause_map): Parse 'present'.
+ (cp_parser_omp_clause_from_to): New; parse to/from
+ clauses with optional 'present' modifier.
+ (cp_parser_omp_all_clauses): Update call.
+ (cp_parser_omp_target_data, cp_parser_omp_target_enter_data,
+ cp_parser_omp_target_exit_data): Handle new enum value for
+ 'present' mapping.
+ * semantics.cc (finish_omp_target): Likewise.
+
+2023-06-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/97720
+ * cp-tree.h (enum cp_tree_index): Add CPTI_CALL_TERMINATE_FN.
+ (call_terminate_fn): New macro.
+ * cp-gimplify.cc (gimplify_must_not_throw_expr): Use it.
+ * except.cc (init_exception_processing): Set it.
+ (cp_protect_cleanup_actions): Return it.
+
+2023-06-03 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109923
+ * pt.cc (is_specialization_of_friend): Fix overbroad check for
+ a non-template member function of a class template.
+
+2023-06-03 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (iterative_hash_template_arg): Don't hash
+ TEMPLATE_TEMPLATE_PARM specially.
+
+2023-06-03 Patrick Palka <ppalka@redhat.com>
+
+ * class.cc (build_base_path): Check in_template_context instead
+ of in_template_function.
+ (resolves_to_fixed_type_p): Likewise.
+ * cp-tree.h (in_template_context): Define.
+ (in_template_function): Remove.
+ * decl.cc (cp_make_fname_decl): Check current_function_decl
+ and in_template_context instead of in_template_function.
+ * decl2.cc (mark_used): Check in_template_context instead of
+ in_template_function.
+ * pt.cc (in_template_function): Remove.
+ * semantics.cc (enforce_access): Check in_template_context
+ instead of current_template_parms directly.
+
+2023-06-03 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/70790
+ * mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
+
+2023-06-02 Jason Merrill <jason@redhat.com>
+
+ DR 2735
+ PR c++/109247
+ * call.cc (sfk_copy_or_move): New.
+ (joust): Add tiebreaker for explicit conv and copy ctor.
+
+2023-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/110070
+ PR c++/105838
+ * call.cc (maybe_init_list_as_array): Set DECL_MERGEABLE.
+ (convert_like_internal) [ck_list]: Set it.
+ (set_up_extended_ref_temp): Copy it.
+ * tree.cc (handle_no_unique_addr_attribute): Set it.
+
+2023-06-01 Jason Merrill <jason@redhat.com>
+
+ * typeck2.cc (check_narrowing): Check flag_permissive.
+
+2023-05-30 Tobias Burnus <tobias@codesourcery.com>
+
+ PR c/109999
+ * parser.cc (cp_parser_oacc_all_clauses,
+ cp_parser_omp_all_clauses): Improve error wording.
+
+2023-05-19 Andrew Pinski <apinski@marvell.com>
+
+ PR driver/33980
+ * lang-specs.h ("@c++-header"): Add %w after
+ the --output-pch.
+ ("@c++-system-header"): Likewise.
+ ("@c++-user-header"): Likewise.
+
+2023-05-19 Patrick Palka <ppalka@redhat.com>
+
+ * constraint.cc (normalize_concept_check): Avoid having to do
+ two norm_cache lookups. Remove unnecessary early exit for an
+ ill-formed concept definition.
+
+2023-05-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97340
+ * pt.cc (lookup_and_finish_template_variable): Don't call
+ convert_from_reference.
+ (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
+ convert_from_reference on the result of
+ lookup_and_finish_template_variable.
+
+2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
+
+ * call.cc (promoted_arithmetic_type_p): Use _P defines from tree.h.
+ (build_conditional_expr): Ditto.
+ (convert_like_internal): Ditto.
+ (convert_arg_to_ellipsis): Ditto.
+ (build_over_call): Ditto.
+ (compare_ics): Ditto.
+ * class.cc (is_empty_base_ref): Ditto.
+ * coroutines.cc (rewrite_param_uses): Ditto.
+ * cp-tree.h (DECL_DISCRIMINATOR_P): Ditto.
+ (ARITHMETIC_TYPE_P): Ditto.
+ * cvt.cc (ocp_convert): Ditto.
+ * cxx-pretty-print.cc (pp_cxx_template_argument_list): Ditto.
+ * decl.cc (layout_var_decl): Ditto.
+ (get_tuple_size): Ditto.
+ * error.cc (dump_simple_decl): Ditto.
+ * lambda.cc (start_lambda_scope): Ditto.
+ * mangle.cc (write_template_arg): Ditto.
+ * method.cc (spaceship_comp_cat): Ditto.
+ * module.cc (node_template_info): Ditto.
+ (trees_out::start): Ditto.
+ (trees_out::decl_node): Ditto.
+ (trees_in::read_var_def): Ditto.
+ (set_instantiating_module): Ditto.
+ * name-lookup.cc (maybe_record_mergeable_decl): Ditto.
+ (consider_decl): Ditto.
+ (maybe_add_fuzzy_decl): Ditto.
+ * pt.cc (convert_nontype_argument): Ditto.
+ * semantics.cc (handle_omp_array_sections_1): Ditto.
+ (finish_omp_clauses): Ditto.
+ (finish_omp_target_clauses_r): Ditto.
+ (is_this_parameter): Ditto.
+ * tree.cc (build_cplus_array_type): Ditto.
+ (is_this_expression): Ditto.
+ * typeck.cc (do_warn_enum_conversions): Ditto.
+ * typeck2.cc (store_init_value): Ditto.
+ (check_narrowing): Ditto.
+
+2023-05-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/109868
+ * init.cc (build_zero_init_1): Don't initialize zero-width bitfields.
+ For unions only initialize the first FIELD_DECL.
+
+2023-05-16 Marek Polacek <polacek@redhat.com>
+
+ PR c++/109774
+ * typeck.cc (check_return_expr): In a template, return only after
+ suppressing -Wdangling-reference.
+
+2023-05-16 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109871
+ * call.cc (add_list_candidates): Check for invalid designated
+ initialization sooner and even for types that have a list
+ constructor.
+
+2023-05-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109745
+ * typeck2.cc (poison_mutable_constructors): Define.
+ (store_init_value): Use it instead of setting
+ CONSTRUCTOR_MUTABLE_POISON directly.
+
+2023-05-11 Patrick Palka <ppalka@redhat.com>
+ Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/83258
+ PR c++/80488
+ PR c++/97700
+ * pt.cc (convert_nontype_argument_function): Remove linkage
+ requirement for C++17 and later.
+ (invalid_tparm_referent_p) <case ADDR_EXPR>: Restrict
+ DECL_ARTIFICIAL rejection test to VAR_DECL.
+
+2023-05-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/109680
+ * method.cc (build_trait_object): New.
+ (assignable_expr): Use it.
+ (ref_xes_from_temporary): Likewise.
+ (is_convertible_helper): Likewise. Check FUNC_OR_METHOD_TYPE_P.
+
+2023-05-10 Jason Merrill <jason@redhat.com>
+
+ * call.cc (convert_like_internal): Share ck_ref_bind handling
+ between all bad conversions.
+
+2023-05-10 Jason Merrill <jason@redhat.com>
+
+ DR 2543
+ * constexpr.cc (cxx_eval_outermost_constant_expr): Preserve
+ TARGET_EXPR flags.
+ (potential_constant_expression_1): Check TARGET_EXPR_ELIDING_P.
+ * typeck2.cc (store_init_value): Diagnose constinit sooner.
+
+2023-05-10 Jason Merrill <jason@redhat.com>
+
+ * constexpr.cc (cxx_eval_outermost_constant_expr): Always check
+ for address of immediate fn.
+ (maybe_constant_init_1): Evaluate PTRMEM_CST.
+
+2023-05-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/109756
+ * parser.cc (cp_parser_std_attribute): For unknown attributes with
+ arguments set TREE_VALUE (attribute) to error_mark_node after skipping
+ the balanced tokens.
+ (cp_parser_std_attribute_list): If ... is used after attribute without
+ arguments, diagnose it and return error_mark_node. If
+ TREE_VALUE (attribute) is error_mark_node, don't call
+ make_pack_expansion nor return early error_mark_node.
+
+2023-05-09 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109752
+ * constraint.cc (satisfaction_cache::satisfaction_cache): In the
+ unexpected case of evaluating an atom for the first time noisily,
+ remove the cache slot that we inserted.
+
+2023-05-09 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109761
+ * parser.cc (cp_parser_class_specifier): Don't pass a class
+ context to noexcept_override_late_checks.
+ (noexcept_override_late_checks): Remove 'type' parameter
+ and use DECL_CONTEXT of 'fndecl' instead.
+
+2023-05-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/109756
+ * cp-gimplify.cc (process_stmt_assume_attribute): Diagnose pack
+ expansion of assume attribute.
+
+2023-05-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/106214
+ PR c++/93107
+ * pt.cc (do_auto_deduction): Move up resolve_nondeduced_context
+ calls to happen before do_class_deduction. Add some
+ error_mark_node tests.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/85979
+ * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression)
+ <case ALIGNOF_EXPR>: Consider ALIGNOF_EXPR_STD_P.
+ * error.cc (dump_expr) <case ALIGNOF_EXPR>: Likewise.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ DR 2256
+ PR c++/103091
+ * decl.cc (decl_jump_unsafe): Return bool instead of int.
+ Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
+ (check_previous_goto_1): Simplify now that decl_jump_unsafe
+ returns bool instead of int.
+ (check_goto): Likewise.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ * pt.cc (instantiate_alias_template): Exit early upon
+ error from coerce_template_parms. Remove dependence test
+ guarding constraints_satisfied_p.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (PLACEHOLDER_TYPE_CONSTRAINTS_INFO): Harden via
+ TEMPLATE_TYPE_PARM_CHECK.
+ (TPARMS_PRIMARY_TEMPLATE): Harden via TREE_VEC_CHECK.
+ (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Harden via
+ TEMPLATE_TEMPLATE_PARM_CHECK.
+ * cxx-pretty-print.cc (cxx_pretty_printer::simple_type_specifier):
+ Guard PLACEHOLDER_TYPE_CONSTRAINTS access.
+ * error.cc (dump_type) <case TEMPLATE_TYPE_PARM>: Use separate
+ variable to store CLASS_PLACEHOLDER_TEMPLATE result.
+ * pt.cc (outer_template_args): Use strip_innermost_template_args.
+ (any_type_dependent_arguments_p): Exit early if
+ !processing_template_decl. Use range-based for.
+ (any_dependent_template_arguments_p): Likewise.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/98283
+ * pt.cc (tsubst_copy_and_build) <case COMPONENT_REF>: Propagate
+ REF_PARENTHESIZED_P more generally via force_paren_expr.
+ * semantics.cc (force_paren_expr): Document default argument.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109651
+ * pt.cc (coerce_template_args_for_ttp): Mention we can hit the
+ current_template_parms fallback when level-lowering a bound ttp.
+ (tsubst_template_decl): Add lambda_tparms parameter. Prefer to
+ use lambda_tparms instead of substituting DECL_TEMPLATE_PARMS.
+ (tsubst_decl) <case TEMPLATE_DECL>: Pass NULL_TREE as lambda_tparms
+ to tsubst_template_decl.
+ (tsubst_lambda_expr): For a generic lambda, substitute
+ DECL_TEMPLATE_PARMS and set current_template_parms to it
+ before substituting the function type. Pass the substituted
+ DECL_TEMPLATE_PARMS as lambda_tparms to tsubst_template_decl.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109480
+ * semantics.cc (enforce_access): Check current_template_parms
+ instead of processing_template_decl when deciding whether to
+ defer the access check.
+
+2023-05-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/109480
+ * constexpr.cc (potential_constant_expression_1) <case CALL_EXPR>:
+ Reorganize to call get_fns sooner. Remove special handling of
+ the object argument of a non-static member function call. Remove
+ dead store to 'fun'.
+
+2023-05-05 Jason Merrill <jason@redhat.com>
+
+ Revert:
+ 2023-04-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/61445
+ * pt.cc (instantiate_decl): Assert !defer_ok for local
+ class members.
+
+2023-05-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/91618
+ PR c++/109649
+ * friend.cc (do_friend): Don't call check_explicit_specialization if
+ DECL_TEMPLATE_INFO is already set.
+ * decl2.cc (check_classfn): Set DECL_TEMPLATE_INFO.
+ * name-lookup.cc (set_decl_namespace): Likewise.
+
+2023-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ * cp-gimplify.cc (cp_fold_data): Move definition earlier.
+ (cp_gimplify_expr): Pass address of ff_genericize | ff_mce_false
+ constructed data rather than &pset to cp_walk_tree with cp_fold_r.
+
+2023-05-03 Jason Merrill <jason@redhat.com>
+
+ * pt.cc (reduce_template_parm_level): Fix comparison of
+ template template parm to cached version.
+
+2023-05-02 Jason Merrill <jason@redhat.com>
+
+ * pt.cc (instantiate_class_template): Skip the RECORD_TYPE
+ of a class template.
+ (tsubst_template_decl): Clear CLASSTYPE_USE_TEMPLATE.
+
+2023-05-02 Jason Merrill <jason@redhat.com>
+
+ * name-lookup.cc (pop_from_top_level): Don't
+ invalidate_class_lookup_cache.
+
+2023-05-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/109678
+ * cp-tree.h (lookup_base): Add offset parm.
+ * constexpr.cc (cxx_fold_indirect_ref_1): Pass it.
+ * search.cc (struct lookup_base_data_s): Add offset.
+ (dfs_lookup_base): Handle it.
+ (lookup_base): Pass it.
+
+2023-05-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/109678
+ * constexpr.cc (cxx_fold_indirect_ref_1): Handle empty base first.
+
2023-05-01 Jason Merrill <jason@redhat.com>
PR c++/109666