2024-05-03  Jason Merrill  <jason@redhat.com>

	PR c++/114935
	* cp-gimplify.cc (cp_genericize_init): Add flags parm.
	(cp_genericize_init_expr): Pass nullptr.
	(cp_genericize_target_expr): Handle cleanup flags.
	* typeck2.cc (build_disable_temp_cleanup): Factor out of...
	(split_nonconstant_init): ...here.
	* cp-tree.h (build_disable_temp_cleanup): Declare.

2024-05-03  Ken Matsui  <kmatsui@gcc.gnu.org>

	* cp-trait.def: Define __is_pointer.
	* constraint.cc (diagnose_trait_expr): Handle CPTK_IS_POINTER.
	* semantics.cc (trait_expr_value): Likewise.
	(finish_trait_expr): Likewise.

2024-05-03  Ken Matsui  <kmatsui@gcc.gnu.org>

	* cp-trait.def: Define __is_volatile.
	* constraint.cc (diagnose_trait_expr): Handle CPTK_IS_VOLATILE.
	* semantics.cc (trait_expr_value): Likewise.
	(finish_trait_expr): Likewise.

2024-05-03  Ken Matsui  <kmatsui@gcc.gnu.org>

	* cp-trait.def: Define __is_const.
	* constraint.cc (diagnose_trait_expr): Handle CPTK_IS_CONST.
	* semantics.cc (trait_expr_value): Likewise.
	(finish_trait_expr): Likewise.

2024-05-03  Patrick Palka  <ppalka@redhat.com>

	* coroutines.cc (instantiate_coro_traits): Adjust call to
	lookup_template_class.
	(instantiate_coro_handle_for_promise_type): Likewise.
	* cp-tree.h (adjust_type_for_entering_scope): Declare.
	(lookup_template_class): Adjust declaration.
	* decl.cc (make_typename_type): Adjust call to
	lookup_template_class. Likewise.
	(get_tuple_size): Likewise.
	(get_tuple_element_type): Likewise.
	* pt.cc (adjust_type_for_entering_scope): Define.
	(tsubst_entering_scope): Define.
	(lookup_template_class): Remove entering_scope parameter.
	Replace tsubst_aggr_type call with tsubst_entering_scope.
	(tsubst_aggr_type): Remove.
	(tsubst_aggr_type_1): Inline into tsubst.
	(tsubst_function_decl): Replace tsubst_aggr_type call
	with tsubst_entering_scope.
	(tsubst_template_decl): Likewise.
	(tsubst_decl): Likewise.
	(tsubst) <case RECORD_TYPE, UNION_TYPE, ENUMERAL_TYPE>:
	Inlined from tsubst_aggr_type_1.
	<case BOUND_TEMPLATE_TEMPLATE_PARM>: Adjust calls to
	lookup_template_class.
	<case TYPENAME_TYPE>: Replace tsubst_aggr_type call with
	tsubst_entering_scope.
	<case UNBOUND_CLASS_TEMPLATE>: Likewise.
	Increment processing_template_decl when substituting the
	context.
	(tsubst_expr) <case FIELD_DECL>: Replace tsubst_aggr_type
	call with tsubst_entering_scope.
	<case TEMPLATE_DECL>: Likewise.
	(instantiate_template): Likewise.
	(resolve_typename_type): Adjust lookup_template_class call
	and call adjust_type_for_entering_scope afterward.
	(listify): Adjust lookup_template_class call.
	(alias_ctad_tweaks): Likewise.
	* semantics.cc (finish_template_type): Adjust lookup_template_class
	call and maybe call adjust_type_for_entering_scope afterward.

2024-05-02  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114917
	* parser.cc (cp_parser_declaration_seq_opt): Clear
	parser->in_unbraced_* flags when parsing toplevel declarations.

2024-05-02  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114458
	* parser.cc (cp_parser_pure_specifier): Implement C++26 P2573R2
	- = delete("should have a reason");.  Parse deleted-function-body.
	* decl.cc (duplicate_decls): Copy DECL_INITIAL from DECL_DELETED_FN
	olddecl to newdecl if it is a STRING_CST.
	(cp_finish_decl): Handle deleted init with a reason.
	* decl2.cc: Include "escaped_string.h".
	(grokfield): Handle deleted init with a reason.
	(mark_used): Emit DECL_DELETED_FN reason in the message if any.
	* cp-tree.h (DECL_DELETED_FN): Document representation of
	= delete("reason") on a DECL.

2024-05-02  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114630
	* module.cc (depset::hash::add_partial_entities): Mark GM
	specializations as unreached.
	(depset::hash::find_dependencies): Also reach entities in the
	DECL_TEMPLATE_SPECIALIZATIONS list.

2024-05-02  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/105224
	* class.cc (finish_struct_1): Also push classes attached to a
	module into the 'keyed_classes' list.
	* decl.cc (record_key_method_defined): Don't push classes
	attached to a named module into the 'keyed_classes' list.
	* module.cc (trees_in::read_class_def): Likewise.
	* decl2.cc (import_export_class): Uniquely emit vtables for
	non-template classes attached to a named module.
	(vtables_uniquely_emitted): New function.
	(import_export_decl): Update comments. Update with knowledge
	about new kinds of uniquely emitted vtables.

2024-05-01  Jason Merrill  <jason@redhat.com>

	* cp-tree.h (base_ctor_identifier): Adjust comment.
	* call.cc (in_charge_arg_for_name): Abort on deleting dtor.
	* decl2.cc (maybe_retrofit_in_chrg): Don't add it for
	destructors without vbases, either.
	* constexpr.cc (cxx_eval_call_expression): Remove workaround.

2024-05-01  Jason Merrill  <jason@redhat.com>

	PR c++/113706
	* decl.cc (decls_match): Handle memchr return type being
	const-qualified.

2024-05-01  Nathaniel Shead  <nathanieloshead@gmail.com>

	* name-lookup.cc (walk_module_binding): Use the
	partition-specific hidden flag instead of the top-level
	decl_hidden.

2024-05-01  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114868
	* module.cc (depset::hash::add_binding_entity): Propagate
	OVL_USING_P for using-declarations.

2024-05-01  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/107688
	* name-lookup.cc (push_namespace): Error when exporting
	namespace with internal linkage.
	* parser.h (struct cp_parser): Add new flag
	'in_unbraced_export_declaration_p'.
	* parser.cc (cp_debug_parser): Print the new flag.
	(cp_parser_new): Initialise the new flag.
	(cp_parser_module_export): Set the new flag.
	(cp_parser_class_specifier): Clear and restore the new flag.
	(cp_parser_import_declaration): Imports can now appear directly
	in a linkage specification.
	(cp_parser_declaration): Categorise declarations as "name" or
	"special"; error on the later in contexts where the former is
	required.
	(cp_parser_class_head): Error when exporting a partial
	specialisation.

2024-04-30  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114456
	* parser.cc (cp_parser_decomposition_declaration): Implement C++26
	P0609R3 - Attributes for Structured Bindings.  Parse attributed
	identifier lists for structured binding declarations, pass the
	attributes to start_decl.

2024-04-30  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/105320
	PR c++/114275
	* cp-tree.h (propagate_defining_module): Declare.
	(lookup_imported_hidden_friend): Declare.
	* decl.cc (duplicate_decls): Also check if hidden decls can be
	redeclared in this module.
	* module.cc (imported_temploid_friends): New.
	(init_modules): Initialize it.
	(trees_out::decl_value): Write it; don't consider imported
	temploid friends as attached to a module.
	(trees_in::decl_value): Read it.
	(get_originating_module_decl): Follow the owning decl for an
	imported temploid friend.
	(propagate_defining_module): New.
	* name-lookup.cc (get_mergeable_namespace_binding): New.
	(lookup_imported_hidden_friend): New.
	* pt.cc (tsubst_friend_function): Propagate defining module for
	new friend functions.
	(tsubst_friend_class): Lookup imported hidden friends.  Check
	for valid module attachment of existing names.  Propagate
	defining module for new classes.

