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

	PR c++/100358
	PR c++/115008
	* module.cc (elf_out::create_mapping): Fallback to ftruncate if
	posix_fallocate fails.

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

	PR c++/106221
	PR c++/110680
	* pt.cc (check_default_tmpl_args): Check this is actually a
	lambda declaration and not just a typedef.
	(push_template_decl): Likewise.

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

	Revert:
	2024-12-18  Jakub Jelinek  <jakub@redhat.com>

	* parser.cc (cp_lexer_new_main): Attempt to optimize large sequences
	of CPP_NUMBER with int type and values 0-255 separated by CPP_COMMA
	into CPP_EMBED with RAW_DATA_CST u.value.

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

	PR c++/110345
	* tree.cc (handle_maybe_unused_attribute): New function.
	(std_attributes): Use handle_maybe_unused_attribute instead
	of handle_unused_attribute for maybe_unused attribute.

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

	PR c++/110345
	* parser.cc (cp_parser_std_attribute): Don't transform
	[[deprecated]] into [[gnu::deprecated]].
	* tree.cc (handle_std_deprecated_attribute): New function.
	(std_attributes): Add deprecated entry.

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

	PR c++/116401
	* decl.cc (grokfndecl): Mark deduction guides as 'inline'.
	* module.cc (check_module_decl_linkage): Implement checks for
	non-inline external linkage definitions in headers.

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

	* cp-tree.h (check_module_decl_linkage): Declare.
	* decl2.cc (finish_static_data_member_decl): Check linkage.
	* module.cc (set_originating_module): Adjust comment.
	(check_module_decl_linkage): New function.
	* name-lookup.cc (do_namespace_alias): Build alias with
	specified location, check linkage.
	(pushtag): Check linkage.
	(push_namespace): Slightly clarify error message.
	* name-lookup.h (do_namespace_alias): Add location parameter.
	* parser.cc (cp_parser_namespace_alias_definition): Pass
	identifier location to do_namespace_alias.
	(cp_parser_alias_declaration): Check linkage.
	(cp_parser_init_declarator): Check linkage.
	(cp_parser_function_definition_after_declarator): Check linkage.
	(cp_parser_save_member_function_body): Check linkage.
	* pt.cc (finish_concept_definition): Mark as public, check
	linkage.

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

	* module.cc (depset::hash::add_binding_entity): Also walk
	unnamed namespaces.
	(module_state::write_namespaces): Adjust assertion.
	* name-lookup.cc (push_namespace): Move anon using-directive
	handling to...
	(make_namespace_finish): ...here.

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

	* cp-objcp-common.cc (cp_tree_size): Add TU_LOCAL_ENTITY.
	* cp-tree.def (TU_LOCAL_ENTITY): New tree code.
	* cp-tree.h (DECL_TEMPLATE_INSTANTIATIONS): Update comment.
	(struct tree_tu_local_entity): New type.
	(TU_LOCAL_ENTITY_NAME): New accessor.
	(TU_LOCAL_ENTITY_LOCATION): New accessor.
	(enum cp_tree_node_structure_enum): Add TS_CP_TU_LOCAL_ENTITY.
	(union GTY): Add tu_local_entity field.
	* module.cc (enum tree_tag): New flag DB_REFS_TU_LOCAL_BIT.
	(depset::has_defn): Override for TU-local entities.
	(depset::refs_tu_local): New accessor.
	(depset::hash::ignore_tu_local): New field.
	(depset::hash::hash): Initialize it.
	(trees_out::tree_tag::tt_tu_local): New flag.
	(trees_out::writing_local_entities): New field.
	(trees_out::is_initial_scan): New function.
	(trees_out::tu_local_count): New counter.
	(trees_out::trees_out): Initialize writing_local_entities.
	(dumper::impl::nested_name): Handle TU_LOCAL_ENTITY.
	(trees_out::instrument): Report TU-local entity counts.
	(trees_out::decl_value): Early exit for TU-local entities.
	(trees_in::decl_value): Handle typedefs of TU-local entities.
	(trees_out::decl_node): Adjust assertion to cope with early exit
	of TU-local deps.  Always write TU-local entities by value.
	(trees_out::type_node): Handle TU-local types.
	(trees_out::has_tu_local_dep): New function.
	(trees_out::find_tu_local_decl): New function.
	(trees_out::tree_node): Intercept TU-local entities and write
	placeholder values for them instead of normal streaming.
	(trees_in::tree_node): Handle TU-local entities and TU-local
	template results.
	(trees_out::write_function_def): Ignore exposures in non-inline
	function bodies.
	(trees_out::write_var_def): Ignore exposures in initializers.
	(trees_out::write_class_def): Ignore exposures in friend decls.
	(trees_in::read_class_def): Skip TU-local friends.
	(trees_out::write_definition): Record whether we're writing a
	decl which refers to TU-local entities.
	(depset::hash::add_dependency): Only mark as exposure if we're not
	ignoring TU-local entities.
	(depset::hash::find_dependencies): Use depset's own is_key_order
	function rather than delegating via walker.  Pass whether the
	decl has ignored TU-local entities in its definition.
	(template_has_explicit_inst): New function.
	(depset::hash::finalize_dependencies): Implement new warning
	Wtemplate-names-tu-local.
	(module_state::intercluster_seed): Don't seed TU-local deps.
	(module_state::write_cluster): Pass whether the decl has ignored
	TU-local entities in its definition.
	* pt.cc (register_specialization): Always register in a module.
	(complain_about_tu_local_entity): New function.
	(expr_contains_tu_local_entity): New function.
	(function_contains_tu_local_entity): New function.
	(instantiate_class_template): Skip TU-local friends.
	(tsubst_decl): Handle typedefs of TU-local entities.
	(tsubst): Complain about TU-local entities.
	(dependent_operand_p): Early exit for TU-local entities so we
	don't attempt to constant-evaluate them.
	(tsubst_expr): Detect and complain about TU-local entities.

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

	* tree.cc (decl_linkage): Treat DECL_SELF_REFERENCE_P like
	DECL_IMPLICIT_TYPEDEF_P.
	* name-lookup.cc (do_namespace_alias): Fix linkage.
	* module.cc (DB_IS_INTERNAL_BIT): Rename to...
	(DB_TU_LOCAL_BIT): ...this.
	(DB_REFS_INTERNAL_BIT): Rename to...
	(DB_EXPOSURE_BIT): ...this.
	(depset::hash::is_internal): Rename to...
	(depset::hash::is_tu_local): ...this.
	(depset::hash::refs_internal): Rename to...
	(depset::hash::is_exposure): ...this.
	(depset::hash::is_tu_local_entity): New function.
	(depset::hash::has_tu_local_tmpl_arg): New function.
	(depset::hash::is_tu_local_value): New function.
	(depset::hash::make_dependency): Check for TU-local entities.
	(depset::hash::add_dependency): Make current an exposure
	whenever it references a TU-local entity.
	(depset::hash::add_binding_entity): Don't create bindings for
	any TU-local entity.
	(depset::hash::finalize_dependencies): Rename flags and adjust
	diagnostic messages to report exposures of TU-local entities.
	(depset::tarjan::connect): Don't include any TU-local depsets.
	(depset::hash::connect): Likewise.

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

	PR c++/118069
	* constraint.cc (atom_hasher): Define here, instead of ...
	* cp-tree.h (atom_hasher): ... here.
	* logic.cc (clause::m_set): Use pointer instead of structural
	hashing.

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

	PR c++/118069
	* logic.cc (dnf_size_r): Use HOST_WIDE_INT instead of int, and
	handle overflow gracefully via add_sat_hwi and mul_sat_hwi.
	(cnf_size_r): Likewise.
	(dnf_size): Use HOST_WIDE_INT instead of int.
	(cnf_size): Likewise.

2024-12-19  Marek Polacek  <polacek@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/117980
	* constexpr.cc (cxx_eval_outermost_constant_expr): If there's
	an object to initialize, take its type.  Don't set the type
	in the constexpr dtor case.

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

	* parser.cc (cp_lexer_new_main): Attempt to optimize large sequences
	of CPP_NUMBER with int type and values 0-255 separated by CPP_COMMA
	into CPP_EMBED with RAW_DATA_CST u.value.

2024-12-18  Tobias Burnus  <tburnus@baylibre.com>

	* decl.cc (omp_declare_variant_finalize_one): Handle
	append_args.
	* parser.cc (cp_parser_omp_clause_init_modifiers): New;
	split of from ...
	(cp_parser_omp_clause_init):  ... here; call it.
	(cp_parser_omp_all_clauses): Replace interop parsing by
	a call to ...
	(cp_parser_omp_clause_interop): ... this new function;
	set tree used/read.
	(cp_finish_omp_declare_variant): Parse 'append_args' clause.
	(cp_parser_omp_declare): Update comment.
	* pt.cc (tsubst_attribute, tsubst_omp_clauses): Handle template
	substitution also for declare variant's append_args clause,
	using for 'init' the same code as for interop's init clause.

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

	* parser.cc (cp_parser_postfix_expression): Use
	type_id_in_expr_sentinel instead of manually saving+setting/restoring
	parser->in_type_id_in_expr_p around cp_parser_type_id calls.
	(cp_parser_has_attribute_expression): Likewise.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_sizeof_operand): Likewise.

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

	PR c++/110345
	* cp-tree.h (enum cp_tree_index): Add CPTI_INTERNAL_IDENTIFIER.
	(internal_identifier): Define.
	(internal_attribute_table): Declare.
	* parser.cc (cp_parser_exception_declaration): Error on alignas
	on exception declaration.
	(cp_parser_std_attribute_spec): Turn alignas into internal
	ns aligned attribute rather than gnu.
	* decl.cc (initialize_predefined_identifiers): Initialize
	internal_identifier.
	* tree.cc (handle_alignas_attribute): New function.
	(internal_attributes): New variable.
	(internal_attribute_table): Likewise.
	* cp-objcp-common.h (cp_objcp_attribute_table): Add
	internal_attribute_table entry.

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

	PR c++/110345
	* parser.cc (cp_parser_type_specifier_seq): Chain cxx11_attribute_p
	attributes after any type specifier in the is_declaration case
	to std_attributes rather than attributes.  Set also ds_attribute
	or ds_std_attribute locations if not yet set.
	(cp_parser_exception_declaration): Pass &type_specifiers.attributes
	instead of NULL as last argument, call cp_decl_attributes.

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

	PR c++/110345
	* decl.cc (check_tag_decl): Diagnose std_attributes.

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

	PR c++/110345
	* parser.cc (cp_parser_decl_specifier_seq): Call
	warn_misplaced_attr_for_class_type for all OVERLOAD_TYPE_P
	types, not just CLASS_TYPE_P.  When not calling
	warn_misplaced_attr_for_class_type, don't clear attrs and
	add it to decl_specs->std_attributes instead.

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

	PR c/41045
	* semantics.cc (finish_asm_stmt): Reject - constraint modifier inside
	of a function.

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

	* semantics.cc (finish_asm_stmt): Diagnose invalid ":" constraint
	uses.

2024-12-18  Lewis Hyatt  <lhyatt@gmail.com>

	PR c++/117970
	* module.cc (module_state::read_ordinary_maps): Change argument to
	line_map_uint_t instead of unsigned int.

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

	PR c++/118073
	* error.cc (dump_expr) <case NONTYPE_ARGUMENT_PACK>: New case.

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

	PR c++/117985
	* init.cc (build_vec_init): Pop CLEANUP_FLAGS if we're not
	generating the loop.

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

	PR c++/116108
	* decl.cc (grokdeclarator): Pass TYYPE_MAIN_VARIANT (type)
	rather than type to same_type_p when checking if the non-static
	data member doesn't have current class type.

2024-12-16  David Malcolm  <dmalcolm@redhat.com>

	PR sarif-replay/117943
	* error.cc (auto_context_line::~auto_context_line): Use
	source-printing options from text_output.

2024-12-15  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc
	(cp_coroutine_transform::wrap_original_function_body): Use
	finish_if_stmt instead of manually applying the same process.

2024-12-15  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (expand_one_await_expression): Update the
	resume index before checking if the coroutine is ready.

2024-12-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/98935
	* coroutines.cc (register_local_var_uses): Add a pset to the
	tree walk to avoid visiting the same BIND_EXPR twice.  Make
	an early exit for cases that the callback does not apply.
	(cp_coroutine_transform::apply_transforms): Add a pset to the
	tree walk for register_local_vars.

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

	PR c++/90321
	* decl.cc (find_decomp_class_base): Check for decomposing a
	lambda closure type.  Report base class chains if needed.
	(cp_finish_decomp): Remove no-longer-needed check.

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

	* parser.cc (cp_parser_omp_construct, cp_parser_pragma): Reject
	OpenMP expressions in constexpr functions.

2024-12-12  Tobias Burnus  <tburnus@baylibre.com>

	* parser.cc (OMP_DISPATCH_CLAUSE_MASK): Add has_device_addr clause.

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

	PR c++/117614
	* constexpr.cc (cxx_eval_store_expression): For stores to
	DECL_ANON_UNION_VAR_P vars just continue with DECL_VALUE_EXPR
	of it, without setting evaluated to true or full
	cxx_eval_constant_expression.

2024-12-11  David Malcolm  <dmalcolm@redhat.com>

	* decl.cc: Add #include "diagnostic-highlight-colors.h"
	and #include "pretty-print-markup.h".
	(complain_about_incompatible_declspecs): New.
	(grokdeclarator): Use it when complaining about both 'signed' and
	'unsigned', and both 'long' and 'short'.

2024-12-11  David Malcolm  <dmalcolm@redhat.com>

	* call.cc (print_z_candidates): Count the number of
	candidates and issue a note stating the count at an
	intermediate nesting level.  Number the individual
	candidates.

2024-12-10  Arsen Arsenović  <arsen@aarsen.me>
	    Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (dump_record_fields): New helper.  Iterates a
	RECORD_TYPEs TYPE_FIELDS and pretty-prints them.
	(dmp_str): New.  The lang-coro dump stream.
	(coro_dump_id): New.  ID of the lang-coro dump.
	(coro_dump_flags): New.  Flags passed to the lang-coro dump.
	(coro_maybe_dump_initial_function): New helper.  Prints, if
	dumping is enabled, the fndecl passed to it as the original
	function.
	(coro_maybe_dump_ramp): New.  Prints the ramp function passed to
	it, if dumping is enabled.
	(coro_maybe_dump_transformed_functions): New.
	(cp_coroutine_transform::apply_transforms): Initialize the
	lang-coro dump.  Call coro_maybe_dump_initial_function on the
	original function, as well as coro_maybe_dump_ramp, after the
	transformation into the ramp is finished.
	(cp_coroutine_transform::finish_transforms): Call
	coro_maybe_dump_transformed_functions on the built actor and
	destroy.
	* cp-objcp-common.cc (cp_register_dumps): Register the coroutine
	dump.
	* cp-tree.h (coro_dump_id): Declare as extern.
	* cxx-pretty-print.cc (pp_cxx_template_parameter): Don't call
	TREE_TYPE on a TREE_LIST cell.
	(cxx_pretty_printer::declaration): Handle FIELD_DECL similar to
	VAR_DECL.

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

	PR c++/117788
	* typeck.cc (cp_build_binary_op) <case EQ_EXPR>: Don't check
	warn_array_compare.  Check tf_warning_or_error instead of just
	tf_warning.  Maybe return an error_mark_node in C++26.
	<case LE_EXPR>: Likewise.

2024-12-09  Marek Polacek  <polacek@redhat.com>
	    Patrick Palka  <ppalka@redhat.com>

	PR c++/116416
	* cp-gimplify.cc (cp_fold_r) <case TARGET_EXPR>: Try to fold
	TARGET_EXPR_INITIAL and replace it with the folded result if
	it's TREE_CONSTANT.

2024-12-09  Matthew Malcomson  <mmalcomson@nvidia.com>

	* call.cc (build_cxx_call):  Pass `complain` parameter to
	check_builtin_function_arguments.  Take its value from the
	`tsubst_flags_t` type `complain & tf_error`.
	* semantics.cc (finish_call_expr):  Pass `complain` parameter to
	resolve_overloaded_builtin.  Take its value from the
	`tsubst_flags_t` type `complain & tf_error`.

2024-12-06  David Malcolm  <dmalcolm@redhat.com>

	PR other/116253
	* call.cc (print_conversion_rejection): Remove leading space from
	diagnostic messages.
	(print_conversion_rejection): Likewise.
	(print_arity_information): Likewise.
	(print_z_candidate): Likewise.  Add auto_diagnostic_nesting_level
	before calls to fn_type_unification and diagnose_constraints.
	(print_z_candidates): Add auto_diagnostic_nesting_level before
	looping over candidates.
	(conversion_null_warnings): Remove leading space from
	diagnostic messages.
	(maybe_inform_about_fndecl_for_bogus_argument_init): Likewise.
	* constraint.cc (tsubst_valid_expression_requirement): Add
	auto_diagnostic_nesting_level when showing why the expression is
	invalid.
	(satisfy_disjunction): Likewise when showing operans, and again
	when replaying each branch of the disjunction.
	(diagnose_constraints): Likewise when replaying satisfaction.
	* error.cc (cp_diagnostic_text_starter): Set prefix.
	(print_instantiation_full_context): Only show the file
	if we're not showing nesting or the user has opted in to
	showing location information in nested diagnostics.
	(class auto_context_line): New.
	(print_instantiation_partial_context_line): Replace calls to
	print_location and to diagnostic_show_locus with an
	auto_context_line.
	(print_instantiation_partial_context): Replace calls to
	print_location with an auto_context_line.
	(maybe_print_constexpr_context): Likewise.
	(print_constrained_decl_info): Likewise.
	(print_concept_check_info): Likewise.
	(print_constraint_context_head): Likewise.
	(print_requires_expression_info): Likewise.

2024-12-06  David Malcolm  <dmalcolm@redhat.com>

	* cp-gimplify.cc: Include "gcc-urlifier.h".
	(process_stmt_hotness_attribute): Use auto_urlify_attributes with
	OPT_Wattributes.
	* cvt.cc: Include "gcc-urlifier.h".
	(maybe_warn_nodiscard): Use auto_urlify_attributes with
	OPT_Wunused_result.
	* decl.cc: Include "gcc-urlifier.h".
	(start_decl): Use auto_urlify_attributes.
	(start_preparsed_function): Likewise.

2024-12-06  David Malcolm  <dmalcolm@redhat.com>

	* name-lookup.cc (suggest_alternative_in_explicit_scope):
	Gracefully handle non-namespaces, such as scoped enums.
	* parser.cc (cp_parser_name_lookup_error): Provide
	a name_hint for the case where we're in an explicit scope.
	* std-name-hint.gperf: Add <concepts>.
	* std-name-hint.h: Regenerate.

