2022-05-27  Release Manager

	* GCC 9.5.0 released.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/101078
	* pt.c (tsubst_baselink): Update binfos in non-dependent case.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/99066
	* pt.c (mark_decl_instantiated): Set DECL_EXTERNAL.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/100838
	PR c++/105265
	* call.c (convert_like_internal): Clear tf_no_cleanup when
	recursing.
	(build_user_type_conversion_1): Only add ck_rvalue if
	LOOKUP_ONLYCONVERTING.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/91217
	* pt.c (tsubst_lambda_expr): Skip the body block from
	DECL_SAVED_TREE.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/99643
	* typeck2.c (massage_init_elt): Don't strip TARGET_EXPR.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/65211
	* pt.c (tsubst_decl) [TYPE_DECL]: Copy TYPE_ALIGN.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/101698
	* pt.c (tsubst_baselink): Also check dependent optype.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/101442
	* decl.c (cp_finish_decl): Don't pass decl to push_cleanup.
	* init.c (perform_member_init): Likewise.
	* semantics.c (push_cleanup): Adjust comment.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/98249
	* call.c (build_operator_new_call): Just look in ::.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/104646
	* constexpr.c (maybe_save_constexpr_fundef): Don't do extra
	checks for defaulted ctors.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/59950
	* call.c (build_over_call): Use cp_build_indirect_ref.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/99901
	* decl.c (cp_finish_decl): mark_needed an implicitly inline
	static data member with an out-of-class redeclaration.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/101717
	* lambda.c (lambda_expr_this_capture): Check all enclosing
	lambdas for completeness.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/90664
	* cvt.c (can_convert_qual): Check fnptr_conv_p.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/95870
	* pt.c (enclosing_instantiation_of): Compare DECL_SOURCE_LOCATION if
	there is no enclosing non-lambda function.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/96311
	* typeck.c (check_return_expr): Call mark_exp_read in dependent
	case.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/96673
	* init.c (get_nsdmi): Don't defer access checking.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/91933
	* class.c (build_base_path): Shortcut simple non-pointer case.

2022-05-13  Jason Merrill  <jason@redhat.com>

	PR c++/100032
	* pt.c (get_underlying_template): Compare TYPE_QUALS.

2022-05-13  Jakub Jelinek  <jakub@redhat.com>

	PR c++/67184
	PR c++/69445
	* call.c (build_new_method_call_1): Remove set but not used variable
	binfo.

2022-05-11  Patrick Palka  <ppalka@redhat.com>

	Backported from master:
	2022-03-26  Patrick Palka  <ppalka@redhat.com>

	PR c++/103455
	* call.c (add_builtin_candidate) <case MEMBER_REF>: Test
	CLASS_TYPE_P instead of MAYBE_CLASS_TYPE_P.

2022-05-11  Patrick Palka  <ppalka@redhat.com>

	Backported from master:
	2022-01-25  Patrick Palka  <ppalka@redhat.com>

	PR c++/101532
	PR c++/104225
	* decl2.c (mark_used): Don't consider maybe_instantiate_noexcept
	on a deleted function.

2022-05-11  Patrick Palka  <ppalka@redhat.com>

	Backported from master:
	2021-04-14  Patrick Palka  <ppalka@redhat.com>

	PR c++/83476
	PR c++/99885
	* pt.c (deducible_expression): Look through implicit
	INDIRECT_REFs as well.

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

	Backported from master:
	2022-04-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/105256
	* typeck2.c (process_init_constructor_array,
	process_init_constructor_record, process_init_constructor_union): Move
	CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag from CONSTRUCTOR elements to the
	containing CONSTRUCTOR.

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

	Backported from master:
	2022-03-26  Jakub Jelinek  <jakub@redhat.com>

	* parser.c (cp_parser_postfix_expression)
	<case RID_BILTIN_CONVERTVECTOR>: Don't
	return cp_build_vec_convert result right away, instead
	set postfix_expression to it and break.

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

	Backported from master:
	2022-03-24  Jakub Jelinek  <jakub@redhat.com>

	PR c++/104994
	* constexpr.c (potential_constant_expression_1): Don't diagnose extern
	thread_local declarations.
	* decl.c (start_decl): Likewise.

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

	Backported from master:
	2022-03-09  Jakub Jelinek  <jakub@redhat.com>

	PR c/104711
	* constexpr.c (cxx_eval_check_shift_p): Use TYPE_OVERFLOW_WRAPS
	instead of TYPE_UNSIGNED.
	* typeck.c (cp_build_binary_op): Don't emit
	-Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS.

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

	Backported from master:
	2022-03-08  Jakub Jelinek  <jakub@redhat.com>

	PR c++/104806
	* search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Ignore
	identifiers with space at the end.

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

	Backported from master:
	2022-02-14  Jakub Jelinek  <jakub@redhat.com>

	PR c++/104513
	* constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
	Don't punt if returns (target).

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

	Backported from master:
	2022-02-11  Jakub Jelinek  <jakub@redhat.com>

	PR c++/104472
	* constexpr.c (cxx_eval_internal_function) <case IFN_VEC_CONVERT>:
	Only return fold_const_call result if it is non-NULL.  Otherwise
	fall through into the default: case to return t, set *non_constant_p
	and emit diagnostics if needed.

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

	Backported from master:
	2021-11-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/70796
	* cp-gimplify.c (cp_gimplify_arg): New function.
	(cp_gimplify_expr): Use cp_gimplify_arg instead of gimplify_arg,
	pass true as last argument to it if there are any following
	arguments in strong evaluation order with side-effects.

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

	Backported from master:
	2021-10-19  Jakub Jelinek  <jakub@redhat.com>

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

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

	Backported from master:
	2021-10-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/102548
	* tree.c (apply_identity_attributes): Fix handling of the
	case where an attribute in the list doesn't affect type
	identity but some attribute before it does.

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

	Backported from master:
	2021-09-15  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88578
	PR c++/102295
	* typeck2.c (split_nonconstant_init_1): Don't throw away empty
	initializers of flexible array members if they have non-zero type
	size.

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

	Backported from master:
	2021-09-14  Jakub Jelinek  <jakub@redhat.com>

	PR c++/102295
	* decl.c (layout_var_decl): For aggregates ending with a flexible
	array member, add the size of the initializer for that member to
	DECL_SIZE and DECL_SIZE_UNIT.

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

	Backported from master:
	2021-09-14  Jakub Jelinek  <jakub@redhat.com>

	PR c++/102305
	* method.c (is_xible_helper): Call complete_type on to.

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

	Backported from master:
	2021-07-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/101516
	* semantics.c (finish_omp_reduction_clause): Also call
	complete_type_or_else and return true if it fails.

2022-05-11  Tobias Burnus  <tobias@codesourcery.com>

	Backported from master:
	2021-05-04  Tobias Burnus  <tobias@codesourcery.com>

	* semantics.c (finish_omp_reduction_clause): Accept float + complex
	for || and && reductions.

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

	Backported from master:
	2021-07-15  Jakub Jelinek  <jakub@redhat.com>

	PR c++/101443
	* cp-gimplify.c (cp_fold): For comparisons with NULLPTR_TYPE
	operands, fold them right away to true or false.

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

	Backported from master:
	2021-06-21  Jakub Jelinek  <jakub@redhat.com>

	PR inline-asm/100785
	* typeck.c (cxx_mark_addressable): Diagnose trying to make
	bit-fields addressable.

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

	Backported from master:
	2021-05-25  Jakub Jelinek  <jakub@redhat.com>

	PR c++/100666
	* call.c (convert_arg_to_ellipsis): For expressions with NULLPTR_TYPE
	and side-effects, temporarily disable -Wunused-result warning when
	building COMPOUND_EXPR.

2021-06-01  Release Manager

	* GCC 9.4.0 released.

2021-05-28  Jason Merrill  <jason@redhat.com>

	PR c++/100797
	PR c++/95719
	* call.c (build_over_call): Adjust base_binfo in
	resolves_to_fixed_type_p case.

2021-05-21  Jason Merrill  <jason@redhat.com>

	PR c++/97938
	* cp-tree.h (PACK_EXPANSION_AUTO_P): New.
	* lambda.c (add_capture): Set it.
	* pt.c (tsubst_pack_expansion): Handle it.

2021-05-21  Jason Merrill  <jason@redhat.com>

	PR c++/52625
	* pt.c (maybe_process_partial_specialization): Check
	DECL_SELF_REFERENCE_P.

2021-05-21  Jason Merrill  <jason@redhat.com>

	PR c++/80456
	* call.c (build_new_method_call_1): Check again for side-effects
	with a volatile object.

2021-04-30  Jason Merrill  <jason@redhat.com>

	PR c++/95719
	* call.c (build_over_call): Look up the overrider in base_binfo.
	* class.c (lookup_vfn_in_binfo): Look through BINFO_PRIMARY_P.

2021-04-21  Patrick Palka  <ppalka@redhat.com>

	Backported from master:
	2021-02-23  Patrick Palka  <ppalka@redhat.com>

	PR c++/95468
	* pt.c (tsubst_copy_and_build) <case BASELINK>: New case, copied
	over from tsubst_copy.

2021-04-21  Patrick Palka  <ppalka@redhat.com>

	Backported from master:
	2020-08-05  Patrick Palka  <ppalka@redhat.com>
		    Jason Merrill  <jason@redhat.com>

	PR c++/96282
	* constexpr.c (cxx_eval_vec_init_1): Truncate ctx->ctor and
	then clear CONSTRUCTOR_NO_CLEARING on each appended element
	initializer if we're initializing a previously zero-initialized
	array object.