2024-04-30  Nathaniel Shead  <nathanieloshead@gmail.com>

	* cp-tree.h (module_may_redeclare): Add default parameter.
	* decl.cc (duplicate_decls): Don't emit errors for failed
	module_may_redeclare.
	(xref_tag): Likewise.
	(start_enum): Likewise.
	* semantics.cc (begin_class_definition): Likewise.
	* module.cc (module_may_redeclare): Clean up logic. Emit error
	messages on failure.

2024-04-30  Patrick Palka  <ppalka@redhat.com>

	PR c++/114889
	* module.cc (trees_in::read_class_def): Look through
	TEMPLATE_DECL when adding to CLASSTYPE_BEFRIENDING_CLASSES.

2024-04-30  Patrick Palka  <ppalka@redhat.com>

	PR c++/114888
	* typeck.cc (cp_build_binary_op) <case *_DIV_*>: Add missing
	dependence check for the second sizeof operand.

2024-04-26  Patrick Palka  <ppalka@redhat.com>

	* error.cc (print_instantiation_partial_context_line): Clear the
	pretty printer prefix around the call to diagnostic_show_locus.

2024-04-25  Jakub Jelinek  <jakub@redhat.com>

	PR c++/111284
	* constexpr.cc (cxx_bind_parameters_in_call): For PARM_DECLs with
	TREE_ADDRESSABLE types use vc_glvalue rather than vc_prvalue for
	cxx_eval_constant_expression and if it doesn't have the same
	type as it should, cast the reference type to reference to type
	before convert_from_reference and instead of adjust_temp_type
	take address of the arg, cast to reference to type and then
	convert_from_reference.
	(cxx_eval_constant_expression) <case PARM_DECL>: For lval case
	on parameters with TREE_ADDRESSABLE types lookup result in
	ctx->globals if possible.  Otherwise if lookup in ctx->globals
	was successful for parameter with TREE_ADDRESSABLE type,
	recurse with vc_prvalue on the returned value.

2024-04-25  Jakub Jelinek  <jakub@redhat.com>

	PR lto/113208
	* cp-tree.h (maybe_optimize_cdtor): Declare.
	* decl2.cc (import_export_decl): Call it for cloned cdtors.
	* optimize.cc (maybe_optimize_cdtor): New function.

2024-04-24  Patrick Palka  <ppalka@redhat.com>

	PR c++/114709
	* constexpr.cc (cxx_fold_indirect_ref): Restrict object/offset
	canonicalization to RECORD_TYPE member accesses.

2024-04-23  Nathaniel Shead  <nathanieloshead@gmail.com>

	* parser.cc (cp_parser_parameter_declaration): Check if
	decl_specifiers.type is null.

2024-04-23  Patrick Palka  <ppalka@redhat.com>

	PR c++/114795
	* module.cc (trees_in::is_matching_decl): Propagate deduced
	function return type.

2024-04-23  Jakub Jelinek  <jakub@redhat.com>

	* parser.cc (cp_parser_using_declaration): Spelling fix: favour
	-> favor.

2024-04-23  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114784
	* method.cc (implicitly_declare_fn): Call clone_attrs
	on DECL_ATTRIBUTES on STRIP_TEMPLATE (inherited_ctor) rather than
	inherited_ctor.  Also copy DECL_DISREGARD_INLINE_LIMITS flag from it.

2024-04-23  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114078
	* decl.cc (grokdeclarator): Check allocation functions for xobj
	parameters.

2024-04-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114706
	* constexpr.cc (check_bit_cast_type): Handle ARRAY_TYPE.

2024-04-15  Nathaniel Shead  <nathanieloshead@gmail.com>
	    Patrick Palka  <ppalka@redhat.com>

	PR c++/114600
	* module.cc (depset::hash::add_binding_entity): Require both
	WMB_Using and WMB_Export for GMF entities.

2024-04-14  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/106820
	* module.cc (trees_in::decl_value): Assemble alias when needed.

2024-04-13  Patrick Palka  <ppalka@redhat.com>

	* module.cc (struct bytes_in::bits_in): Define defaulted
	move ctor.
	(struct bytes_out::bits_out): Likewise.

2024-04-13  Patrick Palka  <ppalka@redhat.com>

	* module.cc: Update comment about classes defined within.
	(class data): Enclose in an anonymous namespace.
	(data::calc_crc): Moved from bytes::calc_crc.
	(class bytes): Remove.  Move bit_flush to namespace scope.
	(class bytes_in): Enclose in an anonymous namespace.  Inherit
	directly from data and adjust accordingly.  Move b and bflush
	members to bits_in.
	(class bytes_out): As above.  Remove is_set static data member.
	(bit_flush): Moved from class bytes.
	(struct bytes_in::bits_in): Define.
	(struct bytes_out::bits_out): Define.
	(bytes_in::stream_bits): Define.
	(bytes_out::stream_bits): Define.
	(bytes_out::bflush): Moved to bits_out/in.
	(bytes_in::bflush): Likewise
	(bytes_in::bfill): Removed.
	(bytes_out::b): Moved to bits_out/in.
	(bytes_in::b): Likewise.
	(class trees_in): Enclose in an anonymous namespace.
	(class trees_out): Enclose in an anonymous namespace.
	(trees_out::core_bools): Add bits_out/in parameter and use it.
	Unconditionally stream a bit for public_flag.  Add early exits
	as appropriate.
	(trees_out::core_bools): Likewise.
	(trees_out::lang_decl_bools): Add bits_out/in parameter and use
	it.  Flush the current bit buffer at the start.  Unconditionally
	stream a bit for module_keyed_decls_p.
	(trees_in::lang_decl_bools): Likewise.
	(trees_out::lang_type_bools): Add bits_out/in parameter and use
	it.  Flush the current bit buffer at the start.
	(trees_in::lang_type_bools): Likewise.
	(trees_out::tree_node_bools): Construct a bits_out object and
	use/pass it.
	(trees_in::tree_node_bools): Likewise.
	(trees_out::decl_value): Likewise.
	(trees_in::decl_value): Likewise.
	(module_state::write_define): Likewise.
	(module_state::read_define): Likewise.

2024-04-12  Marek Polacek  <polacek@redhat.com>

	PR c++/109966
	* typeck2.cc (potential_prvalue_result_of): Remove.
	(replace_placeholders_for_class_temp_r): Check TARGET_EXPR_ELIDING_P.
	Use a pset.  Don't replace_placeholders in TARGET_EXPRs that initialize
	a function argument.

2024-04-12  Patrick Palka  <ppalka@redhat.com>

	PR c++/99426
	* module.cc (merge_kind::MK_local_type): New enumerator.
	(merge_kind_name): Update.
	(trees_out::chained_decls): Move BLOCK-specific handling
	of DECL_LOCAL_DECL_P decls to ...
	(trees_out::core_vals) <case BLOCK>: ... here.  Stream
	BLOCK_VARS manually.
	(trees_in::core_vals) <case BLOCK>: Stream BLOCK_VARS
	manually.  Handle deduplicated local types..
	(trees_out::key_local_type): Define.
	(trees_in::key_local_type): Define.
	(trees_out::get_merge_kind) <case FUNCTION_DECL>: Return
	MK_local_type for a local type.
	(trees_out::key_mergeable) <case FUNCTION_DECL>: Use
	key_local_type.
	(trees_in::key_mergeable) <case FUNCTION_DECL>: Likewise.
	(trees_in::is_matching_decl): Be flexible with type mismatches
	for local entities.
	(trees_in::register_duplicate): Also register the
	DECL_TEMPLATE_RESULT of a TEMPLATE_DECL as a duplicate.
	(depset_cmp): Return 0 for equal IDENTIFIER_HASH_VALUEs.

2024-04-12  Jason Merrill  <jason@redhat.com>
	    Patrick Palka  <ppalka@redhat.com>

	PR c++/113141
	* call.cc (reference_binding): For an invalid cast, warn and don't
	recalculate.