2024-12-06  David Malcolm  <dmalcolm@redhat.com>

	PR other/116253
	* error.cc (print_location): Move to earlier in the file.
	(print_instantiation_partial_context_line): Replace
	location-printing logic with a call to print_location.
	(print_instantiation_partial_context): Likewise, splitting up
	pp_verbatim calls.
	(maybe_print_constexpr_context): Likewise.

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

	* cp-tree.h (class raw_data_iterator): New type.
	(class raw_data_range): New type.
	* parser.cc (cp_parser_postfix_open_square_expression): Handle
	parsing of CPP_EMBED.
	(cp_parser_parenthesized_expression_list): Likewise.  Use
	cp_lexer_next_token_is.
	(cp_parser_expression): Handle parsing of CPP_EMBED.
	(cp_parser_template_argument_list): Likewise.
	(cp_parser_initializer_list): Likewise.
	(cp_parser_oacc_clause_tile): Likewise.
	(cp_parser_omp_tile_sizes): Likewise.
	* pt.cc (tsubst_expr): Handle RAW_DATA_CST.
	* constexpr.cc (reduced_constant_expression_p): Likewise.
	(raw_data_cst_elt): New function.
	(find_array_ctor_elt): Handle RAW_DATA_CST.
	(cxx_eval_array_reference): Likewise.
	* typeck2.cc (digest_init_r): Emit -Wnarrowing and/or -Wconversion
	diagnostics.
	(process_init_constructor_array): Handle RAW_DATA_CST.
	* decl.cc (maybe_deduce_size_from_array_init): Likewise.
	(is_direct_enum_init): Fail for RAW_DATA_CST.
	(cp_maybe_split_raw_data): New function.
	(consume_init): New function.
	(reshape_init_array_1): Add VECTOR_P argument.  Handle RAW_DATA_CST.
	(reshape_init_array): Adjust reshape_init_array_1 caller.
	(reshape_init_vector): Likewise.
	(reshape_init_class): Handle RAW_DATA_CST.
	(reshape_init_r): Likewise.

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

	PR c++/117898
	* pt.cc (tsubst_pack_index): Detect indexing an empty pack.

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

	PR c/41045
	* cp-tree.h (finish_asm_stmt): Add TOPLEV_P argument.
	* parser.cc (cp_parser_asm_definition): Parse also extended asm
	without clobbers/labels outside of functions.
	* semantics.cc (finish_asm_stmt): Add TOPLEV_P argument, if set,
	check extra restrictions for extended asm outside of functions.
	* pt.cc (tsubst_stmt): Adjust finish_asm_stmt caller.

2024-12-04  David Malcolm  <dmalcolm@redhat.com>

	PR c++/116771
	* parser.cc (cp_parser_name_lookup_error): Provide suggestions for
	the case of complete failure where there is no scope.

2024-12-04  Simon Martin  <simon@nasilyan.com>

	PR c++/117615
	* constexpr.cc (cxx_eval_constant_expression): Don't reject
	INTEGER_CSTs with type POINTER_TYPE to METHOD_TYPE.

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

	PR c++/117826
	* cp-tree.h (struct decl_location_traits): New type.
	(erroneous_templates_t): Change using into typedef.
	(erroneous_templates): Add GTY((cache)).
	* error.cc (cp_adjust_diagnostic_info): Use
	hash_map_safe_get_or_insert<true> rather than
	hash_map_safe_get_or_insert<false> for erroneous_templates.

2024-12-03  Nina Ranns  <dinka.ranns@googlemail.com>

	PR c++/117579
	* parser.cc (cp_parser_statement): Replace assertion with a
	conditional check that the statement containing a contract assert
	is empty.

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

	* constraint.cc (resolve_concept_check): Remove.
	(deduce_constrained_parameter): Remove.
	(finish_type_constraints): Inline into its only caller
	cp_parser_placeholder_type_specifier and remove.
	(build_concept_check_arguments): Coding style tweaks.
	(build_standard_check): Inline into its only caller ...
	(build_concept_check): ... here.
	(build_type_constraint): Use the prototype parameter as the
	first template argument.
	(finish_shorthand_constraint): Remove function concept
	handling.  Use concept_prototype_parameter.
	(placeholder_extract_concept_and_args): Inline into its
	callers and remove.
	(equivalent_placeholder_constraints): Adjust after
	placeholder_extract_concept_and_args removal.
	(iterative_hash_placeholder_constraint): Likewise.
	* cp-objcp-common.cc (cp_common_init_ts): Remove WILDCARD_DECL
	handling.
	* cp-tree.def (WILDCARD_DECL): Remove.
	* cp-tree.h (WILDCARD_PACK_P): Remove.
	(type_uses_auto_or_concept): Remove declaration of nonexistent
	function.
	(append_type_to_template_for_access_check): Likewise.
	(finish_type_constraints): Remove declaration.
	(placeholder_extract_concept_and_args): Remove declaration.
	(deduce_constrained_parameter): Remove declaration.
	(resolve_constraint_check): Remove declaration.
	(valid_requirements_p): Remove declaration of nonexistent
	function.
	(finish_concept_name): Likewise.
	(concept_definition_p): Remove redundant overload.
	(concept_prototype_parameter): Define.
	* cxx-pretty-print.cc (pp_cxx_constrained_type_spec): Adjust
	after placeholder_extract_concept_and_args.
	* error.cc (dump_decl) <case WILDCARD_DECL>: Remove.
	(dump_expr) <case WILDCARD_DECL>: Likewise.
	* parser.cc (is_constrained_parameter): Inline into
	declares_constrained_type_template_parameter and remove.
	(cp_parser_check_constrained_type_parm): Declare static.
	(finish_constrained_template_template_parm): Remove.
	(cp_parser_constrained_template_template_parm): Remove.
	(finish_constrained_parameter): Remove dead code guarded by
	cp_parser_constrained_template_template_parm.
	(declares_constrained_type_template_parameter): Adjust after
	is_constrained_parameter removal.
	(declares_constrained_template_template_parameter): Remove.
	(cp_parser_placeholder_type_specifier): Adjust after
	finish_type_constraints removal.  Check the prototype parameter
	earlier, before build_type_constraint.
	Use concept_prototype_parameter.
	(cp_parser_parameter_declaration): Remove dead code guarded by
	declares_constrained_template_template_parameter.
	* pt.cc (convert_wildcard_argument): Remove.
	(convert_template_argument): Remove WILDCARD_DECL handling.
	(coerce_template_parameter_pack): Likewise.
	(tsubst) <case TEMPLATE_TYPE_PARM>: Likewise.
	(type_dependent_expression_p): Likewise.
	(make_constrained_placeholder_type): Remove function concept
	handling.
	(placeholder_type_constraint_dependent_p): Remove WILDCARD_DECL
	handling.

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

	* parser.cc: Implement C++26 P3176R1 - The Oxford variadic comma.
	(cp_parser_parameter_declaration_clause): Emit
	-Wdeprecated-variadic-comma-omission warnings.

2024-11-29  Tejas Belagod  <tejas.belagod@arm.com>

	* decl.cc (reshape_init_array_1): Handle poly indices.

2024-11-28  Marek Polacek  <polacek@redhat.com>

	PR c++/113798
	* constexpr.cc (potential_constant_expression_1) <case PACK_INDEX_EXPR>:
	New case.
	* cp-objcp-common.cc (cp_common_init_ts): Mark PACK_INDEX_TYPE and
	PACK_INDEX_EXPR.
	* cp-tree.def (PACK_INDEX_TYPE): New.
	(PACK_INDEX_EXPR): New.
	* cp-tree.h (WILDCARD_TYPE_P): Also check PACK_INDEX_TYPE.
	(PACK_INDEX_CHECK): Define.
	(PACK_INDEX_P): Define.
	(PACK_INDEX_PACK): Define.
	(PACK_INDEX_INDEX): Define.
	(PACK_INDEX_PARENTHESIZED_P): Define.
	(make_pack_index): Declare.
	(pack_index_element): Declare.
	* cxx-pretty-print.cc (cxx_pretty_printer::expression) <case
	PACK_INDEX_EXPR>: New case.
	(cxx_pretty_printer::type_id) <case PACK_INDEX_TYPE>: New case.
	* error.cc (dump_type) <case PACK_INDEX_TYPE>: New case.
	(dump_type_prefix): Handle PACK_INDEX_TYPE.
	(dump_type_suffix): Likewise.
	(dump_expr) <case PACK_INDEX_EXPR>: New case.
	* mangle.cc (write_type) <case PACK_INDEX_TYPE>: New case.
	* module.cc (trees_out::type_node) <case PACK_INDEX_TYPE>: New case.
	(trees_in::tree_node) <case PACK_INDEX_TYPE>: New case.
	* parser.cc (cp_parser_next_tokens_are_pack_index_p): New.
	(cp_parser_pack_index): New.
	(cp_parser_primary_expression): Handle a C++26 pack-index-expression.
	(cp_parser_unqualified_id): Handle a C++26 pack-index-specifier.
	(cp_parser_nested_name_specifier_opt): See if a pack-index-specifier
	follows.
	(cp_parser_qualifying_entity): Handle a C++26 pack-index-specifier.
	(cp_parser_decltype_expr): Set id_expression_or_member_access_p for
	pack indexing.
	(cp_parser_mem_initializer_id): Handle a C++26 pack-index-specifier.
	(cp_parser_simple_type_specifier): Likewise.
	(cp_parser_base_specifier): Likewise.
	* pt.cc (iterative_hash_template_arg) <case PACK_INDEX_TYPE,
	PACK_INDEX_EXPR>: New case.
	(find_parameter_packs_r) <case PACK_INDEX_TYPE, PACK_INDEX_EXPR>: New
	case.
	(make_pack_index): New.
	(tsubst_pack_index): New.
	(tsubst): Avoid tsubst on PACK_INDEX_TYPE.
	<case TYPENAME_TYPE>: Add a call to error.
	<case PACK_INDEX_TYPE>: New case.
	(tsubst_expr) <case PACK_INDEX_EXPR>: New case.
	(dependent_type_p_r): Return true for PACK_INDEX_TYPE.
	(type_dependent_expression_p): Recurse on PACK_INDEX_PACK for
	PACK_INDEX_EXPR.
	* ptree.cc (cxx_print_type) <case PACK_INDEX_TYPE>: New case.
	* semantics.cc (finish_parenthesized_expr): Set
	PACK_INDEX_PARENTHESIZED_P for PACK_INDEX_EXPR.
	(finish_type_pack_element): Adjust error messages.
	(pack_index_element): New.
	* tree.cc (cp_tree_equal) <case PACK_INDEX_EXPR>: New case.
	(cp_walk_subtrees) <case PACK_INDEX_TYPE, PACK_INDEX_EXPR>: New case.
	* typeck.cc (structural_comptypes) <case PACK_INDEX_TYPE>: New case.

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

	PR c++/78620
	PR c++/117256
	* init.cc (build_zero_init_1): Set CONSTRUCTOR_ZERO_PADDING_BITS.
	(build_value_init_noctor): Likewise.
	* constexpr.cc (cxx_eval_store_expression): Propagate
	CONSTRUCTOR_ZERO_PADDING_BITS flag.

2024-11-28  David Malcolm  <dmalcolm@redhat.com>

	PR c/82892
	* name-lookup.cc (suggest_alternatives_for_1): Provide hints for
	missing command-line options.

2024-11-28  David Malcolm  <dmalcolm@redhat.com>

	PR c++/87850
	* call.cc (convert_like_real): Call maybe_emit_indirection_note
	for "invalid conversion" diagnostic.
	* typeck.cc (compatible_types_for_indirection_note_p): New
	function.

2024-11-28  David Malcolm  <dmalcolm@redhat.com>

	PR c/104896
	* cvt.cc (maybe_warn_nodiscard): Replace "%<%s%>" with "%qs" in
	message wording.

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

	* module.cc (trees_out::core_bools): Check vague_linkage_p.
	(has_definition): Likewise.

2024-11-23  Lewis Hyatt  <lhyatt@gmail.com>

	* module.cc (bytes_out::loc): New function.
	(bytes_in::loc): New function.
	(struct span): Change int fields to location_diff_t.
	(range_t): Change from "unsigned int" to "line_map_uint_t".
	(struct ord_loc_info): Likewise.
	(struct macro_loc_info): Likewise.
	(class module_state): Likewise.
	(dumper::operator()): Add new code 'K' for dumping a location_t.
	(loc_spans::init): Use %K instead of %u for location_t dumps.
	(loc_spans::open): Likewise.
	(loc_spans::close): Likewise. Adjust bitwise expressions to support
	64-bit location_t as well.
	(struct module_state_config): Change ordinary_locs and macro_locs
	from "unsigned int" to "line_map_uint_t".  Reorder fields to improve
	packing.  Rather than changing the constructor initializer list to
	match the new order, switch to NSDMI instead.
	(module_state::note_location): Adjust to support 64-bit location_t.
	(module_state::write_location): Use %K instead of %u for location_t
	dumps. Use loc() instead of u() for streaming location_t.
	(module_state::read_location): Likewise.
	(module_state::write_ordinary_maps): Likewise.
	(module_state::write_macro_maps): Likewise.
	(module_state::write_config): Likewise.
	(module_state::read_config): Likewise.
	(module_state::write_prepare_maps): Use %K instead of %u for
	location_t dumps. Adjust variable types and bitwise expressions to
	support 64-bit location_t.
	(module_state::read_ordinary_maps): Likewise.
	(module_state::read_macro_maps): Likewise.
	(preprocess_module): Adjust data types to support 64-bit number of
	line maps.

2024-11-22  Andrew Pinski  <quic_apinski@quicinc.com>

	PR bootstrap/117737
	* call.cc (INCLUDE_MEMORY): Remove.
	* class.cc (INCLUDE_MEMORY): Remove.
	* constexpr.cc (INCLUDE_MEMORY): Remove.
	* constraint.cc (INCLUDE_MEMORY): Remove.
	* contracts.cc (INCLUDE_MEMORY): Remove.
	* coroutines.cc (INCLUDE_MEMORY): Remove.
	* cp-gimplify.cc (INCLUDE_MEMORY): Remove.
	* cp-lang.cc (INCLUDE_MEMORY): Remove.
	* cp-objcp-common.cc (INCLUDE_MEMORY): Remove.
	* cp-ubsan.cc (INCLUDE_MEMORY): Remove.
	* cvt.cc (INCLUDE_MEMORY): Remove.
	* cxx-pretty-print.cc (INCLUDE_MEMORY): Remove.
	* decl.cc (INCLUDE_MEMORY): Remove.
	* decl2.cc (INCLUDE_MEMORY): Remove.
	* dump.cc (INCLUDE_MEMORY): Remove.
	* error.cc (INCLUDE_MEMORY): Remove.
	* except.cc (INCLUDE_MEMORY): Remove.
	* expr.cc (INCLUDE_MEMORY): Remove.
	* friend.cc (INCLUDE_MEMORY): Remove.
	* init.cc (INCLUDE_MEMORY): Remove.
	* lambda.cc (INCLUDE_MEMORY): Remove.
	* lex.cc (INCLUDE_MEMORY): Remove.
	* logic.cc (INCLUDE_MEMORY): Remove.
	* mangle.cc (INCLUDE_MEMORY): Remove.
	* mapper-client.cc (INCLUDE_MEMORY): Remove.
	* mapper-resolver.cc (INCLUDE_MEMORY): Remove.
	* method.cc (INCLUDE_MEMORY): Remove.
	* module.cc (INCLUDE_MEMORY): Remove.
	* name-lookup.cc (INCLUDE_MEMORY): Remove.
	* optimize.cc (INCLUDE_MEMORY): Remove.
	* parser.cc (INCLUDE_MEMORY): Remove.
	* pt.cc (INCLUDE_MEMORY): Remove.
	* ptree.cc (INCLUDE_MEMORY): Remove.
	* rtti.cc (INCLUDE_MEMORY): Remove.
	* search.cc (INCLUDE_MEMORY): Remove.
	* semantics.cc (INCLUDE_MEMORY): Remove.
	* tree.cc (INCLUDE_MEMORY): Remove.
	* typeck.cc (INCLUDE_MEMORY): Remove.
	* typeck2.cc (INCLUDE_MEMORY): Remove.
	* vtable-class-hierarchy.cc (INCLUDE_MEMORY): Remove.

2024-11-22  Tobias Burnus  <tburnus@baylibre.com>

	* parser.cc (cp_parser_omp_clause_name, cp_parser_omp_all_clauses,
	cp_parser_omp_dispatch_body): Handle 'interop' clause.
	* pt.cc (tsubst_omp_clauses): Likewise.
	* semantics.cc (finish_omp_clauses): Likewise.

2024-11-22  Tobias Burnus  <tburnus@baylibre.com>

	* parser.cc (INCLUDE_STRING): Define.
	(cp_parser_omp_clause_name): Handle init, use, and destroy clauses.
	(cp_parser_omp_all_clauses): Likewise; use C_ORT_OMP_INTEROP, if
	'use' is permitted, for c_finish_omp_clauses.
	(cp_parser_omp_modifier_prefer_type, cp_parser_omp_clause_init,
	OMP_INTEROP_CLAUSE_MASK, cp_parser_omp_interop): New.
	(cp_parser_pragma): Handle 'interop' directive.
	* pt.cc (tsubst_omp_clauses): Handle init, use, and destroy clauses.
	(tsubst_stmt): Handle OMP_INTEROP.
	* semantics.cc (cp_omp_init_prefer_type_update): New.
	(finish_omp_clauses): Handle  init, use, and destroy clauses
	and add clause check for 'depend' on 'interop'.

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

	* module.cc (has_definition): Also true for inline vars.

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

	* module.cc (trees_in::core_vals) [STATEMENT_LIST]: Skip
	DEBUG_BEGIN_STMT if !MAY_HAVE_DEBUG_MARKER_STMTS.

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

	* name-lookup.cc (lookup_imported_hidden_friend): Call
	lazy_load_pendings.

2024-11-20  Paul-Antoine Arras  <parras@baylibre.com>

	* decl.cc (omp_declare_variant_finalize_one): Set adjust_args
	need_device_ptr attribute.
	* parser.cc (cp_parser_direct_declarator): Update call to
	cp_parser_late_return_type_opt.
	(cp_parser_late_return_type_opt): Add 'tree parms' parameter. Update
	call to cp_parser_late_parsing_omp_declare_simd.
	(cp_parser_omp_clause_name): Handle nocontext and novariants clauses.
	(cp_parser_omp_clause_novariants): New function.
	(cp_parser_omp_clause_nocontext): Likewise.
	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_NOVARIANTS and
	PRAGMA_OMP_CLAUSE_NOCONTEXT.
	(cp_parser_omp_dispatch_body): New function, inspired from
	cp_parser_assignment_expression and cp_parser_postfix_expression.
	(OMP_DISPATCH_CLAUSE_MASK): Define.
	(cp_parser_omp_dispatch): New function.
	(cp_finish_omp_declare_variant): Add parameter. Handle adjust_args
	clause.
	(cp_parser_late_parsing_omp_declare_simd): Add parameter. Update calls
	to cp_finish_omp_declare_variant and cp_finish_omp_declare_variant.
	(cp_parser_omp_construct): Handle PRAGMA_OMP_DISPATCH.
	(cp_parser_pragma): Likewise.
	* semantics.cc (finish_omp_clauses): Handle OMP_CLAUSE_NOCONTEXT and
	OMP_CLAUSE_NOVARIANTS.
	* pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_NOCONTEXT and
	OMP_CLAUSE_NOVARIANTS.
	(tsubst_stmt): Handle OMP_DISPATCH.
	(tsubst_expr): Handle IFN_GOMP_DISPATCH.

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

	* decl2.cc (cp_handle_deprecated_or_unavailable): Avoid redundant
	warning.
	* call.cc (build_over_call): Set TREE_NO_WARNING for calls
	to deprecated functions.
	* semantics.cc (finish_call_expr): Propagate TREE_NO_WARNING.

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

	* module.cc (module_preprocess_options): Set directives_only here.

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

	* module.cc (module_preprocess_options): Don't override it.

2024-11-16  Jan Hubicka  <hubicka@ucw.cz>

	* decl.cc (cxx_build_operator_new): Break out from ...
	(cxx_build_operator_delete): Break out from ...
	(cxx_init_operator_new_delete_decls): Break out from ...
	(cxx_init_decl_processing): ... here.

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

	* name-lookup.cc (do_namespace_alias): set_originating_module after
	pushdecl.

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

	* module.cc (module_state_config::get_dialect): Expect coroutines in
	C++20.

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

	* Make-lang.in: Also collect tags from libcody and c++tools.

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

	* lang-specs.h: Check fmodules* instead of fmodules-ts.

