2020-04-18  Patrick Palka  <ppalka@redhat.com>

	PR c++/94632
	* tree.c (cp_tree_equal) <case PARM_DECL>: Ignore
	comparing_specializations if the parameters' contexts are identical.

	PR c++/92187
	* pt.c (splice_late_return_type): Propagate cv-qualifiers and
	PLACEHOLDER_TYPE_CONSTRAINTS from the original auto node to the new one.

2020-04-17  Patrick Palka  <ppalka@redhat.com>

	PR c++/94483
	* lambda.c (lambda_capture_field_type): Avoid doing auto deduction if
	the explicit initializer has parameter packs.

	PR c++/88754
	* parser.c (cp_parser_check_template_parameters): Before issuing a hard
	error, first try simulating an error instead.

2020-04-17  Jakub Jelinek  <jakub@redhat.com>

	PR other/94629
	* call.c (build_conditional_expr_1): Remove redundant assignment to
	arg2.

2020-04-16  Patrick Palka  <ppalka@redhat.com>

	PR c++/94475
	* cvt.c (ocp_convert): If the result of scalar_constant_value is
	erroneous, ignore it and use the original expression.

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

	PR c++/94571
	* parser.c (cp_parser_simple_declaration): Fix up a pasto in
	diagnostics.

2020-04-15  Jakub Jelinek  <jakub@redhat.com>

	PR c/94593
	* parser.c (cp_parser_pragma) <case PRAGMA_OMP_REQUIRES>: Reject
	requires directive when not at file or namespace scope.

2020-04-14  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/94359
	* coroutines.cc (build_actor_fn): Check that the target can
	support the resume tailcall before mandating it.

2020-04-14  Patrick Palka  <ppalka@redhat.com>

	PR c++/85278
	* cxx-pretty-print.c (cxx_pretty_printer:simple_type_specifier)
	<case DECLTYPE_TYPE>: Handle DECLTYPE_TYPE here instead of ...
	(pp_cxx_type_specifier_seq) <case DECLTYPE_TYPE>: ... here.
	(cxx_pretty_printer::direct_abstract_declarator) <case DECLTYPE_TYPE>:
	New no-op case.

	PR c++/94034
	* constexpr.c (replace_result_decl_data): New struct.
	(replace_result_decl_data_r): New function.
	(replace_result_decl): New function.
	(cxx_eval_call_expression): Use it.
	* tree.c (build_aggr_init_expr): Set the location of the AGGR_INIT_EXPR
	to that of its initializer.

2020-04-13  Marek Polacek  <polacek@redhat.com>

	PR c++/94588
	* name-lookup.c (check_local_shadow): Add an inform call.

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

	PR c++/94521
	* error.c (dump_scope): Pass TFF_NO_FUNCTION_ARGUMENTS to
	dump_function_decl when printing a function template instantiation as a
	scope.

	PR c++/94470
	* constexpr.c (get_or_insert_ctor_field): Set default value of parameter
	'pos_hint' to -1.
	(cxx_eval_bare_aggregate): Use get_or_insert_ctor_field instead of
	assuming the the next index belongs at the end of the new CONSTRUCTOR.
	(cxx_eval_store_expression): Revert PR c++/78572 fix.

2020-04-13  Nathan Sidwell  <nathan@acm.org>

	PR c++/94426  lambdas with internal linkage are different to no-linkage
	* decl2.c (determine_visibility): A lambda's visibility is
	affected by its extra scope.
	* pt.c (instantiate_decl): Determine var's visibility before
	instantiating its initializer.
	* tree.c (no_linkage_check): Revert code looking at visibility of
	lambda's extra scope.