2021-04-21  Patrick Palka  <ppalka@redhat.com>

	Backported from master:
	2020-07-30  Patrick Palka  <ppalka@redhat.com>

	PR c++/64194
	* pt.c (resolve_overloaded_unification): If the function
	template specialization has a placeholder return type,
	then instantiate it before attempting unification.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	PR c++/99833
	* pt.c (extract_locals_r): When handling DECL_EXPR of a structured
	binding, add to data.internal also all corresponding structured
	binding decls.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-30  Jakub Jelinek  <jakub@redhat.com>

	PR c++/99790
	* cp-gimplify.c (cp_gimplify_expr): Handle PTRMEM_CST.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-30  Jakub Jelinek  <jakub@redhat.com>

	PR c++/99745
	* decl2.c (grokbitfield): Diagnose bitfields containing bare parameter
	packs and don't set DECL_BIT_FIELD_REPRESENTATIVE in that case.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-30  Jakub Jelinek  <jakub@redhat.com>

	PR c++/99650
	* decl.c (cp_finish_decomp): Diagnose void initializers when
	using tuple_element and get.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/99613
	* decl.c (expand_static_init): For thread guards, call __cxa_atexit
	before calling __cxa_guard_release rather than after it.  Formatting
	fixes.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/82959
	* call.c (op_is_ordered): Handle TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR
	and COMPOUND_EXPR.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/95451
	* lambda.c (is_lambda_ignored_entity): Before checking for
	LAMBDA_FUNCTION_P, use OVL_FIRST.  Drop FUNCTION_DECL check.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR sanitizer/99106
	* init.c (build_zero_init_1): For flexible array members just return
	NULL_TREE instead of returning empty CONSTRUCTOR with non-complete
	ARRAY_TYPE.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/99033
	* init.c (build_zero_init_1): Handle zero initialiation of
	flexible array members like initialization of [0] arrays.
	Use integer_minus_onep instead of comparison to integer_minus_one_node
	and integer_zerop instead of comparison against size_zero_node.
	Formatting fixes.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/97878
	* decl.c (check_array_initializer): For structured bindings, require
	the array type to be complete.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/33661
	PR c++/98847
	* decl.c (cp_finish_decl): For register vars with asmspec in templates
	call set_user_assembler_name and set DECL_HARD_REGISTER.
	* pt.c (tsubst_expr): When instantiating DECL_HARD_REGISTER vars,
	pass asmspec_tree to cp_finish_decl.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR sanitizer/95693
	* init.c (build_zero_init_1): Revert the 2018-03-06 change to
	return build_zero_cst for reference types.
	* typeck2.c (process_init_constructor_record): Instead call
	build_zero_cst here during error recovery instead of build_zero_init.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/98672
	* constexpr.c (check_for_return_continue_data): Add break_stmt member.
	(check_for_return_continue): Also look for BREAK_STMT.  Handle
	SWITCH_STMT by ignoring break_stmt from its body.
	(potential_constant_expression_1) <case FOR_STMT>,
	<case WHILE_STMT>: If the condition isn't constant true, check if
	the loop body can contain a return stmt.
	<case SWITCH_STMT>: Adjust check_for_return_continue_data initializer.
	<case IF_STMT>: If recursion with tf_none is successful,
	merge *jump_target from the branches - returns with highest priority,
	breaks or continues lower.  If then branch is potentially constant and
	doesn't return, check the else branch if it could return, break or
	continue.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-01-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/98187
	* parser.c (cp_parser_omp_parallel): For parallel master with
	-fopenmp-simd only, just call cp_parser_omp_master instead of
	wrapping it in OMP_PARALLEL.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2021-01-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/98072
	* parser.c (cp_parser_omp_depobj): Suppress location wrappers when
	parsing depend clause.

2021-04-20  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2020-11-12  Jakub Jelinek  <jakub@redhat.com>

	PR c++/97663
	* parser.c (cp_parser_init_declarator): Don't try to parse
	C++17 deduction guides if there are any type specifiers even when
	type is NULL.

2021-03-06  Tobias Burnus  <tobias@codesourcery.com>

	Backported from master:
	2021-03-05  Tobias Burnus  <tobias@codesourcery.com>

	PR c/99137
	* parser.c (cp_parser_oacc_clause_async): Reject comma expressions.

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

	PR c++/98810
	* pt.c (tsubst_copy) [VIEW_CONVERT_EXPR]: Add const
	to a class non-type template argument that needs it.

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

	PR c++/95675
	* call.c (build_temp): Wrap a CALL_EXPR in a TARGET_EXPR
	if it didn't get one before.

2021-02-27  Jason Merrill  <jason@redhat.com>

	PR c++/90333
	* parser.c (cp_parser_lambda_declarator_opt): Accept GNU attributes
	between () and ->.

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

	PR c++/63707
	* tree.c (build_vec_init_expr): Don't call build_vec_init_elt
	if we got a CONSTRUCTOR.

2020-12-16  Nathan Sidwell  <nathan@acm.org>

	* parser.c (cp_parser_elaborated_type_specifier): Test
	BOUND_TEMPLATE_TEMPLATE_PARM before checking for instantiation.

2020-11-26  Thomas Schwinge  <thomas@codesourcery.com>

	Backported from master:
	2020-11-26  Thomas Schwinge  <thomas@codesourcery.com>

	* parser.c (cp_parser_omp_var_list_no_open): Assert that array
	section's 'low_bound', 'length' are not location wrapper nodes.
	(cp_parser_oacc_all_clauses, cp_parser_oacc_cache): Instantiate
	'auto_suppress_location_wrappers'.

2020-11-25  Thomas Schwinge  <thomas@codesourcery.com>

	Backported from master:
	2020-11-25  Thomas Schwinge  <thomas@codesourcery.com>

	* pt.c (tsubst_omp_clauses): Handle 'OMP_CLAUSE__CACHE_'.
	(tsubst_expr): Handle 'OACC_CACHE'.

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

	PR c++/95158
	* class.c (lookup_vfn_in_binfo): New.
	* call.c (build_over_call): Use it.
	(build_new_method_call_1): Don't set LOOKUP_NONVIRTUAL.
	* cp-tree.h (resolves_to_fixed_type_p): Add default argument.
	(lookup_vfn_in_binfo): Declare.

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

	Backported from master:
	2020-10-07  Patrick Palka  <ppalka@redhat.com>

	PR c++/88115
	PR libstdc++/97273
	* tree.c (cp_tree_equal) <case ALIGNOF_EXPR>: Return false if
	ALIGNOF_EXPR_STD_P differ.

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

	Backported from master:
	2020-09-03  Jakub Jelinek  <jakub@redhat.com>

	PR c++/96862
	* constexpr.c (cxx_eval_outermost_constant_expr): Temporarily disable
	flag_rounding_math during manifestly constant evaluation.

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

	Backported from master:
	2020-05-28  Jakub Jelinek  <jakub@redhat.com>

	PR c++/95328
	* decl.c (cp_finish_decomp): Call complete_type before checking
	COMPLETE_TYPE_P.

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

	Backported from master:
	2020-05-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94951
	* typeck.c (cp_strict_aliasing_warning): New function.
	(cp_build_indirect_ref_1, build_reinterpret_cast_1): Use
	it instead of strict_aliasing_warning.

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

	Backported from master:
	2020-04-24  Jakub Jelinek  <jakub@redhat.com>

	PR c++/94742
	* semantics.c (finish_call_expr): When looking if all overloads
	are noreturn, use STRIP_TEMPLATE to look through TEMPLATE_DECLs.

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

	Backported from master:
	2020-04-16  Jakub Jelinek  <jakub@redhat.com>

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

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

	Backported from master:
	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-06-16  Patrick Palka  <ppalka@redhat.com>

	PR c++/95678
	* tree.c (zero_init_expr_p): Use uses_template_parms instead of
	dependent_type_p.

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

	PR c++/95344
	* cp-gimplify.c (cp_fold) <case MODIFY_EXPR>: Don't set
	TREE_THIS_VOLATILE here.
	(cp_fold): Set it here along with TREE_NO_WARNING.

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

	PR c++/95560
	* name-lookup.c (check_local_shadow): Check if types are
	non-null before calling same_type_p.

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

	PR c++/90212
	* constexpr.c (potential_constant_expression_1): In a lambda
	function, consider a captured variable directly.

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

	PR c++/90479
	* init.c (get_nsdmi): Don't push_to_top_level for a local class.

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

	PR c++/91529
	* decl.c (cp_finish_decl): Also clear TREE_READONLY if
	-fmerge-all-constants.

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

	PR c++/93822
	* pt.c (tsubst_decl): Make sure DECL_VALUE_EXPR continues to have
	the same type as the variable.

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

	PR c++/94946
	* decl.c (grokdeclarator): Don't splice template attributes in
	parm context -- they can apply to the parm.

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

	PR c++/90750
	PR c++/79585
	* decl.c (grokdeclarator): Move dependent attribute to decl.
	* decl2.c (splice_template_attributes): No longer static.

2020-04-21  Martin Sebor  <msebor@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/94510
	* decl.c (reshape_init_array_1): Avoid stripping redundant trailing
	zero initializers...
	* mangle.c (write_expression): ...and handle them here even for
	pointers to members by calling zero_init_expr_p.
	* cp-tree.h (zero_init_expr_p): Declare.
	* tree.c (zero_init_expr_p): Define.
	(type_initializer_zero_p): Remove.
	* pt.c (tparm_obj_values): New hash_map.
	(get_template_parm_object): Store to it.
	(tparm_object_argument): New.

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

	Backported from mainline
	2020-04-20  Marek Polacek  <polacek@redhat.com>

	PR c++/94505 - bogus -Wparentheses warning with fold-expression.
	* pt.c (fold_expression): Add warning_sentinel for -Wparentheses
	before calling build_x_binary_op.

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.

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

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

	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-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-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-04-05  Marek Polacek  <polacek@redhat.com>

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

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

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

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

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-03  Jason Merrill  <jason@redhat.com>

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

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-27  Nathan Sidwell  <nathan@acm.org>

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

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++/92068
	* pt.c (process_partial_specialization): Error rather than crash on
	extra pack expansion.

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-12  Release Manager

	* GCC 9.3.0 released.

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

	PR c++/88395
	PR c++/93551
	* constraint.cc (constraints_satisfied_p): Use push_tinst_level.

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

	Backport from trunk.
	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-03-05  Jason Merrill  <jason@redhat.com>

	PR c++/90338
	* pt.c (invalid_nontype_parm_type_p): Check complain for non-literal
	and mutable errors.

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

	PR c++/91607
	* constexpr.c (constexpr_call_hasher::equal): Use
	same_type_ignoring_top_level_qualifiers_p.

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  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	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-03-04  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	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-03-04  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-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  Jason Merrill  <jason@redhat.com>

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

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

	PR c++/86917
	* constexpr.c (cxx_eval_vec_init_1): Handle CONSTRUCTOR.

2020-03-02  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-03-02  Jason Merrill  <jason@redhat.com>

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

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

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

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

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

2020-03-02  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-02-26  Marek Polacek  <polacek@redhat.com>

	PR c++/92745 - bogus error when initializing array of vectors.
	* decl.c (reshape_init_r): For a nested compound literal, do
	call reshape_init_{class,array,vector}.

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

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