2024-11-11  Simon Martin  <simon@nasilyan.com>

	PR c++/117463
	* constexpr.cc (cxx_placement_new_fn): Implement in terms of
	std_placement_new_fn_p.
	* cp-tree.h (std_placement_new_fn_p): Declare.
	* init.cc (std_placement_new_fn_p): Add missing checks to ensure
	that fndecl is a non-replaceable ::operator new.

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

	* parser.cc (cp_parser_postfix_expression): Handle
	RID_BUILTIN_OPERATOR_NEW and RID_BUILTIN_OPERATOR_DELETE.
	* cp-objcp-common.cc (names_builtin_p): Change return type from
	bool to int, adjust return statments.  Handle
	RID_BUILTIN_OPERATOR_NEW and RID_BUILTIN_OPERATOR_DELETE.
	* pt.cc (tsubst_expr) <case CALL_EXPR>: Handle
	CALL_FROM_NEW_OR_DELETE_P.

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

	* cp-tree.h (struct ptrmem_cst): Change tree_common to tree_typed.
	(struct tree_trait_expr): Likewise.
	(struct tree_static_assert): Change tree_common to tree_base.
	(struct tree_argument_pack_select): Likewise.

2024-11-10  Lewis Hyatt  <lhyatt@gmail.com>

	* cp-objcp-common.cc (cp_common_init_ts): Change TRAIT_EXPR from
	TS_EXP to TS_TYPED.

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

	PR c++/117317
	* semantics.cc (emit_associated_thunks): Do nothing for
	!DECL_INTERFACE_KNOWN && DECL_DEFER_OUTPUT fns.

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

	PR c++/116634
	* init.cc (can_init_array_with_p): Allow PR59465 case with
	permerror.

2024-11-05  Simon Martin  <simon@nasilyan.com>

	PR c++/117099
	PR c++/117129
	* typeck.cc (check_return_expr): Upon error, set
	current_function_return_value to error_mark_node.

2024-11-05  Simon Martin  <simon@nasilyan.com>

	PR c++/117101
	* init.cc (std_placement_new_fn_p): Check first_arg against
	NULL_TREE.

2024-11-05  Simon Martin  <simon@nasilyan.com>

	PR c++/117158
	* typeck.cc (cp_build_array_ref): Only wrap array expression
	into a SAVE_EXPR at template instantiation time.

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

	PR c++/117370
	* cp-tree.h (is_std_class): Declare.
	* constexpr.cc (is_std_class): New function.
	(is_std_allocator): Use it.
	* decl.cc (grok_op_properties): Mark global replaceable
	operator new/delete operators with const std::nothrow_t & last
	argument with DECL_IS_REPLACEABLE_OPERATOR.

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

	PR c++/99274
	* module.cc (trees_in::is_matching_decl): Merge default
	arguments.
	* tree.cc (cp_tree_equal) <AGGR_INIT_EXPR>: Handle unification
	of AGGR_INIT_EXPRs with new VAR_DECL slots.

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

	PR c++/105443
	* module.cc (loc_spans::locs_exhausted_p): New field.
	(loc_spans::loc_spans): Initialise it.
	(loc_spans::locations_exhausted_p): New function.
	(module_state::read_prepare_maps): Move inform into...
	(loc_spans::report_location_exhaustion): ...this new function.
	(module_state::write_location): Check for writing module
	locations stored due to resource exhaustion.

2024-11-02  Nathaniel Shead  <nathanieloshead@gmail.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/113814
	* pt.cc (add_mergeable_specialization): Propagate
	TYPE_CANONICAL.

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

	PR c++/116317
	* module.cc
	(depset::DB_MAYBE_RECURSIVE_BIT): New flag.
	(depset::DB_ENTRY_BIT): New flag.
	(depset::is_maybe_recursive): New accessor.
	(depset::is_entry): New accessor.
	(depset::hash::writing_merge_key): New field.
	(trees_out::decl_value): Inform dep_hash while we're writing the
	merge key information for a decl.
	(depset::hash::add_dependency): Find recursive deps and mark the
	entry point.
	(sort_cluster): Ensure that the entry dep is streamed first.

2024-11-01  David Malcolm  <dmalcolm@redhat.com>

	PR bootstrap/117361
	* Make-lang.in (s-selftest-c++): Use GCC_FOR_SELFTESTS.
	(selftest-c++-gdb): Likewise.
	(selftest-c++-valgrind): Likewise.

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

	* pt.cc (tsubst_attribute): For "omp declare variant base" attribute
	if varid is error_mark_node, set val to error_mark_node rather than
	creating a TREE_LIST with error_mark_node TREE_PURPOSE.

2024-10-31  Tobias Burnus  <tburnus@baylibre.com>

	* decl.cc (omp_declare_variant_finalize_one): Use STRIP_REFERENCE_REF
	instead of doing it manually.

2024-10-31  Tobias Burnus  <tburnus@baylibre.com>

	* decl.cc (omp_declare_variant_finalize_one): Strip indirect ref
	around variant-function call when processing a variant.

2024-10-30  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/116607
	* contracts.cc (has_active_contract_condition): Use the
	CONTRACT_CHAIN macro to advance through the attribute list.

2024-10-29  David Malcolm  <dmalcolm@redhat.com>

	PR other/116613
	* error.cc (cxx_initialize_diagnostics): Use unique_ptr for
	pretty_printer.  Use context->set_format_decoder.
	* module.cc (noisy_p): Update for global_dc's m_printer becoming
	reference printer.

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

	PR c++/30854
	PR c++/116634
	* error.cc (dump_aggr_init_expr_args): Remove.
	(dump_call_expr_args): Handle AGGR_INIT_EXPR.
	(dump_expr): Combine AGGR_INIT_EXPR and CALL_EXPR cases.

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

	* vtable-class-hierarchy.cc: Remove trailing whitespace.
	* typeck2.cc: Likewise.
	* decl.cc: Likewise.
	* init.cc: Likewise.
	* semantics.cc: Likewise.
	* module.cc: Likewise.
	* rtti.cc: Likewise.
	* cxx-pretty-print.cc: Likewise.
	* cvt.cc: Likewise.
	* mangle.cc: Likewise.
	* name-lookup.h: Likewise.
	* coroutines.cc: Likewise.
	* error.cc: Likewise.
	* lambda.cc: Likewise.
	* tree.cc: Likewise.
	* g++spec.cc: Likewise.
	* decl2.cc: Likewise.
	* cp-tree.h: Likewise.
	* parser.cc: Likewise.
	* pt.cc: Likewise.
	* call.cc: Likewise.
	* lex.cc: Likewise.
	* cp-lang.cc: Likewise.
	* cp-tree.def: Likewise.
	* constexpr.cc: Likewise.
	* typeck.cc: Likewise.
	* name-lookup.cc: Likewise.
	* optimize.cc: Likewise.
	* search.cc: Likewise.
	* mapper-client.cc: Likewise.
	* ptree.cc: Likewise.
	* class.cc: Likewise.

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

	* module.cc (trees_in::read_class_def): Propagate some missing
	flags from the streamed-in definition.

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

	* module.cc (post_load_processing): Mark COMDAT as needed, emit
	declarations if maybe_clone_body fails.

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

	PR c++/115007
	* module.cc (module_state::read_cluster): Replace
	DECL_ABSTRACT_P with DECL_MAYBE_IN_CHARGE_CDTOR_P.
	(post_load_processing): Check and mark TREE_ASM_WRITTEN.
	* semantics.cc (expand_or_defer_fn_1): Use the more specific
	module_maybe_has_cmi_p instead of modules_p.

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

	* decl2.cc (import_export_class): Use TYPE_CONTAINS_VPTR_P
	instead of TYPE_POLYMORPHIC_P.
	(import_export_decl): Likewise.

2024-10-24  David Malcolm  <dmalcolm@redhat.com>
	    Gaius Mulley  <gaiusmod2@gmail.com>

	PR other/116613
	* call.cc: Add #define INCLUDE_MEMORY.
	* class.cc: Likewise.
	* constexpr.cc: Likewise.
	* constraint.cc: Likewise.
	* contracts.cc: Likewise.
	* coroutines.cc: Likewise.
	* cp-gimplify.cc: Likewise.
	* cp-lang.cc: Likewise.
	* cp-objcp-common.cc: Likewise.
	* cp-ubsan.cc: Likewise.
	* cvt.cc: Likewise.
	* cxx-pretty-print.cc: Likewise.  Add #include "cp-tree.h".
	(cxx_pretty_printer::clone): Use std::unique_ptr and
	::make_unique.
	* cxx-pretty-print.h (cxx_pretty_printer::clone): Use
	std::unique_ptr.
	* decl2.cc: Add #define INCLUDE_MEMORY.
	* dump.cc: Likewise.
	* except.cc: Likewise.
	* expr.cc: Likewise.
	* friend.cc: Likewise.
	* init.cc: Likewise.
	* lambda.cc: Likewise.
	* logic.cc: Likewise.
	* mangle.cc: Likewise.
	* method.cc: Likewise.
	* optimize.cc: Likewise.
	* pt.cc: Likewise.
	* ptree.cc: Likewise.
	* rtti.cc: Likewise.
	* search.cc: Likewise.
	* semantics.cc: Likewise.
	* tree.cc: Likewise.
	* typeck.cc: Likewise.
	* typeck2.cc: Likewise.
	* vtable-class-hierarchy.cc: Likewise.

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

	PR c++/117259
	* typeck.cc (get_member_function_from_ptrfunc): Use force_target_expr
	rather than save_expr for instance_ptr and function.  Don't call it
	for TREE_CONSTANT.

2024-10-22  Jason Merrill  <jason@redhat.com>

	PR c++/117107
	PR c++/92687
	* decl.cc (lookup_decomp_type): Handle null table.

2024-10-22  Patrick Palka  <ppalka@redhat.com>

	* pt.cc (register_specialization): Set elt.hash.

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

	* module.cc (depset::DB_IS_MEMBER_BIT): Rename to...
	(depset::DB_IS_PENDING_BIT): ...this.
	(depset::is_member): Remove.
	(depset::is_pending_entity): New function.
	(depset::hash::make_dependency): Mark definitions of
	namespace-scope types as maybe-pending entities.
	(depset::hash::add_class_entities): Rename DB_IS_MEMBER_BIT to
	DB_IS_PENDING_BIT.
	(depset::hash::find_dependencies): Use is_pending_entity
	instead of is_member.
	(module_state::write_pendings): Likewise; adjust comment.

2024-10-18  Alejandro Colomar  <alx@kernel.org>

	* cp-tree.h (array_type_nelts_top)
	* tree.cc (array_type_nelts_top):
	Remove function (move to gcc/).

2024-10-18  Alejandro Colomar  <alx@kernel.org>

	* decl.cc (reshape_init_array)
	* init.cc
	(build_zero_init_1)
	(build_value_init_noctor)
	(build_vec_init)
	(build_delete)
	* lambda.cc (add_capture)
	* tree.cc (array_type_nelts_top):
	Rename array_type_nelts => array_type_nelts_minus_one

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

	* search.cc (lookup_member): ?: operator formatting fixes.
	* typeck.cc (cp_build_modify_expr): Likewise.

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

	PR c/117022
	* semantics.cc (begin_while_stmt, begin_do_stmt, begin_for_stmt,
	finish_break_stmt, finish_continue_stmt, begin_switch_stmt): Pass
	another NULL_TREE to build_stmt calls.

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

	PR c++/116710
	* pt.cc (unify) <case REFERENCE_TYPE>: Compare rvalueness.

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

	PR c++/117054
	* pt.cc (extract_locals_r): Disable tree_extra_args assert
	for LAMBDA_EXPR.

2024-10-14  Jason Merrill  <jason@redhat.com>

	* cp-tree.h (most_constrained_function): Declare..
	* class.cc (resolve_address_of_overloaded_function): Call it.
	* pt.cc (get_template_for_ordering): Handle list from
	resolve_address_of_overloaded_function.
	(most_constrained_function): No longer static.
	(resolve_overloaded_unification): Always compare type rather
	than decl.

2024-10-13  Simon Martin  <simon@nasilyan.com>

	Revert:
	2024-10-12  Simon Martin  <simon@nasilyan.com>

	PR c++/109918
	* class.cc (warn_hidden): Keep track of overloaded and of hidden
	base methods. Mention the actual hiding function in the warning,
	not the first overload.
	* error.cc (location_of): Skip over conv_op_marker.

2024-10-12  Simon Martin  <simon@nasilyan.com>

	PR c++/109918
	* class.cc (warn_hidden): Keep track of overloaded and of hidden
	base methods. Mention the actual hiding function in the warning,
	not the first overload.
	* error.cc (location_of): Skip over conv_op_marker.

2024-10-07  Jason Merrill  <jason@redhat.com>

	* decl.cc (duplicate_decls): Only check PURVIEW_P if
	DECL_LANG_SPECIFIC.

2024-10-07  Jason Merrill  <jason@redhat.com>

	* decl2.cc (mark_used): Always check require_deduced_type.

2024-10-07  Jason Merrill  <jason@redhat.com>

	* module.cc (init_modules): Don't warn about -M.

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

	PR c++/113266
	PR c++/116911
	* parser.cc (cp_parser_template_argument): Allow
	internal-linkage variables since C++11.

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

	PR c++/116913
	* name-lookup.cc (update_binding): Return the strip_using'd old
	decl rather than the binding.

2024-10-04  Jason Merrill  <jason@redhat.com>
	    Richard Biener  <rguenther@suse.de>

	* cp-tree.h (spec_entry::hash): New member.
	* pt.cc (spec_hasher::hash): Set it and return it.
	(maybe_process_partial_specialization): Clear it when
	changing tmpl/args.
	(lookup_template_class): Likewise, don't pass hash to find.
	(retrieve_specialization): Set it, don't pass hash to find.
	(register_specialization): Don't pass hash to find.
	(reregister_specialization): Likewise.
	(match_mergeable_specialization): Likewise.
	(add_mergeable_specialization): Likewise.

2024-10-03  Jason Merrill  <jason@redhat.com>
	    Richard Biener  <rguenther@suse.de>

	* pt.cc (coerce_template_parms): Free garbage vecs.

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

	Revert:
	2024-10-03  Jason Merrill  <jason@redhat.com>
		    Richard Biener   <rguenther@suse.de>

	* pt.cc (struct free_if_changed_proxy): New.
	(coerce_template_parms): Use it.

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

	* parser.cc (location_between): New.
	(cp_parser_operator): Handle -Wdeprecated-literal-operator.

2024-10-03  Jason Merrill  <jason@redhat.com>
	    Richard Biener   <rguenther@suse.de>

	* pt.cc (struct free_if_changed_proxy): New.
	(coerce_template_parms): Use it.

2024-10-02  Simon Martin  <simon@nasilyan.com>

	PR c++/116722
	* constexpr.cc (cxx_bind_parameters_in_call): When !ctx->quiet,
	emit error before bailing out due to a call to {con,de}structor
	for a class with virtual bases.

2024-10-02  Richard Biener  <rguenther@suse.de>

	* pt.cc (iterative_hash_template_arg): Use iterative_hash_hashval_t
	to hash TYPE_HASH.

2024-10-02  Richard Biener  <rguenther@suse.de>

	* pt.cc (iterative_hash_template_arg): Avoid using
	iterative_hash_object.

2024-10-01  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>

	* constraint.cc (diagnose_trait_expr): New diagnostic.
	* cp-trait.def (IS_VIRTUAL_BASE_OF): New builtin.
	* cp-tree.h (enum base_access_flags): Add a new flag to be
	able to request a search for a virtual base class.
	* cxx-pretty-print.cc (pp_cxx_userdef_literal): Update the
	list of GNU extensions to the grammar.
	* search.cc (struct lookup_base_data_s): Add a field to
	request searching for a virtual base class.
	(dfs_lookup_base): Add the ability to look for a virtual
	base class.
	(lookup_base): Forward the flag to dfs_lookup_base.
	* semantics.cc (trait_expr_value): Implement the builtin
	by calling lookup_base with the new flag.
	(finish_trait_expr): Handle the new builtin.

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

	PR c++/109859
	* parser.cc (cp_parser_lambda_declarator_opt): Temporarily clear
	local_variables_forbidden_p.
	(cp_parser_placeholder_type_specifier): Turn an assert into an
	error.

2024-09-30  David Malcolm  <dmalcolm@redhat.com>

	PR other/116613
	* pt.cc: Include "pretty-print-markup.h".
	(warn_spec_missing_attributes): Defer colorization choices by
	replacing printing to a pretty_printer * param with appending
	to a vec of strings.  Replace pretty_printer with usage of
	pp_markup::comma_separated_quoted_strings and "%e".

2024-09-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/116160
	* name-lookup.cc (supplement_binding): Allow redeclaration via
	USING_DECL if not in class scope.
	(do_nonmember_using_decl): Remove function-scope exemption.
	(push_using_decl_bindings): Remove outdated comment.

2024-09-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/116748
	* name-lookup.cc (update_binding): Maintain USING_DECLs in the
	binding slots.

2024-09-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/116803
	* decl.cc (duplicate_decls): Propagate DECL_MODULE_PURVIEW_P and
	DECL_MODULE_IMPORT_P for template redeclarations.

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

	PR c++/102594
	* init.cc (build_vec_init): Build up a CONSTRUCTOR to signal
	direct-initialization rather than a TREE_LIST.

2024-09-27  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/116793
	* coroutines.cc (await_statement_expander): Just process
	subtrees if encountering a CLEANUP_POINT_EXPR.

2024-09-27  Arsen Arsenović  <arsen@aarsen.me>

	* coroutines.cc (co_await_get_resume_call): Return a tree
	directly, rather than a tree pointer.
	* cp-tree.h (co_await_get_resume_call): Adjust signature
	accordingly.
	* cvt.cc (convert_to_void): Do not alter CO_AWAIT_EXPRs when
	discarding them.  Simplify handling implicit INDIRECT_REFs.

2024-09-27  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/116502
	* coroutines.cc (maybe_promote_temps): Convert temporary
	initializers to void without complaining.

2024-09-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	* module.cc (has_definition): Use decl_maybe_constant_var
	instead of TREE_CONSTANT.

2024-09-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	* name-lookup.cc (check_can_export_using_decl): Handle internal
	linkage GM entities (but ignore in header units); use linkage
	of entity ultimately referred to by aliases.

2024-09-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	* name-lookup.cc (maybe_record_mergeable_decl): Use decl_linkage
	instead of ad-hoc checks.

2024-09-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	* name-lookup.cc (do_namespace_alias): Propagate TREE_PUBLIC for
	namespace aliases.
	* tree.cc (decl_linkage): Update rules for C++11.

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

	PR c++/116731
	* parser.cc (warn_for_range_copy): Check if TYPE is trivially
	constructible, not copyable.

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

	* coroutines.cc (build_co_await): Use TARGET_EXPR accessors.
	(finish_co_yield_expr): Likewise.
	(register_awaits): Likewise.
	(tmp_target_expr_p): Likewise.
	(flatten_await_stmt): Likewise.
	* error.cc (dump_expr): Likewise.
	* semantics.cc (finish_omp_target_clauses): Likewise.
	* tree.cc (bot_manip): Likewise.
	(cp_tree_equal): Likewise.
	* typeck.cc (cxx_mark_addressable): Likewise.
	(cp_build_compound_expr): Likewise.
	(cp_build_modify_expr): Likewise.
	(check_return_expr): Likewise.