2024-04-12  Jason Merrill  <jason@redhat.com>
	    Patrick Palka  <ppalka@redhat.com>

	DR 1996
	PR c++/113141
	* call.cc (reference_binding): Check direct binding from
	a single-element list.

2024-04-12  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114691
	* semantics.cc (simplify_loop_decl_cond): Use cp_build_unary_op with
	TRUTH_NOT_EXPR on ANNOTATE_EXPR argument (if any) rather than
	ANNOTATE_EXPR itself.

2024-04-12  Patrick Palka  <ppalka@redhat.com>

	PR c++/114393
	* pt.cc (tsubst_lambda_expr): Also defer all dependent
	substitution.

2024-04-12  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114426
	* constexpr.cc (is_valid_constexpr_fn): Return false/diagnose with
	complain destructors in classes with virtual bases.

2024-04-12  Patrick Palka  <ppalka@redhat.com>

	PR c++/114393
	PR c++/107457
	PR c++/93595
	* cp-tree.h (LAMBDA_EXPR_EXTRA_ARGS): Define.
	(tree_lambda_expr::extra_args): New field.
	* module.cc (trees_out::core_vals) <case LAMBDA_EXPR>: Stream
	LAMBDA_EXPR_EXTRA_ARGS.
	(trees_in::core_vals) <case LAMBDA_EXPR>: Likewise.
	* pt.cc (has_extra_args_mechanism_p): Return true for LAMBDA_EXPR.
	(tree_extra_args): Handle LAMBDA_EXPR.
	(tsubst_lambda_expr): Use LAMBDA_EXPR_EXTRA_ARGS to defer templated
	substitution into a lambda-expr if we lost the template context.
	Add sanity check for error_mark_node result from begin_lambda_type.

2024-04-11  Patrick Palka  <ppalka@redhat.com>

	PR c++/114303
	* constraint.cc (tsubst_requires_expr): Clear
	REQUIRES_EXPR_EXTRA_ARGS before calling build_extra_args.
	* pt.cc (tree_extra_args): Define.
	(extract_locals_r): Assert *_EXTRA_ARGS is empty.
	(tsubst_stmt) <case IF_STMT>: Clear IF_SCOPE on the new
	IF_STMT.  Call build_extra_args on the new IF_STMT instead
	of t which might already have IF_STMT_EXTRA_ARGS.

2024-04-11  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114409
	* pt.cc (tsubst_expr) <case ANNOTATE_EXPR>: Move to ...
	(tsubst_stmt) <case ANNOTATE_EXPR>: ... here.  Use tsubst_expr
	instead of RECUR for the last 2 arguments.

2024-04-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114462
	* semantics.cc: Implement C++26 P2809R3 - Trivial infinite
	loops are not Undefined Behavior.
	(maybe_warn_for_constant_evaluated): Add trivial_infinite argument
	and emit special diagnostics for that case.
	(finish_if_stmt_cond): Adjust caller.
	(finish_loop_cond): New function.
	(finish_while_stmt): Use it.
	(finish_do_stmt): Likewise.
	(finish_for_stmt): Likewise.

2024-04-10  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/104040
	* semantics.cc (expand_or_defer_fn_1): Keep DECL_SAVED_TREE for
	all vague linkage cdtors with modules.

2024-04-10  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/99377
	* module.cc (trees_in::install_entity): Overwrite entity map
	index if installing from a partition.

2024-04-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114580
	* semantics.cc (finish_if_stmt_cond): Call
	maybe_warn_for_constant_evaluated with IF_STMT_CONSTEXPR_P (if_stmt)
	as the second argument, rather than true/false depending on if
	it is if constexpr with non-dependent constant expression with
	bool type.

2024-04-09  Jakub Jelinek  <jakub@redhat.com>

	* constexpr.cc (build_new_constexpr_heap_type): Fix duplicated words
	in comment; is is -> is.
	* cp-tree.def (CO_RETURN_EXPR): Fix duplicated words in comment;
	for for -> for.
	* parser.cc (fixup_blocks_walker): Fix duplicated words in comment;
	is is -> is.
	* semantics.cc (fixup_template_type): Fix duplicated words in comment;
	for for -> for.
	(finish_omp_for): Fix duplicated words in comment; the the -> the.
	* pt.cc (more_specialized_fn): Fix duplicated words in comment;
	think think -> think.
	(type_targs_deducible_from): Fix duplicated words in comment; the the
	-> the.

2024-04-05  Marek Polacek  <polacek@redhat.com>

	PR c++/111132
	* constexpr.cc (get_function_named_in_call): Use
	cp_get_fndecl_from_callee.
	* cvt.cc (cp_get_fndecl_from_callee): If there's a
	DECL_LOCAL_DECL_ALIAS, use it.

2024-04-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/114572
	* cp-gimplify.cc (cxx_omp_clause_apply_fn): Call build_cplus_new
	on build_call_a result if it has class type.

2024-04-04  centurion  <centurion009@proton.me>

	PR c++/114377
	* pt.cc (find_template_parameter_info::found): Use TREE_TYPE for
	TEMPLATE_DECL instead of DECL_INITIAL.

2024-04-02  Marek Polacek  <polacek@redhat.com>

	PR c++/114479
	* semantics.cc (trait_expr_value) <case CPTK_IS_ARRAY>: Return false
	for zero-sized arrays.

2024-04-02  Marek Polacek  <polacek@redhat.com>

	PR c++/103825
	* typeck.cc (is_bitfield_expr_with_lowered_type): Handle
	CLEANUP_POINT_EXPR.

2024-04-02  Jason Merrill  <jason@redhat.com>

	PR c++/114561
	PR c++/114562
	* call.cc (convert_like_internal): Avoid adding qualification
	conversion in direct reference binding.

2024-04-01  Jason Merrill  <jason@redhat.com>

	* typeck.cc (maybe_warn_about_returning_address_of_local):
	Permerror in C++26.

2024-03-28  Jason Merrill  <jason@redhat.com>

	PR c++/100667
	* semantics.cc (same_type_ref_bind_p): New.
	(finish_trait_expr): Use it.

2024-03-26  Jakub Jelinek  <jakub@redhat.com>

	PR c++/112724
	* error.cc (dump_expr): Handle EXCESS_PRECISION_EXPR like NOP_EXPR.

2024-03-25  Marek Polacek  <polacek@redhat.com>

	PR c++/114349
	* name-lookup.cc (maybe_push_to_top_level): For a non-lambda,
	don't push to top level if decl_function_context is non-null.
	* pt.cc (maybe_instantiate_noexcept): Use maybe_push_to_top_level.

2024-03-25  Marek Polacek  <polacek@redhat.com>

	PR c++/114439
	* init.cc (can_init_array_with_p): Return true for a VEC_INIT_EXPR
	wrapped in a TARGET_EXPR.

2024-03-22  Marek Polacek  <polacek@redhat.com>

	PR c++/59465
	* init.cc (can_init_array_with_p): New.
	(perform_member_init): Check it.

2024-03-21  Marek Polacek  <polacek@redhat.com>

	PR c++/110323
	* decl2.cc (min_vis_expr_r) <case VAR_DECL>: Do nothing for
	decl_constant_var_p VAR_DECLs.

2024-03-20  Jakub Jelinek  <jakub@redhat.com>

	* coroutines.cc (expand_one_await_expression): Use
	integer_zero_node instead of build_int_cst (integer_type_node, 0)
	and integer_one_node instead of build_int_cst (integer_type_node, 1).

2024-03-19  Nathaniel Shead  <nathanieloshead@gmail.com>

	* cp-tree.h (module_maybe_has_cmi_p): New function.
	* decl.cc (grokfndecl): Mark block-scope functions as public if
	they could be visible in other TUs.
	* decl2.cc (no_linkage_error): Don't error for declarations that
	could be defined in other TUs since C++20. Suppress duplicate
	errors from 'check_global_declaration'.
	* tree.cc (no_linkage_check): In relaxed mode, don't consider
	types in a module CMI to have no linkage.