2020-02-26  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-26  Jason Merrill  <jason@redhat.com>

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

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

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

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

	Backported from mainline
	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-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++/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.

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

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

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-24  Jason Merrill  <jason@redhat.com>

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

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

	Backported from mainline
	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.

	2019-12-26  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92438
	* parser.c (cp_parser_constructor_declarator_p): If open paren
	is followed by RID_ATTRIBUTE, skip over the attribute tokens and
	try to parse type specifier.

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

	PR c++/92992
	* call.c (convert_arg_to_ellipsis): For decltype(nullptr) arguments
	that have side-effects use cp_build_compound_expr.

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

	PR c++/91476 - anon-namespace reference temp clash between TUs.
	* call.c (make_temporary_var_for_ref_to_temp): Clear TREE_PUBLIC
	if DECL is in the anonymous namespace.

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-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.

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.

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

	Backported from mainline
	2019-12-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92831 - CWG 1299, not extending temporary lifetime for ?:
	* cp-tree.h (extend_ref_init_temps): Add a new argument with NULL
	default arg.
	* call.c (set_up_extended_ref_temp): Add COND_GUARD argument, pass it
	down to extend_ref_init_temps.  Before pushing cleanup, if COND_GUARD
	is non-NULL, create a bool temporary if needed, initialize to false
	and guard the cleanup with the temporary being true.
	(extend_ref_init_temps_1): Add COND_GUARD argument, pass it down
	to recursive calls and set_up_extended_ref_temp.  Handle COND_EXPR.
	(extend_ref_init_temps): Add COND_GUARD argument, pass it down to
	recursive calls and to extend_ref_init_temps_1.

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

	PR c++/92732
	* typeck2.c (digest_nsdmi_init): For bitfields, use
	DECL_BIT_FIELD_TYPE instead of TREE_TYPE.

	PR c++/92695
	* constexpr.c (cxx_bind_parameters_in_call): For virtual calls,
	adjust the first argument to point to the derived object rather
	than its base.

	2019-12-02  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92695
	* constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Use
	STRIP_NOPS before checking for ADDR_EXPR.

	2019-11-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/60228
	* parser.c (cp_parser_omp_declare_reduction_exprs): If
	processing_template_decl, wrap the combiner or initializer
	into EXPR_STMT.
	* decl.c (start_preparsed_function): Don't start a lambda scope
	for DECL_OMP_DECLARE_REDUCTION_P functions.
	(finish_function): Don't finish a lambda scope for
	DECL_OMP_DECLARE_REDUCTION_P functions, nor cp_fold_function
	them nor cp_genericize them.
	* mangle.c (decl_mangling_context): Look through
	DECL_OMP_DECLARE_REDUCTION_P functions.
	* semantics.c (expand_or_defer_fn_1): For DECL_OMP_DECLARE_REDUCTION_P
	functions, use tentative linkage, don't keep their bodies with
	-fkeep-inline-functions and return false at the end.

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

	PR c++/92695
	* decl2.c (mark_used): Don't call note_vague_linkage_fn for pure
	virtual functions, even if they are declared inline.

	2019-11-27  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92524
	* tree.c (replace_placeholders_r): Don't walk constructor elts with
	RANGE_EXPR indexes.

	2019-11-26  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92648
	* parser.c (cp_parser_std_attribute): For unknown attributes,
	skip balanced token seq instead of trying to parse
	attribute-argument-clause as expression list.

	PR c++/61414
	* class.c (enum_to_min_precision): New hash_map.
	(enum_min_precision): New function.
	(check_bitfield_decl): Use it.

	2019-11-22  Jakub Jelinek  <jakub@redhat.com>

	PR c/90677
	* cp-objcp-common.c (identifier_global_tag): Define.

	2019-11-21  Jakub Jelinek  <jakub@redhat.com>
		    Jason Merrill  <jason@redhat.com>

	PR c++/90842
	* parser.c (cp_parser_decl_specifier_seq): For concept or typedef
	break early if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
	For type specifiers, set CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS
	if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR is set.

2019-12-11  Jason Merrill  <jason@redhat.com>

	PR c++/57082 - new X{} and private destructor.
	* init.c (build_new_1): Also pass tf_no_cleanup to
	build_special_member_call.

2019-12-11  Jason Merrill  <jason@redhat.com>

	PR c++/92859 - ADL and bit-field.
	* name-lookup.c: Use unlowered_expr_type.

2019-12-11  Jason Merrill  <jason@redhat.com>

	PR c++/92446 - deduction of class NTTP.
	* pt.c (deducible_expression): Look through VIEW_CONVERT_EXPR.

2019-11-06  Jason Merrill  <jason@redhat.com>

	PR c++/92150 - partial specialization with class NTTP.
	* pt.c (unify): Handle VIEW_CONVERT_EXPR.

2019-11-20  Jakub Jelinek  <jakub@redhat.com>

	PR c++/90767
	* call.c (complain_about_no_candidates_for_method_call): If
	conv->from is not a type, pass to complain_about_bad_argument
	lvalue_type of conv->from.

	Backported from mainline
	2019-11-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92504
	* semantics.c (handle_omp_for_class_iterator): Don't call
	cp_fully_fold on cond.

2019-11-08  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-10-29  Marek Polacek  <polacek@redhat.com>

	PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
	* call.c (joust): Don't attempt to warn if ->second_conv is null.

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

	Backported from mainline
	2019-11-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92343
	* constexpr.c (potential_constant_expression_1): Return true rather
	than false for PREDICT_EXPR.

	2019-10-31  Jakub Jelinek  <jakub@redhat.com>

	PR c++/90947
	* cp-tree.h (type_initializer_zero_p): Declare.
	* decl.c (reshape_init_array_1): Formatting fix.
	* tree.c (type_initializer_zero_p): New function.  Moved from
	../tree.c, use next_initializable_field, formatting fix.  Return
	false for TYPE_NON_AGGREGATE_CLASS types.

	2019-10-22  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/85887
	* decl.c (expand_static_init): Drop ECF_LEAF from __cxa_guard_acquire
	and __cxa_guard_release.

	2019-10-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92015
	* constexpr.c (cxx_eval_component_reference, cxx_eval_bit_field_ref):
	Use STRIP_ANY_LOCATION_WRAPPER on CONSTRUCTOR elts.

2019-10-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/92201
	* cp-gimplify.c (cp_gimplify_expr): If gimplify_to_rvalue changes the
	function pointer type, re-add cast to the original one.

2018-10-26  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Backport from mainline

	2019-06-01  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR c++/85254
	* class.c (fixup_type_variants): Handle CLASSTYPE_FINAL.

2019-10-24  Marek Polacek  <polacek@redhat.com>

	* decl.c (reshape_init_r): Add missing space.

2019-10-22  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-10-21  Marek Polacek  <polacek@redhat.com>

	PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr.
	* typeck.c (maybe_warn_about_returning_address_of_local): Avoid
	recursing on null initializer and return false instead.

	PR c++/92062 - ODR-use ignored for static member of class template.
	* pt.c (has_value_dependent_address): Strip location wrappers.

2019-10-21  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2019-10-04  Jakub Jelinek  <jakub@redhat.com>

	PR c++/91974
	* cp-gimplify.c (cp_gimplify_expr) <case CALL_EXPR>: For
	-fstrong-eval-order ensure CALL_EXPR_FN side-effects are evaluated
	before any arguments.  Additionally, ensure CALL_EXPR_FN that isn't
	invariant nor OBJ_TYPE_REF nor SSA_NAME is forced into a temporary.

	2019-09-27  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88203
	* parser.c (cp_parser_omp_var_list_no_open): Parse predefined
	variables.
	* semantics.c (finish_omp_clauses): Allow predefined variables in
	shared and firstprivate clauses, even when they are predetermined
	shared.
	* cp-gimplify.c (cxx_omp_predetermined_sharing_1): Return
	OMP_CLAUSE_DEFAULT_SHARED for predefined variables.

	2019-08-09  Jakub Jelinek  <jakub@redhat.com>

	PR c/91401
	* parser.c (cp_parser_omp_clause_dist_schedule): Comment out the
	check_no_duplicate_clause call, instead emit a warning for duplicate
	dist_schedule clauses.

2019-10-16  Richard Biener  <rguenther@suse.de>

	Backport from mainline
	2019-10-02  Richard Biener  <rguenther@suse.de>

	PR c++/91606
	* decl.c (build_ptrmemfunc_type): Mark pointer-to-member
	fat pointer structure members as DECL_NONADDRESSABLE_P.

2019-10-08  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-09-15  Marek Polacek  <polacek@redhat.com>

	PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF.
	* pt.c (build_non_dependent_expr): Call build_non_dependent_expr for
	the first operand.

2019-09-28  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-09-28  Marek Polacek  <polacek@redhat.com>

	PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17.
	* pt.c (invalid_nontype_parm_type_p): Only emit errors when
	tf_error.

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

	Backported from mainline
	2019-09-10  Marek Polacek  <polacek@redhat.com>

	PR c++/91705 - constexpr evaluation rejects ++/-- on floats.
	* constexpr.c (cxx_eval_increment_expression): Call fold_simple on
	the offset.

2019-09-01  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-09-01  Marek Polacek  <polacek@redhat.com>

	PR c++/91129 - wrong error with binary op in template argument.
	* typeck.c (warn_for_null_address): Use fold_for_warn instead of
	fold_non_dependent_expr.
	(cp_build_binary_op): Likewise.

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

	Backported from mainline
	2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

	PR pch/61250
	* parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch ()
	after determining that the first token is not
	PRAGMA_GCC_PCH_PREPROCESS.

2019-08-23  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-08-23  Marek Polacek  <polacek@redhat.com>

	PR c++/91521 - wrong error with operator->.
	* decl.c (grokdeclarator): Return error_mark_node for an invalid
	trailing return type.

2019-08-16  Jason Merrill  <jason@redhat.com>

	PR c++/90393 - ICE with throw in ?:
	* call.c (build_conditional_expr_1): Revert changes from
	PR c++/64372 and c++/86205.

2019-08-15  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-08-07  Marek Polacek  <polacek@redhat.com>

	PR c++/81429 - wrong parsing of constructor with C++11 attribute.
	* parser.c (cp_parser_constructor_declarator_p): Handle the scenario
	when a parameter declaration begins with [[attribute]].

	2019-08-08  Marek Polacek  <polacek@redhat.com>

	PR c++/87519 - bogus warning with -Wsign-conversion.
	* typeck.c (cp_build_binary_op): Use same_type_p instead of comparing
	the types directly.

	2019-08-13  Marek Polacek  <polacek@redhat.com>

	PR c++/90473 - wrong code with nullptr in default argument.
	* call.c (null_ptr_cst_p): Update quote from the standard.
	* decl.c (check_default_argument): Don't return nullptr when the arg
	has side-effects.

	2019-06-14  Marek Polacek  <polacek@redhat.com>

	PR c++/90884 - stray note with -Wctor-dtor-privacy.
	* class.c (maybe_warn_about_overly_private_class): Guard the call to
	inform.

2019-08-14  Martin Sebor  <msebor@redhat.com>

	Backported from mainline
	2019-08-01  Martin Sebor  <msebor@redhat.com>

	PR c++/90947
	* decl.c (reshape_init_array_1): Avoid truncating initializer
	lists containing string literals.

2019-08-14  Jonathan Wakely  <jwakely@redhat.com>

	PR c++/91436
	* name-lookup.c (get_std_name_hint): Fix min_dialect field for
	complex_literals and make_unique entries.

2019-08-12  Tom Honermann  <tom@honermann.net>

	* parser.c (cp_parser_template_declaration_after_parameters): Enable
	class template argument deduction for non-type template parameters
	in literal operator templates.

2019-08-12  Jason Merrill  <jason@redhat.com>

	PR c++/91378 - ICE with noexcept and auto return type.
	* pt.c (maybe_instantiate_noexcept): push_to_top_level.

	PR c++/90538 - multiple expansions of capture packs
	* cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): Remove.
	* lambda.c (add_capture): Copy parameter packs from init.
	(lambda_capture_field_type): Always use auto for init-capture.
	* pt.c (uses_parameter_packs): Return tree.
	(tsubst) [DECLTYPE_TYPE]: Remove init-capture handling.
	(gen_elem_of_pack_expansion_instantiation): Don't push
	local_specialization_stack.
	(prepend_one_capture): New.
	(tsubst_lambda_expr): Use it.  Don't touch local_specializations.
	(do_auto_deduction): Avoid redundant error.

2019-08-12  Release Manager

	* GCC 9.2.0 released.

2019-08-02  Martin Sebor  <msebor@redhat.com>

	Backport from mainline
	2019-06-05  Martin Sebor  <msebor@redhat.com>

	PR c/90737
	* typeck.c (maybe_warn_about_returning_address_of_local): Only
	consider functions returning pointers as candidates for
	-Wreturn-local-addr.

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

	Backported from mainline
	2019-08-02  Marek Polacek  <polacek@redhat.com>

	PR c++/91230 - wrong error with __PRETTY_FUNCTION__ and generic lambda.
	* pt.c (value_dependent_expression_p): Consider __PRETTY_FUNCTION__
	inside a template function value-dependent.