2024-09-25  Tobias Burnus  <tburnus@baylibre.com>

	* parser.cc (cp_parser_omp_declare_target): Set target-used bit
	in omp_requires_mask.

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

	PR c++/107637
	* cp-tree.h: Implement C++23 P2718R0 - Wording for P2644R1 Fix for
	Range-based for Loop.
	(cp_convert_omp_range_for): Add bool tmpl_p argument.
	(find_range_for_decls): Declare.
	* parser.cc (cp_convert_range_for): For flag_range_for_ext_temps call
	push_stmt_list () before cp_finish_decl for range_temp and save it
	temporarily to FOR_INIT_STMT.
	(cp_convert_omp_range_for): Add tmpl_p argument.  If set, remember
	DECL_NAME of range_temp and for cp_finish_decl call restore it before
	clearing it again, if unset, don't adjust DECL_NAME of range_temp at
	all.
	(cp_parser_omp_loop_nest): For flag_range_for_ext_temps range for add
	CLEANUP_POINT_EXPR around sl.  Call find_range_for_decls and adjust
	DECL_NAMEs for range fors if not processing_template_decl.  Adjust
	cp_convert_omp_range_for caller.  Remove superfluous backslash at the
	end of line.
	* decl.cc (initialize_local_var): For flag_range_for_ext_temps
	temporarily clear stmts_are_full_exprs_p rather than set for
	for_range__identifier decls.
	* call.cc (extend_ref_init_temps): For flag_range_for_ext_temps return
	init early for for_range__identifier decls.
	* semantics.cc (find_range_for_decls): New function.
	(finish_for_stmt): Use it.  For flag_range_for_ext_temps if
	cp_convert_range_for set FOR_INIT_STMT, pop_stmt_list it and wrap
	into CLEANUP_POINT_EXPR.
	* pt.cc (tsubst_omp_for_iterator): Adjust tsubst_omp_for_iterator
	caller.
	(tsubst_stmt) <case OMP_FOR>: For flag_range_for_ext_temps if there
	are any range fors in the loop nest, add push_stmt_list starting
	before the initializations, pop_stmt_list it after the body and wrap
	into CLEANUP_POINT_EXPR.  Change DECL_NAME of range for temps from
	NULL to for_range_identifier.

2024-09-24  Nina Dinka Ranns  <dinka.ranns@googlemail.com>

	PR c++/116490
	* contracts.cc (build_contract_condition_function): added
	a check for comdat group of the guarded function. If set,
	the condition check function is added to the same comdat
	group.

2024-09-24  Tobias Burnus  <tburnus@baylibre.com>

	* parser.cc (cp_parser_omp_requires): Handle self_maps clause.

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

	PR c++/116798
	* parser.cc (cp_parser_parameter_declaration): Detect an explicit
	object parameter in a requires expression.

2024-09-23  Simon Martin  <simon@nasilyan.com>

	PR c++/109790
	PR c++/100632
	* mangle.cc (write_member_name): Handle members whose type is an
	anonymous union member. Write missing "on" marker for operators
	when ABI version is at least 16.

2024-09-23  Simon Martin  <simon@nasilyan.com>

	PR c++/116722
	* constexpr.cc (cxx_bind_parameters_in_call): Leave early for
	{con,de}structors of classes with virtual bases.

2024-09-20  David Malcolm  <dmalcolm@redhat.com>

	PR other/116613
	* cp-tree.h (cxx_print_error_function): Convert first param
	from diagnostic_context * to diagnostic_text_output_format &.
	* error.cc: Include "diagnostic-format-text.h".
	(cxx_initialize_diagnostics): Update for renamings.
	(cxx_print_error_function): Convert first param from
	diagnostic_context * to diagnostic_text_output_format & and update
	accordingly
	(cp_diagnostic_starter): Rename to...
	(cp_diagnostic_text_starter): ...this.  Convert first
	param from diagnostic_context * to diagnostic_text_output_format &
	and update accordingly.
	(cp_print_error_function): Likewise.
	(print_instantiation_full_context): Likewise.
	(print_instantiation_partial_context_line): Likewise.
	(print_instantiation_partial_context): Likewise.
	(maybe_print_instantiation_context): Likewise.
	(maybe_print_constexpr_context): Likewise.
	(print_location): Likewise.
	(print_constrained_decl_info): Likewise.
	(print_concept_check_info): Likewise.
	(print_constraint_context_head): Likewise.
	(print_requires_expression_info): Likewise.
	(maybe_print_single_constraint_context): Likewise.

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

	DR 2789
	* call.cc (cand_parms_match): Check for matching class contexts
	even in the reversed case.

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

	PR c++/116492
	DR 2789
	* call.cc (object_parms_correspond): Remove.
	(cand_parms_match): Return false for member functions that come
	from different classes.  Adjust call to object_parms_correspond.
	(joust): Update comment for the non-template "more constrained"
	case.

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

	DR 2273
	* call.cc (joust): Restrict inheritedness tiebreaker to
	constructors.

2024-09-20  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (coro_build_artificial_var_with_dve): New.
	(coro_build_and_push_artificial_var): New.
	(coro_build_and_push_artificial_var_with_dve): New.
	(analyze_fn_parms): Ensure that frame entries cannot clash
	with local variables.
	(build_coroutine_frame_delete_expr): Amend comment.
	(cp_coroutine_transform::build_ramp_function): Rework to
	avoid manual management of variables and scopes.

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

	PR c++/116162
	* class.cc (check_bases_and_members): Don't set DECL_DELETED_FN here,
	leave it to defaulted_late_check.
	* cp-tree.h (maybe_delete_defaulted_fn): Declare.
	(defaulted_late_check): Add a tristate parameter.
	* method.cc (maybe_delete_defaulted_fn): New.
	(defaulted_late_check): Add a tristate parameter.  Call
	maybe_delete_defaulted_fn instead of giving an error.

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

	PR c++/116714
	PR c++/107390
	* pt.cc (dependent_opaque_alias_p): Also return true for a
	decltype(lambda) alias.

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

	* call.cc (do_warn_dangling_reference): Return temporary
	instead of the call it's passed to.
	(maybe_warn_dangling_reference): Adjust diagnostic.

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

	PR c++/115361
	* call.cc (do_warn_dangling_reference): Check is_empty_class.

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

	PR c++/116741
	* constexpr.cc (cxx_eval_constant_expression) <case CONVERT_EXPR>: If
	the result of build_fold_indirect_ref is a COMPONENT_REF, use its op1.
	Check DECL_P before calling inform.

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

	PR c++/116676
	* constexpr.cc (maybe_warn_about_constant_value): Check DECL_NAME.

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

	* parser.cc (cp_parser_unary_expression) [RID_EXTENSION]: Also
	suppress -Wconditionally-supported.

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

	* call.cc (convert_like_internal) [ck_user]: Use iloc_sentinel.

2024-09-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/115905
	* coroutines.cc (struct coro_aw_data): Add a member for the
	restart dispatch label.
	(expand_one_await_expression): Rework to modernise and to
	handle the boolean await_suspend() case.
	(build_actor_fn): Rework the dispatcher and allow for a jump
	back to the dispatcher.

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

	* tree.cc (handle_init_priority_attribute): Check
	in_system_header_at.

2024-09-14  Simon Martin  <simon@nasilyan.com>

	PR c++/116681
	* name-lookup.cc (qualified_namespace_lookup): Use an
	auto_cond_timer instead of using timevar_start and timevar_stop.

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

	PR c++/116696
	* constexpr.cc (explain_invalid_constexpr_fn): When
	-fimplicit-constexpr, also explain inline functions, and point out
	non-inline functions.

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

	PR c++/116678
	* optimize.cc: Include decl.h.
	(maybe_thunk_body): Temporarily change deprecated_state to
	UNAVAILABLE_DEPRECATED_SUPPRESS.

2024-09-12  Jonathan Wakely  <jwakely@redhat.com>

	PR c++/116673
	* semantics.cc (finish_builtin_launder): Diagnose function
	pointers and cv void pointers.

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

	PR c++/116418
	* tree.cc (strip_typedefs_expr) <case STATEMENT_LIST>: Replace
	this error path with ...
	<case STMT_EXPR>: ... this, returning the original tree.

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

	PR c++/116636
	* method.cc: Include decl.h.
	(use_thunk): Temporarily change deprecated_state to
	UNAVAILABLE_DEPRECATED_SUPPRESS.

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

	PR c++/96097
	* pt.cc (coerce_template_template_parm): Increment
	processing_template_decl before calling tsubst.

2024-09-12  Simon Martin  <simon@nasilyan.com>

	PR c++/116323
	* search.cc (get_parent_with_private_access): Only call access_in_type
	for RECORD_OR_UNION_TYPE_P base BINFOs.

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

	PR c++/116496
	* module.cc (trees_in::decl_value): Don't call
	set_defining_module_for_partial_spec here.
	(depset::hash::add_partial_entities): Clarity assertions.
	* pt.cc (add_mergeable_specialization): Always call
	set_defining_module_for_partial_spec when adding a partial spec.

2024-09-11  Alex Coplan  <alex.coplan@arm.com>

	PR libstdc++/116140
	* semantics.cc (anotate_saver): New. Use it ...
	(maybe_convert_cond): ... here, to ensure any ANNOTATE_EXPRs
	remain the outermost expression(s) of the condition.

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

	PR c++/116449
	* typeck.cc (get_member_function_from_ptrfunc): Use save_expr
	on instance_ptr and function even if it doesn't have side-effects,
	as long as it isn't a decl.

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

	PR c++/116369
	* call.cc (set_up_extended_ref_temp): Don't mark a temporary
	TREE_READONLY if its type is TYPE_HAS_MUTABLE_P.

2024-09-09  David Malcolm  <dmalcolm@redhat.com>

	* constexpr.cc (constexpr_error): Update for renaming of
	diagnostic_info field.
	* cp-tree.h (pedwarn_cxx98): Use "diagnostic_option_id" rather
	than "int".
	* error.cc (cp_adjust_diagnostic_info): Update for renaming of
	diagnostic_info field.
	(pedwarn_cxx98): Use "diagnostic_option_id option_id" rather than
	"int opt".  Update for renaming of diagnostic_info field.
	(diagnostic_set_info): Likewise.

2024-09-09  David Malcolm  <dmalcolm@redhat.com>

	PR other/116613
	* error.cc (cxx_initialize_diagnostics): Rename
	diagnostic_context's "printer" field to "m_printer".
	(cxx_print_error_function): Likewise.
	(cp_diagnostic_starter): Likewise.
	(cp_print_error_function): Likewise.
	(print_instantiation_full_context): Likewise.
	(print_instantiation_partial_context_line): Likewise.
	(maybe_print_constexpr_context): Likewise.
	(print_location): Likewise.
	(print_constrained_decl_info): Likewise.
	(print_concept_check_info): Likewise.
	(print_constraint_context_head): Likewise.
	(print_requires_expression_info): Likewise.
	* module.cc (noisy_p): Likewise.

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

	* decl.cc (check_redeclaration_exception_specification): Remove
	OPT_Wsystem_headers from pedwarn when the old declaration is
	in a system header.  Also check std namespace.

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

	PR c++/116567
	* pt.cc (coerce_template_parms): Set tf_partial when substituting
	into a default template argument in a template context.
	(build_extra_args): Set TREE_STATIC on the deferred args if this
	is a partial substitution.
	(add_extra_args): Check TREE_STATIC instead of dependence of args.
	Adjust merging behavior in that case.
	(tsubst_lammda_expr): Check for tf_partial instead of dependence
	of args when determining whether to defer substitution.
	(tsubst_expr) <case LAMBDA_EXPR>: Remove tf_partial early exit.

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

	PR c++/115769
	* cp-tree.h: Partially implement CWG 2867 - Order of initialization
	for structured bindings.
	(cp_finish_decomp): Add TEST_P argument defaulted to false.
	* decl.cc (initialize_local_var): Add DECOMP argument, if true,
	don't build cleanup and temporarily override stmts_are_full_exprs_p
	to 0 rather than 1.  Formatting fix.
	(cp_finish_decl): Invoke cp_finish_decomp for structured bindings
	here, first with test_p.  For automatic structured binding bases
	if the test cp_finish_decomp returned true wrap the initialization
	together with what non-test cp_finish_decomp emits with a
	CLEANUP_POINT_EXPR, and if there are any CLEANUP_STMTs needed, emit
	them around the whole CLEANUP_POINT_EXPR with guard variables for the
	cleanups.  Call cp_finish_decomp using RAII if not called with
	decomp != NULL otherwise.
	(cp_finish_decomp): Add TEST_P argument, change return type from
	void to bool, if TEST_P is true, return true instead of emitting
	actual code for the tuple case, otherwise return false.
	* parser.cc (cp_convert_range_for): Don't call cp_finish_decomp
	after cp_finish_decl.
	(cp_parser_decomposition_declaration): Set DECL_DECOMP_BASE
	before cp_finish_decl call.  Don't call cp_finish_decomp after
	cp_finish_decl.
	(cp_finish_omp_range_for): Don't call cp_finish_decomp after
	cp_finish_decl.
	* pt.cc (tsubst_stmt): Likewise.

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

	PR c++/46457
	PR c++/81665
	* cp-objcp-common.h (cp_objcp_attribute_table): Add
	c_common_clang_attribute_table.

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

	PR c++/116606
	* decl2.cc (mark_vtable_entries): Temporarily override deprecated_state to
	UNAVAILABLE_DEPRECATED_SUPPRESS.  Remove a warning_sentinel.

2024-09-05  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc
	(cp_coroutine_transform::build_ramp_function): Separate the
	build of promise constructor and destructor.  When evaluating
	the constructor, check that build_special_member_call returns
	an expression with side effects before adding it.

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

	PR c++/113063
	* name-lookup.cc (local_state_t): Clear and restore
	cp_noexcept_operand as well.

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

	PR c++/116239
	* cp-tree.h (validate_constexpr_redeclaration): Declare.
	* decl.cc (validate_constexpr_redeclaration): No longer static.
	* name-lookup.cc (push_local_extern_decl_alias): Call
	validate_constexpr_redeclaration.

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

	* class.cc (add_method): Add missing auto_diagnostic_group.
	(handle_using_decl): Likewise.
	(maybe_warn_about_overly_private_class): Likewise.
	(check_field_decl): Likewise.
	(check_field_decls): Likewise.
	(resolve_address_of_overloaded_function): Likewise.
	(note_name_declared_in_class): Likewise.
	* constraint.cc (associate_classtype_constraints): Likewise.
	(diagnose_trait_expr): Clean up whitespace.
	* coroutines.cc (find_coro_traits_template_decl): Add missing
	auto_diagnostic_group.
	(coro_promise_type_found_p): Likewise.
	(coro_diagnose_throwing_fn): Likewise.
	* cvt.cc (build_expr_type_conversion): Likewise.
	* decl.cc (validate_constexpr_redeclaration): Likewise.
	(duplicate_function_template_decls): Likewise.
	(duplicate_decls): Likewise.
	(lookup_label_1): Likewise.
	(check_previous_goto_1): Likewise.
	(check_goto_1): Likewise.
	(make_typename_type): Likewise.
	(make_unbound_class_template): Likewise.
	(check_tag_decl): Likewise.
	(start_decl): Likewise.
	(maybe_commonize_var): Likewise.
	(check_for_uninitialized_const_var): Likewise.
	(reshape_init_class): Likewise.
	(check_initializer): Likewise.
	(cp_finish_decl): Likewise.
	(find_decomp_class_base): Likewise.
	(cp_finish_decomp): Likewise.
	(expand_static_init): Likewise.
	(grokfndecl): Likewise.
	(grokdeclarator): Likewise.
	(check_elaborated_type_specifier): Likewise.
	(lookup_and_check_tag): Likewise.
	(xref_tag): Likewise.
	(cxx_simulate_enum_decl): Likewise.
	(finish_function): Likewise.
	* decl2.cc (check_classfn): Likewise.
	(record_mangling): Likewise.
	(mark_used): Likewise.
	* error.cc (qualified_name_lookup_error): Likewise.
	* except.cc (build_throw): Likewise.
	* init.cc (get_nsdmi): Likewise.
	(diagnose_uninitialized_cst_or_ref_member_1): Likewise.
	(warn_placement_new_too_small): Likewise.
	(build_new_1): Likewise.
	(build_vec_delete_1): Likewise.
	(build_delete): Likewise.
	* lambda.cc (add_capture): Likewise.
	(add_default_capture): Likewise.
	* lex.cc (unqualified_fn_lookup_error): Likewise.
	* method.cc (synthesize_method): Likewise.
	(defaulted_late_check): Likewise.
	* module.cc (trees_in::is_matching_decl): Likewise.
	(trees_in::read_enum_def): Likewise.
	(module_state::check_not_purview): Likewise.
	(module_state::deferred_macro): Likewise.
	(module_state::read_config): Likewise.
	(module_state::check_read): Likewise.
	(declare_module): Likewise.
	(init_modules): Likewise.
	* name-lookup.cc (diagnose_name_conflict): Likewise.
	(lookup_using_decl): Likewise.
	(set_decl_namespace): Likewise.
	(finish_using_directive): Likewise.
	(push_namespace): Likewise.
	(add_imported_namespace): Likewise.
	* parser.cc (cp_parser_check_for_definition_in_return_type): Likewise.
	(cp_parser_userdef_numeric_literal): Likewise.
	(cp_parser_nested_name_specifier_opt): Likewise.
	(cp_parser_new_expression): Likewise.
	(cp_parser_binary_expression): Likewise.
	(cp_parser_lambda_introducer): Likewise.
	(cp_parser_module_declaration): Likewise.
	(cp_parser_import_declaration): Likewise, removing gotos to
	support this.
	(cp_parser_declaration): Add missing auto_diagnostic_group.
	(cp_parser_decl_specifier_seq): Likewise.
	(cp_parser_template_id): Likewise.
	(cp_parser_template_name): Likewise.
	(cp_parser_explicit_specialization): Likewise.
	(cp_parser_placeholder_type_specifier): Likewise.
	(cp_parser_elaborated_type_specifier): Likewise.
	(cp_parser_enum_specifier): Likewise.
	(cp_parser_asm_definition): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_class_head): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_lookup_name): Likewise.
	(cp_parser_explicit_template_declaration): Likewise.
	(cp_parser_check_class_key): Likewise.
	* pt.cc (maybe_process_partial_specialization): Likewise.
	(determine_specialization): Likewise.
	(check_for_bare_parameter_packs): Likewise.
	(check_template_shadow): Likewise.
	(process_partial_specialization): Likewise.
	(push_template_decl): Likewise.
	(redeclare_class_template): Likewise.
	(convert_nontype_argument_function): Likewise.
	(check_valid_ptrmem_cst_expr): Likewise.
	(convert_nontype_argument): Likewise.
	(convert_template_argument): Likewise.
	(coerce_template_parms): Likewise.
	(tsubst_qualified_id): Likewise.
	(tsubst_expr): Likewise.
	(most_specialized_partial_spec): Likewise.
	(do_class_deduction): Likewise.
	(do_auto_deduction): Likewise.
	* search.cc (lookup_member): Likewise.
	* semantics.cc (finish_non_static_data_member): Likewise.
	(process_outer_var_ref): Likewise.
	(finish_id_expression_1): Likewise.
	(finish_offsetof): Likewise.
	(omp_reduction_lookup): Likewise.
	(finish_omp_clauses): Likewise.
	* tree.cc (check_abi_tag_redeclaration): Likewise.
	(check_abi_tag_args): Likewise.
	* typeck.cc (invalid_nonstatic_memfn_p): Likewise.
	(complain_about_unrecognized_member): Likewise.
	(finish_class_member_access_expr): Likewise.
	(error_args_num): Likewise.
	(warn_for_null_address): Likewise.
	(cp_build_binary_op): Likewise.
	(build_x_unary_op): Likewise.
	(cp_build_unary_op): Likewise.
	(build_static_cast): Likewise.
	(cp_build_modify_expr): Likewise.
	(get_delta_difference): Likewise.
	(convert_for_assignment): Widen scope of auto_diagnostic_group.
	(check_return_expr): Add missing auto_diagnostic_group.
	* typeck2.cc (cxx_incomplete_type_diagnostic): Likewise.

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

	* pt.cc (coerce_template_template_parm): Return bool instead of int.

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

	PR c++/113108
	* pt.cc (resolve_overloaded_unification): Call
	maybe_instantiate_noexcept.

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

	* parser.cc (cp_nth_tokens_can_be_std_attribute_p): Don't check
	cxx_dialect.
	* error.cc (maybe_warn_cpp0x): Only complain about C++11 attributes
	if pedantic.