2024-03-16  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/112631
	* cp-tree.h (named_module_attach_p): New function.
	* decl.cc (start_decl): Check for attachment not purview.
	(grokmethod): Likewise.

2024-03-14  Chung-Lin Tang  <cltang@baylibre.com>

	* parser.cc (cp_parser_oacc_data_clause): Add parsing support for
	'readonly' modifier, set OMP_CLAUSE_MAP_READONLY if readonly modifier
	found, update comments.
	(cp_parser_oacc_cache): Add parsing support for 'readonly' modifier,
	set OMP_CLAUSE__CACHE__READONLY if readonly modifier found, update
	comments.

2024-03-12  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/98645
	PR c++/98688
	PR c++/111224
	* module.cc (enum tree_tag): Add new tag for builtin types.
	(trees_out::start): POLY_INT_CSTs can be emitted.
	(trees_in::start): Likewise.
	(trees_out::core_vals): Stream POLY_INT_CSTs.
	(trees_in::core_vals): Likewise.
	(trees_out::type_node): Handle vectors with multiple coeffs.
	(trees_in::tree_node): Likewise.
	(init_modules): Register target-specific builtin types. Bump
	initial capacity slightly.

2024-03-08  Jakub Jelinek  <jakub@redhat.com>

	* pt.cc (tsubst_expr): Handle MEM_REF.

2024-03-08  Jakub Jelinek  <jakub@redhat.com>

	PR debug/113918
	* cp-objcp-common.cc (cp_type_dwarf_attribute): Return 1
	for DW_AT_export_symbols on anonymous structs or unions.

2024-03-08  Jakub Jelinek  <jakub@redhat.com>

	PR c++/113802
	* parser.cc (cp_parser_parameter_declaration): Move the xobj_param_p
	pack diagnostics after ellipsis handling and if an error is reported,
	pretend this specifier didn't appear.  Formatting fix.

2024-03-07  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114229
	* module.cc (trees_out::core_bools): Redetermine
	DECL_INTERFACE_KNOWN on stream-in for vtables and tinfo.
	* decl2.cc (import_export_decl): Add fixme for ABI changes with
	module vtables and tinfo.

2024-03-07  Patrick Palka  <ppalka@redhat.com>

	PR c++/103994
	* cp-tree.h (add_mergeable_specialization): Remove second
	parameter.
	* module.cc (depset::disc_bits::DB_ALIAS_TMPL_INST_BIT): Remove.
	(depset::disc_bits::DB_ALIAS_SPEC_BIT): Remove.
	(depset::is_alias_tmpl_inst): Remove.
	(depset::is_alias): Remove.
	(merge_kind::MK_tmpl_alias_mask): Remove.
	(merge_kind::MK_alias_spec): Remove.
	(merge_kind_name): Remove entries for alias specializations.
	(trees_out::core_vals) <case TEMPLATE_DECL>: Adjust after
	removing is_alias_tmpl_inst.
	(trees_in::decl_value): Adjust add_mergeable_specialization
	calls.
	(trees_out::get_merge_kind) <case depset::EK_SPECIALIZATION>:
	Use MK_decl_spec for alias template specializations.
	(trees_out::key_mergeable): Simplify after MK_tmpl_alias_mask
	removal.
	(depset::hash::make_dependency): Adjust after removing
	DB_ALIAS_TMPL_INST_BIT.
	(specialization_add): Don't allow alias templates when !decl_p.
	(depset::hash::add_specializations): Remove now-dead code
	accomodating alias template specializations in the type table.
	* pt.cc (lookup_template_class): Dispatch early to
	instantiate_alias_template for alias templates.  Simplify
	accordingly.
	(add_mergeable_specialization): Remove alias_p parameter and
	simplify accordingly.

2024-03-07  Patrick Palka  <ppalka@redhat.com>

	PR c++/110730
	PR c++/105512
	* module.cc (module_state::write_namespaces): Stream the
	abi_tag attribute of an inline namespace.
	(module_state::read_namespaces): Likewise.

2024-03-07  Marek Polacek  <polacek@redhat.com>

	PR c++/110031
	* pt.cc (lookup_and_finish_template_variable): Pass complain to
	mark_used.

2024-03-07  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/98356
	* typeck2.cc (cxx_incomplete_type_diagnostic): Don't assume
	'member' will be a FUNCTION_DECL (or something like it).

2024-03-07  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/98881
	* module.cc (trees_out::tpl_parms_fini): Stream out DECL_CONTEXT
	for template template parameters.
	(trees_in::tpl_parms_fini): Read it.

2024-03-06  Marek Polacek  <polacek@redhat.com>

	PR c++/114114
	* pt.cc (maybe_instantiate_noexcept): Save/restore
	cp_unevaluated_operand, c_inhibit_evaluation_warnings, and
	cp_noexcept_operand around the tsubst_expr call.

2024-03-06  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/113629
	* pt.cc (type_unification_real): Only use DEDUCE_CONV for the
	return type of a conversion function.

2024-03-06  Patrick Palka  <ppalka@redhat.com>

	* module.cc (trees_out::get_merge_kind) <case depset::EK_DECL>:
	Accomodate class-scope DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P
	TEMPLATE_DECL.  Consolidate IDENTIFIER_ANON_P cases.

2024-03-05  Patrick Palka  <ppalka@redhat.com>

	* parser.cc (cp_parser_translation_unit): Relax GMF contents
	error into a pedwarn.

2024-03-04  Nathaniel Shead  <nathanieloshead@gmail.com>

	* name-lookup.cc (walk_module_binding): Remove completed FIXME.
	(do_nonmember_using_decl): Mark redeclared entities as exported
	when needed. Check for re-exporting internal linkage types.

2024-03-01  Patrick Palka  <ppalka@redhat.com>

	PR c++/104919
	PR c++/106009
	* module.cc (depset::hash::sneakoscope): Remove.
	(trees_out::decl_node): Always add a dependency on a local type.
	(depset::hash::find_dependencies): Remove sneakoscope stuff.

2024-03-01  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114170
	* module.cc (has_definition): Fall back to DECL_INITIALIZED_P
	when DECL_INITIAL is not set on a template.
	(module_state::write_inits): Only increment count when
	initializers are actually written.

2024-03-01  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114005
	* init.cc (create_temporary_var): Use current_scope instead of
	current_function_decl.

2024-03-01  Patrick Palka  <ppalka@redhat.com>

	* decl.cc (maybe_register_incomplete_var): Restrict second
	branch to static data members from a not-yet-complete class.

2024-03-01  Marek Polacek  <polacek@redhat.com>

	PR c++/110358
	PR c++/109642
	* call.cc (no_dangling_p): New.
	(reference_like_class_p): Use it.
	(do_warn_dangling_reference): Use it.  Don't warn when the function
	or its enclosing class has attribute gnu::no_dangling.
	* tree.cc (cxx_gnu_attributes): Add gnu::no_dangling.
	(handle_no_dangling_attribute): New.

2024-03-01  Patrick Palka  <ppalka@redhat.com>

	PR c++/110025
	PR c++/114138
	* cp-tree.h (make_cast_auto): Declare.
	* parser.cc (cp_parser_functional_cast): If the type is an auto,
	replace it with a level-less one via make_cast_auto.
	* pt.cc (find_parameter_packs_r): Don't treat level-less auto
	as a type parameter pack.
	(tsubst) <case TEMPLATE_TYPE_PARM>: Generalize CTAD placeholder
	auto handling to all level-less autos.
	(make_cast_auto): Define.
	(do_auto_deduction): Handle replacement of a level-less auto.

2024-03-01  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92687
	* decl.cc (lookup_decomp_type): Return NULL_TREE if decomp_type_table
	doesn't have entry for V.
	* semantics.cc (finish_decltype_type): If ptds.saved, assert
	DECL_HAS_VALUE_EXPR_P is true and decide on tuple vs. non-tuple based
	on if lookup_decomp_type is NULL or not.