2019-07-19  Jason Merrill  <jason@redhat.com>

	PR c++/90098 - partial specialization and class non-type parms.
	PR c++/90099
	PR c++/90101
	* call.c (build_converted_constant_expr_internal): Don't copy.
	* pt.c (process_partial_specialization): Allow VIEW_CONVERT_EXPR
	around class non-type parameter.
	(unify) [TEMPLATE_PARM_INDEX]: Ignore cv-quals.
	(invalid_nontype_parm_type_p): Check for dependent class type.

	PR c++/85552 - wrong instantiation of dtor for DMI.
	* typeck2.c (digest_nsdmi_init): Set tf_no_cleanup for direct-init.

2019-07-19  Nina Dinka Ranns  <dinka.ranns@gmail.com>

	PR c++/63149 - Wrong auto deduction from braced-init-list.
	* pt.c (listify_autos): use non cv qualified auto_node in
	std::initializer_list<auto>.

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

	Backported from mainline
	2019-06-21  Marek Polacek  <polacek@redhat.com>

	PR c++/60223 - ICE with T{} in non-deduced context.
	* pt.c (unify): Allow COMPOUND_LITERAL_P in a non-deduced context.

	PR c++/90490 - fix decltype issues in noexcept-specifier.
	* except.c (build_noexcept_spec): Call
	instantiate_non_dependent_expr_sfinae before
	build_converted_constant_expr instead of calling
	instantiate_non_dependent_expr after it.  Add
	processing_template_decl_sentinel.

2019-06-29  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2019-06-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/90950
	* semantics.c (finish_omp_clauses): Don't reject references to
	incomplete types if processing_template_decl.

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

	PR c++/90825 - endless recursion when evaluating sizeof.
	PR c++/90832 - endless recursion when evaluating sizeof.
	* constexpr.c (cxx_eval_constant_expression): Don't recurse on the
	result of fold_sizeof_expr if is returns a SIZEOF_EXPR.
	* typeck.c (cxx_sizeof_expr): Only return a SIZEOF_EXPR if the operand
	is instantiation-dependent.

	PR c++/90736 - bogus error with alignof.
	* constexpr.c (adjust_temp_type): Use cv_unqualified type.

2019-06-11  Jakub Jelinek  <jakub@redhat.com>

	PR c++/90810
	* init.c (constant_value_1): Handle VECTOR_CST DECL_INITIAL for
	!DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P decls like CONSTRUCTOR.

2019-06-05  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2019-05-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/90598
	* tree.c (lvalue_kind): Return clk_none for expressions with
	with VOID_TYPE_P.

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

	Backported from mainline
	2019-05-28  Marek Polacek  <polacek@redhat.com>

	PR c++/90548 - ICE with generic lambda and empty pack.
	* pt.c (tsubst_copy_and_build): Handle pack expansion properly.

2019-05-25  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2019-05-25  Marek Polacek  <polacek@redhat.com>

	PR c++/90572 - wrong disambiguation in friend declaration.
	* parser.c (cp_parser_constructor_declarator_p): Don't allow missing
	typename for friend declarations.

2019-05-20  Jonathan Wakely  <jwakely@redhat.com>

	Backported from mainline
	2019-05-20  Jonathan Wakely  <jwakely@redhat.com>

	PR c++/90532 Ensure __is_constructible(T[]) is false
	* method.c (is_xible_helper): Return error_mark_node for construction
	of an array of unknown bound.