2024-09-03  David Malcolm  <dmalcolm@redhat.com>

	* error.cc (type_to_string): Prefix all output_buffer fields with
	"m_".
	(append_formatted_chunk): Likewise.  Rename "chunk_info" to
	"pp_formatted_chunks" and field cur_chunk_array with
	m_cur_formatted_chunks.

2024-09-02  Richard Sandiford  <richard.sandiford@arm.com>

	* pt.cc (tsubst_stmt): Rename ASM_INPUT_P to ASM_BASIC_P.
	* parser.cc (cp_parser_asm_definition): Likewise.

2024-08-31  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (coro_build_frame_access_expr): New.
	(transform_await_expr): Use coro_build_frame_access_expr.
	(transform_local_var_uses): Likewise.
	(build_actor_fn): Likewise.
	(build_destroy_fn): Likewise.
	(cp_coroutine_transform::build_ramp_function): Likewise.

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

	* decl2.cc (c_parse_final_cleanups): Also check
	DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.

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

	PR c++/110345
	* parser.cc (make_array_declarator): Add STD_ATTRS argument, set
	declarator->std_attributes to it.
	(cp_parser_new_type_id): Warn on non-ignored std_attributes on the
	array declarator which is being omitted.
	(cp_parser_direct_new_declarator): Parse standard attributes after
	closing square bracket, pass it to make_array_declarator.
	(cp_parser_direct_declarator): Pass std_attrs to make_array_declarator
	instead of setting declarator->std_attributes manually.

2024-08-29  David Malcolm  <dmalcolm@redhat.com>

	* error.cc: Include "make-unique.h".
	(deferred_printed_type::m_buffer_ptr): Replace with...
	(deferred_printed_type::m_printed_text): ...this and...
	(deferred_printed_type::m_token_list): ...this.
	(deferred_printed_type::deferred_printed_type): Update ctors for
	above changes.
	(deferred_printed_type::set_text_for_token_list): New.
	(append_formatted_chunk): Pass chunk_obstack to
	append_formatted_chunk.
	(add_quotes): Delete.
	(cxx_format_postprocessor::handle): Reimplement to call
	deferred_printed_type::set_text_for_token_list, rather than store
	buffer pointers.
	(defer_phase_2_of_type_diff): Replace param "buffer_ptr"
	with "formatted_token_list".  Reimplement by storing
	a pointer to formatted_token_list so that the postprocessor can
	put its text there.
	(cp_printer): Convert param "buffer_ptr" to
	"formatted_token_list".  Update calls to
	defer_phase_2_of_type_diff accordingly.

2024-08-29  David Malcolm  <dmalcolm@redhat.com>

	* error.cc: Include "pretty-print-format-impl.h".

2024-08-28  Marek Polacek  <polacek@redhat.com>

	PR c++/116476
	* call.cc (maybe_init_list_as_array): Try convert_like and see if it
	worked.

2024-08-28  Marek Polacek  <polacek@redhat.com>

	PR c++/116424
	* typeck2.cc (process_init_constructor_record): Move the clearing of
	TARGET_EXPR_ELIDING_P down.

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

	* parser.cc (cp_parser_simple_type_specifier): Use
	-Wc++20-extensions for auto parameter pedwarn.
	* pt.cc (do_decl_instantiation, do_type_instantiation): Use
	-Wc++11-extensions for 'extern template'.

2024-08-27  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/109867
	* coroutines.cc (expand_one_await_expression): Replace uses of
	build_case_label with finish_case_label.
	(build_actor_fn): Ditto.
	(create_anon_label_with_ctx): Remove now-unused function.

2024-08-27  Simon Martin  <simon@nasilyan.com>

	PR c++/105483
	* parser.cc (cp_parser_expression_statement): Use %qE instead of
	incorrect %<%T::%D%>. Skip to end of statement and return
	error_mark_node in case of error.

2024-08-27  Jonathan Wakely  <jwakely@redhat.com>

	* cxxapi-data.csv: Add C++20 and C++23 names from <chrono>,
	<format>, <generator>, <iterator>, <print>, and <stdfloat>.
	Set cxx11 dialect for std::ignore in <tuple>. Uncomment
	atomic_flag functions from <atomic>.
	* std-name-hint.gperf: Regenerate.
	* std-name-hint.h: Regenerate.

2024-08-27  Jonathan Wakely  <jwakely@redhat.com>

	* gen-cxxapi-file.py: Fix copyright dates in generated output.

2024-08-27  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/116482
	* coroutines.cc
	(coro_build_actor_or_destroy_function): Make the parameter
	decls DECL_ARTIFICIAL.

2024-08-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/99243
	* module.cc (module_state::set_filename): Handle repeated calls
	to 'set_filename' as long as the CMI path matches.
	(maybe_translate_include): Adjust comment.

2024-08-27  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/110980
	* module.cc (maybe_translate_include): Clean up.

2024-08-26  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/113457
	* coroutines.cc (struct coroutine_info): Add integer field
	awaitable_number.  This is a counter used for assigning unique
	names to awaitable temporaries.
	(get_awaitable_var): Use awaitable_number from coroutine_info
	instead of the static int awn.

2024-08-26  Simon Martin  <simon@nasilyan.com>

	PR c++/115716
	* pt.cc (maybe_process_partial_specialization): Call
	redeclare_class_template.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/110635
	* coroutines.cc
	(cp_coroutine_transform::wrap_original_function_body): Look through
	initial await target expressions to find the actual co_await_expr
	that we need to update.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/102051
	* coroutines.cc
	(cp_coroutine_transform::build_ramp_function): Handle
	"throwing_cleanup" here instead of ...
	(cp_coroutine_transform::apply_transforms): ... here.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/115908
	* coroutines.cc
	(cp_coroutine_transform::build_ramp_function): Rework the return
	value initialisation to initialise the return slot always from
	get_return_object,  even if that implies carrying out conversions
	to do so.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/109682
	* coroutines.cc
	(cp_coroutine_transform::build_ramp_function): Allow for cases where
	get_return_on_allocation_fail has a type convertible to the ramp
	return type.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/100476
	* coroutines.cc
	(cp_coroutine_transform::build_ramp_function): Remove special
	handling of void get_return_object expressions.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/113773
	* coroutines.cc
	(cp_coroutine_transform::build_ramp_function): Only cleanup the
	frame state on exceptions that occur before the initial await
	resume has begun.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	* call.cc (build_op_delete_call_1): Renamed and added a param
	to allow the caller to prioritize two argument usual deleters.
	(build_op_delete_call): New.
	(build_coroutine_op_delete_call): New.
	* coroutines.cc (coro_get_frame_dtor): Rename...
	(build_coroutine_frame_delete_expr):... to this; simplify to
	use build_op_delete_call for all cases.
	(build_actor_fn): Use revised frame delete function.
	(build_coroutine_frame_alloc_expr): New.
	(cp_coroutine_transform::complete_ramp_function): Rename...
	(cp_coroutine_transform::build_ramp_function): ... to this.
	Reorder code to carry out checks for prerequisites before the
	codegen. Split out the allocation/delete code.
	(cp_coroutine_transform::apply_transforms): Use revised name.
	* coroutines.h: Rename function.
	* cp-tree.h (build_coroutine_op_delete_call): New.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>
	    Arsen Arsenović  <arsen@aarsen.me>

	* coroutines.cc (struct suspend_point_info, struct param_info,
	struct local_var_info, struct susp_frame_data,
	struct local_vars_frame_data): Move to coroutines.h.
	(build_actor_fn): Use start/finish function APIs.
	(build_destroy_fn): Likewise.
	(coro_build_actor_or_destroy_function): No longer mark the
	actor / destroyer as DECL_COROUTINE_P.
	(coro_rewrite_function_body): Use class members.
	(cp_coroutine_transform::wrap_original_function_body): Likewise.
	(build_ramp_function): Replace by...
	(cp_coroutine_transform::complete_ramp_function): ...this.
	(cp_coroutine_transform::cp_coroutine_transform): New.
	(cp_coroutine_transform::~cp_coroutine_transform): New
	(morph_fn_to_coro): Replace by...
	(cp_coroutine_transform::apply_transforms): ...this.
	(cp_coroutine_transform::finish_transforms): New.
	* cp-tree.h (morph_fn_to_coro): Remove.
	* decl.cc (emit_coro_helper): Remove.
	(finish_function): Revise handling of coroutine transforms.
	* coroutines.h: New file.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (build_actor_fn): Arrange to apply any
	required parameter copy DTORs in reverse order to their
	creation.
	(coro_rewrite_function_body): Handle revised param uses.
	(morph_fn_to_coro): Split the ramp function completion
	into a separate function.
	(build_ramp_function): New.

2024-08-24  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (build_co_await): Simplify checks for the cases that
	we need to materialise an awaiter.

2024-08-21  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (split_coroutine_body_from_ramp): Check
	that the binding level is as expected before attempting
	to outline the function body.

2024-08-20  Nathaniel Shead  <nathanieloshead@gmail.com>

	* module.cc (module_state::write_begin): Return a boolean to
	indicate errors rather than just doing set_error().
	(finish_module_processing): Prevent emission of unnecessary
	errors; only indicate module writing occurred if write_begin
	succeeds.

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

	PR c++/110345
	* decl.cc (grokdeclarator): Apply declarator->std_attributes
	for cdk_array to type, rather than chaining it to returned_attrs.

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

	PR c++/110345
	* parser.cc (cp_parser_base_specifier): Parse standard attributes
	at the start and emit a warning if there are any non-ignored ones.

2024-08-20  Franciszek Witt  <franek.witt@gmail.com>

	PR c++/101232
	* parser.cc (cp_parser_postfix_expression): Commit to the
	parse in case we know its either a cast or invalid syntax.
	(cp_parser_braced_list): Add a heuristic to inform about
	missing comma or operator.

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

	PR c++/101463
	* pt.cc (type_unification_real): Directly look for undeduced
	parameters in the default argument instead of doing a trial
	substitution.

2024-08-20  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/115020
	* module.cc (has_definition): Only force writing definitions for
	header_module_p.

2024-08-20  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/116403
	* pt.cc (deduction_guides_for): Use ANY_REACHABLE for lookup of
	deduction guides.
	* module.cc (depset::hash::add_deduction_guides): Likewise.
	(module_state::write_cluster): No longer override deduction
	guides as exported.
	* name-lookup.cc (name_lookup::search_namespace_only): Ignore
	visibility when LOOK_want::ANY_REACHABLE is specified.
	(check_module_override): Ignore visibility when checking for
	ambiguating deduction guides.
	* name-lookup.h (LOOK_want): New flag 'ANY_REACHABLE'.

2024-08-20  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/116382
	* cp-tree.h (get_template_parm_object): Add check_init param.
	* module.cc (trees_in::tree_node): Pass check_init=false when
	building NTTPs.
	* pt.cc (get_template_parm_object): Prevent cp_finish_decl from
	validating the initializer when check_init=false.

2024-08-20  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/116364
	* cp-tree.h (get_mergeable_specialization_flags): Adjust
	signature.
	* module.cc (trees_out::decl_value): Indicate whether this is a
	type or decl specialisation.
	* pt.cc (get_mergeable_specialization_flags): Match against the
	type of a non-decl specialisation.
	(add_mergeable_specialization): Use the already calculated spec
	instead of always adding decl to DECL_TEMPLATE_INSTANTIATIONS.

2024-08-19  Marek Polacek  <polacek@redhat.com>

	PR c++/115657
	* decl.cc (build_enumerator): Call maybe_fold_non_dependent_expr
	instead of fold_non_dependent_expr.

2024-08-19  Marek Polacek  <polacek@redhat.com>

	PR c++/116384
	* pt.cc (tsubst_expr) <case IMPLICIT_CONV_EXPR>: Bail if tsubst
	returns error_mark_node.

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

	PR c++/110345
	* parser.cc (cp_parser_member_declaration): Call maybe_warn_extra_semi
	only if it is empty-declaration, if there are some tokens like
	attribute, pedwarn that the declaration doesn't declare anything.

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

	PR c++/116320
	* semantics.cc (check_accessibility_of_qualified_id): Try
	currently_open_class when using the object type as the
	effective qualifying type.

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

	PR c++/116327
	PR c++/104981
	PR c++/115550
	* coroutines.cc (morph_fn_to_coro): Use build_fold_indirect_ref
	instead of cp_build_fold_indirect_ref.

2024-08-14  Marek Polacek  <polacek@redhat.com>

	PR c++/116015
	* call.cc (convert_for_arg_passing): Don't set_target_expr_eliding
	when the TARGET_EXPR initializer is a CONSTRUCTOR.

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

	PR c++/116276
	* call.cc (joust): Implement P2582R1 inherited vs non-inherited
	guide tiebreaker.
	* cp-tree.h (lang_decl_fn::context): Document usage in
	deduction_guide_p FUNCTION_DECLs.
	(inherited_guide_p): Declare.
	* pt.cc (inherited_guide_p): Define.
	(set_inherited_guide_context): Define.
	(alias_ctad_tweaks): Use set_inherited_guide_context.
	(inherited_ctad_tweaks): Recognize some inherited constructors
	whose scope is a TYPENAME_TYPE.
	(ctor_deduction_guides_for): For C++23 inherited CTAD, iterate
	over TYPE_FIELDS instead of CLASSTYPE_CONSTRUCTORS to recognize
	all inherited constructors.

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

	* pt.cc (tsubst_friend_class): Simplify depth comparison test
	in the redeclaration code path to
	DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P.  Clear the flag after
	partial instantiation here ...
	(tsubst_template_decl): ... instead of here.

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

	* cp-tree.h (get_identifier_kind): Define.
	(IDENTIFIER_KEYWORD_P): Redefine in terms of get_identifier_kind.
	(IDENTIFIER_CDTOR_P): Likewise.
	(IDENTIFIER_CTOR_P): Likewise.
	(IDENTIFIER_DTOR_P): Likewise.
	(IDENTIFIER_ANY_OP_P): Likewise.
	(IDENTIFIER_OVL_OP_P): Likewise.
	(IDENTIFIER_ASSIGN_OP_P): Likewise.
	(IDENTIFIER_CONV_OP_P): Likewise.
	(IDENTIFIER_TRAIT_P): Likewise.
	* parser.cc (cp_lexer_peek_trait): Mark IDENTIFIER_TRAIT_P
	check UNLIKELY.

2024-08-09  Simon Martin  <simon@nasilyan.com>

	PR c++/115806
	* decl.cc (start_enum): Only set OPAQUE_ENUM_P and
	ENUM_FIXED_UNDERLYING_TYPE_P when pushing a new tag.

2024-08-08  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/115062
	* class.cc (fixup_type_variants): Propagate TREE_ADDRESSABLE.
	(finish_struct_bits): Cleanup now that TREE_ADDRESSABLE is
	propagated by fixup_type_variants.

2024-08-08  Nathaniel Shead  <nathanieloshead@gmail.com>

	* module.cc (module_state::read_cluster): Assume header module
	declarations will require GM merging.

2024-08-08  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/115801
	* pt.cc (tsubst_friend_class): Return the type immediately when
	no tsubsting or name lookup is required.

2024-08-08  Nathaniel Shead  <nathanieloshead@gmail.com>

	PR c++/114950
	* module.cc (trees_out::decl_value): Stream bit indicating
	imported temploid friends early.
	(trees_in::decl_value): Use this bit with key_mergeable.
	(trees_in::key_mergeable): Allow merging attached declarations
	if they're imported temploid friends (which must be namespace
	scope).
	(module_state::read_cluster): Check for GM entities that may
	require merging even when importing from partitions.
	* name-lookup.cc (enum binding_slots): Adjust comment.
	(get_fixed_binding_slot): Always create partition slot.
	(name_lookup::search_namespace_only): Support binding vectors
	with both partition and GM entities to dedup.
	(walk_module_binding): Likewise.
	(name_lookup::adl_namespace_fns): Likewise.
	(set_module_binding): Likewise.
	(check_module_override): Use attachment of the decl when
	checking overrides rather than named_module_p.
	(lookup_imported_hidden_friend): Use partition slot for finding
	mergeable template bindings.
	* name-lookup.h (set_module_binding): Split mod_glob_flag
	parameter into separate global_p and partition_p params.

2024-08-08  Nathaniel Shead  <nathanieloshead@gmail.com>

	* module.cc (trees_in::read_enum_def): Clarify error.

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

	PR c++/116064
	* error.cc (get_current_template): If the current scope is
	a partial specialization, return it instead of the primary
	template.
	* pt.cc (instantiate_class_template): Pass the partial
	specialization if any to maybe_diagnose_erroneous_template
	instead of the primary template.

2024-08-07  Julian Brown  <julian@codesourcery.com>
	    Tobias Burnus  <tobias@baylibre.com>

	* decl2.cc (tree-inline.h): Include.
	(static_init_fini_fns): Bump to four entries. Update comment.
	(start_objects, start_partial_init_fini_fn): Add 'omp_target'
	parameter. Support "declare target" decls. Update forward declaration.
	(emit_partial_init_fini_fn): Add 'host_fn' parameter. Return tree for
	the created function. Support "declare target".
	(OMP_SSDF_IDENTIFIER): New macro.
	(partition_vars_for_init_fini): Support partitioning "declare target"
	variables also.
	(generate_ctor_or_dtor_function): Add 'omp_target' parameter. Support
	"declare target" decls.
	(c_parse_final_cleanups): Support constructors/destructors on OpenMP
	offload targets.

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

	PR c++/109126
	* decl.cc (grokvardecl): Implement CWG 2387 - Linkage of
	const-qualified variable template.  Set TREE_PUBLIC on variable
	templates with const qualified types unless static is present.