2024-02-29  Marek Polacek  <polacek@redhat.com>

	PR c++/113987
	* call.cc (conv_binds_to_reference_parm_p): New.
	* cp-tree.h (conv_binds_to_reference_parm_p): Declare.
	* init.cc (find_uninit_fields_r): Call it.

2024-02-29  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/111710
	* cp-tree.h (DECL_MODULE_KEYED_DECLS_P): Remove tree checking.
	(struct lang_decl_base): Update comments and fix whitespace.
	* module.cc (trees_out::lang_decl_bools): Always write
	module_keyed_decls_p flag...
	(trees_in::lang_decl_bools): ...and always read it.
	(trees_out::decl_value): Handle all kinds of keyed decls.
	(trees_in::decl_value): Likewise.
	(trees_in::tree_value): Deduplicate LAMBDA_EXPRs.
	(maybe_key_decl): Also support lambdas attached to fields,
	parameters, and types. Key lambdas attached to fields to their
	class.
	(trees_out::get_merge_kind): Likewise.
	(trees_out::key_mergeable): Likewise.
	(trees_in::key_mergeable): Support keyed decls in a TYPE_DECL
	container.
	* parser.cc (cp_parser_class_head): Start a lambda scope when
	parsing base classes.

2024-02-28  Jakub Jelinek  <jakub@redhat.com>
	    Patrick Palka  <ppalka@redhat.com>

	PR c++/113976
	* decl.cc (grokdeclarator): Don't call cp_apply_type_quals_to_decl
	on DECL_TEMPLATE_INSTANTIATED VAR_DECLs.

2024-02-28  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/113970
	PR c++/114013
	* decl.cc (make_rtl_for_nonlocal_decl): Don't defer inline
	variables.

2024-02-23  Jakub Jelinek  <jakub@redhat.com>

	PR c++/113083
	* cp-gimplify.cc (cp_fold): For targetm.cxx.cdtor_returns_this ()
	wrap r into a COMPOUND_EXPR and return folded CALL_EXPR_ARG (x, 0).

2024-02-19  Patrick Palka  <ppalka@redhat.com>

	PR c++/113966
	* constraint.cc (tsubst_compound_requirement): Don't check
	the noexcept condition or the return-type-requirement when
	partially substituting.

2024-02-17  Marek Polacek  <polacek@redhat.com>

	PR c++/113158
	* search.cc (maybe_check_overriding_exception_spec): Defer checking
	when a noexcept couldn't be instantiated & evaluated to false/true.

2024-02-16  Marek Polacek  <polacek@redhat.com>

	DR 1351
	* search.cc (maybe_check_overriding_exception_spec): Don't error about
	a looser exception specification if the overrider is deleted.

2024-02-16  Marek Polacek  <polacek@redhat.com>

	PR c++/113789
	PR c++/113853
	* typeck.cc (treat_lvalue_as_rvalue_p): Update code to better
	reflect [expr.prim.id.unqual]#4.2.

2024-02-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/113929
	* parser.cc (cp_parser_parameter_declaration): Diagnose this specifier
	on template parameter declaration.

2024-02-16  Patrick Palka  <ppalka@redhat.com>

	* module.cc (trees_out::core_bools): Stream TREE_UNAVAILABLE.
	(trees_in::core_bools): Likewise.
	(trees_out::core_vals): Stream LAMBDA_EXPR_REGEN_INFO.
	(trees_in::core_vals): Likewise.

2024-02-14  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/113708
	* decl.cc (make_rtl_for_nonlocal_decl): Defer inline variables.
	* decl2.cc (import_export_decl): Support inline variables.

2024-02-14  Patrick Palka  <ppalka@redhat.com>

	PR c++/113908
	PR c++/113332
	* method.cc (synthesized_method_walk): Use maybe_push_to_top_level.

2024-02-14  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/99573
	* decl.cc (start_enum): Reorder check for redeclaring in module.
	Add missing auto_diagnostic_groups.

2024-02-13  Marek Polacek  <polacek@redhat.com>

	DR 1693
	PR c++/113760
	* parser.cc (cp_parser_member_declaration): Only pedwarn about an extra
	semicolon in C++98.

2024-02-13  Tobias Burnus  <tburnus@baylibre.com>

	PR middle-end/113904
	* parser.cc (cp_parser_omp_context_selector): Handle splitting of
	OMP_TRAIT_PROPERTY_EXPR into OMP_TRAIT_PROPERTY_{DEV_NUM,BOOL}_EXPR.

2024-02-13  Patrick Palka  <ppalka@redhat.com>

	* Make-lang.in (CFLAGS-cp/module.o): Add $(ZLIBINC).
	* module.cc: Include <zlib.h>.
	(bytes::calc_crc): Use crc32 from zlib.
	(bytes_out::set_crc): Use crc32_combine from zlib.

2024-02-13  Patrick Palka  <ppalka@redhat.com>

	* module.cc (depset::hash::add_specializations): Use
	STRIP_TEMPLATE consistently.
	(get_originating_module_decl): Handle class-scope CONST_DECL.

2024-02-13  Patrick Palka  <ppalka@redhat.com>

	* lambda.cc (lambda_function): Call get_class_binding_direct
	instead of lookup_member to sidestep lazy loading.
	* name-lookup.cc (check_local_shadow): Punt if we're in a
	function context that's not actual parsing.

2024-02-13  Jason Merrill  <jason@redhat.com>

	PR c++/113612
	* pt.cc (process_partial_specialization): Return early
	on redeclaration.

2024-02-13  Marek Polacek  <polacek@redhat.com>

	PR c++/112436
	* except.cc (expand_start_catch_block): Pass tf_warning_or_error to
	is_admissible_throw_operand_or_catch_parameter.
	(build_throw): Pass complain to
	is_admissible_throw_operand_or_catch_parameter.
	(complete_ptr_ref_or_void_ptr_p): Add a tsubst_flags_t parameter.  Use
	it.  Return bool.  Call complete_type_or_maybe_complain instead of
	complete_type_or_else.
	(is_admissible_throw_operand_or_catch_parameter): Add a tsubst_flags_t
	parameter.  Use it.  Guard error calls.

2024-02-13  Alex Coplan  <alex.coplan@arm.com>

	PR c++/113658
	* cp-objcp-common.cc (cp_feature_table): Remove entry for
	cxx_constexpr_string_builtins.

2024-02-12  Marek Polacek  <polacek@redhat.com>

	PR c++/113545
	* constexpr.cc (cxx_eval_switch_expr): If the condition doesn't reduce
	to an INTEGER_CST, consider it non-constant.

2024-02-10  Marek Polacek  <polacek@redhat.com>

	DR 2237
	PR c++/107126
	PR c++/97202
	* parser.cc (cp_parser_unqualified_id): Downgrade the DR2237 error to
	a pedwarn.
	(cp_parser_constructor_declarator_p): Likewise.

2024-02-10  Jakub Jelinek  <jakub@redhat.com>

	* tree.cc (debug_binfo): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld"
	and casts to long.
	* pt.cc (print_template_statistics): Use HOST_SIZE_T_PRINT_DEC
	and casts to fmt_size_t instead of "%ld" and casts to long.
	* class.cc (dump_class_hierarchy_1): Use HOST_WIDE_INT_PRINT_UNSIGNED
	instead of "%lu" and casts to unsigned long.  For TYPE_ALIGN, use
	%u instead of %lu and drop casts to unsigned long.
	* parser.cc (cp_lexer_peek_nth_token): Use HOST_SIZE_T_PRINT_DEC
	and casts to fmt_size_t instead of "%ld" and casts to long.

2024-02-09  Marek Polacek  <polacek@redhat.com>

	PR c++/113834
	* semantics.cc (finish_type_pack_element): Perform range checking
	before tree_to_shwi.