2019-05-17  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2019-05-15  Jakub Jelinek  <jakub@redhat.com>

	PR debug/90197
	* cp-gimplify.c (genericize_cp_loop): Emit a DEBUG_BEGIN_STMT
	before the condition (or if missing or constant non-zero at the end
	of the loop.  Emit a DEBUG_BEGIN_STMT before the increment expression
	if any.  Don't call protected_set_expr_location on incr if it already
	has a location.

	2019-05-10  Jakub Jelinek  <jakub@redhat.com>

	PR pch/90326
	* config-lang.in (gtfiles): Remove c-family/c-lex.c, add
	c-family/c-cppbuiltin.c.

2019-05-10  Marek Polacek  <polacek@redhat.com>

	PR c++/78010 - bogus -Wsuggest-override warning on final function.
	* class.c (check_for_override): Don't warn for final functions.

2019-05-06  Marek Polacek  <polacek@redhat.com>

	PR c++/90265 - ICE with generic lambda.
	* pt.c (tsubst_copy_and_build): Use a dedicated variable for the last
	element in the vector.

2019-05-06  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/90173
	* decl.c (grokdeclarator): Set type to error_mark_node
	upon error about template placeholder type non followed
	by a simple declarator-id.

2019-05-04  Michael Meissner  <meissner@linux.ibm.com>

	* ChangeLog.ibm: Delete unintentional commit on the wrong branch.

2019-05-03  Release Manager

	* GCC 9.1.0 released.

2019-04-24  Jason Merrill  <jason@redhat.com>

	PR c++/90227 - error with template parameter packs.
	* pt.c (coerce_template_parms): Do add empty pack when
	require_all_args.

2019-04-24  Richard Biener  <rguenther@suse.de>

	* call.c (null_ptr_cst_p): Order checks according to expensiveness.
	(conversion_null_warnings): Likewise.
	* typeck.c (same_type_ignoring_top_level_qualifiers_p): Return
	early if type1 == type2.

2019-04-22  Jason Merrill  <jason@redhat.com>

	PR c++/87366 - wrong error with alias template.
	* typeck.c (structural_comptypes): When comparing_specializations,
	aliases are unequal.
	(comptypes): When comparing_specializations, do structural
	comparison.

2019-04-19  Jason Merrill  <jason@redhat.com>

	PR c++/90190 - CTAD with list-constructor.
	* pt.c (do_class_deduction): Don't try the single element deduction
	if the single element is also a braced list.

	PR c++/90171 - ICE with destroying delete with size_t parm.
	* call.c (sized_deallocation_fn_p): New.  Use it instead of
	second_parm_is_size_t in most cases.
	(second_parm_is_size_t): Don't check for aligned.

2019-04-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89900
	* pt.c (fn_type_unification): When handling null explicit
	arguments do not special case non-parameter packs.

2019-04-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/90138
	* pt.c (process_template_parm): Set decl to pushdecl result.  If
	!is_non_type, also set parm to that.

	PR c/89888
	* decl.c (struct cp_switch): Remove outside_range_p member.
	(push_switch): Don't clear it.
	(pop_switch): Adjust c_do_switch_warnings caller.
	(finish_case_label): Adjust c_add_case_label caller.

	PR c++/90108
	* decl.c (duplicate_decls): If remove is main variant and
	DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
	variant that has newdecl as TYPE_NAME if any.

2019-04-18  Jason Merrill  <jason@redhat.com>

	PR c++/87554 - ICE with extern template and reference member.
	* decl.c (cp_finish_decl): Don't set DECL_INITIAL of external vars.

2019-04-17  Jason Merrill  <jason@redhat.com>

	PR c++/90047 - ICE with enable_if alias template.
	* pt.c (tsubst_decl) [TYPE_DECL]: Don't put an erroneous decl in the
	hash table when we're in SFINAE context.

2019-04-17  Marek Polacek  <polacek@redhat.com>

	PR c++/90124 - bogus error with incomplete type in decltype.
	* typeck.c (build_class_member_access_expr): Check
	cp_unevaluated_operand.

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

	PR c/89933
	* decl.c (duplicate_decls): When newdecl's type is its main variant,
	don't try to remove it from the variant list, but instead assert
	it has no variants.

2019-04-12  Martin Sebor  <msebor@redhat.com>

	PR c/88383
	PR c/89288
	* parser.c (cp_parser_has_attribute_expression): Handle assignment
	expressions.

2019-04-12  Jason Merrill  <jason@redhat.com>

	* call.c (null_member_pointer_value_p): Handle an empty CONSTRUCTOR
	of PMF type.

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

	* except.c (build_noexcept_spec): Use build_converted_constant_bool_expr
	instead of perform_implicit_conversion_flags.

	PR c++/87603 - constexpr functions are no longer noexcept.
	* constexpr.c (is_sub_constant_expr): Remove unused function.
	* cp-tree.h (is_sub_constant_expr): Remove declaration.
	* except.c (check_noexcept_r): Don't consider a call to a constexpr
	function noexcept.

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

	PR translation/90035
	* parser.h (struct cp_parser): Add
	type_definition_forbidden_message_arg member.
	* parser.c (cp_debug_parser): Print it.
	(cp_parser_check_type_definition): Pass
	parser->type_definition_forbidden_message_arg as second argument to
	error.
	(cp_parser_has_attribute_expression, cp_parser_sizeof_operand): Set
	parser->type_definition_forbidden_message_arg and use G_() with
	%qs for parser->type_definition_forbidden_message instead of
	building untranslatable message using concat.

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

	PR translation/90011
	* typeck2.c (check_narrowing): Remove trailing space from diagnostics.

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

	* typeck2.c (digest_init_r): Don't condition the object slicing warning
	on flag_checking.

2019-04-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89914
	* semantics.c (trait_expr_value): Don't use TYPE_NOTHROW_P
	when maybe_instantiate_noexcept fails.
	(classtype_has_nothrow_assign_or_copy_p): Likewise.
	* method.c (implicitly_declare_fn): Avoid passing error_mark_node
	to build_exception_variant.

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

	PR c++/87145 - bogus error converting class type in template arg list.
	* pt.c (convert_nontype_argument): Don't call
	build_converted_constant_expr if it could involve calling a conversion
	function with a instantiation-dependent constructor as its argument.

2019-04-05  Martin Sebor  <msebor@redhat.com>

	PR bootstrap/89980
	* decl.c (reshape_init_array_1): Avoid treating empty strings
	as zeros in array initializers.
	Use trivial_type_p () instead of TYPE_HAS_TRIVIAL_DFLT().

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

	PR c++/89948 - ICE with break in statement-expr.
	* constexpr.c (cxx_eval_statement_list): Jumping out of a
	statement-expr is non-constant.

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

	PR c++/89966 - error with non-type auto tparm.
	* pt.c (do_auto_deduction): Clear tf_partial.

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

	PR c++/86986 - ICE with TTP with parameter pack.
	* pt.c (coerce_template_parameter_pack): Only look at the type of a
	non-type parameter pack.
	(fixed_parameter_pack_p_1): Don't recurse into the type of a
	non-type parameter pack.
	(coerce_template_template_parms): Call add_outermost_template_args.

2019-04-04  Martin Sebor  <msebor@redhat.com>

	PR c++/89974
	PR c++/89878
	PR c++/89833
	PR c++/47488
	* decl.c (reshape_init_array_1): Strip trailing zero-initializers
	from arrays of trivial type and known size.
        * mangle.c (write_expression): Convert braced initializer lists
        to STRING_CSTs.
	(write_expression): Trim trailing zero-initializers from arrays
	of trivial type.
        (write_template_arg_literal): Mangle strings the same as braced
        initializer lists.

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

	PR c++/81866 - ICE with member template and default targ.
	* pt.c (tsubst_template_decl): Handle getting a type from
	retrieve_specialization.

	PR c++/86586 - -fcompare-debug=-Wsign-compare.
	* typeck.c (cp_build_binary_op): Don't fold for -Wsign-compare.

	PR c++/89331 - ICE with offsetof in incomplete class.
	* semantics.c (finish_offsetof): Handle error_mark_node.
	* typeck.c (build_class_member_access_expr): Call
	complete_type_or_maybe_complain before converting to base.

	PR c++/89917 - ICE with lambda in variadic mem-init.
	* pt.c (make_pack_expansion): Change type_pack_expansion_p to false.

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

	PR c++/86946 - ICE with function call in template argument.
	DR 1321
	* pt.c (iterative_hash_template_arg) [CALL_EXPR]: Use
	dependent_name.

2019-04-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/62207
	* pt.c (tsubst_copy): Deal with lookup_name not returing a variable.

2019-03-31  Marek Polacek  <polacek@redhat.com>

	PR c++/89852 - ICE with C++11 functional cast with { }.
	* constexpr.c (fold_non_dependent_expr_template): New static function
	broken out of...
	(fold_non_dependent_expr): ...here.
	(fold_non_dependent_init): New function.
	* cp-tree.h (fold_non_dependent_init): Declare.
	* typeck2.c (massage_init_elt): Call fold_non_dependent_init instead
	of fold_non_dependent_expr.  Don't call maybe_constant_init.

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

	PR c++/89744 - ICE with specialization of member class template.
	* pt.c (lookup_template_class_1): If the partial instantiation is
	explicitly specialized, adjust.
	(maybe_process_partial_specialization): Also adjust
	CLASSTYPE_TI_ARGS.

2019-03-29  Jakub Jelinek  <jakub@redhat.com>

	PR sanitizer/89869
	* typeck.c: Include gimplify.h.
	(cp_build_modify_expr) <case COND_EXPR>: Unshare rhs before using it
	for second time.  Formatting fixes.

2019-03-29  Marek Polacek  <polacek@redhat.com>

	PR c++/89876 - ICE with deprecated conversion.
	* call.c (convert_like_real): Only give warnings with tf_warning.

2019-03-28  Marek Polacek  <polacek@redhat.com>

	PR c++/89612 - ICE with member friend template with noexcept.
	* pt.c (maybe_instantiate_noexcept): For function templates, use their
	template result (function decl).  Don't set up local specializations.
	Temporarily turn on processing_template_decl.  Update the template type
	too.

	PR c++/89836 - bool constant expression and explicit conversions.
	* call.c (build_converted_constant_expr_internal): New function,
	renamed from...
	(build_converted_constant_expr): ...this.  New.
	(build_converted_constant_bool_expr): New.
	* cp-tree.h (build_converted_constant_bool_expr): Declare.
	* decl.c (build_explicit_specifier): Call
	build_converted_constant_bool_expr.

2019-03-28  Jakub Jelinek  <jakub@redhat.com>

	PR c++/89785
	* constexpr.c (struct check_for_return_continue_data): New type.
	(check_for_return_continue): New function.
	(potential_constant_expression_1) <case SWITCH_STMT>: Walk
	SWITCH_STMT_BODY to find RETURN_EXPRs or CONTINUE_STMTs not nested
	in loop bodies and set *jump_target to that if found.

2019-03-27  Jason Merrill  <jason@redhat.com>

	PR c++/89831 - error with qualified-id in const member function.
	* semantics.c (finish_non_static_data_member): Use object cv-quals
	in scoped case, too.

	PR c++/89421 - ICE with lambda in template parameter list.
	* parser.c (cp_parser_lambda_expression): Also reject a lambda in a
	template parameter list before C++20.
	* pt.c (type_dependent_expression_p): True for LAMBDA_EXPR.
	* semantics.c (begin_class_definition): Restore error about defining
	non-lambda class in template parm list.

2019-03-26  Jason Merrill  <jason@redhat.com>

	PR c++/86932 - missed SFINAE with empty pack.
	* pt.c (coerce_template_parms): Don't add an empty pack if
	tf_partial.
	(fn_type_unification): Pass tf_partial to coerce_template_parms.

	PR c++/86429 - constexpr variable in lambda.
	PR c++/82643
	PR c++/87327
	* constexpr.c (cxx_eval_constant_expression): In a lambda function,
	try evaluating the captured variable directly.

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

	PR c++/89796
	* semantics.c (finish_omp_atomic): Add warning_sentinel for
	-Wunused-value around finish_expr_stmt call.

2019-03-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84661
	PR c++/85013
	* parser.c (cp_parser_binary_expression): Don't call cp_fully_fold
	to undo the disabling of warnings.

2019-03-25  Jason Merrill  <jason@redhat.com>

	PR c++/87748 - substitution failure error with decltype.
	* pt.c (most_specialized_partial_spec): Clear
	processing_template_decl.

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

	PR c++/89214 - ICE when initializing aggregates with bases.
	* typeck2.c (digest_init_r): Warn about object slicing instead of
	crashing.

	PR c++/89705 - ICE with reference binding with conversion function.
	* call.c (reference_binding): If the result of the conversion function
	is a prvalue of non-class type, use the cv-unqualified type.

2019-03-25  Nathan Sidwell  <nathan@acm.org>

	* lambda.c (maybe_add_lambda_conv_op): Don't add to comdat group.

2019-03-22  Jakub Jelinek  <jakub@redhat.com>

	PR c++/60702
	* cp-tree.h (get_tls_wrapper_fn): Remove declaration.
	(maybe_get_tls_wrapper_call): Declare.
	* decl2.c (get_tls_wrapper_fn): Make static.
	(maybe_get_tls_wrapper_call): New function.
	* typeck.c (build_class_member_access_expr): Handle accesses to TLS
	variables.
	* semantics.c (finish_qualified_id_expr): Likewise.
	(finish_id_expression_1): Use maybe_get_tls_wrapper_call.
	* pt.c (tsubst_copy_and_build): Likewise.

	PR c++/87481
	* constexpr.c (struct constexpr_ctx): Add constexpr_ops_count member.
	(cxx_eval_constant_expression): When not skipping, not constant class
	or location wrapper, increment *ctx->constexpr_ops_count and if it is
	above constexpr_loop_nest_limit, diagnose failure.
	(cxx_eval_outermost_constant_expr): Add constexpr_ops_count and
	initialize ctx.constexpr_ops_count to its address.
	(is_sub_constant_expr): Likewise.

2019-03-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/71446
	* call.c (filed_in_pset): Change pset from hash_set<tree> * to
	hash_set<tree, true> &, adjust uses accordingly.
	(build_aggr_conv): Change pset from hash_set<tree> *
	to hash_set<tree, true>.  Replace goto fail; with return NULL;,
	adjust pset uses.

	PR c++/89767
	* parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id
	variables, check for duplicates in this function.
	* lambda.c (add_capture): Don't check for duplicates nor use
	IDENTIFIER_MARKED.
	(register_capture_members): Don't clear IDENTIFIER_MARKED here.

2019-03-21  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89571
	* method.c (after_nsdmi_defaulted_late_checks): Avoid passing
	error_mark_node to comp_except_specs.

2019-03-20  Jason Merrill  <jason@redhat.com>

	PR c++/87480 - decltype of member access in default template arg
	* pt.c (type_unification_real): Accept a dependent result in
	template context.

2019-03-19  Martin Sebor  <msebor@redhat.com>

	PR tree-optimization/89688
	* typeck2.c (store_init_value): Call braced_lists_to_string for more
	kinds of initializers.

2019-03-18  Jason Merrill  <jason@redhat.com>

	PR c++/89630 - ICE with dependent using-decl as template arg.
	* tree.c (cp_tree_equal): Always return false for USING_DECL.

	PR c++/89761 - ICE with sizeof... in pack expansion.
	* pt.c (argument_pack_element_is_expansion_p): Handle
	ARGUMENT_PACK_SELECT.

	PR c++/89640 - GNU attributes on lambda.
	* parser.c (cp_parser_lambda_declarator_opt): Allow GNU attributes.

	PR c++/89682 - wrong access error in default argument.
	* pt.c (tsubst_default_argument): Don't defer access checks.

2019-03-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/85014
	* semantics.c (finish_non_static_data_member): Check return value
	of context_for_name_lookup and immediately return error_mark_node
	if isn't a type.

2019-03-17  Jason Merrill  <jason@redhat.com>

	PR c++/89571 - ICE with ill-formed noexcept on constructor.
	* pt.c (maybe_instantiate_noexcept): Only return false if defaulted.
	(regenerate_decl_from_template): Use it for noexcept-specs.

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

	* parser.c (cp_parser_decl_specifier_seq): Support C++20
	concept-definition syntax without 'bool'.

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

	PR c++/89512
	* semantics.c (finish_qualified_id_expr): Reject variable templates.

	PR c++/89652
	* constexpr.c (struct constexpr_ctx): Change save_exprs type from
	hash_set<tree> to vec<tree>.
	(cxx_eval_call_expression): Adjust for save_exprs being a vec instead
	of hash_set.
	(cxx_eval_loop_expr): Likewise.  Truncate the vector after each
	removal of SAVE_EXPRs from values.
	(cxx_eval_constant_expression) <case SAVE_EXPR>: Call safe_push
	method on save_exprs instead of add.

2019-03-13  Jason Merrill  <jason@redhat.com>

	PR c++/86521 - C++17 copy elision in initialization by constructor.
	* call.c (joust_maybe_elide_copy): New.
	(joust): Call it.

2019-03-13  Marek Polacek  <polacek@redhat.com>

	PR c++/88979 - further P0634 fix for constructors.
	* parser.c (cp_parser_decl_specifier_seq): Pass flags to
	cp_parser_constructor_declarator_p.
	(cp_parser_direct_declarator): Allow missing typename for constructor
	parameters.
	(cp_parser_constructor_declarator_p): Add FLAGS parameter.  Pass it to
	cp_parser_type_specifier.

	PR c++/89686 - mixing init-capture and simple-capture in lambda.
	* parser.c (cp_parser_lambda_introducer): Give error when combining
	init-capture and simple-capture.

	PR c++/89660 - bogus error with -Wredundant-move.
	* typeck.c (maybe_warn_pessimizing_move): Only accept (T &) &arg
	as the std::move's argument.  Don't call convert_for_initialization
	when warn_redundant_move isn't on.

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

	PR c++/86521 - wrong overload resolution with ref-qualifiers.
	* call.c (build_user_type_conversion_1): Don't use a conversion to a
	reference of the wrong rvalueness for direct binding.

2019-03-11  Martin Liska  <mliska@suse.cz>

	* cvt.c (build_expr_type_conversion): Wrap apostrophes
	in gcc internal format with %'.
	* decl.c (check_no_redeclaration_friend_default_args): Likewise.
	(grokfndecl): Likewise.
	* name-lookup.c (do_pushtag): Likewise.
	* pt.c (unify_parameter_deduction_failure): Likewise.
	(unify_template_deduction_failure): Likewise.

2019-03-11  Martin Liska  <mliska@suse.cz>

	* call.c (convert_arg_to_ellipsis): Wrap an option name
	in a string format message and fix GNU coding style.
	(build_over_call): Likewise.
	* class.c (check_field_decl): Likewise.
	(layout_nonempty_base_or_field): Likewise.
	* constexpr.c (cxx_eval_loop_expr): Likewise.
	* cvt.c (type_promotes_to): Likewise.
	* decl.c (cxx_init_decl_processing): Likewise.
	(mark_inline_variable): Likewise.
	(grokdeclarator): Likewise.
	* decl2.c (record_mangling): Likewise.
	* error.c (maybe_warn_cpp0x): Likewise.
	* except.c (doing_eh): Likewise.
	* mangle.c (maybe_check_abi_tags): Likewise.
	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
	(cp_parser_userdef_numeric_literal): Likewise.
	(cp_parser_primary_expression): Likewise.
	(cp_parser_unqualified_id): Likewise.
	(cp_parser_pseudo_destructor_name): Likewise.
	(cp_parser_builtin_offsetof): Likewise.
	(cp_parser_lambda_expression): Likewise.
	(cp_parser_lambda_introducer): Likewise.
	(cp_parser_lambda_declarator_opt): Likewise.
	(cp_parser_selection_statement): Likewise.
	(cp_parser_init_statement): Likewise.
	(cp_parser_decomposition_declaration): Likewise.
	(cp_parser_function_specifier_opt): Likewise.
	(cp_parser_static_assert): Likewise.
	(cp_parser_simple_type_specifier): Likewise.
	(cp_parser_namespace_definition): Likewise.
	(cp_parser_using_declaration): Likewise.
	(cp_parser_ctor_initializer_opt_and_function_body): Likewise.
	(cp_parser_initializer_list): Likewise.
	(cp_parser_type_parameter_key): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_try_block): Likewise.
	(cp_parser_std_attribute_spec): Likewise.
	(cp_parser_requires_clause_opt): Likewise.
	* pt.c (check_template_variable): Likewise.
	(check_default_tmpl_args): Likewise.
	(push_tinst_level_loc): Likewise.
	(instantiate_pending_templates): Likewise.
	(invalid_nontype_parm_type_p): Likewise.
	* repo.c (get_base_filename): Likewise.
	* rtti.c (typeid_ok_p): Likewise.
	(build_dynamic_cast_1): Likewise.
	* tree.c (maybe_warn_parm_abi): Likewise.

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

	PR other/80058
	* parser.c (cp_parser_template_declaration_after_parameters): Avoid
	one space before " at the end of line and another after " on another
	line in a string literal.

	PR tree-optimization/89550
	* semantics.c (maybe_convert_cond): Only set TREE_NO_WARNING if
	warning_at returned true.
	* decl2.c (c_parse_final_cleanups): Likewise.
	* typeck.c (convert_for_assignment): Likewise.
	* decl.c (finish_function): Likewise.

	PR c++/89585
	* parser.c (cp_parser_asm_definition): Just warn instead of error
	on volatile qualifier outside of function body.

	PR c++/89599
	* constexpr.c (potential_constant_expression_1): Reject
	REINTERPRET_CAST_P NOP_EXPRs.

	PR c++/89622
	* call.c (joust): Call print_z_candidate only if pedwarn returned
	true.