2024-08-07  Simon Martin  <simon@nasilyan.com>

	PR c++/111592
	* call.cc (build_over_call): Only error out if there's a single
	parameter of type A in a call to A::A(...).

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

	PR c++/116175
	* pt.cc (apply_late_template_attributes): For function/method types
	call cp_build_type_attribute_variant on the non-dependent attributes.
	(rebuild_function_or_method_type): Add ARGS argument.  Use
	apply_late_template_attributes rather than
	cp_build_type_attribute_variant.
	(maybe_rebuild_function_decl_type): Add ARGS argument, pass it to
	rebuild_function_or_method_type.
	(tsubst_function_decl): Adjust caller.
	(tsubst_function_type): Adjust rebuild_function_or_method_type caller.

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

	PR c++/115231
	* error.cc (dump_function_decl): Add a space before '->' when
	printing deduction guides.
	* module.cc (depset::hash::add_binding_entity): Don't create
	bindings for guides here, only mark dependencies.
	(depset::hash::add_deduction_guides): New.
	(depset::hash::find_dependencies): Add deduction guide
	dependencies for a class template.
	(module_state::write_cluster): Always consider deduction guides
	as exported.
	* pt.cc (deduction_guides_for): Use 'lkp_iterator' instead of
	'ovl_iterator'.

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

	* parser.cc (cp_parser_class_head): Clarify error message for
	explicit instantiations.

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

	PR c++/116064
	* cp-tree.h (erroneous_templates_t): Declare.
	(erroneous_templates): Declare.
	(cp_seen_error): Declare.
	(seen_error): #define to cp_seen_error.
	* error.cc (get_current_template): Define.
	(relaxed_template_errors): Define.
	(cp_adjust_diagnostic_info): Define.
	(cp_seen_error): Define.
	(cxx_initialize_diagnostics): Set
	diagnostic_context::m_adjust_diagnostic_info.
	* module.cc (finish_module_processing): Don't write the
	module if it contains an erroneous template.
	* pt.cc (maybe_diagnose_erroneous_template): Define.
	(instantiate_class_template): Call it.
	(instantiate_decl): Likewise.

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

	* constexpr.cc (cxx_eval_call_expression): Remove concept_check_p check.
	(cxx_eval_outermost_constant_expr): Likewise.
	* cp-gimplify.cc (cp_genericize_r) <case CALL_EXPR>: Likewise.
	* except.cc (check_noexcept_r): Likewise.

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

	PR c++/116223
	* pt.cc (deducible_expression): Strip all IMPLICIT_CONV_EXPR.
	(unify): Likewise.  Handle resulting function/addr mismatch.

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

	PR c++/116223
	PR c++/112632
	* pt.cc (deducible_expression): Also look through
	IMPLICIT_CONV_EXPR_FORCED.
	(unify): Likewise.

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

	PR c++/94568
	* init.cc (build_zero_init_1): Call cv_unqualified.

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

	PR c++/96780
	* cp-gimplify.cc (cp_fold) <case CALL_EXPR>: Fold calls
	to std::forward_like as well.

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

	* constexpr.cc (cxx_eval_constant_expression): Don't call
	unpack_concept_check.  Add a concept_check_p assert.  Remove
	function_concept_p code.
	* constraint.cc (check_constraint_atom): Remove function concepts code.
	(unpack_concept_check): Remove.
	(get_concept_check_template): Remove Concepts TS code.
	(resolve_function_concept_overload): Remove.
	(resolve_function_concept_check): Remove.
	(resolve_concept_check): Remove Concepts TS code.
	(get_returned_expression): Remove.
	(get_variable_initializer): Remove.
	(get_concept_definition): Remove Concepts TS code.
	(normalize_concept_check): Likewise.
	(build_function_check): Remove.
	(build_variable_check): Remove.
	(build_standard_check): Use concept_definition_p instead of
	standard_concept_p.
	(build_concept_check): Remove variable_concept_p/function_concept_p
	code.
	(build_concept_id): Simplify.
	(build_type_constraint): Likewise.
	(placeholder_extract_concept_and_args): Likewise.
	(satisfy_nondeclaration_constraints): Likewise.
	(check_function_concept): Remove.
	(get_constraint_error_location): Remove Concepts TS code.
	* cp-tree.h (DECL_DECLARED_CONCEPT_P): Remove.
	(check_function_concept): Remove.
	(unpack_concept_check): Remove.
	(standard_concept_p): Remove.
	(variable_concept_p): Remove.
	(function_concept_p): Remove.
	(concept_definition_p): Simplify.
	(concept_check_p): Don't check for CALL_EXPR.
	* decl.cc (check_concept_refinement): Remove.
	(duplicate_decls): Remove check_concept_refinement code.
	(is_concept_var): Remove.
	(cp_finish_decl): Remove is_concept_var.
	(check_concept_fn): Remove.
	(grokfndecl): Give an error about function concepts not being supported
	anymore.  Remove unused code.
	(grokvardecl): Give an error about variable concepts not being
	supported anymore.
	(finish_function): Remove DECL_DECLARED_CONCEPT_P code.
	* decl2.cc (min_vis_expr_r): Use concept_definition_p instead of
	standard_concept_p.
	(maybe_instantiate_decl): Remove DECL_DECLARED_CONCEPT_P check.
	(mark_used): Likewise.
	* error.cc (dump_simple_decl): Use concept_definition_p instead of
	standard_concept_p.
	(dump_function_decl): Remove DECL_DECLARED_CONCEPT_P code.
	(print_concept_check_info): Don't call unpack_concept_check.  Simplify.
	* mangle.cc (write_type_constraint): Likewise.
	* parser.cc (cp_parser_nested_name_specifier_opt): Remove
	function_concept_p code.  Only check concept_definition_p, not
	variable_concept_p/standard_concept_p.
	(add_debug_begin_stmt): Remove DECL_DECLARED_CONCEPT_P code.
	(cp_parser_template_declaration_after_parameters): Remove a stale
	comment.
	* pt.cc (check_explicit_specialization): Remove
	DECL_DECLARED_CONCEPT_P code.
	(process_partial_specialization): Remove variable_concept_p code.
	(lookup_template_variable): Likewise.
	(tsubst_expr) <case CALL_EXPR>: Remove Concepts TS code and simplify.
	(do_decl_instantiation): Remove DECL_DECLARED_CONCEPT_P code.
	(instantiate_decl): Likewise.
	(placeholder_type_constraint_dependent_p): Don't call
	unpack_concept_check.  Add a concept_check_p assert.
	(convert_generic_types_to_packs): Likewise.
	* semantics.cc (finish_call_expr): Remove Concepts TS code and simplify.

2024-08-05  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (split_coroutine_body_from_ramp): New.
	(morph_fn_to_coro): Use split_coroutine_body_from_ramp().
	* cp-tree.h (use_eh_spec_block): New.
	* decl.cc (use_eh_spec_block): Make non-static.

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

	PR c++/115987
	* call.cc (do_warn_dangling_reference): Don't consider a
	temporary with a scalar type that cannot bind to the return type.

2024-08-02  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/105475
	* coroutines.cc (struct coroutine_info): Add from_address.
	Carries the from_address member we looked up earlier.
	(coro_resume_identifier): Remove.  Unused.
	(coro_init_identifiers): Do not initialize the above.
	(void_coro_handle_address): New variable.  Contains the baselink
	for the std::coroutine_handle<void>::address() instance method.
	(get_handle_type_address): New function.  Looks up and validates
	handle_type::address in a given handle_type.
	(get_handle_type_from_address): New function.  Looks up and
	validates handle_type::from_address in a given handle_type.
	(coro_promise_type_found_p): Remove reliance on
	coroutine_handle<> defaulting the promise type to void.  Store
	get_handle_type_* results where appropriate.
	(get_coroutine_from_address): New helper.  Gets the
	handle_type::from_address BASELINK from a coroutine_info.
	(build_actor_fn): Use the get_coroutine_from_address helper and
	void_coro_handle_address.

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

	PR c++/116169
	* decl.cc (cp_finish_decl): Disallow deleting ::main.

2024-08-02  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (struct local_vars_frame_data): Add a
	CTOR.
	(morph_fn_to_coro): Use CTOR for local_vars_frame_data
	instead of brace init.

2024-08-02  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (struct susp_frame_data): Remove unused members,
	provide a CTOR.
	(morph_fn_to_coro): Use susp_frame_data CTOR, and make the suspend
	state hash map local to the morph function.

2024-08-02  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (replace_continue): Look up expression type.

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

	PR c++/116113
	* semantics.cc (maybe_convert_cond): Check DECL_DECOMP_BASE
	is non-NULL before dereferencing it.
	(finish_switch_cond): Likewise.

2024-08-01  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/112341
	* coroutines.cc (struct coroutine_info): Also cache the
	traits type.
	(ensure_coro_initialized): New function.  Makes sure we have
	initialized the coroutine state successfully, or informs the
	caller should it fail to do so.  Extracted from
	coro_promise_type_found_p.
	(coro_get_traits_class): New function.  Gets the (cached)
	coroutine traits type for a given coroutine.  Extracted from
	coro_promise_type_found_p and refactored to cache the result.
	(coro_promise_type_found_p): Use the two functions above.
	(build_template_co_await_expr): New function.  Builds a
	CO_AWAIT_EXPR representing a CO_AWAIT_EXPR in a template
	declaration.
	(build_co_await): Use the above if processing_template_decl, and
	give it a proper type.
	(coro_dependent_p): New function.  Returns true iff its
	argument is a type-dependent expression OR the current functions
	traits class is type dependent.
	(finish_co_await_expr): Defer expansion only in the case
	coro_dependent_p returns true.
	(finish_co_yield_expr): Ditto.
	(finish_co_return_stmt): Ditto.
	* pt.cc (type_dependent_expression_p): Do not treat
	CO_AWAIT/CO_YIELD specially.

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

	PR c++/115645
	* init.cc (build_vec_init): When initializing a scalar type, try to
	create a constant initializer.

2024-07-30  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/115906
	* parser.cc (cp_parser_unary_expression): Reject await
	expressions if use of local variables is currently forbidden.
	(cp_parser_yield_expression): Reject yield expressions if use of
	local variables is currently forbidden.

2024-07-30  Arsen Arsenovic  <arsen@aarsen.me>

	PR c++/115906
	* coroutines.cc (register_local_var_uses): Only process
	PARM_DECL and VAR_DECLs.

2024-07-30  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/110855
	* cp-gimplify.cc (fold_builtin_source_location): Use the name of
	the DECL_RAMP_FN of the current function if present.

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

	PR c++/88313
	* parser.cc (cp_parser_lambda_declarator_opt): Pass
	lambda_p=true to cp_parser_parameter_declaration_clause.
	(cp_parser_direct_declarator): Pass lambda_p=false to
	to cp_parser_parameter_declaration_clause.
	(cp_parser_parameter_declaration_clause): Add bool lambda_p
	parameter.  Consider lambda_p instead of current_class_type
	when setting parser->auto_is_implicit_function_template_parm_p.
	Don't consider processing_template_parmlist.
	(cp_parser_requirement_parameter_list): Pass lambda_p=false
	to cp_parser_parameter_declaration_clause.

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

	PR c++/115583
	* constexpr.cc (cxx_eval_conditional_expression): Don't
	cp_fold_immediate for if consteval.

2024-07-27  Jason Merrill  <jason@redhat.com>

	PR c++/115986
	* cp-gimplify.cc (remember_escalating_expr): Skip function
	templates.

2024-07-27  Jason Merrill  <jason@redhat.com>

	PR c++/115561
	* semantics.cc (finish_call_expr): Check cp_unevaluated_operand.

2024-07-26  Jason Merrill  <jason@redhat.com>

	PR c++/116052
	* mangle.cc (write_prefix): Handle TRAIT_EXPR.

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

	PR c++/115757
	* module.cc (trees_out::core_vals): Write warning specs for
	DECLs and EXPRs.
	(trees_in::core_vals): Read warning specs.

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

	PR c++/115403
	PR c++/109753
	* decl.cc (start_preparsed_function): Only call decl_attributes for
	artificial functions.

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

	PR c++/115897
	* cp-tree.h (dependent_opaque_alias_p): Declare.
	* pt.cc (push_template_decl): Manually mark a dependent opaque
	alias or dependent alias template specialization as dependent,
	and use structural equality for them.
	(dependent_opaque_alias_p): Define.
	(alias_template_specialization_p): Don't look through an
	opaque alias.
	(complex_alias_template_p): Use dependent_opaque_alias_p instead of
	any_dependent_template_arguments_p directly.
	(dependent_alias_template_spec_p): Don't look through an
	opaque alias.
	(get_underlying_template): Use dependent_opaque_alias_p instead of
	any_dependent_template_arguments_p.
	(instantiate_alias_template): Mention same logic in
	push_template_decl.
	(dependent_type_p_r): Remove dependent_alias_template_spec_p check.
	(any_template_arguments_need_structural_equality_p): Return true
	for a dependent opaque alias.
	(alias_ctad_tweaks): Use template_args_equal instead of same_type_p
	followed by dependent_alias_template_spec_p.
	* tree.cc (strip_typedefs): Don't strip an opaque alias.
	* typeck.cc (structural_comptypes): Compare declaration attributes
	for an opaque alias.

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

	PR c++/115897
	* tree.cc (strip_typedefs): Move up the typedef recursion case.
	Never strip a dependent alias template-id that has dependent
	attributes.

2024-07-25  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/110171
	* coroutines.cc (co_await_get_resume_call): New function.
	Returns the await_resume expression of a given co_await.
	* cp-tree.h (co_await_get_resume_call): New function.
	* cvt.cc (convert_to_void): Handle CO_AWAIT_EXPRs and call
	maybe_warn_nodiscard on their resume exprs.

2024-07-25  Arsen Arsenović  <arsen@aarsen.me>

	PR c++/111728
	* coroutines.cc (rewrite_param_uses): Skip unevaluated
	subexpressions.

2024-07-24  Jason Merrill  <jason@redhat.com>

	PR c++/116071
	* parser.cc (cp_parser_simple_type_specifier): Call
	cp_parser_simulate_error if nothing worked.

2024-07-24  Jakub Jelinek  <jakub@redhat.com>

	* constraint.cc (subst_info::quiet, subst_info::noisy): Formatting
	fixes.
	(known_non_bool_p): Comment formatting fixes.
	(unpack_concept_check): Likewise.
	(resolve_function_concept_overload): Likewise.
	(resolve_function_concept_check): Likewise.
	(resolve_concept_check): Likewise.
	(deduce_constrained_parameter): Likewise.
	(finish_type_constraints): Likewise.
	(get_returned_expression): Likewise.
	(get_variable_initializer): Likewise.
	(norm_info::update_context, norm_info::ctx_params): Formatting
	fixes.
	(norm_info::context): Comment formatting fixes.
	(normalize_logical_operation): Likewise.  Formatting fix.
	(normalize_concept_check): Comment formatting fixes.
	(normalize_atom): Likewise.
	(normalize_expression): Likewise.
	(get_normalized_constraints_from_info): Likewise.
	(get_normalized_constraints_from_decl): Likewise.  Formatting
	fixes.
	(atomic_constraints_identical_p): Comment formatting fixes.
	(constraints_equivalent_p): Formatting fixes.
	(inchash::add_constraint): Likewise.
	(associate_classtype_constraints): Comment formatting fixes.
	(get_constraints): Likewise.
	(set_constraints): Likewise.
	(build_concept_check_arguments): Likewise.
	(build_function_check): Likewise.
	(build_concept_check): Likewise.
	(finish_shorthand_constraint): Likewise.
	(get_shorthand_constraints): Likewise.
	(check_constraint_variables): Likewise.
	(tsubst_constraint_variables): Likewise.
	(tsubst_requires_expr): Likewise.
	(get_mapped_args): Likewise.  Formatting fixes.
	(satisfy_atom): Comment formatting fixes.
	(satisfy_constraint_r): Comment wording and formatting fixes.
	(satisfy_normalized_constraints): Comment formatting fixes.
	(satisfy_declaration_constraints): Likewise.
	(evaluate_concept_check): Likewise.
	(finish_requires_expr): Likewise.
	(finish_compound_requirement): Likewise.
	(check_function_concept): Likewise.
	(equivalently_constrained): Likewise.
	(more_constrained): Likewise.
	(diagnose_atomic_constraint): Likewise.
	* cp-tree.h (TREE_LANG_FLAG_0): Fix a comment error,
	FOLD_EXPR_MODIFY_P instead of FOLD_EXPR_MODOP_P.
	(DECL_MAIN_FREESTANDING_P, DECL_MAIN_P): Comment formatting fixes.
	(enum cpp0x_warn_str): Likewise.
	(enum composite_pointer_operation): Likewise.
	(enum expr_list_kind): Likewise.
	(enum impl_conv_rhs): Likewise.
	(enum impl_conv_void): Likewise.
	(struct deferred_access_check): Likewise.
	(ATOMIC_CONSTR_EXPR): Likewise.
	(FUNCTION_REF_QUALIFIED): Likewise.
	(DECL_DEPENDENT_P): Likewise.
	(FOLD_EXPR_MODIFY_P): Likewise.
	(FOLD_EXPR_OP_RAW): Likewise.
	(FOLD_EXPR_PACK): Likewise.
	(FOLD_EXPR_INIT): Likewise.
	(TYPE_WAS_UNNAMED): Likewise.
	(class cp_unevaluated): Likewise.
	(struct ovl_op_info_t assertion): Likewise.
	(cp_declarator::function::requires_clause): Likewise.
	(variable_template_p): Likewise.
	(concept_definition_p): Likewise.
	* logic.cc (clause::clause): Likewise.
	(clause::replace): Likewise.
	(clause::insert): Likewise.  Formatting fixes.
	(struct formula): Comment formatting fixes.
	(formula::branch): Likewise.
	(debug): Formatting fixes.
	(dnf_size_r): Comment formatting fixes.
	(cnf_size_r): Likewise.
	(dnf_size): Likewise.
	(cnf_size): Likewise.
	(branch_clause): Likewise.
	(decompose_term): Likewise.  Formatting fixes.
	(struct subsumption_entry): Comment formatting fixes.
	(subsumption_cache): Likewise.
	(save_subsumption): Likewise.  Formatting fixes.
	(subsumes_constraints_nonnull): Formatting fixes.

2024-07-23  Andi Kleen  <ak@linux.intel.com>

	PR c/83324
	* cp-tree.h (AGGR_INIT_EXPR_MUST_TAIL): Add.
	* parser.cc (cp_parser_statement): Handle musttail.
	(cp_parser_jump_statement): Dito.
	* pt.cc (tsubst_expr): Copy CALL_EXPR_MUST_TAIL_CALL.
	* semantics.cc (simplify_aggr_init_expr): Handle musttail.

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

	PR c++/115656
	* constraint.cc (weakly_subsumes): Pass in_decl=tmpl to
	get_normalized_constraints_from_info.  Rename to ...
	(ttp_subsumes): ... this.
	* cp-tree.h (weakly_subsumes): Rename to ...
	(ttp_subsumes): ... this.
	* pt.cc (is_compatible_template_arg): Adjust after renaming.

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

	PR c++/115296
	* pt.cc (alias_ctad_tweaks): Use complain=tf_none instead of
	tf_warning_or_error.

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

	* cp-tree.def (CHECK_CONSTR): Remove.
	* cp-tree.h (CHECK_CONSTR_CONCEPT, CHECK_CONSTR_ARGS): Remove.
	* cp-objcp-common.cc (cp_common_init_ts): Don't handle CHECK_CONSTR.
	* tree.cc (cp_tree_equal): Likewise.
	* error.cc (dump_expr): Likewise.
	* cxx-pretty-print.cc (cxx_pretty_printer::expression): Likewise.
	(pp_cxx_check_constraint): Remove.
	(pp_cxx_constraint): Don't handle CHECK_CONSTR.

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

	PR c++/104981
	PR c++/115550
	* coroutines.cc (morph_fn_to_coro): Remove unneeded calls
	to convert_to_reference and convert_from_reference when
	passing *this.  Use cp_build_fold_indirect_ref instead
	of directly building INDIRECT_REF.

2024-07-22  Jakub Jelinek  <jakub@redhat.com>

	* cp-tree.def (UNARY_LEFT_FOLD_EXPR): Use FOLD_EXPR_MODIFY_P instead
	of FOLD_EXPR_MOD_P or FOLDEXPR_MOD_P in the comment.  Comment
	formatting fixes.
	(ATOMIC_CONSTEXPR): Use CONSTR_INFO instead of ATOMIC_CONSTR_INFO
	and ATOMIC_CONSTR_MAP instead of ATOMIC_CONSTR_PARMS in the comment.
	Comment formatting fixes.
	(CONJ_CONSTR): Remove comment about third operand.  Use CONSTR_INFO
	instead of CONJ_CONSTR_INFO and DISJ_CONSTR_INFO.
	(CHECK_CONSTR): Use CHECK_CONSTR_ARGS instead of
	CHECK_CONSTR_ARGUMENTS.