2024-02-09  Marek Polacek  <polacek@redhat.com>

	PR c++/98388
	* coroutines.cc (coro_rewrite_function_body): Pass tf_warning_or_error
	to build_throw.
	(morph_fn_to_coro): Likewise.
	* cp-tree.h (build_throw): Adjust.
	* except.cc (expand_end_catch_block): Pass tf_warning_or_error to
	build_throw.
	(build_throw): Add a tsubst_flags_t parameter.  Use it.  Remove
	redundant variable.  Guard an inform call.
	* parser.cc (cp_parser_throw_expression): Pass tf_warning_or_error
	to build_throw.
	* pt.cc (tsubst_expr) <case THROW_EXPR>: Pass complain to build_throw.

2024-02-09  Patrick Palka  <ppalka@redhat.com>

	PR c++/112580
	* module.cc (trees_in::read_class_def): When streaming in
	an anonymous union field of an as-base class, don't overwrite
	ANON_AGGR_TYPE_FIELD.

2024-02-08  Patrick Palka  <ppalka@redhat.com>

	PR c++/113649
	* pt.cc (do_class_deduction): Add outer_targs parameter.
	Substitute outer arguments into the CTAD template.
	(do_auto_deduction): Pass outer_targs to do_class_deduction.

2024-02-08  Jason Merrill  <jason@redhat.com>

	* pt.cc (create_template_parm_object): Pass TARGET_EXPR to
	cxx_constant_value.

2024-02-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/113788
	* parser.cc (CP_PARSER_FLAGS_PARAMETER): New enumerator.
	(cp_parser_decl_specifier_seq): Parse RID_THIS only if
	CP_PARSER_FLAGS_PARAMETER is set in flags.
	(cp_parser_parameter_declaration): Or in CP_PARSER_FLAGS_PARAMETER
	when calling cp_parser_decl_specifier_seq.

2024-02-06  Marek Polacek  <polacek@redhat.com>

	* method.cc (early_check_defaulted_comparison): Add
	auto_diagnostic_group.

2024-02-06  Jason Merrill  <jason@redhat.com>

	PR c++/107291
	* method.cc (early_check_defaulted_comparison): Fail if not friend.

2024-02-05  Jason Merrill  <jason@redhat.com>

	PR c++/111286
	* tree.cc (rvalue): Don't drop cv-quals from an array.

2024-02-03  Patrick Palka  <ppalka@redhat.com>

	PR c++/110006
	PR c++/112769
	* constraint.cc (subst_info::quiet): Accomodate non-diagnostic
	tsubst flags.
	(tsubst_valid_expression_requirement): Likewise.
	(tsubst_simple_requirement): Return a substituted _REQ node when
	processing_template_decl.
	(tsubst_type_requirement_1): Accomodate non-diagnostic tsubst
	flags.
	(tsubst_type_requirement): Return a substituted _REQ node when
	processing_template_decl.
	(tsubst_compound_requirement): Likewise.  Accomodate non-diagnostic
	tsubst flags.
	(tsubst_nested_requirement): Likewise.
	(tsubst_requires_expr): Don't defer partial substitution when
	processing_constraint_expression_p is true, in which case return
	a substituted REQUIRES_EXPR.
	* pt.cc (tsubst_expr) <case REQUIRES_EXPR>: Accomodate
	non-diagnostic tsubst flags.

2024-02-02  Jason Merrill  <jason@redhat.com>

	PR c++/110084
	* pt.cc (tsubst_function_decl): Only check a function defaulted
	outside the class if the class is complete.

2024-02-02  Jason Merrill  <jason@redhat.com>

	PR c++/112439
	* constexpr.cc (cxx_eval_store_expression): Check empty_base
	before marking a CONSTRUCTOR readonly.

2024-02-02  Jason Merrill  <jason@redhat.com>

	PR c++/113638
	* cp-tree.h: Adjust comment.
	* pt.cc (instantiate_template): Set VAR_HAD_UNKNOWN_BOUND for
	variable template.

2024-02-01  Marek Polacek  <polacek@redhat.com>

	* call.cc (reference_like_class_p): Consider even non-templates for
	std::span-like classes.

2024-02-01  Patrick Palka  <ppalka@redhat.com>

	PR c++/112737
	* pt.cc (iterative_hash_template_arg) <case TEMPLATE_DECL>:
	Adjust hashing to match cp_tree_equal.
	(ctp_hasher::hash): Also hash CLASS_PLACEHOLDER_TEMPLATE.
	* tree.cc (cp_tree_equal) <case TEMPLATE_DECL>: Return true
	for ttp TEMPLATE_DECLs if their TEMPLATE_TEMPLATE_PARMs are
	equivalent.
	* typeck.cc (structural_comptypes) <case TEMPLATE_TYPE_PARM>:
	Use cp_tree_equal to compare CLASS_PLACEHOLDER_TEMPLATE.

2024-02-01  Marek Polacek  <polacek@redhat.com>

	PR c++/112437
	* typeck.cc (treat_lvalue_as_rvalue_p): Bail out on sk_namespace in
	the move on throw of parms loop.

2024-01-30  Marek Polacek  <polacek@redhat.com>

	PR c++/110358
	PR c++/109640
	* call.cc (reference_like_class_p): Don't warn for std::span-like
	classes.

2024-01-30  Patrick Palka  <ppalka@redhat.com>

	PR c++/113640
	* call.cc (keep_unused_object_arg): Punt for an xobj member
	function.

2024-01-30  Patrick Palka  <ppalka@redhat.com>

	PR c++/113644
	* pt.cc (unify) <case INTEGER_CST>: Handle NULL_TREE type.

2024-01-30  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/107594
	* module.cc (get_module): Bail on empty name.

2024-01-29  Jason Merrill  <jason@redhat.com>

	PR c++/113544
	* pt.cc (instantiate_class_template): Don't partially instantiate.
	(tsubst_stmt): Likewise.

2024-01-26  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/113580
	* module.cc (struct post_process_data): Create.
	(trees_in::post_decls): Use.
	(trees_in::post_process): Return entire vector at once.
	Change overload to take post_process_data instead of tree.
	(trees_out::write_function_def): Write needed flags from
	DECL_STRUCT_FUNCTION.
	(trees_in::read_function_def): Read them and pass to
	post_process.
	(module_state::read_cluster): Write flags into cfun.

2024-01-26  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/112899
	* cp-tree.h (note_variable_template_instantiation): Rename to...
	(note_vague_linkage_variable): ...this.
	* decl2.cc (note_variable_template_instantiation): Rename to...
	(note_vague_linkage_variable): ...this.
	* pt.cc (instantiate_decl): Rename usage of above function.
	* module.cc (trees_in::read_var_def): Remember pending statics
	that we stream in.

2024-01-25  Jakub Jelinek  <jakub@redhat.com>

	PR c++/113599
	* typeck2.cc (build_m_component_ref): Use convert instead of
	cp_convert for pointer conversion.

2024-01-25  Jason Merrill  <jason@redhat.com>

	PR c++/113598
	* init.cc (build_vec_init): Don't use {} for PMF.

2024-01-25  Jason Merrill  <jason@redhat.com>

	PR c++/109227
	* coroutines.cc (build_co_await): Use cxx_maybe_build_cleanup.
	(build_actor_fn, process_conditional, maybe_promote_temps)
	(morph_fn_to_coro): Likewise.
	(expand_one_await_expression): Use build_cleanup.

2024-01-25  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/113405
	* module.cc (set_defining_module): Track partial specialisations
	for all declarations.

2024-01-25  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/100707
	* name-lookup.cc (add_imported_namespace): Don't mark namespaces
	as imported.

2024-01-24  Patrick Palka  <ppalka@redhat.com>

	PR c++/113529
	* call.cc (add_operator_candidates): Propagate error_mark_node
	result after recursing to find rewritten candidates.

2024-01-23  Marek Polacek  <polacek@redhat.com>

	PR c++/113256
	PR c++/111607
	PR c++/109640
	* call.cc (do_warn_dangling_reference): Don't warn if the temporary
	is of lambda type.

2024-01-23  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/112820
	PR c++/102607
	* module.cc (trees_out::lang_type_bools): Write interface_only
	and interface_unknown.
	(trees_in::lang_type_bools): Read the above flags.
	(trees_in::decl_value): Reset CLASSTYPE_INTERFACE_* except for
	extern templates.
	(trees_in::read_class_def): Remove buggy extern template
	handling.