2019-03-07  Jason Merrill  <jason@redhat.com>

	PR c++/88123 - lambda and using-directive.
	* name-lookup.c (op_unqualified_lookup)
	(maybe_save_operator_binding, discard_operator_bindings)
	(push_operator_bindings): New.
	* typeck.c (build_x_binary_op, build_x_unary_op): Call
	maybe_save_operator_binding.
	* decl.c (start_preparsed_function): Call push_operator_bindings.
	* tree.c (cp_free_lang_data): Call discard_operator_bindings.

	PR c++/88820 - ICE with CTAD and member template used in DMI.
	* pt.c (do_class_deduction): Handle parm used as its own arg.

2019-03-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/89585
	* parser.c (cp_parser_asm_definition): Parse asm qualifiers even
	at toplevel, but diagnose them.

2019-03-06  Jason Merrill  <jason@redhat.com>

	PR c++/89381 - implicit copy and using-declaration.
	* class.c (classtype_has_move_assign_or_move_ctor_p): Don't consider
	op= brought in by a using-declaration.

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

	PR c++/87148
	* init.c (build_value_init_noctor): Ignore flexible array members.

2019-03-06  Jason Merrill  <jason@redhat.com>

	PR c++/89576 - if constexpr of lambda capture.
	* semantics.c (maybe_convert_cond): Do convert a non-dependent
	condition in a template.
	* typeck.c (condition_conversion): Handle being called in a
	template.

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

	PR c++/87378 - bogus -Wredundant-move warning.
	* typeck.c (maybe_warn_pessimizing_move): See if the maybe-rvalue
	overload resolution would actually succeed.

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

	* class.c (is_really_empty_class): Add ignore_vptr parm.
	(trivial_default_constructor_is_constexpr): Pass it.
	* call.c (build_over_call): Pass it.
	* constexpr.c (cxx_eval_constant_expression): Pass it instead of
	checking TYPE_POLYMORPHIC_P.
	(cxx_eval_component_reference, potential_constant_expression_1):
	Pass it.
	* cp-gimplify.c (simple_empty_class_p): Pass it.
	* init.c (expand_aggr_init_1): Pass it.

2019-03-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84605
	* parser.c (cp_parser_class_head): Reject TYPE_BEING_DEFINED too.

2019-03-04  Jakub Jelinek  <jakub@redhat.com>

	PR c++/71446
	* call.c (field_in_pset): New function.
	(build_aggr_conv): Handle CONSTRUCTOR_IS_DESIGNATED_INIT correctly.

2019-03-02  Jakub Jelinek  <jakub@redhat.com>

	PR c++/71446
	* cp-tree.h (CONSTRUCTOR_IS_DESIGNATED_INIT): Define.
	* parser.c (cp_parser_braced_list): Adjust cp_parser_initializer_list
	caller, set CONSTRUCTOR_IS_DESIGNATED_INIT.
	(cp_parser_initializer_list): Add designated parameter, set *designated
	to a bool whether any designators were parsed.
	* decl.c (reshape_init): Copy over CONSTRUCTOR_IS_DESIGNATED_INIT if
	needed.
	* pt.c (tsubst_copy_and_build): Likewise.
	* call.c (implicit_conversion): If CONSTRUCTOR_IS_DESIGNATED_INIT,
	don't call build_list_conv, nor build_complex_conv, nor attempt to
	convert a single element initializer to scalar.

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

	PR c++/89537 - missing location for error with non-static member fn.
	* call.c (resolve_args): Use EXPR_LOCATION.
	* typeck.c (build_class_member_access_expr): Use input_location.

	PR c++/89532 - ICE with incomplete type in decltype.
	* semantics.c (finish_compound_literal): Return error_mark_node
	if digest_init_flags returns error_mark_node.

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

	Implement P1002R1, Try-catch blocks in constexpr functions
	PR c++/89513
	* parser.c (cp_parser_ctor_initializer_opt_and_function_body):
	Diagnose constexpr ctor or function with function-try-block with
	pedwarn for c++17 and earlier.  Formatting fix.
	(cp_parser_try_block): Use pedwarn instead of error and only for
	c++17 and earlier when try block appears in constexpr function.
	* constexpr.c (build_constexpr_constructor_member_initializers):
	Handle TRY_BLOCK here instead of erroring on it.

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

	PR c++/88183 - ICE with .* fold-expression.
	* pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling.

	PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
	* class.c, lambda.c, pt.c: Revert earlier change.
	* lambda.c (add_capture): Don't special-case capture of dependent
	VLA.

	* name-lookup.c (print_binding_level): Print this_entity.

2019-02-27  Marek Polacek  <polacek@redhat.com>

	PR c++/88857 - ICE with value-initialization of argument in template.
	* call.c (convert_like_real): Don't call build_value_init in template.

2019-02-27  Jason Merrill  <jason@redhat.com>

	PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
	* semantics.c (process_outer_var_ref): Do capture dependent vars.
	* class.c (finish_struct): Only add TAG_DEFN if T is in
	current_function_decl.
	* lambda.c (vla_capture_type): Force the capture type out into the
	lambda's enclosing function.
	(add_capture): Pass in the lambda.
	* pt.c (tsubst_lambda_expr): complete_type a VLA capture type.

2019-02-27  Marek Polacek  <polacek@redhat.com>

	PR c++/89511 - ICE with using-declaration and unscoped enumerator.
	* parser.c (cp_parser_using_declaration): For an unscoped enum
	only use its context if it's not a function declaration.

2019-02-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89488
	* method.c (process_subob_fn): When maybe_instantiate_noexcept
	returns false don't call merge_exception_specifiers.

2019-02-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/88987
	* parser.c (cp_parser_noexcept_specification_opt): Return NULL_TREE
	for a non-constant parsed expression.

2019-02-26  Jakub Jelinek  <jakub@redhat.com>

	PR c++/89481
	* constexpr.c (cxx_eval_store_expression): When changing active union
	member, set no_zero_init.

2019-02-23  Marek Polacek  <polacek@redhat.com>

	PR c++/88294 - ICE with non-constant noexcept-specifier.
	* pt.c (maybe_instantiate_noexcept): Set up the list of local
	specializations.  Set current_class_{ptr,ref}.

2019-02-22  David Malcolm  <dmalcolm@redhat.com>

	PR c++/89390
	* parser.c (cp_parser_unqualified_id): Capture and use locations
	for destructors.

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

	PR c++/89420 - ICE with CAST_EXPR in explicit-specifier.
	* decl.c (build_explicit_specifier): Don't check
	processing_template_decl.  Call instantiation_dependent_expression_p
	instead of value_dependent_expression_p.  Call
	instantiate_non_dependent_expr_sfinae before
	build_converted_constant_expr instead of calling
	instantiate_non_dependent_expr after it.  Add
	processing_template_decl_sentinel.

2019-02-22  Thomas Schwinge  <thomas@codesourcery.com>

	* parser.c (cp_parser_oacc_simple_clause): Remove parser formal
	parameter, move loc formal parameter to the front.  Adjust all
	users.
	(cp_parser_oacc_shape_clause): Add loc formal parameter.  Adjust
	all users.

2019-02-21  Jason Merrill  <jason@redhat.com>

	PR c++/87685 - generic lambda 'this' capture error.
	* lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
	(maybe_generic_this_capture): Pass -1.

	PR c++/88394 - ICE with VLA init-capture.
	* lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.

	PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
	* pt.c (do_class_deduction): Don't include explicit specialization
	args in outer_args.

	PR c++/89422 - ICE with -g and lambda in default arg in template.
	* pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.

2019-02-21  Jason Merrill  <jason@redhat.com>

	PR c++/88419 - C++17 ICE with class template arg deduction.
	* pt.c (make_template_placeholder): Set TYPE_CANONICAL after
	CLASS_PLACEHOLDER_TEMPLATE.