2024-07-20  Andi Kleen  <ak@gcc.gnu.org>

	Revert:
	2024-07-20  Andi Kleen  <ak@linux.intel.com>

	PR c/83324
	* cp-tree.h (AGGR_INIT_EXPR_MUST_TAIL): Add.
	* parser.cc (cp_parser_statement): Handle musttail.
	(cp_parser_jump_statement): Dito.
	* pt.cc (tsubst_expr): Copy CALL_EXPR_MUST_TAIL_CALL.
	* semantics.cc (simplify_aggr_init_expr): Handle musttail.

2024-07-20  Andi Kleen  <ak@linux.intel.com>

	PR c/83324
	* cp-tree.h (AGGR_INIT_EXPR_MUST_TAIL): Add.
	* parser.cc (cp_parser_statement): Handle musttail.
	(cp_parser_jump_statement): Dito.
	* pt.cc (tsubst_expr): Copy CALL_EXPR_MUST_TAIL_CALL.
	* semantics.cc (simplify_aggr_init_expr): Handle musttail.

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

	PR c++/115783
	* call.cc (build_new_method_call): Generalize METHOD_TYPE
	check to DECL_OBJECT_MEMBER_FUNCTION_P.

2024-07-19  Seyed Sajad Kahani  <sska1377@gmail.com>

	* constraint.cc (hash_placeholder_constraint): Rename to
	iterative_hash_placeholder_constraint.
	(iterative_hash_placeholder_constraint): Rename from
	hash_placeholder_constraint and add the initial val argument.
	* cp-tree.h (hash_placeholder_constraint): Rename to
	iterative_hash_placeholder_constraint.
	(iterative_hash_placeholder_constraint): Renamed from
	hash_placeholder_constraint and add the initial val argument.
	* pt.cc (struct ctp_hasher): Updated to use
	iterative_hash_placeholder_constraint in the case of a valid placeholder
	constraint.
	(auto_hash::hash): Reflect the renaming of hash_placeholder_constraint to
	iterative_hash_placeholder_constraint.

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

	PR c++/108769
	PR c++/58074
	PR c++/115522
	PR c++/85723
	* class.cc (type_has_non_deleted_trivial_default_ctor): Fix formatting.
	* tree.cc (trivial_type_p): Instead of TYPE_HAS_TRIVIAL_DFLT, use
	type_has_non_deleted_trivial_default_ctor.

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

	PR c++/115165
	* module.cc (lazy_load_binding): Use 'timevar_cond*' APIs.
	(lazy_load_pendings): Likewise.

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

	PR c++/112288
	* pt.cc (tsubst_friend_function): When adjusting existing
	specializations after defining a previously declared template
	friend, consider the most general template and correct
	DECL_TI_ARGS adjustment.

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

	PR c++/114104
	* cvt.cc (convert_to_void): Call warn_if_unused_value for
	TRUTH_NOT_EXPR and ADDR_EXPR as well.

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

	* decl.cc (make_typename_type): Restrict name lookup failure
	punting to dependentish_scope_p instead of dependent_type_p.
	* error.cc (qualified_name_lookup_error): Improve diagnostic
	when the scope is the current instantiation.
	* parser.cc (cp_parser_diagnose_invalid_type_name): Likewise.
	(cp_parser_conversion_function_id): Don't call push_scope on
	a template scope unless we're in a declaration context.
	(cp_parser_lookup_name): Restrict name lookup failure
	punting to dependentish_scope_p instead of depedent_type_p.
	* semantics.cc (finish_id_expression_1): Likewise.
	* typeck.cc (finish_class_member_access_expr): Likewise.

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

	PR c++/115900
	* constexpr.cc (cxx_eval_call_expression): Set new_obj to NULL_TREE
	if cxx_fold_indirect_ref set empty_base to true.

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

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

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

	PR c++/99242
	* name-lookup.cc (append_imported_binding_slot): Propagate dups
	flags.

2024-07-16  Nina Ranns  <dinka.ranns@gmail.com>

	PR c++/110159
	* cp-tree.h (init_terminate_fn): Declaration of a new function.
	* decl.cc (cxx_init_decl_processing): If contracts are enabled,
	call init_terminate_fn.
	* except.cc (init_exception_processing): Function refactored to
	call init_terminate_fn.
	(init_terminate_fn): Added new function that initializes
	terminate_fn if	it hasn't already been initialised.

2024-07-16  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/115434
	PR c++/110871
	PR c++/110872
	* constexpr.cc (cxx_eval_constant_expression): Handle EH_ELSE_EXPR.
	* contracts.cc (finish_contract_attribute): Remove excess line.
	(build_contract_condition_function): Post condition handlers are
	void now.
	(emit_postconditions_cleanup): Remove.
	(emit_postconditions): New.
	(add_pre_condition_fn_call): New.
	(add_post_condition_fn_call): New.
	(apply_preconditions): New.
	(apply_postconditions): New.
	(maybe_apply_function_contracts): New.
	(apply_postcondition_to_return): Remove.
	* contracts.h (apply_postcondition_to_return): Remove.
	(maybe_apply_function_contracts): Add.
	* coroutines.cc (coro_build_actor_or_destroy_function): Do not
	copy contracts to coroutine helpers.
	* decl.cc (finish_function): Handle wrapping a possibly
	transformed function body in contract checks.
	* typeck.cc (check_return_expr): Remove handling of post
	conditions on return expressions.

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

	PR c++/115897
	* pt.cc (complex_alias_template_p): Return true for an alias
	template with attributes.
	(get_underlying_template): Don't look through an alias template
	with attributes.

2024-07-13  David Malcolm  <dmalcolm@redhat.com>

	* call.cc: Include "tree-pretty-print-markup.h".
	(implicit_conversion_error): Use highlight_colors::percent_h for
	the labelled range.
	(op_error_string): Split out into...
	(concat_op_error_string): ...this.
	(binop_error_string): New.
	(op_error): Use %e, binop_error_string, highlight_colors::lhs,
	and highlight_colors::rhs.
	(maybe_inform_about_fndecl_for_bogus_argument_init): Add
	"highlight_color" param; use it for the richloc.
	(convert_like_internal): Use highlight_colors::percent_h for the
	labelled_range, and highlight_colors::percent_i for the call to
	maybe_inform_about_fndecl_for_bogus_argument_init.
	(build_over_call): Pass cp_comp_parm_types for new "comp_types"
	param of check_function_arguments.
	(complain_about_bad_argument): Use highlight_colors::percent_h for
	the labelled_range, and highlight_colors::percent_i for the call
	to maybe_inform_about_fndecl_for_bogus_argument_init.
	* cp-tree.h (maybe_inform_about_fndecl_for_bogus_argument_init):
	Add optional highlight_color param.
	(cp_comp_parm_types): New decl.
	(highlight_colors::const percent_h): New decl.
	(highlight_colors::const percent_i): New decl.
	* error.cc: Include "tree-pretty-print-markup.h".
	(highlight_colors::const percent_h): New defn.
	(highlight_colors::const percent_i): New defn.
	(type_to_string): Add param "highlight_color" and use it.
	(print_nonequal_arg): Likewise.
	(print_template_differences): Add params "highlight_color_a" and
	"highlight_color_b".
	(type_to_string_with_compare): Add params "this_highlight_color"
	and "peer_highlight_color".
	(print_template_tree_comparison): Add params "highlight_color_a"
	and "highlight_color_b".
	(cxx_format_postprocessor::handle):
	Use highlight_colors::percent_h and highlight_colors::percent_i.
	(pp_markup::element_quoted_type::print_type): New.
	(range_label_for_type_mismatch::get_text): Pass nullptr for new
	params of type_to_string_with_compare.
	* typeck.cc (cp_comp_parm_types): New.
	(cp_build_function_call_vec): Pass it to check_function_arguments.
	(convert_for_assignment): Use highlight_colors::percent_h for the
	labelled_range.

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

	* decl.cc (xref_tag): Move assertion into condition.
	* name-lookup.cc (check_module_override): Check for conflicting
	types and using-decls.

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

	PR c++/114683
	* cp-tree.h (class ovl_iterator): Move definitions of purview_p
	and exporting_p to name-lookup.cc.
	* module.cc (depset::hash::add_binding_entity): Strip
	using-decls.  Remove workarounds.  Handle CONST_DECLs with
	different purview/exported from their enum.
	(enum ct_bind_flags): Remove unnecessary cbf_wrapped flag.
	(module_state::write_cluster): Likewise.
	(module_state::read_cluster): Build USING_DECL for non-function
	usings.
	(binding_cmp): Handle CONST_DECLs with different purview and/or
	exported from their enum.
	(set_instantiating_module): Support CONST_DECLs.
	* name-lookup.cc (get_fixed_binding_slot): Strip USING_DECLs.
	(name_lookup::process_binding): Strip USING_DECLs.
	(name_lookup::process_module_binding): Remove workaround.
	(update_binding): Strip USING_DECLs, remove incorrect check for
	non-extern variables.
	(ovl_iterator::purview_p): Support USING_DECLs.
	(ovl_iterator::exporting_p): Support USING_DECLs.
	(walk_module_binding): Handle stat hack type.
	(do_nonmember_using_decl): Strip USING_DECLs when comparing;
	build USING_DECLs for non-function usings in different scope
	rather than binding directly.
	(get_namespace_binding): Strip USING_DECLs.
	(lookup_name): Strip USING_DECLs.
	(lookup_elaborated_type): Strip USING_DECLs.
	* decl.cc (poplevel): Still support -Wunused for using-decls.
	(lookup_and_check_tag): Remove unnecessary strip_using_decl.
	* parser.cc (cp_parser_template_name): Likewise.
	(cp_parser_nonclass_name): Likewise.
	(cp_parser_class_name): Likewise.

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

	PR c++/99241
	* decl.cc (duplicate_decls): Merge module entity information.

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

	* constraint.cc (deduce_concept_introduction, get_deduced_wildcard,
	get_introduction_prototype, introduce_type_template_parameter,
	introduce_template_template_parameter,
	introduce_nontype_template_parameter,
	build_introduced_template_parameter, introduce_template_parameter,
	introduce_template_parameter_pack, introduce_template_parameter,
	introduce_template_parameters, process_introduction_parms,
	check_introduction_list, finish_template_introduction): Remove.
	(finish_shorthand_constraint): Remove a Concepts TS comment.
	* cp-tree.h (check_auto_in_tmpl_args, finish_template_introduction):
	Remove.
	* decl.cc (function_requirements_equivalent_p): Remove pre-C++20 code.
	(grokfndecl): Don't check flag_concepts_ts.
	(grokvardecl): Don't check that concept have type bool.
	* parser.cc (cp_parser_decl_specifier_seq): Don't check
	flag_concepts_ts.
	(cp_parser_introduction_list): Remove.
	(cp_parser_template_id): Remove dead code.
	(cp_parser_simple_type_specifier): Don't check flag_concepts_ts.
	(cp_parser_placeholder_type_specifier): Require require auto or
	decltype(auto) even pre-C++20.  Don't check flag_concepts_ts.
	(cp_parser_type_id_1): Don't check flag_concepts_ts.
	(cp_parser_template_type_arg): Likewise.
	(cp_parser_requires_clause_opt): Remove flag_concepts_ts code.
	(cp_parser_compound_requirement): Don't check flag_concepts_ts.
	(cp_parser_template_introduction): Remove.
	(cp_parser_template_declaration_after_export): Don't call
	cp_parser_template_introduction.
	* pt.cc (template_heads_equivalent_p): Remove pre-C++20 code.
	(find_parameter_pack_data): Remove type_pack_expansion_p.
	(find_parameter_packs_r): Remove flag_concepts_ts code.  Remove
	type_pack_expansion_p code.
	(uses_parameter_packs): Remove type_pack_expansion_p code.
	(make_pack_expansion): Likewise.
	(check_for_bare_parameter_packs): Likewise.
	(fixed_parameter_pack_p): Likewise.
	(tsubst_qualified_id): Remove dead code.
	(extract_autos_r): Remove.
	(extract_autos): Remove.
	(do_auto_deduction): Remove flag_concepts_ts code.
	(type_uses_auto): Likewise.
	(check_auto_in_tmpl_args): Remove.

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

	PR c++/115645
	* init.cc (build_new): Don't do any deduction for arrays with
	bounds if it's value-initialized.

2024-07-10  Nina Ranns  <dinka.ranns@gmail.com>

	PR c++/113968
	* contracts.cc (grok_contract): Check for error_mark_node early
	exit.

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

	* constexpr.cc (cxx_eval_constant_expression): CWG2819 - Allow
	cv void * null pointer value conversion to object types in constant
	expressions.

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

	* module.cc (trees_out::get_merge_kind): Use
	LAMBDA_TYPE_EXTRA_SCOPE instead of LAMBDA_EXPR_EXTRA_SCOPE.
	(trees_out::key_mergeable): Likewise.

2024-07-04  Tamar Christina  <tamar.christina@arm.com>

	PR c++/115623
	* semantics.cc (finish_for_cond): Add check for C++ cond.

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

	* error.cc (dump_decl) [OVERLOAD]: Recurse on single case.

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

	* pt.cc (ctad_template_p): Return false for trait names.

2024-07-02  Jakub Jelinek  <jakub@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/115754
	* constexpr.cc (cxx_eval_constant_expression) <case CONVERT_EXPR>:
	For conversions to void, pass vc_discard to the recursive call
	and otherwise for tcode other than VIEW_CONVERT_EXPR pass vc_prvalue.

2024-07-02  Jakub Jelinek  <jakub@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/115747
	* init.cc: Implement C++26 P3144R2 - Deleting a Pointer to an
	Incomplete Type Should be Ill-formed.
	(build_vec_delete_1): Emit permerror_at and return error_mark_node
	for delete [] on incomplete type.
	(build_delete): Similarly for delete.

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

	PR c++/115745
	* cp-tree.h: Implement C++26 P0963R3 - Structured binding declaration
	as a condition.
	(DECL_DECOMP_BASE): Adjust comment.
	(DECL_DECOMP_IS_BASE): Define.
	* parser.cc (cp_parser_selection_statement): Adjust
	cp_parser_condition caller.
	(cp_parser_condition): Add KEYWORD argument.  Parse
	C++26 structured bindings in conditions.
	(cp_parser_c_for, cp_parser_iteration_statement): Adjust
	cp_parser_condition callers.
	(cp_parser_simple_declaration): Adjust
	cp_parser_decomposition_declaration caller.
	(cp_parser_decomposition_declaration): Add KEYWORD argument.
	If it is not RID_MAX, diagnose for C++23 and older rather than C++14
	and older.  Set DECL_DECOMP_BASE to integer_zero_node for structured
	bindings used in if/while/for conditions or integer_one_node for
	those used in switch conditions.
	* decl.cc (poplevel, check_array_initializer): Use DECL_DECOMP_IS_BASE
	instead of !DECL_DECOMP_BASE.
	(cp_finish_decomp): Diagnose array initializer for structured bindings
	used in conditions.  If using std::tuple_{size,element}, emit
	conversion to bool or integer/enumeration of e into a TARGET_EXPR
	before emitting get method calls.
	* decl2.cc (mark_used): Use DECL_DECOMP_IS_BASE instead of
	!DECL_DECOMP_BASE.
	* module.cc (trees_in::tree_node): Likewise.
	* typeck.cc (maybe_warn_about_returning_address_of_local): Likewise.
	* semantics.cc (maybe_convert_cond): For structured bindings with
	TARGET_EXPR DECL_DECOMP_BASE use that as condition.
	(finish_switch_cond): Likewise.

2024-07-02  Lewis Hyatt  <lhyatt@gmail.com>

	* Make-lang.in: Remove redundant slash.

2024-07-02  Simon Martin  <simon@nasilyan.com>

	PR c++/111160
	* tree.cc (stabilize_expr): Stabilized expressions can have
	TREE_SIDE_EFFECTS if they're volatile.

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

	PR c++/115469
	* decl.cc (automatic_var_with_nontrivial_dtor_p): New.
	(poplevel_named_label_1): Use it.
	(check_goto_1): Likewise.

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

	PR c++/115430
	* typeck.cc (cp_build_compound_expr): Call resolve_nondeduced_context
	on RHS.

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

	DR 2627
	PR c++/94058
	PR c++/104392
	* typeck2.cc (check_narrowing): Don't warn if the conversion isn't
	narrowing as per DR 2627.

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

	PR c++/106760
	* call.cc (add_candidates): Relax test for adding a candidate
	to 'bad_cands' to also accept an uninstantiated template candidate
	that has no missing conversions.

2024-06-26  David Malcolm  <dmalcolm@redhat.com>

	* parser.cc (cp_parser_error_1): Pass *global_dc to
	gcc_rich_location::add_location_if_nearby.
	(cp_parser_decl_specifier_seq): Likewise.
	(cp_parser_set_storage_class): Likewise.
	(cp_parser_set_storage_class): Likewise.

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

	PR c++/115504
	* semantics.cc (finish_decltype_type): Don't strip the reference
	type (if any) of a capture proxy's captured variable.

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

	PR c++/115476
	* semantics.cc (finish_trait_expr)
	<case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS>: Move below to call
	check_trait_type with kind==2.

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

	PR c++/115425
	* pt.cc (tsubst_pack_expansion): Return error_mark_node if
	make_pack_expansion doesn't work out.

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

	PR c++/115501
	* rtti.cc (build_dynamic_cast_1): Return if dcast_fn is erroneous.

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

	PR c++/115198
	* pt.cc (alias_ctad_tweaks): Update DECL_NAME of the transformed
	guides.

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

	PR c++/115358
	* decl2.cc (mark_used): Call maybe_instantiate_decl for an array
	variable with unknown bound.
	* semantics.cc (finish_decltype_type): Remove now redundant
	handling of array variables with unknown bound.
	* typeck.cc (cxx_sizeof_expr): Likewise.

2024-06-25  Sandra Loosemore  <sloosemore@baylibre.com>

	PR c/115587
	* parser.cc (cp_parser_omp_loop_nest): Move initializations to
	point of declaration.

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

	PR target/111343
	PR c++/115511
	* typeck.cc (cp_compare_floating_point_conversion_ranks): If an
	extended floating point type mv1 has same set of values as more
	than one standard floating point type and mv2 is float, return 2.

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

	PR c++/114683
	* name-lookup.cc (do_nonmember_using_decl): Allow exporting
	a newly inserted decl.

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

	PR c++/115194
	* name-lookup.cc (name_lookup::process_module_binding): Strip an
	OVERLOAD from a non-function.

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

	* module.cc (depset::hash::add_binding_entity): Adjust comment.

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

	PR c++/99678
	* parser.cc (cp_parser_constraint_primary_expression): Diagnose
	a bare unresolved unqualified-id.

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

	PR c++/115239
	* call.cc (tourney): Don't consider a non-strictly viable
	candidate as the champ if there was ambiguity between two
	strictly viable candidates.

2024-06-13  Andi Kleen  <ak@linux.intel.com>

	* parser.cc (cp_parser_asm_string_expression): Use correct error
	message.

2024-06-13  Andi Kleen  <ak@linux.intel.com>

	* parser.cc (cp_parser_asm_string_expression): Parse close
	parent when constexpr extraction fails.