2024-01-19  Jason Merrill  <jason@redhat.com>

	PR c++/113498
	* pt.cc (decl_template_info): New fn.
	(get_template_info): Use it.

2024-01-19  Jason Merrill  <jason@redhat.com>

	PR c++/112632
	PR c++/112594
	PR c++/111357
	PR c++/104594
	PR c++/67898
	* cp-tree.h (IMPLICIT_CONV_EXPR_FORCED): New.
	* pt.cc (expand_integer_pack): Remove 111357 workaround.
	(maybe_convert_nontype_argument): Add force parm.
	(convert_template_argument): Handle alias template args
	specially.
	(tsubst_expr): Don't ignore IMPLICIT_CONV_EXPR_NONTYPE_ARG.
	* error.cc (dump_expr) [CASE_CONVERT]: Handle null optype.

2024-01-18  Marek Polacek  <polacek@redhat.com>

	PR c++/113389
	* decl.cc (grokdeclarator) <case cdk_function>: Set TREE_PURPOSE to
	NULL_TREE when emitting an error.

2024-01-17  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/112588
	* module.cc (trees_in::read_function_def): Don't overwrite
	arguments.

2024-01-17  Patrick Palka  <ppalka@redhat.com>

	PR c++/113242
	PR c++/99493
	* pt.cc (invalid_tparm_referent_p) <case ADDR_EXPR>: Suppress
	DECL_ARTIFICIAL rejection test for class NTTP objects.

2024-01-16  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/113292
	* decl2.cc (get_tls_wrapper_fn): Set DECL_CONTEXT.
	(c_parse_final_cleanups): Suppress warning for no definition of
	TLS wrapper functions in header modules.
	* module.cc (trees_out::lang_decl_vals): Write wrapped variable
	for TLS wrapper functions.
	(trees_in::lang_decl_vals): Read it.
	(trees_out::decl_value): Write TLS model for thread-local vars.
	(trees_in::decl_value): Read it for new decls. Remember to emit
	definitions of TLS wrapper functions later.

2024-01-16  Nathaniel Shead  <nathanieloshead@gmail.com>

	* name-lookup.h (enum scope_kind): Add 'sk_count'.
	* name-lookup.cc (cp_binding_level_descriptor): Add missing
	scope kinds. Add assertion that the list is up to date. Fix
	handling of explicit_spec_p.

2024-01-16  Marek Polacek  <polacek@redhat.com>

	* decl.cc (grokdeclarator) <case cdk_function>: Tweak diagnostic
	messages.

2024-01-16  Marek Polacek  <polacek@redhat.com>

	PR c++/113340
	* decl.cc (grokdeclarator) <case cdk_function>: Clear
	is_xobj_member_function in case of an error.

2024-01-16  waffl3x  <waffl3x@protonmail.com>

	PR c++/113307
	* parser.cc (cp_parser_parameter_declaration): Reject packs
	on xobj params.

2024-01-15  Marek Polacek  <polacek@redhat.com>

	PR c++/110065
	* parser.cc (cp_parser_template_type_arg): Add auto checking.

2024-01-15  Patrick Palka  <ppalka@redhat.com>

	* parser.cc (cp_parser_check_access_in_redeclaration): Don't
	check access for a partial or explicit specialization.
	* pt.cc (maybe_new_partial_specialization): Don't set TREE_PRIVATE
	or TREE_PROTECTED on the newly created partial specialization.

2024-01-15  Patrick Palka  <ppalka@redhat.com>

	PR c++/104634
	* pt.cc (maybe_new_partial_specialization): Propagate TREE_PUBLIC
	to the newly created partial specialization.

2024-01-15  Patrick Palka  <ppalka@redhat.com>

	PR c++/109899
	* init.cc (build_vec_delete_1): Assume expr_noexcept_p returns
	false in a template context.

2024-01-13  Jakub Jelinek  <jakub@redhat.com>

	* mangle.cc (write_nested_name): Mangle explicit object
	member functions with H as per
	https://github.com/itanium-cxx-abi/cxx-abi/issues/148 non-proposal.

2024-01-12  Jason Merrill  <jason@redhat.com>

	PR c++/113038
	* name-lookup.cc (lookup_elaborated_type): Look for bindings
	in the global namespace in the ABI namespace.

2024-01-12  Jason Merrill  <jason@redhat.com>

	* call.cc (reversed_match): New.
	(enum class pmatch): New enum.
	(cand_parms_match): Add match_kind parm.
	(object_parms_correspond): Add fn parms.
	(joust): Adjust.
	* class.cc (xobj_iobj_parameters_correspond): Rename to...
	(iobj_parm_corresponds_to): ...this.  Take the other
	type instead of a second function.
	(object_parms_correspond): Adjust.
	* cp-tree.h (iobj_parm_corresponds_to): Declare.

2024-01-11  Jason Merrill  <jason@redhat.com>

	PR c++/113191
	* class.cc (xobj_iobj_parameters_correspond): Add context parm.
	(object_parms_correspond): Factor out of...
	(add_method): ...here.
	* method.cc (defaulted_late_check): Use it.
	* call.cc (class_of_implicit_object): New.
	(object_parms_correspond): Overload taking two candidates.
	(cand_parms_match): Use it.
	(joust): Check reversed before comparing constraints.
	* cp-tree.h (object_parms_correspond): Declare.

2024-01-10  Tamar Christina  <tamar.christina@arm.com>

	* parser.cc (cp_parser_pragma): Initialize to false.

2024-01-09  Jason Merrill  <jason@redhat.com>

	* semantics.cc (is_object_parameter): New.
	* cp-tree.h (is_object_parameter): Declare.
	* call.cc (maybe_warn_class_memaccess): Use it.
	* search.cc (field_access_p): Use it.
	(class_of_object_parm): New.
	(field_accessor_p): Adjust for explicit object parms.

2024-01-09  Jason Merrill  <jason@redhat.com>

	* call.cc (build_over_call): Refactor handle_arg lambda.
	* class.cc (xobj_iobj_parameters_correspond): Fix FIXME.
	* method.cc (defaulted_late_check): Adjust comments.

2024-01-09  waffl3x  <waffl3x@protonmail.com>

	PR c++/102609
	PR c++/102609
	C++23 P0847R7 (deducing this) - CWG2586.
	* decl.cc (copy_fn_p): Accept xobj copy assignment functions.
	(move_signature_fn_p): Accept xobj move assignment functions.
	* method.cc (do_build_copy_assign): Handle defaulted xobj member
	functions.
	(defaulted_late_check): Comment.
	(defaultable_fn_check): Comment.

2024-01-09  waffl3x  <waffl3x@protonmail.com>

	PR c++/102609
	PR c++/102609
	C++23 P0847R7 (deducing this) - xobj lambdas.
	* lambda.cc (build_capture_proxy): Don't fold direct object types.
	* parser.cc (cp_parser_lambda_declarator_opt): Handle xobj lambdas,
	diagnostics.  Comments also updated.
	* pt.cc (tsubst_function_decl): Handle xobj lambdas.  Check object
	type of xobj lambda call operator, diagnose incorrect types.
	(tsubst_lambda_expr): Update comment.
	* semantics.cc (finish_decltype_type): Also consider by-value object
	parameter qualifications.

2024-01-09  waffl3x  <waffl3x@protonmail.com>

	PR c++/102609
	PR c++/102609
	C++23 P0847R7 (deducing this) - diagnostics.
	* class.cc (resolve_address_of_overloaded_function): Diagnostics.
	* cp-tree.h (TFF_XOBJ_FUNC): Define.
	* decl.cc (grokfndecl): Diagnostics.
	(grokdeclarator): Diagnostics.
	* error.cc (dump_aggr_type): Pass TFF_XOBJ_FUNC.
	(dump_lambda_function): Formatting for xobj lambda.
	(dump_function_decl): Pass TFF_XOBJ_FUNC.
	(dump_parameters): Formatting for xobj member functions.
	(function_category): Formatting for xobj member functions.
	* parser.cc (cp_parser_decl_specifier_seq): Diagnostics.
	(cp_parser_parameter_declaration): Diagnostics.
	* search.cc (look_for_overrides_here): Make xobj member functions
	override.
	(look_for_overrides_r): Reject an overriding xobj member function
	and diagnose it.
	* semantics.cc (finish_this_expr): Diagnostics.
	* typeck.cc (cp_build_addr_expr_1): Diagnostics.