2019-02-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/89285
	* constexpr.c (struct constexpr_fundef): Add parms and result members.
	(retrieve_constexpr_fundef): Adjust for the above change.
	(register_constexpr_fundef): Save constexpr body with copy_fn,
	temporarily set DECL_CONTEXT on DECL_RESULT before that.
	(get_fundef_copy): Change FUN argument to FUNDEF with
	constexpr_fundef * type, grab body and parms/result out of
	constexpr_fundef struct and temporarily change it for copy_fn calls
	too.
	(cxx_eval_builtin_function_call): For __builtin_FUNCTION temporarily
	adjust current_function_decl from ctx->call context.  Test
	!potential_constant_expression instead of !is_constant_expression.
	(cxx_bind_parameters_in_call): Grab parameters from new_call.  Undo
	convert_for_arg_passing changes for TREE_ADDRESSABLE type passing.
	(cxx_eval_call_expression): Adjust get_fundef_copy caller.
	(cxx_eval_conditional_expression): For IF_STMT, allow then or else
	operands to be NULL.
	(label_matches): Handle BREAK_STMT and CONTINUE_STMT.
	(cxx_eval_loop_expr): Add support for FOR_STMT, WHILE_STMT and DO_STMT.
	(cxx_eval_switch_expr): Add support for SWITCH_STMT.
	(cxx_eval_constant_expression): Handle IF_STMT, FOR_STMT, WHILE_STMT,
	DO_STMT, CONTINUE_STMT, SWITCH_STMT, BREAK_STMT and CONTINUE_STMT.
	For SIZEOF_EXPR, recurse on the result of fold_sizeof_expr.  Ignore
	DECL_EXPR with USING_DECL operand.
	* lambda.c (maybe_add_lambda_conv_op): Build thisarg using
	build_int_cst to make it a valid constant expression.

2019-02-20  Jason Merrill  <jason@redhat.com>

	PR c++/88690 - C++17 ICE with empty base in aggregate.
	* typeck2.c (process_init_constructor_record): Skip trivial
	initialization of an empty base.

2019-02-21  Richard Biener  <rguenther@suse.de>

	PR middle-end/89392
	* vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
	make symtab process new functions here.

2019-02-20  Jason Merrill  <jason@redhat.com>

	PR c++/87921 - wrong error with inline static data member.
	* decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
	for a non-template inline variable.  Do nothing for an
	already-instantiated variable.
	(c_parse_final_cleanups): Check DECL_IN_AGGR_P without
	DECL_INLINE_VAR_P.
	* decl.c (check_initializer): Likewise.
	(make_rtl_for_nonlocal_decl): Likewise.
	* pt.c (instantiate_decl): Likewise.
	* typeck2.c (store_init_value): Likewise.

2019-02-20  Jakub Jelinek  <jakub@redhat.com>

	PR c++/89403
	* decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
	for flag_syntax_only from here...
	* semantics.c (expand_or_defer_fn_1): ... here.

	PR c++/89405
	* decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
	DECL_COMMON, set DECL_INTERFACE_KNOWN.

	PR c++/89336
	* constexpr.c (cxx_eval_store_expression): Diagnose changing of active
	union member for -std=c++17 and earlier.

2019-02-19  Jason Merrill  <jason@redhat.com>

	PR c++/87513 - 'sorry' mangling PMF template-id.
	* mangle.c (write_expression): Handle SCOPE_REF to BASELINK.

2019-02-19  Jason Merrill  <jason@redhat.com>

	PR c++/88380 - wrong-code with flexible array and NSDMI.
	* typeck2.c (process_init_constructor_record): Skip flexarrays.

2019-02-20  will wray  <wjwray@gmail.com>

	PR c++/88572 - wrong handling of braces on scalar init.
	* decl.c (reshape_init_r): Allow braces around scalar initializer
	within aggregate init.  Reject double braced-init of scalar
	variable.

2019-02-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84536
	* pt.c (tsubst_init): Diagnose an initializer expanding to an
	empty list of expressions; tweak wrt dependent types.
	(regenerate_decl_from_template): For VAR_DECLs call tsubst_init
	instead of tsubst_expr.

2019-02-19  Jason Merrill  <jason@redhat.com>

	PR c++/88368 - wrong 'use of deleted function'
	* method.c (walk_field_subobs): Remember errors from get_nsdmi.
	(get_defaulted_eh_spec): Call push_tinst_level.
	* pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
	* typeck2.c (merge_exception_specifiers): Handle error_mark_node.

2019-02-19  Chung-Lin Tang <cltang@codesourcery.com>

	PR c/87924
	* parser.c (cp_parser_oacc_clause_wait): Add representation of wait
	clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.

2019-02-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/89387
	* lambda.c (maybe_generic_this_capture): Don't check
	DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.

	PR c++/89391
	* typeck.c (build_reinterpret_cast_1): Don't handle void to
	&& conversion go through build_target_expr_with_type.

	PR c++/89390
	* error.c (qualified_name_lookup_error): Only call
	suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.

2019-02-19  Tom Honermann  <tom@honermann.net>

	* name-lookup.c (get_std_name_hint): Added u8string as a name hint.

2019-02-18  Jason Merrill  <jason@redhat.com>

	PR c++/89336 - multiple stores in constexpr stmt.
	* constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
	assigned value.

	* pt.c (check_explicit_specialization): If the declarator is a
	template-id, only check whether the arguments are dependent.

	Improve duplicate [[likely]] diagnostic.
	* parser.c (cp_parser_statement): Make attrs_loc a range.  Pass it
	to process_stmt_hotness_attribute.
	* cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
	(genericize_if_stmt): Use likely/unlikely instead of predictor_name.

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

	PR c++/89217 - ICE with list-initialization in range-based for loop.
	* constexpr.c (unshare_constructor): No longer static.
	* cp-tree.h (unshare_constructor): Declare.
	* semantics.c (finish_compound_literal): When dealing with a
	non-dependent expression in a template, return the original
	expression.  Pass LOOKUP_NO_NARROWING to digest_init_flags.

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

	PR c++/89297 - ICE with OVERLOAD in template.
	* semantics.c (finish_compound_literal): Call
	instantiate_non_dependent_expr_sfinae.

2019-02-13  Alexandre Oliva <aoliva@redhat.com>

	PR c++/86379
	* cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
	* name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
	* search.c (protected_accessible_p): Follow USING_DECL_DECLS.
	(shared_member_p): Likewise.
	(lookup_member): Likewise.
	* decl.c (grok_special_member_properties): Skip USING_DECLs.
	* semantics.c (finish_omp_declare_simd_methods): Likewise.
	(finish_qualified_id_expr): Do not call shared_member_p with
	a dependent expr.

	PR c++/87322
	* pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
	Move cp_evaluated resetting before signature tsubsting.
	(gen_elem_of_pack_expansion_instantiation): Separate local
	specializations per index.

2019-02-13  David Malcolm  <dmalcolm@redhat.com>

	PR c++/89036
	* class.c (add_method): Drop destructor assertion.

2019-02-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/88986
	* decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
	context (the first argument).
	* pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
	as context.

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

	PR c++/89144 - link error with constexpr initializer_list.
	* call.c (convert_like_real) [ck_list]: Don't allocate a temporary
	array for an empty list.
	* typeck2.c (store_init_value): Don't use cxx_constant_init in a
	template.

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

	PR c++/89241 - ICE with __func__ in lambda in template.
	* pt.c (enclosing_instantiation_of): Also check
	instantiated_lambda_fn_p for the template context.

2019-02-11  Marek Polacek  <polacek@redhat.com>

	PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
	* pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
	null member pointer value.

2019-02-11  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88977
	* pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
	to maybe_constant_value calls.

2019-02-11  Marek Polacek  <polacek@redhat.com>

	* typeck2.c (digest_init_r): Remove commented code.

2019-02-11  Martin Sebor  <msebor@redhat.com>

	PR c++/87996
	* decl.c (compute_array_index_type_loc): Preserve signed sizes
	for diagnostics.  Call valid_array_size_p instead of error.
	* init.c (build_new_1): Compute size for diagnostic.  Call
	invalid_array_size_error
	(build_new): Call valid_array_size_p instead of error.

2019-02-07  Alexandre Oliva <aoliva@redhat.com>

	PR c++/86218
	* call.c (compare_ics): Deal with ck_aggr in either cs.

2019-02-06  David Malcolm  <dmalcolm@redhat.com>

	PR c++/71302
	* call.c (get_location_for_expr_unwinding_for_system_header): New
	function.
	(conversion_null_warnings): Use it when getting locations for
	EXPR, effectively adding a call to
	get_location_for_expr_unwinding_for_system_header for
	-Wconversion-null and making use of EXPR_LOCATION for
	-Wzero-as-null-pointer-constant.

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

	PR c++/89187
	* optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
	PARM_DECLs of the thunk.
	* lambda.c (maybe_add_lambda_conv_op): Likewise.

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

	PR c++/89158 - by-value capture of constexpr variable broken.
	* call.c (convert_like_real) <case ck_user>: Call mark_exp_read
	instead of mark_rvalue_use.

2019-02-05  Alexandre Oliva <aoliva@redhat.com>

	PR c++/87770
	* pt.c (instantiates_primary_template_p): New.
	(type_dependent_expression_p): Use it.

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

	PR c++/88761 - ICE with reference capture of constant.
	* lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
	non-proxy decls.

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

	PR c++/88325 - ICE with invalid out-of-line template member definition.
	* parser.c (cp_parser_class_name): Don't call make_typename_type
	for overloads.

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

	PR c++/87175
	* parser.c (cp_parser_gnu_attributes_opt): Set ok to false
	if require_open failed.