`
2020-04-10  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/94528
	* coroutines.cc (co_await_expander): Remove.
	(expand_one_await_expression): New.
	(process_one_statement): New.
	(await_statement_expander): New.
	(build_actor_fn): Revise to use per-statement expander.
	(struct susp_frame_data): Reorder and comment.
	(register_awaits): Factor code.
	(replace_statement_captures): New, factored from...
	(maybe_promote_captured_temps):.. here.
	(await_statement_walker): Revise to process per statement.
	(morph_fn_to_coro): Use revised susp_frame_data layout.

2020-04-10  Marek Polacek  <polacek@redhat.com>

	PR c++/94149
	* method.c (constructible_expr): In C++20, try using parenthesized
	initialization of aggregates to determine the result of
	__is_constructible.

2020-04-10  Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (co_await_expander): Simplify.

2020-04-09  Jason Merrill  <jason@redhat.com>

	PR c++/94523
	* constexpr.c (cxx_eval_constant_expression) [VAR_DECL]: Look at
	ctx->object and ctx->global->values first.

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

	PR c++/93790
	* call.c (initialize_reference): If the reference binding failed, maybe
	try initializing from { }.
	* decl.c (grok_reference_init): For T& t(e), set
	LOOKUP_AGGREGATE_PAREN_INIT but don't build up a constructor yet.

2020-04-08  Iain Sandoe  <iain@sandoe.co.uk>
	    Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (maybe_promote_captured_temps): Add a cleanup
	expression, if needed, to any call from which we promoted
	temporaries captured by reference.

2020-04-08  Marek Polacek  <polacek@redhat.com>

	PR c++/94507 - ICE-on-invalid with lambda template.
	* pt.c (tsubst_lambda_expr): Cope when tsubst_template_decl or
	tsubst_function_decl returns error_mark_node.

2020-04-08  Martin Liska  <mliska@suse.cz>

	PR c++/94314
	* decl.c (duplicate_decls): Duplicate also DECL_IS_REPLACEABLE_OPERATOR.
	(cxx_init_decl_processing): Mark replaceable all implicitly defined
	operators.

2020-04-08  Patrick Palka  <ppalka@redhat.com>

	Core issues 1001 and 1322
	PR c++/92010
	* pt.c (rebuild_function_or_method_type): Split function out from ...
	(tsubst_function_type): ... here.
	(maybe_rebuild_function_decl_type): New function.
	(tsubst_function_decl): Use it.

2020-04-08  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94325
	* decl.c (begin_destructor_body): For CLASSTYPE_VBASECLASSES class
	dtors, if CLASSTYPE_PRIMARY_BINFO is non-NULL, but not BINFO_VIRTUAL_P,
	look at CLASSTYPE_PRIMARY_BINFO of its BINFO_TYPE if it is not
	BINFO_VIRTUAL_P, and so on.

2020-04-08  Marek Polacek  <polacek@redhat.com>

	PR c++/94478 - ICE with defaulted comparison operator
	* method.c (early_check_defaulted_comparison): Give an error when the
	context is null.

2020-04-08  Tobias Burnus  <tobias@codesourcery.com>

	PR middle-end/94120
	* paser.c (cp_parser_oacc_declare): Add check that variables
	are declared in the same scope as the directive.

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

	PR c++/94480
	* parser.c (cp_parser_requires_expression): Use tentative_firewall.

	PR c++/94481
	* parser.c (cp_parser_placeholder_type_specifier): Use
	matching_parens.

2020-04-07  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (maybe_promote_captured_temps): Ensure that
	reference capture placeholder vars are properly declared.

2020-04-07  Patrick Palka  <ppalka@redhat.com>

	PR c++/90996
	* tree.c (replace_placeholders): Look through all handled components,
	not just COMPONENT_REFs.
	* typeck2.c (process_init_constructor_array): Propagate
	CONSTRUCTOR_PLACEHOLDER_BOUNDARY up from each element initializer to
	the array initializer.

2020-04-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94512
	* parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
	if cp_parser_omp_master succeeded.

2020-04-06  Jason Merrill  <jason@redhat.com>

	PR c++/94462
	* decl.c (duplicate_decls): Fix handling of DECL_HIDDEN_FRIEND_P.

2020-04-04  Marek Polacek  <polacek@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/94155 - crash in gimplifier with paren init of aggregates.
	* init.c (build_vec_init): Fill in indexes.

2020-04-04  Jason Merrill  <jason@redhat.com>

	PR c++/91377
	* mangle.c (write_expression): Skip IMPLICIT_CONV_EXPR.

2020-04-04  Patrick Palka  <ppalka@redhat.com>

	PR c++/94205
	PR c++/79937
	* constexpr.c (struct constexpr_ctx): New field 'parent'.
	(cxx_eval_bare_aggregate): Propagate CONSTRUCTOR_PLACEHOLDER_BOUNDARY
	flag from the original constructor to the reduced constructor.
	(lookup_placeholder): Prefer to return the outermost matching object
	by recursively calling lookup_placeholder on the 'parent' context,
	but don't cross CONSTRUCTOR_PLACEHOLDER_BOUNDARY constructors.
	(cxx_eval_constant_expression): Link the 'ctx' context to the 'new_ctx'
	context via 'new_ctx.parent' when being expanded without an explicit
	target.  Don't call replace_placeholders.
	(cxx_eval_outermost_constant_expr): Initialize 'ctx.parent' to NULL.

	PR c++/94219
	PR c++/94205
	* constexpr.c (get_or_insert_ctor_field): Split out (while adding
	support for VECTOR_TYPEs, and optimizations for the common case)
	from ...
	(cxx_eval_store_expression): ... here.  Rename local variable
	'changed_active_union_member_p' to 'activated_union_member_p'.  Record
	the sequence of indexes into 'indexes' that yields the subobject we're
	assigning to.  Record the integer offsets of the constructor indexes
	we're assigning through into 'index_pos_hints'.  After evaluating the
	initializer of the store expression, recompute 'valp' using 'indexes'
	and using 'index_pos_hints' as hints.
	(cxx_eval_bare_aggregate): Tweak comments.  Use get_or_insert_ctor_field
	to recompute the constructor_elt pointer we're assigning through after
	evaluating each initializer.

2020-04-04  Jason Merrill  <jason@redhat.com>

	PR c++/67825
	* constraint.cc (tsubst_valid_expression_requirement): Call
	convert_to_void.

2020-04-04  Jason Merrill  <jason@redhat.com>

	PR c++/94453
	* constexpr.c (maybe_constant_value): Use break_out_target_exprs.
	* expr.c (mark_use) [VIEW_CONVERT_EXPR]: Don't wrap a TARGET_EXPR in
	NON_LVALUE_EXPR.

2020-04-04  Jakub Jelinek  <jakub@redhat.com>

	PR debug/94441
	* parser.c (cp_parser_omp_for_loop): Use
	protected_set_expr_location_if_unset.
	* cp-gimplify.c (genericize_if_stmt, genericize_cp_loop): Likewise.

	PR c++/94477
	* pt.c (tsubst_expr) <case OMP_MASTER>: Clear
	omp_parallel_combined_clauses.

2020-04-03  Jason Merrill  <jason@redhat.com>

	PR c++/91966
	* pt.c (complex_pack_expansion_r): New.
	(complex_alias_template_p): Use it.

2020-03-31  Jason Merrill  <jason@redhat.com>

	PR c++/94205
	* constexpr.c (cxx_eval_constant_expression) [TARGET_EXPR]: Call
	replace_placeholders.
	* typeck2.c (store_init_value): Fix arguments to
	fold_non_dependent_expr.

2020-03-31  Jason Merrill  <jason@redhat.com>

	* constexpr.c (cxx_eval_constant_expression) [TARGET_EXPR]: Use
	local variables.

2020-03-30  Jason Merrill  <jason@redhat.com>

	PR c++/90711
	* tree.c (cp_tree_equal) [CALL_EXPR]: Compare KOENIG_LOOKUP_P.
	(called_fns_equal): Check DECL_CONTEXT.

2020-03-30  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94385
	* semantics.c (add_stmt): Only set STMT_IS_FULL_EXPR_P on trees with
	STATEMENT_CODE_P code.

2020-03-28  Patrick Palka  <ppalka@redhat.com>

	PR c++/94306
	* parser.c (cp_parser_requires_clause_opt): Diagnose and recover from
	"requires {" when "requires requires {" was probably intended.

	PR c++/94252
	* constraint.cc (tsubst_compound_requirement): Always suppress errors
	from type_deducible_p and expression_convertible_p, as they're not
	substitution errors.
	(diagnose_atomic_constraint) <case INTEGER_CST>: Remove this case so
	that we diagnose INTEGER_CST expressions of non-bool type via the
	default case.
	* cp-gimplify.c (cp_genericize_r) <case REQUIRES_EXPR>: New case.
	* parser.c (cp_parser_requires_expression): Always parse the requirement
	body as if we're processing a template, by temporarily incrementing
	processing_template_decl.  Afterwards, if we're not actually in a
	template context, perform semantic processing to diagnose any invalid
	types and expressions.
	* pt.c (tsubst_copy_and_build) <case REQUIRES_EXPR>: Remove dead code.
	* semantics.c (finish_static_assert): Explain an assertion failure
	when the condition is a REQUIRES_EXPR like we do when it is a concept
	check.

	* constraint.cc (diagnose_compound_requirement): When diagnosing a
	compound requirement, maybe replay the satisfaction failure, subject to
	the current diagnosis depth.

	* constraint.cc (finish_constraint_binary_op): Set the location of EXPR
	as well as its range, because build_x_binary_op doesn't always do so.
	(current_constraint_diagnosis_depth): New.
	(concepts_diagnostics_max_depth_exceeded_p): New.
	(collect_operands_of_disjunction): New.
	(satisfy_disjunction): When diagnosing a satisfaction failure, maybe
	replay each branch of the disjunction, subject to the current diagnosis
	depth.
	(diagnose_valid_expression): When diagnosing a satisfaction failure,
	maybe replay the substitution error, subject to the current diagnosis
	recursion.
	(diagnose_valid_type): Likewise.
	(diagnose_nested_requiremnet): Likewise.
	(diagnosing_failed_constraint::diagnosing_failed_constraint): Increment
	current_constraint_diagnosis_depth when diagnosing.
	(diagnosing_failed_constraint::~diagnosing_failed_constraint): Decrement
	current_constraint_diagnosis_depth when diagnosing.
	(diagnosing_failed_constraint::replay_errors_p): New static member
	function.
	(diagnose_constraints): Don't diagnose if concepts_diagnostics_max_depth
	is 0.  Emit a one-off note to increase -fconcepts-diagnostics-depth if
	the limit was exceeded.
	* cp-tree.h (diagnosing_failed_constraint::replay_errors_p): Declare.

2020-03-27  Nathan Sidwell  <nathan@acm.org>

	PR c++/84733
	* name-lookup.c (do_pushdecl): Look through cleanp levels.

2020-03-27  Martin Sebor  <msebor@redhat.com>

	PR c++/94078
	PR c++/93824
	PR c++/93810
	* cp-tree.h (most_specialized_partial_spec): Declare.
	* parser.c (cp_parser_elaborated_type_specifier): Distinguish alias
	from declarations.
	(specialization_of): New function.
	(cp_parser_check_class_key): Move code...
	(class_decl_loc_t::add): ...to here.  Add parameters.  Avoid issuing
	-Wredundant-tags on first-time declarations in other declarators.
	Correct handling of template specializations.
	(class_decl_loc_t::diag_mismatched_tags): Also expect to be called
	when -Wredundant-tags is enabled.  Use primary template or partial
	specialization as the guide for uses of implicit instantiations.
	* pt.c (most_specialized_partial_spec): Declare extern.

2020-03-27  Nathan Sidwell  <nathan@acm.org>

	PR c++/94257
	* name-lookup.c (push_namespace): Triage ambiguous lookups that
	contain namespaces.

2020-03-27  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94326
	* call.c (set_flags_from_callee): Don't update
	cp_function_chain->can_throw or current_function_returns_abnormally
	if cp_unevaluated_operand.

	PR c++/94339
	* cvt.c (ocp_convert): Handle COMPOUND_EXPR by recursion on the second
	operand and creating a new COMPOUND_EXPR if anything changed.

2020-03-26  Marek Polacek  <polacek@redhat.com>

	PR c++/94336 - template keyword accepted before destructor names.
	* parser.c (cp_parser_unqualified_id): Give an error when 'template'
	is followed by a destructor name.

2020-03-27  Patrick Palka  <ppalka@redhat.com>

	* decl.c (compute_array_index_type_loc): Remove redundant
	type_dependent_expression_p check that is subsumed by
	value_dependent_expression_p.
	* decl2.c (is_late_template_attribute): Likewise.
	* pt.c (uses_template_parms): Likewise.
	(dependent_template_arg_p): Likewise.

2020-03-26  Marek Polacek  <polacek@redhat.com>

	DR 1710
	PR c++/94057 - template keyword in a typename-specifier.
	* parser.c (check_template_keyword_in_nested_name_spec): New.
	(cp_parser_nested_name_specifier_opt): Implement DR1710, optional
	'template'.  Call check_template_keyword_in_nested_name_spec.
	(cp_parser_simple_type_specifier): Assume that a <
	following a qualified-id in a typename-specifier begins
	a template argument list.

2020-03-26  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (coro_init_identifiers): Initialize an identifier
	for the cororoutine handle 'address' method name.
	(struct coro_aw_data): Add fields to cover the continuations.
	(co_await_expander): Determine the kind of await_suspend in use.
	If we have the case that returns a continuation handle, then save
	this and make the target for 'scope exit without cleanup' be the
	continuation resume label.
	(expand_co_awaits): Remove.
	(struct suspend_point_info): Remove fields that kept the returned
	await_suspend handle type.
	(transform_await_expr): Remove code tracking continuation handles.
	(build_actor_fn): Add the continuation handle as an actor-function
	scope var.  Build the symmetric transfer continuation point. Call
	the tree walk for co_await expansion directly, rather than via a 
	trivial shim function.
	(register_await_info): Remove fields tracking continuation handles.
	(get_await_suspend_return_type): Remove.
	(register_awaits): Remove code tracking continuation handles.
	(morph_fn_to_coro): Remove code tracking continuation handles.

2020-03-26  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (co_await_expander): If we are expanding the
	initial await expression, set a boolean flag to show that we
	have now reached the initial await_resume() method call.
	(expand_co_awaits): Handle the 'initial await resume called' flag.
	(build_actor_fn): Insert the initial await expression into the
	start of the user-authored function-body. Handle the 'initial await
	resume called' flag.
	(morph_fn_to_coro): Initialise the 'initial await resume called'
	flag.  Modify the unhandled exception catch clause to recognise
	exceptions that occur before the initial await_resume() and re-
	throw them.

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

	PR c++/81349
	* class.c (user_provided_p): Use STRIP_TEMPLATE instead of returning
	true for all TEMPLATE_DECLs.

	PR c++/94272
	* cp-gimplify.c (cp_genericize_r): Handle STATEMENT_LIST.

2020-03-25  Patrick Palka  <ppalka@redhat.com>

	PR c++/94265
	* parser.c (cp_parser_selection_statement) <case RID_IF>: Invalidate the
	current condition chain when the if-statement has a non-empty
	init-statement.

2020-03-25  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/94319
	* coroutines.cc (captures_temporary): Fix a missing dereference.

2020-03-24  Marek Polacek  <polacek@redhat.com>

	PR c++/94190 - wrong no post-decrement operator error in template.
	* call.c (convert_like_real): Use convert_from_reference on the result.

2020-03-24  Jason Merrill  <jason@redhat.com>

	PR c++/94186
	* constraint.cc (constraint_satisfaction_value): Repeat noisily on
	error.
	(tsubst_nested_requirement): Likewise.
	(get_constraint_error_location): Allow missing context.
	(diagnose_atomic_constraint): Diagnose non-bool constraint here.
	(satisfy_atom): Not here.  Only diagnose non-constant when noisy.

2020-03-24  Jason Merrill  <jason@redhat.com>

	* pt.c (any_template_parm_r): Look into the type of a non-type
	template parm.

2020-03-24  Jason Merrill  <jason@redhat.com>

	* cp-tree.h (cp_expr): When constructing from an expr and a
	location, call protected_set_expr_location.

2020-03-23  Patrick Palka  <ppalka@redhat.com>

	PR c++/93805
	* except.c (maybe_noexcept_warning): Add TODO.
	* method.c (walk_field_subobs): Pass tf_none to expr_noexcept_p.

2020-03-23  nathans  <nathan@acm.org>

	PR c++/94044
	* tree.c (cp_tree_equal) [SIZEOF_EXPR]: Detect argument pack
	operand.

2020-03-21  Patrick Palka  <ppalka@redhat.com>

	PR c++/94066
	* constexpr.c (reduced_constant_expression_p) [CONSTRUCTOR]: Properly
	handle unions without an initializer.
	(cxx_eval_component_reference): Emit a different diagnostic when the
	constructor element corresponding to a union member is NULL.
	(cxx_eval_bare_aggregate): When constructing a union, always set the
	active union member before evaluating the initializer.  Relax assertion
	that verifies the index of the constructor element we're initializing
	hasn't been changed.
	(cxx_eval_store_expression): Diagnose changing the active union member
	while the union is in the process of being initialized.  After setting
	an active union member, clear CONSTRUCTOR_NO_CLEARING on the underlying
	CONSTRUCTOR.
	(cxx_eval_constant_expression) [PLACEHOLDER_EXPR]: Don't re-reduce a
	CONSTRUCTOR returned by lookup_placeholder.

2020-03-20  Patrick Palka  <ppalka@redhat.com>

	* cxx-pretty-print.c (pp_cxx_parameter_mapping): Make extern.  Move
	the "[with ]" bits to here from ...
	(pp_cxx_atomic_constraint): ... here.
	* cxx-pretty-print.h (pp_cxx_parameter_mapping): Declare.
	* error.c (rebuild_concept_check): Delete.
	(print_concept_check_info): Print the dependent form of the constraint and the
	preferably substituted parameter mapping alongside it.

2020-03-19  Jason Merrill  <jason@redhat.com>

	PR c++/94175
	* cp-gimplify.c (simple_empty_class_p): Look through
	SIMPLE_TARGET_EXPR_P.
	(cp_gimplify_expr) [MODIFY_EXPR]: Likewise.
	[RETURN_EXPR]: Avoid producing 'return *retval;'.
	* call.c (build_call_a): Strip TARGET_EXPR from empty class arg.
	* cp-tree.h (SIMPLE_TARGET_EXPR_P): Check that TARGET_EXPR_INITIAL
	is non-null.

2020-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93931
	* parser.c (cp_parser_omp_var_list_no_open): Call process_outer_var_ref
	on outer_automatic_var_p decls.
	* cp-gimplify.c (cxx_omp_disregard_value_expr): Return true also for
	capture proxy decls.

2020-03-18  Nathan Sidwell  <nathan@acm.org>

	PR c++/94147 - mangling of lambdas assigned to globals
	* parser.c (cp_parser_init_declarator): Namespace-scope variables
	provide a lambda scope.
	* tree.c (no_linkage_check): Lambdas with a variable for extra
	scope have a linkage from the variable.

2020-03-18  Jakub Jelinek  <jakub@redhat.com>

	* constraint.cc (resolve_function_concept_check, subsumes_constraints,
	strictly_subsumes): Fix up duplicated word issue in a comment.
	* coroutines.cc (build_init_or_final_await, captures_temporary):
	Likewise.
	* logic.cc (dnf_size_r, cnf_size_r): Likewise.
	* pt.c (append_type_to_template_for_access_check): Likewise.

	PR c++/91759
	* decl.c (grokfndecl): Restore old diagnostics about deduction
	guide declared in different scope if in_namespace is NULL_TREE.

2020-03-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/90995
	* parser.c (cp_parser_enum_specifier): Use temp_override for
	parser->colon_corrects_to_scope_p, replace goto out with return.
	If scoped enum or enum with underlying type is not followed by
	{ or ;, call cp_parser_commit_to_tentative_parse before calling
	cp_parser_error and make sure to return error_mark_node instead of
	NULL_TREE.  Formatting fixes.

2020-03-17  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR c++/94197
	* method.c (assignable_expr): Use cp_unevaluated.
	(is_xible_helper): Push a non-deferred access check for
	the stub objects created by assignable_expr and constructible_expr.

2020-03-17  Jakub Jelinek  <jakub@redhat.com>

	* pt.c (tsubst): Fix up duplicated word issue in a diagnostic message.
	(lookup_template_class_1, tsubst_expr): Fix up duplicated word issue
	in a comment.
	* parser.c (cp_parser_statement, cp_parser_linkage_specification,
	cp_parser_placeholder_type_specifier,
	cp_parser_constraint_requires_parens): Likewise.
	* name-lookup.c (suggest_alternative_in_explicit_scope): Likewise.

2020-03-15  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (co_await_expander): Fix indentation.

2020-03-14  Jason Merrill  <jason@redhat.com>

	PR c++/92068
	* pt.c (process_partial_specialization): Error rather than crash on
	extra pack expansion.

2020-03-14  Jason Merrill  <jason@redhat.com>

	PR c++/92909
	* pt.c (find_parameter_packs_r): [DECL_EXPR]: Walk
	DECL_ORIGINAL_TYPE of a typedef.

2020-03-14  Jason Merrill  <jason@redhat.com>

	PR c++/93248
	* pt.c (build_deduction_guide): Clear cp_unevaluated_operand for
	substituting DECL_ARGUMENTS.

2020-03-14  Jakub Jelinek  <jakub@redhat.com>

	* logic.cc (formula::formula): Change "a an" to "an" in a comment.
	* parser.c (cp_debug_parser): Change "a an" to "an" in a string
	literal.

2020-03-13  Patrick Palka  <ppalka@redhat.com>

	PR c++/67960
	* call.c (build_over_call): Use a warning_sentinel to disable
	warn_deprecated_decl before calling build_addr_func.

2020-03-12  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94124
	* decl.c (reshape_init_array_1): Don't unshare constructor if there
	aren't any trailing zero elts, otherwise only unshare the first
	nelts.

2020-03-11  Jason Merrill  <jason@redhat.com>

	PR c++/93907
	* constraint.cc (tsubst_parameter_mapping): Canonicalize type
	argument.

2020-03-11  Marek Polacek  <polacek@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/94074 - wrong modifying const object error for COMPONENT_REF.
	* constexpr.c (cref_has_const_field): New function.
	(modifying_const_object_p): Consider a COMPONENT_REF
	const only if any of its fields are const.
	(cxx_eval_store_expression): Mark a CONSTRUCTOR of a const type
	as readonly after its initialization has been done.

2020-03-10  Marek Polacek  <polacek@redhat.com>

	PR c++/94124 - wrong conversion error with non-viable overload.
	* decl.c (reshape_init_array_1): Unshare a constructor if we
	stripped trailing zero-initializers.

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

	PR c++/93901
	* pt.c (maybe_instantiate_noexcept): Always update clones.

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

	PR c++/93596
	* pt.c (maybe_aggr_guide): Check BRACE_ENCLOSED_INITIALIZER_P.

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

	PR c++/93922
	PR c++/94041
	PR c++/52320
	PR c++/66139
	* cp-gimplify.c (cp_gimplify_init_expr): Partially revert patch for
	66139: Don't split_nonconstant_init.  Remove pre_p parameter.

2020-03-09  Marek Polacek  <polacek@redhat.com>

	PR c++/92031 - bogus taking address of rvalue error.
	PR c++/91465 - ICE with template codes in check_narrowing.
	PR c++/93870 - wrong error when converting template non-type arg.
	PR c++/94068 - ICE with template codes in check_narrowing.
	* call.c (convert_like_real): Return IMPLICIT_CONV_EXPR
	in a template when not ck_identity and we're dealing with a class.
	(convert_like_real) <case ck_ref_bind>: Return IMPLICIT_CONV_EXPR
	in a template if we need a temporary.
	* decl.c (compute_array_index_type_loc): Remove
	instantiate_non_dependent_expr_sfinae call.  Call
	fold_non_dependent_expr instead of maybe_constant_value.
	(build_explicit_specifier): Don't instantiate or create a sentinel
	before converting the expression.
	* except.c (build_noexcept_spec): Likewise.
	* pt.c (convert_nontype_argument): Don't build IMPLICIT_CONV_EXPR.
	Set IMPLICIT_CONV_EXPR_NONTYPE_ARG if that's what
	build_converted_constant_expr returned.
	* typeck2.c (check_narrowing): Call fold_non_dependent_expr instead
	of maybe_constant_value.

2020-03-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94067
	Revert
	2019-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* constexpr.c (cxx_eval_constant_expression): Do not handle
	RROTATE_EXPR and LROTATE_EXPR.

2020-03-09  Marek Polacek  <polacek@redhat.com>

	PR c++/94050 - ABI issue with alignas on armv7hl.
	* class.c (layout_class_type): Don't replace a class's
	CLASSTYPE_AS_BASE if their TYPE_USER_ALIGN don't match.

2020-03-09  Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (build_actor_fn): Factor out code inserting the
	default return_void call to...
	(morph_fn_to_coro): ...here, also hoist local var declarations.

2020-03-08  Patrick Palka  <ppalka@redhat.com>

	PR c++/93729
	* call.c (convert_like_real): Check complain before emitting an error
	about binding a bit-field to a reference.

	* cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier)
	[TYPENAME_TYPE]: Print the TYPENAME_TYPE_FULLNAME instead of the
	TYPE_NAME.

2020-03-06  Nathan Sidwell  <nathan@acm.org>

	PR c++/94027
	* mangle.c (find_substitution): Don't call same_type_p on template
	args that cannot match.

2020-03-04  Martin Sebor  <msebor@redhat.com>

	PR c++/90938
	* tree.c (type_initializer_zero_p): Fail for structs initialized
	with non-structs.

2020-03-04  Jason Merrill  <jason@redhat.com>

	PR c++/90432
	* init.c (perform_member_init): Don't do aggregate initialization of
	empty field.
	* constexpr.c (cx_check_missing_mem_inits): Don't enforce
	initialization of empty field.

2020-03-04  Martin Liska  <mliska@suse.cz>

	* method.c: Wrap array in ctor with braces in order
	to silent clang warnings.

2020-03-03  Jason Merrill  <jason@redhat.com>
	    Marek Polacek  <polacek@redhat.com>

	PR c++/90505 - mismatch in template argument deduction.
	* pt.c (tsubst): Don't reduce the template level of template
	parameters when tf_partial.

2020-03-03  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93998
	* constexpr.c (cxx_eval_constant_expression)
	<case TARGET_EXPR, case SAVE_EXPR>: Don't record anything if
	*non_constant_p is true.

2020-03-03  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (captures_temporary): Strip component_ref
	to its base object.

2020-03-03  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (finish_co_await_expr): Build co_await_expr
	with unknown_type_node.
	(finish_co_yield_expr): Ditto.
	*pt.c (type_dependent_expression_p): Set co_await/yield_expr
	with unknown type as dependent.

2020-03-02  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (struct local_var_info): Adjust to remove the
	reference to the captured var, and just to note that this is a
	lambda capture proxy.
	(transform_local_var_uses): Handle lambda captures specially.
	(struct param_frame_data): Add a visited set.
	(register_param_uses): Also check for param uses in lambda
	capture proxies.
	(struct local_vars_frame_data): Remove captures list.
	(register_local_var_uses): Handle lambda capture proxies by
	noting and bypassing them.
	(morph_fn_to_coro): Update to remove lifetime extension of
	lambda capture-by-copy vars.

2020-03-02  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (build_co_await): Do not build frame
	awaitable proxy vars when the co_await expression is
	a function parameter or local var.
	(co_await_expander): Do not initialise a frame var with
	itself.
	(transform_await_expr): Only substitute the awaitable
	frame var if it's needed.
	(register_awaits): Do not make frame copies for param
	or local vars that are awaitables.

2020-02-28  Jason Merrill  <jason@redhat.com>

	Implement P2092R0, Disambiguating Nested-Requirements
	* parser.c (cp_parser_requirement_parameter_list): Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL.

	* call.c (build_user_type_conversion_1): Don't look at the second
	conversion of a non-viable candidate.

2020-02-28  Jakub Jelinek  <jakub@redhat.com>

	P1937R2 - Fixing inconsistencies between const{expr,eval} functions
	* typeck.c (cp_build_addr_expr_1): Allow taking address of immediate
	functions in unevaluated contexts.

2020-02-27  Nathan Sidwell  <nathan@acm.org>

	PR c++/93933
	* pt.c (template_args_equal): Pass ARGUMENT_PACKS through to
	cp_tree_equal.
	* tree.c (cp_tree_equal): Compare ARGUMENT_PACKS here,
	* typeck.c (comptypes): Assert we don't get any argument packs.

	* class.c (adjust_clone_args): Correct arg-checking assert.
	* typeck.c (comptypes): Assert not nulls.

2020-02-26  Marek Polacek  <polacek@redhat.com>

	PR c++/93789 - ICE with invalid array bounds.
	* decl.c (compute_array_index_type_loc): Don't use the folded
	size when folding cleared TREE_CONSTANT.

2020-02-26  Iain Sandoe  <iain@sandoe.co.uk>

	* class.c (classtype_has_non_deleted_copy_ctor): New.
	* coroutines.cc (struct param_info): Keep track of params
	that are references, and cache the original type and whether
	the DTOR is trivial.
	(build_actor_fn): Handle param copies always, and adjust the
	handling for references.
	(register_param_uses): Only handle uses here.
	(classtype_has_non_deleted_copy_ctor): New.
	(morph_fn_to_coro): Adjust param copy handling to match n4849
	by reordering ahead of the promise CTOR and always making a
	frame copy, even if the param is unused in the coroutine body.
	* cp-tree.h (classtype_has_non_deleted_copy_ctor): New.

2020-02-26  Patrick Palka  <ppalka@redhat.com>

	* constraint.cc (finish_constraint_binary_op): Set expr's location range
	to the range of its operands.
	(satisfy_atom): Pass MAP instead of ARGS to diagnose_atomic_constraint.
	(diagnose_trait_expr): Take the instantiated parameter mapping MAP
	instead of the corresponding template arguments ARGS and adjust body
	accordingly.
	(diagnose_requires_expr): Likewise.
	(diagnose_atomic_constraint): Likewise.  When printing an atomic
	constraint expression, print the instantiated parameter mapping
	alongside it.
	* cxx-pretty-print.cc (cxx_pretty_printer::expression)
	[NONTYPE_ARGUMENT_PACK]: Print braces around a NONTYPE_ARGUMENT_PACK.
	(cxx_pretty_printer::type_id): Handle TYPE_ARGUMENT_PACK.

2020-02-26  Marek Polacek  <polacek@redhat.com>

	PR c++/93676 - value-init crash in template.
	* init.c (build_new_1): Don't call build_vec_init in a template.

2020-02-26  Marek Polacek  <polacek@redhat.com>

	PR c++/93862 - ICE with static_cast when converting from int[].
	* call.c (reference_compatible_p): No longer static.
	* cp-tree.h (reference_compatible_p): Declare.
	* typeck.c (build_static_cast_1): Use reference_compatible_p instead
	of reference_related_p.

2020-02-26  Marek Polacek  <polacek@redhat.com>

	PR c++/93803 - ICE with constexpr init and [[no_unique_address]].
	* constexpr.c (reduced_constant_expression_p): Don't crash on a null
	field.

2020-02-24  Martin Sebor  <msebor@redhat.com>

	PR c++/93804
	* parser.c (cp_parser_check_class_key): Avoid issuing -Wredundant-tags
	in shared C/C++ code in headers.
	Remove a duplicate hunk of code.

2020-02-24  Marek Polacek  <polacek@redhat.com>

	PR c++/93869 - ICE with -Wmismatched-tags.
	* parser.c (cp_parser_check_class_key): Check class_key earlier.

2020-02-24  Marek Polacek  <polacek@redhat.com>

	PR c++/93712 - ICE with ill-formed array list-initialization.
	* call.c (next_conversion): Return NULL for ck_aggr.
	(build_aggr_conv): Set u.expr instead of u.next.
	(build_array_conv): Likewise.
	(build_complex_conv): Likewise.
	(conv_get_original_expr): Handle ck_aggr.

2020-02-24  Jakub Jelinek  <jakub@redhat.com>

	P1937R2 - Fixing inconsistencies between const{expr,eval} functions
	* call.c (build_over_call): Don't evaluate immediate functions in
	unevaluated operands.

2020-02-24  Jason Merrill  <jason@redhat.com>

	P0780R2: Resolve lambda init-capture pack grammar.
	* parser.c (cp_parser_lambda_introducer): Expect &...x=y rather than
	...&x=y.

2020-02-22  Marek Polacek  <polacek@redhat.com>

	PR c++/93882
	* decl.c (grokdeclarator): Use %qs in a diagnostic message.

2020-02-21  Martin Sebor  <msebor@redhat.com>

	PR gcov-profile/93753
	* class.c (check_flexarrays): Tighten up a test for potential members
	of anonymous structs or unions.

2020-02-20  Martin Sebor  <msebor@redhat.com>

	PR c++/93801
	* parser.c (cp_parser_check_class_key): Only handle true C++ class-keys.

2020-02-20  Martin Liska  <mliska@suse.cz>

	PR translation/93841
	* config/or1k/or1k.opt: Remove superfluous word.
	* doc/invoke.texi: Likewise.

2020-02-20  Martin Liska  <mliska@suse.cz>

	PR translation/93838
	* parser.c (cp_parser_decl_specifier_seq): Remove trailing space.

2020-02-19  Marek Polacek  <polacek@redhat.com>

	PR c++/93169 - wrong-code with a non-constexpr constructor.
	* constexpr.c (cxx_eval_call_expression): Only set TREE_READONLY
	on constant CONSTRUCTORs.

2020-02-15  Marek Polacek  <polacek@redhat.com>

	PR c++/93710 - poor diagnostic for array initializer.
	* call.c (build_user_type_conversion_1): Use cp_expr_loc_or_input_loc
	for an error call.

2020-02-15  Jason Merrill  <jason@redhat.com>

	PR c++/92556
	* pt.c (any_template_parm_r): Look into lambda body.

	PR c++/92583
	* pt.c (any_template_parm_r): Remove CONSTRUCTOR handling.

2020-02-14  Jakub Jelinek  <jakub@redhat.com>

	PR c++/61414
	* class.c (enum_min_precision): Change prec type from int to int &.

	PR libstdc++/92906
	* cp-tree.h (enum cp_tree_index): Add CPTI_FALLBACK_DFLOAT32_TYPE,
	CPTI_FALLBACK_DFLOAT64_TYPE and CPTI_FALLBACK_DFLOAT128_TYPE.
	(fallback_dfloat32_type, fallback_dfloat64_type,
	fallback_dfloat128_type): Define.
	* mangle.c (write_builtin_type): Handle fallback_dfloat*_type like
	dfloat*_type_node.
	* rtti.c (emit_support_tinfos): Emit DFP typeinfos even when dfp
	is disabled for compatibility.

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

	PR c++/93713
	* name-lookup.c (matching_fn_p): A function does not match a
	template.

	PR c++/93643
	PR c++/91476
	* tree.c (decl_linkage): Always lk_none for locals.

2020-02-12  Jason Merrill  <jason@redhat.com>

	PR c++/92583
	PR c++/92654
	* tree.c (cp_walk_subtrees): Walk CONSTRUCTOR types here.
	* pt.c (find_parameter_packs_r): Not here.

2020-02-12 Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (build_actor_fn): Implement deallocation function
	selection per n4849, dcl.fct.def.coroutine bullet 12.
	(morph_fn_to_coro): Implement allocation function selection per
	n4849, dcl.fct.def.coroutine bullets 9 and 10.

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

	PR c++/93684 - ICE-on-invalid with broken attribute.
	* parser.c (cp_parser_std_attribute): Peek a token first before
	consuming it.

2020-02-11  Jason Merrill  <jason@redhat.com>

	PR c++/93675
	* class.c (add_implicitly_declared_members): Use do_friend.
	* method.c (implicitly_declare_fn): Fix friend handling.
	(decl_remember_implicit_trigger_p): New.
	(synthesize_method): Use it.
	* decl2.c (mark_used): Use it.

2020-02-11  Jason Merrill  <jason@redhat.com>

	PR c++/93650
	PR c++/90691
	* constexpr.c (maybe_constant_value): Correct earlier change.
	(cxx_eval_binary_expression) [SPACESHIP_EXPR]: Pass lval through.
	* method.c (genericize_spaceship): Wrap result in TARGET_EXPR.

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

	PR c++/69448
	PR c++/80471
	* type-utils.h (find_type_usage): Refactor to take a tree * and to
	return a tree *, and update documentation accordingly.
	* pt.c (make_auto_1): Set AUTO_IS_DECLTYPE when building a
	decltype(auto) node.
	(make_constrained_decltype_auto): No need to explicitly set
	AUTO_IS_DECLTYPE anymore.
	(splice_late_return_type): Use find_type_usage to find and
	replace a possibly nested auto node instead of using is_auto.
	Check test for is_auto into an assert when deciding whether
	to late_return_type.
	(type_uses_auto): Adjust the call to find_type_usage.
	* parser.c (cp_parser_decltype): No need to explicitly set
	AUTO_IS_DECLTYPE anymore.

	* error.c (dump_decl) [CONCEPT_DECL]: Use dump_simple_decl.
	(dump_simple_decl): Handle standard concept definitions as well as
	variable concept definitions.

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

	PR other/93641
	* error.c (dump_decl_name): Fix up last argument to strncmp.

2020-02-10  Jason Merrill  <jason@redhat.com>

	PR c++/93618
	* tree.c (array_of_unknown_bound_p): New.
	* init.c (perform_member_init): Do nothing for flexible arrays.

2020-02-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93633
	* constexpr.c (cxx_eval_constant_expression): If obj is heap var with
	ARRAY_TYPE, use the element type.  Punt if objtype after that is not
	a class type.

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

	PR c++/90691
	* expr.c (fold_for_warn): Call maybe_constant_value.
	* constexpr.c (struct constexpr_ctx): Add uid_sensitive bit-field.
	(maybe_constant_value): Add uid_sensitive parm.
	(get_fundef_copy): Don't copy if it's true.
	(cxx_eval_call_expression): Don't instantiate if it's true.
	(cxx_eval_outermost_constant_expr): Likewise.

	PR c++/92852
	* constexpr.c (maybe_constant_value): Don't unshare if the cached
	value is the same as the argument.

	* typeck.c (maybe_warn_about_returning_address_of_local): Add
	location parameter.

	* typeck2.c (process_init_constructor): Also clear TREE_SIDE_EFFECTS
	if appropriate.

2020-02-08  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93549
	* constexpr.c (find_array_ctor_elt): If last element has no index,
	for flag_checking verify all elts have no index.  If i is within the
	elts, return it directly, if it is right after the last elt, append
	if NULL index, otherwise force indexes on all elts.
	(cxx_eval_store_expression): Allow cep->index to be NULL.

2020-02-07  Marek Polacek  <polacek@redhat.com>

	PR c++/92947 - Paren init of aggregates in unevaluated context.
	* call.c (build_new_method_call_1): Don't check
	cp_unevaluated_operand.  Check the return value of digest_init.

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

	PR c++/92654
	* tree.c (cp_walk_subtrees): Walk into type template arguments.
	* cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Use typedef_variant_p
	instead of TYPE_ALIAS_P.
	* pt.c (push_template_decl_real): Likewise.
	(find_parameter_packs_r): Likewise.  Remove dead code.
	* error.c (find_typenames_r): Remove dead code.

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

	PR c++/92517
	* parser.c (cp_parser_constraint_primary_expression): Do the main
	parse non-tentatively.

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

	PR c++/93597 - ICE with lambda in operator function.
	* name-lookup.c (maybe_save_operator_binding): Check is_overloaded_fn.

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

	PR c++/93140
	* pt.c (tsubst_decl) [PARM_DECL]: Check cp_unevaluated_operand in
	handling of TREE_CHAIN for empty pack.

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

	PR c++/93557
	* semantics.c (cp_build_vec_convert): Call decay_conversion on arg
	prior to passing it to c_build_vec_convert.

2020-02-05  Marek Polacek  <polacek@redhat.com>

	PR c++/93559 - ICE with CONSTRUCTOR flags verification.
	* decl.c (reshape_init_array_1): Don't reuse a CONSTRUCTOR with
	TREE_SIDE_EFFECTS.

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

	PR c++/92593
	* decl.c (grokdeclarator): Reject field of current class type even
	in a template.

2020-02-05  Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (maybe_promote_captured_temps): Increase the index
	number for temporary variables' name.

2020-02-05  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (build_co_await): Call convert_from_reference
	to wrap co_await_expr with indirect_ref which avoid
	reference/non-reference type confusion.

	(co_await_expander):  Sink to call_expr if await_resume
	is wrapped by indirect_ref.

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

	PR c++/93551
	* constraint.cc (satisfy_declaration_constraints): Check return
	value of push_tinst_level.

	PR c++/90951
	* constexpr.c (cxx_eval_array_reference): {}-initialize missing
	elements instead of value-initializing them.

	PR c++/86917
	* init.c (perform_member_init): Simplify.
	* constexpr.c (cx_check_missing_mem_inits): Allow uninitialized
	flexarray.
	(cxx_eval_vec_init_1): Handle CONSTRUCTOR.

2020-02-04  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (find_promise_type): Delete unused forward
	declaration.
	(struct coroutine_info): Add a bool for no promise type error.
	(coro_promise_type_found_p): Only emit the error for a missing
	promise once in each affected coroutine.

2020-02-03  Jason Merrill  <jason@redhat.com>

	PR c++/66477
	* constexpr.c (cxx_eval_constant_expression) [PARM_DECL]: Don't
	defer loading the value of a reference.

2020-02-03  Jason Merrill  <jason@redhat.com>

	PR c++/91953
	* constexpr.c (potential_constant_expression_1) [PARM_DECL]: Allow
	empty class type.
	[COMPONENT_REF]: A member function reference doesn't use the object
	as an rvalue.

2020-02-03  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/93458
	* coroutines.cc (struct coroutine_info): Add a bool flag to note
	that we emitted an error for a bad function return type.
	(get_coroutine_info): Tolerate an unset info table in case of
	missing traits.
	(find_coro_traits_template_decl): In case of error or if we didn't
	find a type template, note we emitted the error and suppress
	duplicates.
	(find_coro_handle_template_decl): Likewise.
	(instantiate_coro_traits): Only check for error_mark_node in the
	return from lookup_qualified_name. 
	(coro_promise_type_found_p): Reorder initialization so that we check
	for the traits and their usability before allocation of the info
	table.  Check for a suitable return type and emit a diagnostic for
	here instead of relying on the lookup machinery.  This allows the
	error to have a better location, and means we can suppress multiple
	copies.
	(coro_function_valid_p): Re-check for a valid promise (and thus the
	traits) before proceeding.  Tolerate missing info as a fatal error.

2020-02-03  Jason Merrill  <jason@redhat.com>

	PR c++/88256
	* cp-gimplify.c (predeclare_vla): New.
	(cp_genericize_r) [NOP_EXPR]: Call it.

2020-02-03  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (transform_await_wrapper): Set actor funcion as
	new context of label_decl.
	(build_actor_fn): Fill new field of await_xform_data.

2020-02-02  Marek Polacek  <polacek@redhat.com>

	PR c++/93530 - ICE on invalid alignas in a template.
	* decl.c (grokdeclarator): Call cplus_decl_attributes instead of
	decl_attributes.

2020-01-31  Jason Merrill  <jason@redhat.com>

	PR c++/86216
	* semantics.c (process_outer_var_ref): Capture VLAs even in
	unevaluated context.

	PR c++/14179
	* decl.c (reshape_init_array_1): Reuse a single CONSTRUCTOR with
	non-aggregate elements.
	(reshape_init_array): Add first_initializer_p parm.
	(reshape_init_r): Change first_initializer_p from bool to tree.
	(reshape_init): Pass init to it.

	PR c++/14179
	* parser.c (cp_parser_initializer_list): Suppress location wrappers
	after 256 elements.

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

	PR c++/82521
	* pt.c (tsubst_copy_and_build) [EQ_EXPR]: Only suppress warnings if
	the expression was dependent before substitution.

2020-01-30  Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (act_des_fn): New.
	(morph_fn_to_coro): Call act_des_fn to build actor/destroy decls.
	Access promise via actor function's frame pointer argument.
	(build_actor_fn, build_destroy_fn): Use frame pointer argument.

2020-01-30  Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (co_await_expander): Handle type conversion case.

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

	PR c++/90333
	PR c++/89640
	PR c++/60503
	* parser.c (cp_parser_type_specifier_seq): Don't parse attributes in
	a trailing return type.
	(cp_parser_lambda_declarator_opt): Parse C++11 attributes before
	parens.

2020-01-29  Marek Polacek  <polacek@redhat.com>

	PR c++/91754 - Fix template arguments comparison with class NTTP.
	* pt.c (class_nttp_const_wrapper_p): New.
	(template_args_equal): See through class_nttp_const_wrapper_p
	arguments.

2020-01-29  Marek Polacek  <polacek@redhat.com>

	PR c++/92948 - Fix class NTTP with template arguments.
	* pt.c (convert_nontype_argument): Use IMPLICIT_CONV_EXPR when
	converting a value-dependent expression to a class type.
	(tsubst_copy) <case VIEW_CONVERT_EXPR>: Allow IMPLICIT_CONV_EXPR
	as the result of the tsubst_copy call.

2020-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/91118
	* cp-gimplify.c (cxx_omp_predetermined_sharing): Return
	OMP_CLAUSE_DEFAULT_SHARED for typeinfo decls.

2020-01-28  Jason Merrill  <jason@redhat.com>

	PR c++/93442
	* parser.c (cp_parser_lambda_expression): Clear in_discarded_stmt.

	PR c++/93477
	PR c++/91476
	* decl2.c (copy_linkage): Do copy DECL_ONE_ONLY and DECL_WEAK.

	PR c++/90546
	* call.c (build_user_type_conversion_1): Allow a template conversion
	returning an rvalue reference to bind directly to an lvalue.

	PR c++/90731
	* decl.c (grokdeclarator): Propagate eh spec from typedef.

2020-01-28  Martin Liska  <mliska@suse.cz>

	PR c++/92440
	* pt.c (redeclare_class_template): Group couple of
	errors and inform messages with auto_diagnostic_group.

2020-01-28  Martin Liska  <mliska@suse.cz>

	PR c++/92440
	* pt.c (redeclare_class_template): Use inform
	for the second location.

2020-01-27  Jason Merrill  <jason@redhat.com>

	PR c++/90966
	* pt.c (tsubst_copy) [STRING_CST]: Don't use fold_convert.

2020-01-27  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/93443
	* coroutines.cc (morph_fn_to_coro): Check the ramp return
	value when it is constructed from the 'get return object'.

2020-01-27  Nathan Sidwell  <nathan@acm.org>

	PR c++/91826
	* name-lookup.c (is_ancestor): Allow CHILD to be a namespace alias.

2020-01-26  Jason Merrill  <jason@redhat.com>

	PR c++/90992
	* except.c (maybe_noexcept_warning): Check DECL_IN_SYSTEM_HEADER and
	temporarily enable -Wsystem-headers.  Change second warning to
	conditional inform.

	PR c++/90997
	* semantics.c (finish_call_expr): Don't call
	instantiate_non_dependent_expr before warn_for_memset.

2020-01-25  Marek Polacek  <polacek@redhat.com>

	PR c++/93414 - poor diagnostic for dynamic_cast in constexpr context.
	* constexpr.c (cxx_eval_dynamic_cast_fn): Add a reference
	dynamic_cast diagnostic.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/93400 - ICE with constrained friend.
	* constraint.cc (maybe_substitute_reqs_for): New.
	* decl.c (function_requirements_equivalent_p): Call it.
	* pt.c (tsubst_friend_function): Only substitute
	TEMPLATE_PARMS_CONSTRAINTS.
	(tsubst_template_parms): Copy constraints.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/93279 - ICE with lambda in member operator.
	* name-lookup.c (maybe_save_operator_binding): Don't remember
	class-scope bindings.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/93377 - ICE with member alias in constraint.
	* pt.c (any_template_parm_r): Look at template arguments for all
	aliases, not only alias templates.

2020-01-24  Marek Polacek  <polacek@redhat.com>

	PR c++/93299 - ICE in tsubst_copy with parenthesized expression.
	* pt.c (tsubst_copy): Handle a REF_PARENTHESIZED_P VIEW_CONVERT_EXPR.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/92852 - ICE with generic lambda and reference var.
	* constexpr.c (maybe_constant_value): Likewise.

2020-01-23  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/92804
	* parser.c (cp_parser_nested_name_specifier_opt): Properly
	diagnose concept-ids.

2020-01-23  Jason Merrill  <jason@redhat.com>

	PR c++/93331 - ICE with __builtin_strchr.
	* constexpr.c (cxx_eval_builtin_function_call): Use the original
	argument if we didn't manage to extract a STRING_CST.

	PR c++/93345 - ICE with defaulted dtor and template.
	PR c++/33799
	* decl.c (cxx_maybe_build_cleanup): Don't try to set
	throwing_cleanup in a template.

2020-01-22  Marek Polacek  <polacek@redhat.com>

	PR c++/92907 - noexcept does not consider "const" in member functions.
	* g++.dg/cpp0x/noexcept56.C: New test.

2020-01-22  Marek Polacek  <polacek@redhat.com>

	PR c++/93324 - ICE with -Wall on constexpr if.
	* semantics.c (is_std_constant_evaluated_p): Check fndecl.

2020-01-22  Patrick Palka  <ppalka@redhat.com>

	* constraint.cc (get_mapped_args): Avoid using auto_vec
	as a vector element.  Release the vectors inside the lists
	vector.
	* parser.c (cp_literal_operator_id): Free the buffer.

2020-01-22  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (finish_co_await_expr): Add error check on return
	value of build_co_await.
	(finish_co_yield_expr,): Ditto.

2020-01-22  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (lookup_awaitable_member): Lookup an awaitable member.
	(lookup_promise_method): Emit diagnostic when get NULL_TREE back only.
	(build_co_await): Use lookup_awaitable_member instead of lookup_member.

2020-01-21  Jason Merrill  <jason@redhat.com>

	PR c++/60855 - ICE with sizeof VLA capture.
	* lambda.c (is_lambda_ignored_entity): Don't look past VLA capture.

	PR c++/90732 - ICE with VLA capture and generic lambda.
	* pt.c (tsubst_lambda_expr): Repeat add_capture for VLAs.

2020-01-21  Iain Sandoe  <iain@sandoe.co.uk>
	    Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (coro_promise_type_found_p): Check for NULL return
	from complete_type_or_else.
	(register_param_uses): Likewise.
	(build_co_await): Do not try to use complete_type_or_else for void
	types, otherwise for incomplete types, check for NULL return from
	complete_type_or_else.

2020-01-21  Jason Merrill  <jason@redhat.com>

	PR c++/91476 - anon-namespace reference temp clash between TUs.
	* decl2.c (copy_linkage): Factor out of get_guard.
	* call.c (make_temporary_var_for_ref_to_temp): Use it.
	* decl.c (cp_finish_decomp): Use it.
	(cp_finish_decl): determine_visibility sooner.

2020-01-21  Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (finish_co_await_expr): Set return value flag.
	(finish_co_yield_expr, morph_fn_to_coro): Ditto.

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

	PR c++/33799 - destroy return value, take 2.
	* cp-tree.h (current_retval_sentinel): New macro.
	(struct language_function): Add throwing_cleanup bitfield.
	* decl.c (cxx_maybe_build_cleanup): Set it.
	* except.c (maybe_set_retval_sentinel)
	(maybe_splice_retval_cleanup): New functions.
	* parser.c (cp_parser_compound_statement): Call
	maybe_splice_retval_cleanup.
	* typeck.c (check_return_expr): Call maybe_set_retval_sentinel.

	* parser.c (cp_parser_lambda_body): Use cp_parser_function_body.

2020-01-18  Jakub Jelinek  <jakub@redhat.com>

	* coroutines.cc (get_fn_local_identifier): Fix NO_DOT_IN_LABEL
	but non-NO_DOLLAR_IN_LABEL case build.

2020-01-18  Iain Sandoe  <iain@sandoe.co.uk>

	* Make-lang.in: Add coroutines.o.
	* cp-tree.h (lang_decl-fn): coroutine_p, new bit.
	(DECL_COROUTINE_P): New.
	* lex.c (init_reswords): Enable keywords when the coroutine flag
	is set,
	* operators.def (co_await): New operator.
	* call.c (add_builtin_candidates): Handle CO_AWAIT_EXPR.
	(op_error): Likewise.
	(build_new_op_1): Likewise.
	(build_new_function_call): Validate coroutine builtin arguments.
	* constexpr.c (potential_constant_expression_1): Handle
	CO_AWAIT_EXPR, CO_YIELD_EXPR, CO_RETURN_EXPR.
	* coroutines.cc: New file.
	* cp-objcp-common.c (cp_common_init_ts): Add CO_AWAIT_EXPR,
	CO_YIELD_EXPR, CO_RETRN_EXPR as TS expressions.
	* cp-tree.def (CO_AWAIT_EXPR, CO_YIELD_EXPR, (CO_RETURN_EXPR): New.
	* cp-tree.h (coro_validate_builtin_call): New.
	* decl.c (emit_coro_helper): New.
	(finish_function): Handle the case when a function is found to
	be a coroutine, perform the outlining and emit the outlined
	functions. Set a bit to signal that this is a coroutine component.
	* parser.c (enum required_token): New enumeration RT_CO_YIELD.
	(cp_parser_unary_expression): Handle co_await.
	(cp_parser_assignment_expression): Handle co_yield.
	(cp_parser_statement): Handle RID_CO_RETURN.
	(cp_parser_jump_statement): Handle co_return.
	(cp_parser_operator): Handle co_await operator.
	(cp_parser_yield_expression): New.
	(cp_parser_required_error): Handle RT_CO_YIELD.
	* pt.c (tsubst_copy): Handle CO_AWAIT_EXPR.
	(tsubst_expr): Handle CO_AWAIT_EXPR, CO_YIELD_EXPR and
	CO_RETURN_EXPRs.
	* tree.c (cp_walk_subtrees): Likewise.

2020-01-17  Jason Merrill  <jason@redhat.com>

	PR c++/92531 - ICE with noexcept(lambda).
	* pt.c (uses_template_parms): Don't try to enumerate all the
	expression cases.

2020-01-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93228
	* parser.c (cp_parser_template_name): Look up deprecated attribute
	in DECL_TEMPLATE_RESULT or its type's attributes.

2020-01-16  Jason Merrill  <jason@redhat.com>

	PR c++/93286 - ICE with __is_constructible and variadic template.
	* pt.c (tsubst) [TREE_LIST]: Handle pack expansion.
	(tsubst_copy_and_build) [TRAIT_EXPR]: Always use tsubst for type2.

	PR c++/93280 - ICE with aggregate assignment and DMI.
	* init.c (get_nsdmi): Set TARGET_EXPR_DIRECT_INIT_P here.
	* typeck2.c (digest_nsdmi_init): Not here.

2020-01-15  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/91073
	* cp-tree.h (is_constrained_auto): New.
	* parser.c (cp_parser_maybe_commit_to_declaration): Correctly
	handle concept-check expressions; take a cp_decl_specifier_seq*
	instead of a bool.
	(cp_parser_condition): Update call.
	(cp_parser_simple_declaration): Likewise.
	(cp_parser_placeholder_type_specifier): Correctly handle
	concept-check expressions.

2020-01-15  Jason Merrill  <jason@redhat.com>

	Revert
	PR c++/33799 - destroy return value if local cleanup throws.
	* cp-tree.h (current_retval_sentinel): New macro.
	* decl.c (start_preparsed_function): Set up cleanup for retval.
	* typeck.c (check_return_expr): Set current_retval_sentinel.

	PR c++/93257 - consteval void function.
	* constexpr.c (verify_constant): Allow void_node.

	PR c++/92871 - bad code with xvalue and GNU ?: extension.
	* call.c (prevent_lifetime_extension): New.
	(build_conditional_expr_1): Use it.

2020-01-14  Nathan Sidwell  <nathan@acm.org>

	PR c++/90916
	* pt.c (retrieve_specialization): Use get_template_info, not open
	coding access.

	PR c++/90916
	* pt.c (retrieve_specialization): Get the TI from the decl or the
	classtype as appropriate.

2020-01-14  David Malcolm  <dmalcolm@redhat.com>

	* cp-gimplify.c (source_location_table_entry_hash::empty_zero_p):
	New static constant.
	* cp-tree.h (named_decl_hash::empty_zero_p): Likewise.
	(struct named_label_hash::empty_zero_p): Likewise.
	* decl2.c (mangled_decl_hash::empty_zero_p): Likewise.

2020-01-14  Jason Merrill  <jason@redhat.com>

	PR c++/92590 - wrong handling of inherited default ctor.
	* class.c (add_method): A constrained inherited ctor doesn't hide an
	implicit derived ctor.
	Revert:
	PR c++/92552 - ICE with inherited constrained default ctor.
	* pt.c (instantiate_class_template_1): Copy
	TYPE_HAS_USER_CONSTRUCTOR.
	PR c++/91930 - ICE with constrained inherited default ctor.
	* name-lookup.c (do_class_using_decl): Set TYPE_HAS_USER_CONSTRUCTOR
	for inherited constructor.
	PR c++/92594 - ICE with inherited trivial default ctor.
	* method.c (trivial_fn_p): Treat an inherited default constructor
	like a normal default constructor.

	PR c++/92594 - ICE with inherited trivial default ctor.
	* method.c (trivial_fn_p): Treat an inherited default constructor
	like a normal default constructor.

	PR c++/92009 - ICE with punning of typeid.
	* rtti.c (get_tinfo_desc): Call xref_basetypes.
	* constexpr.c (cxx_fold_indirect_ref): Don't strip
	REINTERPRET_CAST_P.

2020-01-13  Jason Merrill  <jason@redhat.com>

	PR c++/92746 - ICE with noexcept of function concept check.
	* except.c (check_noexcept_r): Handle concept-check.

	PR c++/92582 - ICE with member template as requirement.
	* pt.c (struct find_template_parameter_info): Add ctx_parms.
	(any_template_parm_r): Handle TEMPLATE_DECL.
	(find_template_parameters): Take parms instead of their depth.
	* constraint.cc (build_parameter_mapping): Pass them.

	PR c++/33799 - destroy return value if local cleanup throws.
	* cp-tree.h (current_retval_sentinel): New macro.
	* decl.c (start_preparsed_function): Set up cleanup for retval.
	* typeck.c (check_return_expr): Set current_retval_sentinel.

	PR c++/93238 - short right-shift with enum.
	* typeck.c (cp_build_binary_op): Use folded op1 for short_shift.

2020-01-10  Jason Merrill  <jason@redhat.com>

	* typeck.c (cp_build_binary_op): Restore short_shift code.

	PR c++/93143 - incorrect tree sharing with constexpr.
	* constexpr.c (cxx_eval_outermost_constant_expr): Don't assume
	CONSTRUCTORs are already unshared.

	PR c++/93173 - incorrect tree sharing.
	PR c++/93033
	* cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr): Use
	copy_if_shared after cp_genericize_tree.
	* typeck2.c (split_nonconstant_init): Don't unshare here.

2020-01-08  Jason Merrill  <jason@redhat.com>

	* cp-gimplify.c (cp_gimplify_expr) [TARGET_EXPR]: Check
	TARGET_EXPR_DIRECT_INIT_P.
	* constexpr.c (cxx_eval_constant_expression): Likewise.

2020-01-08  Jason Merrill  <jason@redhat.com>

	PR c++/91369 - constexpr destructor and member initializer.
	* constexpr.c (cxx_eval_store_expression): Look through TARGET_EXPR
	when not preevaluating.

2020-01-08  Jason Merrill  <jason@redhat.com>

	* constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE
	support.

2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* init.c (build_new): Add location_t parameter and use it throughout.
	(build_raw_new_expr): Likewise.
	* parser.c (cp_parser_new_expression): Pass the combined_loc.
	* pt.c (tsubst_copy_and_build): Adjust call.
	* cp-tree.h: Update declarations.

2020-01-07  Jason Merrill  <jason@redhat.com>

	PR c++/47877 - -fvisibility-inlines-hidden and member templates.
	* decl2.c (determine_visibility): -fvisibility-inlines-hidden beats
	explicit class visibility for a template.

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

	* mangle.c (mangle_type_attribute_p): New function, split out from...
	(write_CV_qualifiers_for_type): ...here.  Don't mangle attributes
	that contain a space.

2020-01-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/91369
	* constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count
	member, initialize it to zero in ctor.
	(cxx_eval_call_expression): Bump heap_dealloc_count when deleting
	a heap object.  Don't cache calls to functions which allocate some
	heap objects and don't deallocate them or deallocate some heap
	objects they didn't allocate.

2020-01-06  Jason Merrill  <jason@redhat.com>

	PR c++/92552 - ICE with inherited constrained default ctor.
	* pt.c (instantiate_class_template_1): Copy
	TYPE_HAS_USER_CONSTRUCTOR.
	* class.c (one_inherited_ctor): Don't set it here.

2020-01-06  Andrew Sutton  <asutton@lock3software.com>

	PR c++/92739 - parsing requires clause with attributes.
	* parser.c (cp_parser_constraint_requires_parens): Exclude
	attributes as postfix expressions.

2020-01-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93138
	* parser.c (cp_parser_check_class_key): Disable access checks for the
	simple name lookup.
	(cp_parser_maybe_warn_enum_key): Likewise.  Return early if
	!warn_redundant_tags.

2010-01-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93046
	* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
	TARGET_EXPR if it has been gimplified already.

2020-01-03  Jason Merrill  <jason@redhat.com>

	PR c++/93033 - incorrect tree node sharing with array init.
	* typeck2.c (split_nonconstant_init): Unshare non-decl.
	* cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions.

2020-01-02  Jason Merrill  <jason@redhat.com>

	* pt.c (invalid_nontype_parm_type_p): Reject class placeholder in
	C++17.

2020-01-02  Jakub Jelinek  <jakub@redhat.com>

	PR c/90677
	* cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name
	has not been found, rather than error_mark_node.

2020-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

Copyright (C) 2020 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.