2024-01-09  waffl3x  <waffl3x@protonmail.com>

	PR c++/102609
	PR c++/102609
	C++23 P0847R7 (deducing this) - initial functionality.
	* class.cc (xobj_iobj_parameters_correspond): New function, checks
	for corresponding object parameters between xobj and iobj member
	functions.
	(add_method): Handle object parameters of xobj member functions, use
	xobj_iobj_parameters_correspond.
	* call.cc (build_over_call): Refactor, handle xobj member functions.
	(cand_parms_match): Handle object parameters of xobj and iobj member
	functions, use xobj_iobj_parameters_correspond.
	* cp-tree.h (enum cp_decl_spec): Add ds_this, add comments.
	* decl.cc (grokfndecl): Add xobj_func_p parameter.  For xobj member
	functions, Set xobj_flag, don't set static_function flag.
	(grokdeclarator): Handle xobj member functions, tell grokfndecl.
	(grok_op_properties): Don't error for xobj operators.
	* parser.cc (cp_parser_decl_specifier_seq): Handle this specifier.
	(cp_parser_parameter_declaration): Set default argument to
	"this_identifier" for xobj parameters.
	(set_and_check_decl_spec_loc): Add "this", add comments.
	* tree.cc (build_min_non_dep_op_overload): Handle xobj operators.
	* typeck.cc (cp_build_addr_expr_1): Handle address-of xobj member
	functions.

2024-01-09  waffl3x  <waffl3x@protonmail.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/102609
	* cp-tree.h (struct lang_decl_fn): New data member.
	(DECL_NONSTATIC_MEMBER_FUNCTION_P): Poison.
	(DECL_IOBJ_MEMBER_FUNCTION_P): Define.
	(DECL_FUNCTION_XOBJ_FLAG): Define.
	(DECL_XOBJ_MEMBER_FUNCTION_P): Define.
	(DECL_OBJECT_MEMBER_FUNCTION_P): Define.
	(DECL_FUNCTION_MEMBER_P): Don't use
	DECL_NONSTATIC_MEMBER_FUNCTION_P.
	(DECL_CONST_MEMFUNC_P): Likewise.
	(DECL_VOLATILE_MEMFUNC_P): Likewise.
	(DECL_NONSTATIC_MEMBER_P): Likewise.
	* module.cc (trees_out::lang_decl_bools): Handle xobj_flag.
	(trees_in::lang_decl_bools): Handle xobj_flag.
	* call.cc (build_this_conversion)
	(add_function_candidate)
	(add_template_candidate_real)
	(add_candidates)
	(maybe_warn_class_memaccess)
	(cand_parms_match)
	(joust)
	(do_warn_dangling_reference)
	* class.cc (finalize_literal_type_property)
	(finish_struct)
	(resolve_address_of_overloaded_function)
	* constexpr.cc (is_valid_constexpr_fn)
	(cxx_bind_parameters_in_call)
	* contracts.cc (build_contract_condition_function)
	* cp-objcp-common.cc (cp_decl_dwarf_attribute)
	* cxx-pretty-print.cc (cxx_pretty_printer::postfix_expression)
	(cxx_pretty_printer::declaration_specifiers)
	(cxx_pretty_printer::direct_declarator)
	* decl.cc (cp_finish_decl)
	(grok_special_member_properties)
	(start_preparsed_function)
	(record_key_method_defined)
	* decl2.cc (cp_handle_deprecated_or_unavailable)
	* init.cc (find_uninit_fields_r)
	(build_offset_ref)
	* lambda.cc (lambda_expr_this_capture)
	(maybe_generic_this_capture)
	(nonlambda_method_basetype)
	* mangle.cc (write_nested_name)
	* method.cc (early_check_defaulted_comparison)
	(skip_artificial_parms_for)
	(num_artificial_parms_for)
	* pt.cc (is_specialization_of_friend)
	(determine_specialization)
	(copy_default_args_to_explicit_spec)
	(check_explicit_specialization)
	(tsubst_contract_attribute)
	(check_non_deducible_conversions)
	(more_specialized_fn)
	(maybe_instantiate_noexcept)
	(register_parameter_specializations)
	(value_dependent_expression_p)
	* search.cc (shared_member_p)
	(lookup_member)
	(field_access_p)
	* semantics.cc (finish_omp_declare_simd_methods)
	* tree.cc (lvalue_kind)
	* typeck.cc (invalid_nonstatic_memfn_p): Don't use
	DECL_NONSTATIC_MEMBER_FUNCTION_P.

2024-01-09  Julian Brown  <julian@codesourcery.com>

	* constexpr.cc (potential_consant_expression_1): Handle
	OMP_ARRAY_SECTION.
	* cp-tree.h (grok_omp_array_section, build_omp_array_section): Add
	prototypes.
	* decl2.cc (grok_omp_array_section): New function.
	* error.cc (dump_expr): Handle OMP_ARRAY_SECTION.
	* parser.cc (cp_parser_new): Initialize parser->omp_array_section_p.
	(cp_parser_statement_expr): Disallow array sections.
	(cp_parser_postfix_open_square_expression): Support OMP_ARRAY_SECTION
	parsing.
	(cp_parser_parenthesized_expression_list, cp_parser_lambda_expression,
	cp_parser_braced_list): Disallow array sections.
	(cp_parser_omp_var_list_no_open): Remove ALLOW_DEREF parameter, add
	MAP_LVALUE in its place.  Support generalised lvalue parsing for
	OpenMP map, to and from clauses.  Use OMP_ARRAY_SECTION
	code instead of TREE_LIST to represent OpenMP array sections.
	(cp_parser_omp_var_list): Remove ALLOW_DEREF parameter, add MAP_LVALUE.
	Pass to cp_parser_omp_var_list_no_open.
	(cp_parser_oacc_data_clause): Update call to cp_parser_omp_var_list.
	(cp_parser_omp_clause_map): Add sk_omp scope around
	cp_parser_omp_var_list_no_open call.
	* parser.h (cp_parser): Add omp_array_section_p field.
	* pt.cc (tsubst, tsubst_copy, tsubst_omp_clause_decl,
	tsubst_copy_and_build): Add OMP_ARRAY_SECTION support.
	* semantics.cc (handle_omp_array_sections_1, handle_omp_array_sections,
	cp_oacc_check_attachments, finish_omp_clauses): Use OMP_ARRAY_SECTION
	instead of TREE_LIST where appropriate.  Handle more types of map
	expression.
	* typeck.cc (build_omp_array_section): New function.

2024-01-07  Nathaniel Shead  <nathanieloshead@gmail.com>

	* module.cc (trees_out::write_var_def): Only write initializers
	in header modules.

2024-01-07  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/109679
	* module.cc (depset::hash::add_binding_entity): Don't skip names
	in the GMF if they've been exported with a using declaration.

2024-01-07  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/110808
	* parser.cc (cp_parser_module_name): Rewrite to handle
	module-names and module-partitions independently.
	(cp_parser_module_partition): New function.
	(cp_parser_module_declaration): Parse module partitions
	explicitly. Don't change state if parsing module decl failed.
	(cp_parser_import_declaration): Handle different kinds of
	import-declarations locally.

2024-01-03  Patrick Palka  <ppalka@redhat.com>

	PR c++/113064
	* call.cc (reference_binding): Still try a conversion via a
	temporary if a direct conversion was bad.

2024-01-03  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* parser.cc (cp_parser_omp_clause_name): Move handling of indirect
	clause to correspond to alphabetical order.


Copyright (C) 2024 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