2019-01-31  Marek Polacek  <polacek@redhat.com>

	PR c++/89083, c++/80864 - ICE with list initialization in template.
	* constexpr.c (adjust_temp_type): Use copy_node and change the type
	instead of using build_constructor.
	* decl.c (reshape_init_r): Don't reshape a digested initializer.
	Return the initializer for COMPOUND_LITERAL_P.

	PR c++/88983 - ICE with switch in constexpr function.
	* constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
	(cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
	label in the else branch if we found it in the then branch.

2019-01-30  Jason Merrill  <jason@redhat.com>

	PR c++/88752 - ICE with lambda and constexpr if.
	* cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
	* pt.c (tsubst_lambda_expr): Set it.
	(instantiated_lambda_fn_p): Check it.
	(enclosing_instantiation_of): Use it.

2019-01-31  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/88170
	* cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
	a C cast in pp_c_flag_gnu_v3 mode.

2019-01-30  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88988
	* lambda.c (is_capture_proxy): Don't return true for
	DECL_OMP_PRIVATIZED_MEMBER artificial vars.

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

	PR c++/89119 - ICE with value-initialization in template.
	* pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.

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

	PR c++/86943 - wrong code converting lambda to function pointer.
	* lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
	call.  Only forward parms for decltype.
	* pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
	specially.
	* typeck.c (check_return_expr): Don't mess with a thunk call.

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

	PR c++/89089 - ICE with [[no_unique_address]].
	PR c++/88865 - wrong layout with [[no_unique_address]].
	* class.c (check_field_decls): A potentially-overlapping field makes
	the class non-layout-POD, but not non-empty.
	(end_of_class): Always consider empty data members.
	(layout_class_type): Set DECL_SIZE for empty fields.

2019-01-28  Marek Polacek  <polacek@redhat.com>

	PR c++/88358 - name wrongly treated as type.
	* parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
	in parameter-list is a type if the function's declarator-id is not
	qualified.

2019-01-27  Marek Polacek  <polacek@redhat.com>

	PR c++/88815 - narrowing conversion lost in decltype.
	PR c++/78244 - narrowing conversion in template not detected.
	* cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
	* pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
	CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
	* semantics.c (finish_compound_literal): When the compound literal
	isn't instantiation-dependent and the type isn't type-dependent,
	fall back to the normal processing.  Set CONSTRUCTOR_IS_DEPENDENT.

	PR c++/89024 - ICE with incomplete enum type.
	* call.c (standard_conversion): When converting an
	ARITHMETIC_TYPE_P to an incomplete type, return NULL.
	
2019-01-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/88969
	* call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
	* decl2.c (coerce_delete_type): Use build_pointer_type instead
	of TYPE_POINTER_TO.

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

	PR c++/89001 - mangling of reference temporaries
	* cp-tree.h (struct saved_scope): Add ref_temp_count.
	(current_ref_temp_count): New macro.
	* mangle.c (mangle_ref_init_variable): Use it.
	* typeck2.c (store_init_value): Clear it.
	* call.c (make_temporary_var_for_ref_to_temp): Copy public and
	comdat.

2019-01-24  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88976
	* semantics.c (finish_omp_cancel): Diagnose more than one if
	on #pragma omp cancel with different modifiers.  Use
	maybe_convert_cond when not in template or build_x_binary_op
	otherwise.

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

	PR c++/88757 - qualified name treated wrongly as type.
	* parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
	in parameter-list as types if name lookup for declarator-id didn't
	find one or more function templates.

2019-01-23  Jakub Jelinek  <jakub@redhat.com>

	PR c/44715
	* cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
	after genericizing cond and incr expressions.

	PR c++/88984
	* cp-gimplify.c (genericize_switch_stmt): Move cond genericization
	before the begin_bc_block call.

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

	PR c++/87893 - constexpr ctor ICE on ARM.
	PR c++/88293 - ICE with comma expression.
	* constexpr.c (initialized_type): Don't shortcut non-void type.
	Handle COMPOUND_EXPR.
	(cxx_eval_outermost_constant_expr): Return early for void type.

2019-01-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88949
	* optimize.c (cxx_copy_decl): New function.
	(clone_body): Use it instead of copy_decl_no_change.

	PR sanitizer/88901
	* typeck.c (cp_build_binary_op): Don't instrument
	SANITIZE_POINTER_COMPARE if processing_template_decl.
	(pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.

2019-01-18  Jason Merrill  <jason@redhat.com>

	PR c++/88875 - error with explicit list constructor.
	* call.c (reference_binding): Don't modify EXPR.  Set
	need_temporary_p on the ck_user conversion for a temporary.
	(convert_like_real): Check it.

2019-01-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR c/51628
	PR c/88664
	* call.c (convert_for_arg_passing): Upate the
	warn_for_address_or_pointer_of_packed_member call.
	* typeck.c (convert_for_assignment): Likewise.

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

	PR c++/86205 - ICE with ?: of throw and template-id.
	* pt.c (resolve_nondeduced_context_or_error): Split out from...
	* typeck.c (decay_conversion): ...here.
	* call.c (build_conditional_expr_1): Use it.

	PR c++/86740, ICE with constexpr if and nested generic lambdas.
	* tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.

2019-01-17  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Use typespec_loc in error messages
	about 'auto' and trailing return type.

2019-01-17  David Malcolm  <dmalcolm@redhat.com>

	PR c++/88699
	* class.c (add_method): Don't use DECL_DESTRUCTOR_P on
	USING_DECLs.

2019-01-17  Nathan Sidwell  <nathan@acm.org>

	PR c++/86610
	* semantics.c (process_outer_var_ref): Only skip dependent types
	in templates.

2019-01-17  Alexandre Oliva <aoliva@redhat.com>

	PR c++/87768
	* cp-tree.h (saved_scope): Add suppress_location_wrappers.
	* name-lookup.c (do_push_to_top_level): Save and reset it.
	(do_pop_from_top_level): Restore it.

	PR c++/86648
	* pt.c (make_template_placeholder): Use auto_identifier.
	(is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
	* error.c (dump_type): Handle template placeholders.
	* cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.

	PR c++/88146
	* cvt.c (convert_to_void): Handle all cdtor calls as if
	returning void.

2019-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Use locations[ds_storage_class] in
	error messages about ill-formed uses of mutable.

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

	PR c++/78244 - narrowing conversion in template not detected.
	* call.c (perform_implicit_conversion_flags): Set
	IMPLICIT_CONV_EXPR_BRACED_INIT.
	* cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
	* pt.c (tsubst_copy_and_build): Use it.

2019-01-15  David Malcolm  <dmalcolm@redhat.com>

	PR c++/88795
	* pt.c (build_deduction_guide): Bail out if tsubst_arg_types
	fails.

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

	* decl.c (start_decl): Improve error location.
	* decl2.c (grokfield): Likewise.

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

	* decl.c (grokdeclarator): Move further up the location_t loc
	declaration and use the location when building a TYPE_DECL for
	a typedef name.
	* decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
	about an ill-formed bit-field as typedef.

2019-01-14  Marek Polacek  <polacek@redhat.com>

	PR c++/88830 - ICE with abstract class.
	* decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
	Fix formatting.

	PR c++/88825 - ICE with bogus function return type deduction.
	* typeck.c (can_do_nrvo_p): Check error_mark_node.

2019-01-14  Tom Honermann  <tom@honermann.net>

	Implement P0482R5, char8_t: A type for UTF-8 characters and strings
	* cvt.c (type_promotes_to): Handle char8_t promotion.
	* decl.c (grokdeclarator): Handle invalid type specifier
	combinations involving char8_t.
	* lex.c (init_reswords): Add char8_t as a reserved word.
	* mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
	* parser.c (cp_keyword_starts_decl_specifier_p)
	(cp_parser_simple_type_specifier): Recognize char8_t as a simple
	type specifier.
	(cp_parser_string_literal): Use char8_array_type_node for the type
	of CPP_UTF8STRING.
	(cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
	headers.
	* rtti.c (emit_support_tinfos): type_info support for char8_t.
	* tree.c (char_type_p): Recognize char8_t as a character type.
	* typeck.c (string_conv_p): Handle conversions of u8 string
	literals of char8_t type.
	(check_literal_operator_args): Handle UDLs with u8 string literals
	of char8_t type.
	* typeck2.c (ordinary_char_type_p): New.
	(digest_init_r): Disallow initializing a char array with a u8 string
	literal.

2019-01-14  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/88263
	* decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
	as location of the TLS wrapper.

2019-01-12  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (cp_finish_decl): Improve error location.
	* decl2.c (grokfield): Likewise, improve two locations.

2019-01-11  Marek Polacek  <polacek@redhat.com>

	PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
	* typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
	ADDR_EXPR.

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

	PR c++/88312 - pack expansion of decltype.
	* pt.c (instantiation_dependent_r): A template non-type parameter
	pack is instantiation-dependent.

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

	PR c++/88613 - ICE with use of const var in lambda.
	* expr.c (mark_use): Fix location wrapper handling.
	* cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.

2019-01-11  Tobias Burnus  <burnus@net-b.de>

	PR C++/88114
	* decl2.c (maybe_emit_vtables): If needed, generate code for
	the destructor of an abstract class.
	(mark_used): Update comment for older function-name change.

2019-01-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (start_decl): Improve error location.
	(grokdeclarator): Likewise, improve two locations.

2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

	PR other/16615

	* cp-tree.h: Mechanically replace "can not" with "cannot".
	* parser.c: Likewise.
	* pt.c: Likewise.

2019-01-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grok_reference_init): Improve error location.
	(grokdeclarator): Likewise, improve two locations.

2019-01-08  Marek Polacek  <polacek@redhat.com>

	PR c++/88538 - braced-init-list in template-argument-list.
	* parser.c (cp_parser_template_argument): Handle braced-init-list when
	in C++20.

	PR c++/88548 - this accepted in static member functions.
	* parser.c (cp_debug_parser): Adjust printing of
	local_variables_forbidden_p.
	(cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
	(cp_parser_primary_expression): When checking
	local_variables_forbidden_p, use THIS_FORBIDDEN or
	LOCAL_VARS_FORBIDDEN.
	(cp_parser_lambda_body): Update the type of
	local_variables_forbidden_p.  Set it to 0 rather than false.
	(cp_parser_condition): Adjust call to cp_parser_declarator.
	(cp_parser_explicit_instantiation): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_declarator): New parameter.  Use it.
	(cp_parser_direct_declarator): New parameter.  Use it to set
	local_variables_forbidden_p.  Adjust call to cp_parser_declarator.
	(cp_parser_type_id_1): Adjust call to cp_parser_declarator.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_default_argument): Update the type of
	local_variables_forbidden_p.  Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
	rather than true.
	(cp_parser_member_declaration): Tell cp_parser_declarator if we saw
	'static' or 'friend'.
	(cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
	(cp_parser_late_parsing_default_args): Update the type of
	local_variables_forbidden_p.  Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
	rather than true.
	(cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
	(cp_parser_objc_class_ivars): Likewise.
	(cp_parser_objc_struct_declaration): Likewise.
	(cp_parser_omp_for_loop_init): Likewise.
	* parser.h (cp_parser): Change the type of local_variables_forbidden_p
	to unsigned char.
	(LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
	Define.

2019-01-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (start_decl): Improve permerror location.

2019-01-08  Jonathan Wakely  <jwakely@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/88554
	* decl.c (finish_function): For -Wreturn-type don't add a return *this;
	fixit hint if current_class_ref is NULL.  Use a single if instead of
	two nested ones.

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

	* decl.c (start_decl): Improve two error_at locations.
	(expand_static_init): Likewise.

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

	PR c++/88741 - wrong error with initializer-string.
	* decl.c (cp_complete_array_type): Strip any location wrappers.

2019-01-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	PR c++/88261
	PR c++/69338
	PR c++/69696
	PR c++/69697
	* cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
	* typeck2.c (digest_init_r): Raise an error for non-static
	initialization of a flexible array member.
	(process_init_constructor, massage_init_elt,
	process_init_constructor_array, process_init_constructor_record,
	process_init_constructor_union, process_init_constructor): Add the
	flags parameter and pass it thru.
	(store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
	digest_init_flags for static decls.

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

	PR c++/85052
	* cp-tree.h (cp_build_vec_convert): Declare.
	* parser.c (cp_parser_postfix_expression): Parse
	__builtin_convertvector.
	* constexpr.c: Include fold-const-call.h.
	(cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
	(potential_constant_expression_1): Likewise.
	* semantics.c (cp_build_vec_convert): New function.
	* pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
	IFN_VEC_CONVERT.

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

	PR c++/88636
	* decl.c (builtin_function_1): Return result of pushdecl_top_level
	or pushdecl rather than decl.

2019-01-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* tree.c (handle_nodiscard_attribute): Improve warning location.

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

	PR c++/88612 - ICE with -Waddress-of-packed-member.
	* call.c (convert_for_arg_passing): Only give warnings with tf_warning.
	* typeck.c (convert_for_assignment): Likewise.

	PR c++/88631 - CTAD failing for value-initialization.
	* typeck2.c (build_functional_cast): Try deducing the template
	arguments even if there are no arguments to deduce from.

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

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