2024-06-13  Andi Kleen  <ak@linux.intel.com>

	* parser.cc (cp_parser_asm_string_expression): Remove support
	for const char * for asm constexpr.

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

	PR c++/115283
	* decl2.cc (min_vis_expr_r) <case TEMPLATE_DECL>: Ignore
	concepts.

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

	* tree.cc (lookup_maybe_add): Use ovl_make when setting OVL_USING_P.

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

	* module.cc (depset::hash::add_binding_entity): Set
	DECL_MODULE_PURVIEW_P instead of asserting.

2024-06-12  Andi Kleen  <ak@linux.intel.com>

	* cp-tree.h (extract): Add new overload to return tree.
	* parser.cc (cp_parser_asm_string_expression): Use tree extract.
	* semantics.cc (cexpr_str::extract): Add new overload to return
	tree.

2024-06-12  David Malcolm  <dmalcolm@redhat.com>

	* error.cc (append_formatted_chunk): Move part of body into
	chunk_info::append_formatted_chunk.

2024-06-12  David Malcolm  <dmalcolm@redhat.com>

	* cxx-pretty-print.cc: Update throughout for fields of
	pretty_printer becoming private.
	* error.cc: Likewise.

2024-06-11  Andi Kleen  <ak@linux.intel.com>

	* parser.cc (cp_parser_asm_string_expression): New function
	to handle constexpr strings for asm.
	(cp_parser_asm_definition): Use cp_parser_asm_string_expression.
	(cp_parser_yield_expression): Dito.
	(cp_parser_asm_specification_opt): Dito.
	(cp_parser_asm_operand_list): Dito.
	(cp_parser_asm_clobber_list): Dito.

2024-06-11  Andi Kleen  <ak@linux.intel.com>

	* cp-tree.h (class cexpr_str): Add.
	* semantics.cc (finish_static_assert): Convert to use cexpr_str.
	(cexpr_str::type_check): Extract constexpr string code to here.
	(cexpr_str::extract): ... and here.

2024-06-08  Simon Martin  <simon@nasilyan.com>

	PR c++/108438
	* parser.cc (cp_parser_postfix_expression): Use
	cp_parser_require_end_of_template_parameter_list to skip to the closing
	'>' upon error parsing the target type of *_cast<*> expressions.

2024-06-07  Simon Martin  <simon@nasilyan.com>

	PR c++/107575
	* decl.cc (duplicate_decls): Check for error_mark_node
	DECL_LOCAL_DECL_ALIAS.

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

	* module.cc (maybe_translate_include): Allow before the main file.

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

	PR c++/115378
	* lambda.cc (lambda_capture_field_type): Set
	TEMPLATE_TYPE_PARAMETER_PACK on the auto type of an init-capture
	pack expansion.
	* pt.cc (find_parameter_packs_r) <case TEMPLATE_TYPE_PARM>:
	Restrict TEMPLATE_TYPE_PARAMETER_PACK promotion with
	flag_concepts_ts.

2024-06-05  Jakub Jelinek  <jakub@redhat.com>
	    Frederik Harwath  <frederik@codesourcery.com>
	    Sandra Loosemore  <sandra@codesourcery.com>

	* cp-tree.h (dependent_omp_for_p): Add another tree argument.
	* parser.cc (check_omp_intervening_code): Reject imperfectly nested
	tile.
	(cp_parser_statement_seq_opt): If want_nested_loop, use
	cp_parser_next_tokens_can_be_canon_loop instead of just checking
	for RID_FOR keyword.
	(cp_parser_omp_clause_name): Handle full and partial clause names.
	(cp_parser_omp_clause_full, cp_parser_omp_clause_partial): New
	functions.
	(cp_parser_omp_all_clauses): Formatting fix.  Handle
	PRAGMA_OMP_CLAUSE_PARTIAL and PRAGMA_OMP_CLAUSE_FULL.
	(cp_parser_next_tokens_can_be_canon_loop): New function.
	(cp_parser_omp_loop_nest): Parse C++11 attributes.  Handle tile/unroll
	constructs.  Use cp_parser_next_tokens_can_be_canon_loop instead
	of just checking for RID_FOR keyword.  Only add_stmt
	cp_parser_omp_loop_nest result if it is non-NULL.
	(cp_parser_omp_for_loop): Rename tiling variable to oacc_tiling.  For
	OMP_CLAUSE_SIZES set collapse to list length of OMP_CLAUSE_SIZES_LIST.
	Use cp_parser_next_tokens_can_be_canon_loop instead of just
	checking for RID_FOR keyword.  Remove spurious semicolon.  Don't call
	c_omp_check_loop_binding_exprs if stmt is NULL.  Skip and/or handle
	generated loops.  Remove spurious ()s around & operands.
	(cp_parser_omp_tile_sizes, cp_parser_omp_tile): New functions.
	(OMP_UNROLL_CLAUSE_MASK): Define.
	(cp_parser_omp_unroll): New function.
	(cp_parser_omp_construct): Handle PRAGMA_OMP_TILE and
	PRAGMA_OMP_UNROLL.
	(cp_parser_pragma): Likewise.
	* semantics.cc (finish_omp_clauses): Don't call
	fold_build_cleanup_point_expr for cases which obviously won't need it,
	like checked INTEGER_CSTs.  Handle OMP_CLAUSE_{FULL,PARTIAL,SIZES}
	and diagnose full vs. partial conflict.  Adjust wording of some of the
	conflicting clause diagnostic messages to include word clause.
	(finish_omp_for): Use decl equal to global_namespace as a marker for
	generated loop.  Pass also body to dependent_omp_for_p.  Skip
	generated loops.
	(finish_omp_for_block): Skip generated loops.
	* pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_{FULL,PARTIAL,SIZES}.
	(tsubst_stmt): Handle OMP_TILE and OMP_UNROLL.  Handle or skip
	generated loops.
	(dependent_omp_for_p): Add body argument.  If declv vector element
	is NULL, find generated loop.
	* cp-gimplify.cc (cp_gimplify_expr): Handle OMP_TILE and OMP_UNROLL.
	(cp_fold_r): Likewise.
	(cp_genericize_r): Likewise.  Skip generated loops.

2024-06-04  Simon Martin  <simon@nasilyan.com>

	* pt.cc (tsubst_expr): Add missing space after seen_error.
	(dependent_type_p): Likewise.

2024-06-04  Simon Martin  <simon@nasilyan.com>

	PR c++/111106
	* pt.cc (dependent_type_p): Don't fail assert during error recovery.

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

	PR c++/115012
	* parser.cc (cp_parser_direct_declarator): Handle
	abstract declarator starting with ... followed by opening paren.

2024-06-02  Simon Martin  <simon@nasilyan.com>

	PR c++/109958
	* typeck.cc (build_class_member_access_expr): Handle single OVERLOADs.
	(cp_build_addr_expr_1): Likewise.

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

	PR c++/114867
	* cp-tree.h (OVL_PURVIEW_P): New.
	(ovl_iterator::purview_p): New.
	* module.cc (depset::hash::add_binding_entity): Only ignore
	entities not within module purview. Set OVL_PURVIEW_P on new
	OVERLOADs for emitted declarations.
	(module_state::read_cluster): Imported using-decls are always
	in purview, mark as OVL_PURVIEW_P.
	* name-lookup.h (enum WMB_Flags): New WMB_Purview flag.
	* name-lookup.cc (walk_module_binding): Set WMB_Purview as
	needed.
	(do_nonmember_using_decl): Don't remove from existing OVERLOADs.
	Also reveal non-exported decls. Also reveal 'extern "C"' decls.
	Add workaround to reveal non-function decls.
	* tree.cc (ovl_insert): Adjust to also set OVL_PURVIEW_P when
	needed.

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

	PR c++/109753
	* decl.cc (start_preparsed_function): Call decl_attributes.

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

	* lang-specs.h: Add module interface extensions.

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

	PR c++/115223
	* tree.cc (build_cp_fntype_variant): Propagate structural
	equality of the exception-less variant.

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

	PR c++/109396
	* cp-tree.h (maybe_warn_self_move): Declare.
	* init.cc (perform_member_init): Call maybe_warn_self_move.
	* typeck.cc (maybe_warn_self_move): No longer static.  Change the
	return type to bool.  Also warn when called from
	a member-initializer-list.  Drop the inform call.

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

	PR c++/114707
	* call.cc (convert_for_arg_passing): Call set_target_expr_eliding.
	* typeck2.cc (replace_placeholders_for_class_temp_r): Don't use pset.
	(digest_nsdmi_init): Call cp_walk_tree_without_duplicates instead of
	cp_walk_tree.

2024-05-28  David Malcolm  <dmalcolm@redhat.com>

	PR bootstrap/115167
	PR bootstrap/115167
	* call.cc: Replace include of "gcc-rich-location.h" with
	"c-family/c-type-mismatch.h".
	* error.cc: Likewise.
	* typeck.cc: Likewise.

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

	PR c++/102345
	* module.cc (module_may_redeclare): Update error message.

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

	PR c++/115200
	* parser.cc (cp_parser_error_1): Special-case unexpected module
	directives for better diagnostics.
	(cp_parser_module_declaration): Check that the module
	declaration is at global scope.
	(cp_parser_import_declaration): Sync error message with that in
	cp_parser_error_1.

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

	* cp-tree.h (module_has_cmi_p): Also include header units.
	(module_maybe_has_cmi_p): Update comment.
	* module.cc (set_defining_module): Only need to track
	declarations for later exporting if the module may have a CMI.
	(set_defining_module_for_partial_spec): Likewise.
	* name-lookup.cc (pushdecl): Likewise.

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

	* tree.cc (no_linkage_check): Anonymous types can't be accessed
	in a different TU.

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

	PR c++/114947
	* cp-tree.h (set_defining_module_for_partial_spec): Declare.
	* module.cc (trees_in::decl_value): Track partial specs coming
	from partitions.
	(set_defining_module): Don't track partial specialisations here
	anymore.
	(set_defining_module_for_partial_spec): New function.
	* pt.cc (process_partial_specialization): Call it.

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

	PR c++/115187
	* init.cc (build_delete): Use get_target_expr instead of save_expr.
	* tree.cc (stabilize_expr): Update comment.

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

	PR c++/115159
	* tree.cc (build_cp_fntype_variant): Always use structural
	equality for types with a complex exception specification.
	(fixup_deferred_exception_variants): Use structural equality
	for adjusted variants.
	* typeck.cc (comp_except_specs): Require == instead of
	cp_tree_equal for ce_exact noexcept-spec comparison.

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

	* decl.cc (grokfndecl): Check for main functions with language
	linkage or module attachment.
	(grokvardecl): Check for extern 'C' entities named main.

2024-05-21  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/107800
	* cxxapi-data.csv <to_address>: Change dialect to cxx20.
	* std-name-hint.gperf: Regenerate.
	* std-name-hint.h: Regenerate.

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

	PR c++/115139
	* pt.cc (tsubst_expr) <case CONST_DECL>: Exit early if args
	is empty.

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

	PR c++/115114
	* pt.cc (maybe_aggr_guide): Consider bases in the paren init case.

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

	PR c++/114854
	* call.cc (convert_like_internal) <case ck_user>: Don't set
	TARGET_EXPR_DIRECT_INIT_P.

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

	DR 1693
	PR c++/113760
	DR 569
	* parser.cc (extra_semi_kind): New.
	(maybe_warn_extra_semi): New.
	(cp_parser_declaration): Call maybe_warn_extra_semi.
	(cp_parser_member_declaration): Likewise.

2024-05-15  Jakub Jelinek  <jakub@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR lto/113208
	* cp-tree.h (maybe_optimize_cdtor): Remove.
	* decl2.cc (tentative_decl_linkage): Call maybe_make_one_only
	for implicit instantiations of maybe in charge ctors/dtors
	declared inline.
	(import_export_decl): Don't call maybe_optimize_cdtor.
	(c_parse_final_cleanups): Formatting fixes.
	* optimize.cc (can_alias_cdtor): Adjust condition, for
	HAVE_COMDAT_GROUP && DECL_ONE_ONLY && DECL_WEAK return true even
	if not DECL_INTERFACE_KNOWN.
	(maybe_clone_body): Don't clear DECL_SAVED_TREE, instead set it
	to void_node.
	(maybe_clone_body): Remove.
	* decl.cc (cxx_comdat_group): For DECL_CLONED_FUNCTION_P
	functions if SUPPORTS_ONE_ONLY return DECL_COMDAT_GROUP if already
	set.

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

	PR c/115103
	* semantics.cc (finish_omp_clauses): Diagnose grainsize
	used together with num_tasks.

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

	PR c++/114994
	* tree.cc (lvalue_kind) <case MODOP_EXPR>: For a class
	assignment, consider the result type.

2024-05-14  Simon Martin  <simon-l.martin@laposte.net>

	PR c++/105760
	* pt.cc (build_deduction_guide): Check for error_mark_node
	result from tsubst_arg_types.

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

	* decl.cc (wrap_cleanups_r): Clarify comment.
	* init.cc (build_vec_init): Update comment.

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

	* constraint.cc (norm_info::norm_info): Take a bool instead of
	tsubst_flags_t.
	(norm_info::generate_diagnostics): Turn this predicate function
	into a bool data member.
	(normalize_logical_operation): Adjust after norm_info changes.
	(normalize_concept_check): Likewise.
	(normalize_atom): Likewise.
	(get_normalized_constraints_from_info): Likewise.
	(normalize_concept_definition): Likewise.
	(normalize_constraint_expression): Likewise.
	(normalize_placeholder_type_constraints): Likewise.
	(satisfy_nondeclaration_constraints): Likewise.
	* cp-tree.h (enum tsubst_flags): Remove tf_norm.

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

	PR c++/115061
	* semantics.cc (finish_trait_expr): Use rank instead of
	__array_rank.

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

	PR c++/114974
	PR c++/114901
	PR c++/114903
	* pt.cc (maybe_aggr_guide): Fix obtaining TYPE_FIELDS in
	the paren init case.  Hoist out partial substitution logic
	to apply to the paren init case as well.
	(alias_ctad_tweaks): Substitute outer template arguments into
	a guide's constraints.

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

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

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

	* cp-trait.def: Define __is_invocable.
	* constraint.cc (diagnose_trait_expr): Handle CPTK_IS_INVOCABLE.
	* semantics.cc (trait_expr_value): Likewise.
	(finish_trait_expr): Likewise.
	* cp-tree.h (build_invoke): New function.
	* method.cc (build_invoke): New function.

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

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

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

	* cp-trait.def: Define __decay.
	* semantics.cc (finish_trait_type): Handle CPTK_DECAY.

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

	* cp-trait.def: Define __add_rvalue_reference.
	* semantics.cc (finish_trait_type): Handle
	CPTK_ADD_RVALUE_REFERENCE.

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

	* cp-trait.def: Define __add_lvalue_reference.
	* semantics.cc (finish_trait_type): Handle
	CPTK_ADD_LVALUE_REFERENCE.

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

	* cp-trait.def: Define __remove_all_extents.
	* semantics.cc (finish_trait_type): Handle
	CPTK_REMOVE_ALL_EXTENTS.

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

	* cp-trait.def: Define __remove_extent.
	* semantics.cc (finish_trait_type): Handle CPTK_REMOVE_EXTENT.

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

	* cp-trait.def: Define __add_pointer.
	* semantics.cc (finish_trait_type): Handle CPTK_ADD_POINTER.
	(object_type_p): New function.
	(referenceable_type_p): Likewise.
	(trait_expr_value): Use object_type_p.

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

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

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

	PR target/114968
	* cp-tree.h (atexit_fn_ptr_type_node, cleanup_type): Adjust macro
	comments.
	(get_cxa_atexit_fn_ptr_type): Declare.
	* decl.cc (get_atexit_fn_ptr_type): Adjust function comment, only
	build type for atexit argument.
	(get_cxa_atexit_fn_ptr_type): New function.
	(get_atexit_node): Call get_cxa_atexit_fn_ptr_type rather than
	get_atexit_fn_ptr_type when using __cxa_atexit.
	(get_thread_atexit_node): Call get_cxa_atexit_fn_ptr_type
	rather than get_atexit_fn_ptr_type.
	(start_cleanup_fn): Add ob_parm argument, call
	get_cxa_atexit_fn_ptr_type or get_atexit_fn_ptr_type depending
	on it and create PARM_DECL also based on that argument.
	(register_dtor_fn): Adjust start_cleanup_fn caller, use
	get_cxa_atexit_fn_ptr_type rather than get_atexit_fn_ptr_type
	for use_dtor casts.
	* except.cc (build_throw): Use get_cxa_atexit_fn_ptr_type ().

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

	PR c++/114983
	* pt.cc (tsubst_expr) <case SIZEOF_EXPR>: Use copy_warning.
	* semantics.cc (finish_parenthesized_expr): Also suppress
	-Wsizeof-array-div.

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

	PR c++/85889
	* lambda.cc (add_capture): Add a pedwarn for capturing structured
	bindings.

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

	PR c++/113582
	* parser.cc (cp_parser_label_for_labeled_statement): suppress_warning
	if it's not enabled at input_location.
	* pt.cc (tsubst_stmt): Call copy_warning.

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

	PR c++/114856
	* call.cc (make_temporary_var_for_ref_to_temp): Set context for
	temporaries with linkage.
	* init.cc (create_temporary_var): Revert to only set context
	when in a function decl.

2024-05-07  Andrew Pinski  <quic_apinski@quicinc.com>

	PR c++/89224
	* constexpr.cc (cxx_eval_array_reference): Compare main variants
	for the vector/array types instead of the types directly.

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

	PR c++/114459
	* parser.cc (cp_parser_member_declaration): Implement C++26
	P2893R3 - Variadic friends.  Parse friend type declarations
	with ... or with more than one friend type specifier.
	* friend.cc (make_friend_class): Allow TYPE_PACK_EXPANSION.
	* pt.cc (instantiate_class_template): Handle PACK_EXPANSION_P
	in friend classes.

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

	* decl.cc (duplicate_decls): Don't check VAR_P before
	DECL_DECOMPOSITION_P.
	* init.cc (build_aggr_init): Likewise.
	* parser.cc (cp_parser_range_for): Likewise.
	(do_range_for_auto_deduction): Likewise.
	(cp_convert_range_for): Likewise.
	(cp_convert_omp_range_for): Likewise.
	(cp_finish_omp_range_for): Likewise.
	* pt.cc (extract_locals_r): Likewise.
	(tsubst_omp_for_iterator): Likewise.
	(tsubst_decomp_names): Likewise.
	(tsubst_stmt): Likewise.
	* typeck.cc (maybe_warn_about_returning_address_of_local): Likewise.

2024-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Make-lang.in (cc1plus$(exeext)): Remove $(NETLIBS).

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

	PR c++/114954
	* cp-tree.h (IS_FAKE_BASE_TYPE): Also apply to unions.

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

	PR c++/114275
	* cp-tree.h (remove_defining_module): Declare.
	* decl.cc (duplicate_decls): Call remove_defining_module on
	to-be-freed newdecl.
	* module.cc (imported_temploid_friends): Mark as GTY root...
	(init_modules): ...and allocate from ggc.
	(trees_in::decl_value): Only track for declarations that won't
	be discarded.
	(remove_defining_module): New function.

2024-05-06  Qing Zhao  <qing.zhao@oracle.com>

	PR c/53548
	* decl.cc (layout_var_decl): Handle the cases when the DECL is
	union with a flexible array member initializer.

2024-05-06  Qing Zhao  <qing.zhao@oracle.com>

	PR c/53548
	* class.cc (diagnose_flexarrays): Change error to pdewarn for the case
	flexible array members alone in structures.
	* decl.cc (grokdeclarator): Change error to pdewarn for the case
	flexible array members in unions.

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.
