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

	Backported from master:
	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-22  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-22  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-22  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-22  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-22  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-22  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-22  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-22  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-22  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-22  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-22  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-22  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-22  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-04-21  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-12-16  Nathan Sidwell  <nathan@acm.org>

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

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

	PR c++/91953
	* constexpr.c (potential_constant_expression_1) [PARM_DECL]: Allow
	empty class type.

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-09-17  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-17  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-17  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-17  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-17  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-09-17  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2020-04-07  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-09-17  Jakub Jelinek  <jakub@redhat.com>

	Backported from master:
	2020-04-07  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-05-25  Jason Merrill  <jason@redhat.com>

	PR c++/90749
	* 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-04  Marek Polacek  <polacek@redhat.com>

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

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

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

	PR c++/91377
	* mangle.c (write_expression): Skip IMPLICIT_CONV_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-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-04  Release Manager

	* GCC 8.4.0 released.

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

	PR c++/93905
	Backported from mainline
	2018-11-04  Jason Merrill  <jason@redhat.com>

	* constexpr.c (cxx_eval_outermost_constant_expr): Don't wrap a
	CONSTRUCTOR if one was passed in.

2020-02-26  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.

2020-02-26  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.

2020-02-26  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.

2020-02-26  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.

2020-02-25  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.

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

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

2020-02-25  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.

2020-02-25  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.

2020-02-25  Alexandre Oliva <aoliva@redhat.com>

	PR c++/86747
	* pt.c (tsubst_friend_class): Enter tsubsted class context.

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

	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.

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

	* cp-tree.h (TYPE_REF_P): New.

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

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

2020-02-25  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.

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

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

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

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

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

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

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

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

2020-02-24  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-24  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-14  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.

	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.

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

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.

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

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

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

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

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

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

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.

2019-09-03  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-30  Richard Biener  <rguenther@suse.de>

	Backport from mainline
	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-08-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-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-08-15  Jonathan Wakely  <jwakely@redhat.com>

	Backport from mainline.
	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-01  Marek Polacek  <polacek@redhat.com>	

	Backported from mainline
	2018-06-12  Jason Merrill  <jason@redhat.com>

	PR c++/86098 - ICE with template placeholder for TTP.
	* typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
	CLASS_PLACEHOLDER_TEMPLATE.

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-05-22  Eric Botcazou  <ebotcazou@adacore.com>

	Backport from mainline
	2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>

	PR c++/85400
	* decl2.c (adjust_var_decl_tls_model): New static function.
	(comdat_linkage): Call it on a variable.
	(maybe_make_one_only): Likewise.

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

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

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

	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-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-04-30  Jakub Jelinek  <jakub@redhat.com>

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

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

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

	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-14  Jakub Jelinek  <jakub@redhat.com>

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

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

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

	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.

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

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

	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++/88419 - C++17 ICE with class template arg deduction.
	* pt.c (make_template_placeholder): Set TYPE_CANONICAL after
	CLASS_PLACEHOLDER_TEMPLATE.

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

	PR c++/87921 - wrong error with inline static data member.
	* decl2.c (c_parse_final_cleanups): Don't force out uninstantiated
	inline static data members.

	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.

	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.

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

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

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

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

	Backported from mainline
	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-22  Release Manager

	* GCC 8.3.0 released.

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

	2019-02-13  David Malcolm  <dmalcolm@redhat.com>
	Backport of r268847 from trunk.

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

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

	Backport of r267957 from trunk.
	2019-01-15  David Malcolm  <dmalcolm@redhat.com>

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

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

	Backport of r262199 from trunk.
	2018-06-27  David Malcolm  <dmalcolm@redhat.com>

	PR c++/86329
	* name-lookup.c (consider_binding_level): Filter out names that
	match anon_aggrname_p.

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

	Backport of r259720 from trunk.
	2018-04-27  David Malcolm  <dmalcolm@redhat.com>

	PR c++/85515
	* name-lookup.c (consider_binding_level): Skip compiler-generated
	variables.
	* search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
	nested if statements into a series of rejection tests.  Reject
	lambda-ignored entities as suggestions.

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

	Revert:
	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-02-11  Jason Merrill  <jason@redhat.com>

	PR c++/89267 - change of error location.
	* pt.c (tsubst_copy_and_build): Do still clear expr location
	for instantiated thunk calls.

2019-02-08  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.

	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.

	PR c++/86943 - wrong code converting generic lambda to pointer.
	* pt.c (tsubst_copy_and_build): Don't propagate CALL_FROM_THUNK_P.

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

	Backported from mainline
	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-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-24  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88976
	* semantics.c (finish_omp_cancel): Use maybe_convert_cond when not in
	template or build_x_binary_op otherwise.

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

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

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

	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.

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

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

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

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

	PR c++/89083, c++/80864 - ICE with list initialization in template.
	* decl.c (reshape_init_r): Don't reshape a digested initializer.
	Return the initializer for COMPOUND_LITERAL_P.

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

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

	PR c++/87075 - ICE with constexpr array initialization.
	* constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.

	* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.

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-08  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2018-12-20  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88180
	* parser.c (cp_parser_class_specifier_1): If
	cp_parser_check_type_definition fails, skip default arguments, NSDMIs,
	etc. like for erroneous template args.

	2018-12-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/87934
	* constexpr.c (cxx_eval_constant_expression) <case CONSTRUCTOR>: Do
	re-process TREE_CONSTANT CONSTRUCTORs if they aren't reduced constant
	expressions.

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

	PR c++/88410
	* cp-gimplify.c (cp_fold) <case ADDR_EXPR>: For offsetof-like folding,
	call maybe_constant_value on val to see if it is INTEGER_CST.

	2018-12-14  Jakub Jelinek  <jakub@redhat.com>

	PR c++/82294
	PR c++/87436
	* init.c (build_vec_init): Change num_initialized_elts type from int
	to HOST_WIDE_INT.  Build a RANGE_EXPR if e needs to be repeated more
	than once.

	2018-12-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/86669
	* call.c (make_temporary_var_for_ref_to_temp): Call pushdecl even for
	automatic vars.

	PR c++/87506
	* constexpr.c (adjust_temp_type): Handle EMPTY_CLASS_EXPR.

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

	PR c++/88103
	* typeck.c (build_class_member_access_expr): If unary_complex_lvalue
	turned xvalue_p into non-xvalue_p, call move on it.

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

	PR c++/88181
	* class.c (fixup_attribute_variants): Also propagate TYPE_PACKED
	to variants.

	2018-11-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/88122
	* method.c (maybe_explain_implicit_delete): If
	FUNCTION_FIRST_USER_PARMTYPE (decl) is NULL, set const_p to false
	instead of ICEing.

2018-01-02  Segher Boessenkool  <segher@kernel.crashing.org>

	Backport from trunk
	2018-12-06  Segher Boessenkool  <segher@kernel.crashing.org>

	PR inline-asm/55681
	* parser.c (cp_parser_asm_definition): Update grammar.  Allow any
	combination of volatile and goto, in any order, without repetitions.

	Backport from trunk
	2018-12-06  Segher Boessenkool  <segher@kernel.crashing.org>

	* cp-tree.h (finish_asm_stmt): Update declaration.
	* parser.c (cp_parser_asm_definition): Detect the inline keyword
	after asm.  Pass a flag for it to finish_asm_stmt.
	* pt.c (tsubst_expr): Pass the ASM_INLINE_P flag to finish_asm_stmt.
	* semantics.c (finish_asm_stmt): Add inline_p parameter.  Use it to
	set ASM_INLINE_P.

	Backport from trunk
	2018-12-19  Segher Boessenkool  <segher@kernel.crashing.org>

	* parser.c (cp_parser_asm_definition): Rewrite the loop to work without
	"done" boolean variable.

	Backport from trunk
	2018-12-19  Segher Boessenkool  <segher@kernel.crashing.org>

	* parser.c (cp_parser_asm_definition): Rewrite the loop to work without
	"done" boolean variable.
	* parser.c (cp_parser_asm_definition): Keep track of the location each
	asm qualifier is first seen; use that to give nicer "duplicate asm
	qualifier" messages.

	Backport from trunk
	2018-12-19  Segher Boessenkool  <segher@kernel.crashing.org>

	* parser.c (cp_parser_asm_definition) <RID_CONST, RID_RESTRICT>: Give
	a more specific error message (instead of just falling through).

	Backport from trunk
	2018-12-10  Segher Boessenkool  <segher@kernel.crashing.org>

	* parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers
	on top-level asm.

2018-12-13  Nathan Sidwell  <nathan@acm.org>

	PR c++/87531
	* class.c (finish_struct): Set DECL_CONTEXT of template assign op.
	* name-lookup.c (get_class_binding_direct): Don't strip using-decl
	of overload here.
	* parser.c (cp_parser_postfix_expression): Cope with using decl in
	overload set.
	* semantics.c (finish_id_expr): Likewise.

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

	Backported from mainline
	2018-11-26  Marek Polacek  <polacek@redhat.com>

	PR c++/88120 - ICE when calling save_expr in a template.
	* typeck.c (cp_build_binary_op): Call cp_save_expr instead of
	save_expr.

2018-11-29  Nathan Sidwell  <nathan@acm.org>

	PR c++/87531
	* class.c (finish_struct): In a template, add artificial using
	decl for operator=.

2018-11-15  Nathan Sidwell  <nathan@acm.org>

	PR c++/86246
	PR c++/87989
	* typeck.c (finish_class_member_access_expr): Conversion operator
	to dependent type is dependent.

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

	Backported from mainline
	2018-10-24  Jakub Jelinek  <jakub@redhat.com>

	PR c++/86288
	* parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when
	:: is not present and attr_ns non-NULL, canonicalize also attr_id.
	(cp_parser_attribute_spec): Fix comment typo.

2018-10-23  Tom de Vries  <tdevries@suse.de>

	backport from trunk:
	2018-07-31  Tom de Vries  <tdevries@suse.de>

	PR debug/86687
	* optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.

2018-10-11  Jakub Jelinek  <jakub@redhat.com>

	PR c++/87582
	* typeck.c (maybe_warn_about_returning_address_of_local): If
	whats_returned is a structured binding identifier and the structured
	binding is a reference, recurse on its initializer.

2018-10-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84940
	* semantics.c (finish_unary_op_expr): Check return value of
	build_x_unary_op for error_mark_node.

2018-10-03  Martin Liska  <mliska@suse.cz>

	Backport from mainline
	2018-10-03  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/86109
	* parser.c (cp_parser_lambda_declarator_opt):
	Set DECL_LAMBDA_FUNCTION for lambdas.

2018-09-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/85070
	* method.c (lazily_declare_fn): During error-recovery add_method
	may return false.

2018-09-18  Nathan Sidwell  <nathan@acm.org>

	PR c++/86881
	* name-lookup.c (check_local_shadow): Ignore auto types.

2018-09-13  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Backport from mainline
	2018-09-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
	gcc/cp

	PR c++/87093
	* method.c (constructible_expr): We're in an unevaluated context
	in all cases, not just for class targets.

	testsuite/

	PR c++/87093
	* g++.dg/ext/is_constructible2.C: New.

2018-09-05   Pádraig Brady  <p@draigbrady.com>

	PR c++/87185
	* lambda.c (prune_lambda_captures): Protect against const_vars.get
	returning NULL.

2018-09-05  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2018-08-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/87095
	* decl.c (begin_destructor_body): If current_class_type has
	virtual bases and the primary base is nearly empty virtual base,
	voidify clearing of vptr and make it conditional on in-charge
	argument.

	2018-08-08  Jakub Jelinek  <jakub@redhat.com>

	PR c++/86836
	* pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
	before tsubst_init, not after it.

	PR c++/86738
	* constexpr.c (cxx_eval_binary_expression): For arithmetics involving
	NULL pointer set *non_constant_p to true.
	(cxx_eval_component_reference): For dereferencing of a NULL pointer,
	set *non_constant_p to true and return t.

	2018-08-03  Jason Merrill  <jason@redhat.com>

	PR c++/86706
	* class.c (build_base_path): Use currently_open_class.

2018-08-31  Nathan Sidwell  <nathan@acm.org>

	PR c++/87155
	PR c++/84707
	* name-lookup.c (name_lookup::search_namespace): Don't look at
	inlines when searching for NULL names.

2018-08-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/87122
	* pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If
	processing_template_decl and decl is structured binding decl, call
	cp_finish_decomp.

2018-08-17  Richard Biener  <rguenther@suse.de>

	Backport from mainline
	2018-08-02  Richard Biener  <rguenther@suse.de>

	PR c++/86763
	* class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
	to the CLASSTYPE_AS_BASE.

2018-08-10  Jason Merrill  <jason@redhat.com>

	PR c++/86728 - C variadic generic lambda.
	* parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
	a pack if it's followed by a declarator-id.

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

	Backport from mainline
	2018-08-06  Marek Polacek  <polacek@redhat.com>

	PR c++/86767
	* constexpr.c (cxx_eval_statement_list): Handle continue.

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

	PR c++/86190 - bogus -Wsign-conversion warning
	* typeck.c (cp_build_binary_op): Add a warning sentinel.

2018-07-26  Release Manager

	* GCC 8.2.0 released.

2018-07-17  Jason Merrill  <jason@redhat.com>

	PR c++/86480 - nested variadic lambda and constexpr if.
	* pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
	IF_STMT_EXTRA_ARGS.

2018-07-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/3698
	PR c++/86208
	* cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
	in TREE_USED flag from stmt to h->to.

2018-07-13  Nathan Sidwell  <nathan@acm.org>

	PR c++/86374
	* pt.c (lookup_template_class_1): Use tsubst_aggr_type for
	contexts that are classes.

2018-07-12  Jakub Jelinek  <jakub@redhat.com>

	* decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
	type here, instead add "omp declare target implicit" attribute.  Add
	that attribute instead of "omp declare target" also when
	processing_template_decl.
	* decl.c (cp_finish_decl): Diagnose vars without mappable type here,
	and before calling cp_omp_mappable_type call complete_type.

2018-07-10  Jakub Jelinek  <jakub@redhat.com>

	PR sanitizer/86406
	* cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
	DEBUG_BEGIN_STMTs.

2018-07-04  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Backport from mainline
	2018-07-04  Ville Voutilainen  <ville.voutilainen@gmail.com>

	gcc/cp/

	PR c++/86398
	* method.c (is_trivially_xible): Return false
	if is_xible_helper returns a NULL_TREE.

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

	PR c++/86378 - functional cast in noexcept-specifier.
	* tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.

	* name-lookup.c (do_push_to_top_level): Don't allocate
	current_lang_base.
	(do_pop_from_top_level): Release current_lang_base.

2018-06-26  Jason Merrill  <jason@redhat.com>

	PR c++/86320 - memory-hog with std::array of pair
	* typeck2.c (process_init_constructor_array): If zero-initialization
	is fine for one element, we're done.

	PR c++/80290 - memory-hog with std::pair.
	* pt.c (type_unification_real): Skip non-dependent conversion
	check for a nested list argument.
	(braced_init_depth): New.

2018-06-26  Jakub Jelinek  <jakub@redhat.com>

	PR c++/86291
	* parser.c (cp_parser_omp_for_loop_init): Change for_block argument
	type from vec<tree, va_gc> * to vec<tree, va_gc> *&.

2018-06-22  Jason Merrill  <jason@redhat.com>

	PR c++/86219 - ICE with erroneous initializer in template.
	* constexpr.c (fold_non_dependent_expr): Add complain parm.
	* typeck2.c (store_init_value): Pass tf_warning_or_error.

2018-06-21  Jason Merrill  <jason@redhat.com>

	PR c++/86182 - ICE with anonymous union passed to template.
	* pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
	used to declare a named variable.

2018-06-20  Nathan Sidwell  <nathan@acm.org>

	PR c++/85634 - tsubst ICE on unmarked lookup
	* parser.c (cp_parser_primary_expression): Keep lookup in template.

2018-06-18  Jason Merrill  <jason@redhat.com>

	PR c++/86200 - ICE with unexpanded pack in lambda parameter.
	* pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
	function type.

	PR c++/81060 - ICE with unexpanded parameter pack.
	* pt.c (check_for_bare_parameter_packs): Add loc parameter.
	* decl.c (grokdeclarator): Call it for qualifying_scope.

2018-06-15  Jason Merrill  <jason@redhat.com>

	PR c++/86147 - wrong capture for template argument.
	* expr.c (mark_use): Look through NOP_EXPR.

	PR c++/82882 - ICE with lambda in template default argument.
	* lambda.c (record_null_lambda_scope): New.
	* pt.c (tsubst_lambda_expr): Use it.
	* name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
	function that isn't open.

	* tree.c (maybe_warn_parm_abi): Inform the location of the class.

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

	PR c++/86094 - wrong code with defaulted move ctor.
	* class.c (classtype_has_non_deleted_move_ctor): New.
	* tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
	Handle v12 breakage.

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

	PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
	* class.c (maybe_warn_about_overly_private_class): Handle inherited
	constructors.

	PR c++/85963 - -Wunused-but-set with ?: in template.
	* pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.

	PR c++/61806 - missed SFINAE with partial specialization.
	* cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
	parameter to constructor.
	* pt.c (instantiate_class_template_1): Enable access checking
	before call to most_specialized_partial_spec.

	PR c++/85765 - SFINAE and non-type default template arg.
	* pt.c (type_unification_real): Do full semantic processing if
	substituting a partial args list replaces all template parms.

	PR c++/85764 - bogus 'this' not captured error.
	* lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
	(nonlambda_method_basetype): Handle NSDMI.

	PR c++/85807 - ICE with call in template NSDMI.
	* init.c (get_nsdmi): Use push_to/pop_from_top_level.
	* tree.c (bot_manip): Don't set_flags_from_callee in a template.

	PR c++/85815 - reference to member of enclosing template.
	* search.c (lookup_base): Use currently_open_class.
	(lookup_member): Use it regardless of -fconcepts.
	* parser.c (cp_parser_postfix_dot_deref_expression): Check it.

	PR c++/86094 - wrong code with defaulted move ctor.
	* tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.

2018-06-06  Jason Merrill  <jason@redhat.com>

	PR c++/86060 - ICE on range for with -std=c++98.
	* parser.c (cp_parser_init_statement): Don't clobber *decl after
	pedwarn.

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

	Backported from mainline
	2018-05-24  Marek Polacek  <polacek@redhat.com>

	PR c++/85847
	* init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
	variable for its result.  Fix a condition.
	(build_new): Use fold_non_dependent_expr.  Tweak a condition.

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

	PR c++/85976
	* tree.c (cp_tree_equal): Handle USING_DECL.

2018-06-05  Jason Merrill  <jason@redhat.com>

	PR c++/85731 - wrong error with qualified-id in template.
	* semantics.c (finish_qualified_id_expr): build_qualified_name
	for unbound names in the current class.

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

	PR c++/85739 - ICE with pointer to member template parm.
	* cvt.c (perform_qualification_conversions): Use cp_fold_convert.

	PR c++/85761 - ICE with ill-formed use of const outer variable.
	* expr.c (mark_use): Handle location wrappers.

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

	PR c++/85873 - constant initializer_list array not in .rodata.
	* call.c (convert_like_real): Treat the backing array for an
	initializer_list like a C99 compound literal.

2018-05-30  Jakub Jelinek  <jakub@redhat.com>

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

	PR c++/85952
	* init.c (build_aggr_init): For structured binding initialized from
	array call mark_rvalue_use on the initializer.

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

	PR c/85696
	* cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
	* cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
	cxx_omp_predetermined_sharing_1.  Rename old function to ...
	(cxx_omp_predetermined_sharing_1): ... this.
	* semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
	instead of cxx_omp_predetermined_sharing.

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

	PR c++/85662
	* cp-gimplify.c (cp_fold): Use fold_offsetof rather than
	fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
	fold_convert.

2018-05-24  Jason Merrill  <jason@redhat.com>

	PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
	* pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
	generic lambda.

	PR c++/85864 - literal template and default template arg.
	* pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.

	PR c++/81420 - not extending temporary lifetime.
	* call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
	* class.c (build_base_path): Avoid redundant move of an rvalue.

2018-05-22  Jason Merrill  <jason@redhat.com>

	PR c++/85866 - error with .* in default template arg.
	* pt.c (tsubst_copy_and_build): Handle partial instantiation.

2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>

	Backport from mainline
	2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>

	PR c++/85782
	* cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
	OACC_LOOPs.

2018-05-08  Jason Merrill  <jason@redhat.com>

	PR c++/85706 - class deduction under decltype
	* pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
	*walk_subtrees whether or not we walked into the operand.
	(type_uses_auto): Only look at deduced contexts.

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

	PR c++/85695
	* semantics.c (finish_if_stmt_cond): See through typedefs.

2018-05-07  Jason Merrill  <jason@redhat.com>

	PR c++/85646 - lambda visibility.
	* decl2.c (determine_visibility): Don't mess with template arguments
	from the containing scope.
	(vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
	thunk.

	PR c++/85618 - ICE with initialized VLA.
	* tree.c (vla_type_p): New.
	* typeck2.c (store_init_value, split_nonconstant_init_1): Check it
	rather than array_of_runtime_bound_p.

2018-05-04  Jason Merrill  <jason@redhat.com>

	PR c++/85305 - pack in lambda init-capture.
	* parser.c (cp_parser_initializer): Add subexpression_p parm; don't
	check_for_bare_parameter_packs in a subexpression.
	(cp_parser_lambda_introducer): Use it.

2018-05-02  Release Manager

	* GCC 8.1.0 released.

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

	PR c++/85587 - error with scoped enum in template.
	* semantics.c (finish_qualified_id_expr): Don't return an
	unqualified IDENTIFIER_NODE.

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

	PR c++/85580 - extern "C" and local variables
	* name-lookup.c (check_extern_c_conflict): Ignore local decls.

2018-04-27  Jakub Jelinek  <jakub@redhat.com>

	PR c++/85553
	* init.c (build_zero_init_1): For zero initialization of
	NULLPTR_TYPE_P type use build_int_cst directly.

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

	PR c++/85545 - ICE with noexcept PMF conversion.
	* cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
	build_ptrmemfunc.
	* typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
	adjustment.
	(build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.

2018-04-25  Nathan Sidwell  <nathan@acm.org>

	PR c++/85437
	PR c++/49171
	* cp-tree.h (REINTERPRET_CAST_P): New.
	* constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
	Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
	for non-trivial PTRMEM_CST cases.
	* typeck.c (build_nop_reinterpret): New.
	(build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
	NOP_EXPRs returned by cp_convert.

2018-04-23  Jason Merrill  <jason@redhat.com>

	PR c++/69560 - wrong alignof(double) on x86.
	CWG 1879 - Inadequate definition of alignment requirement.
	* cp-tree.h (ALIGNOF_EXPR_STD_P): New.
	* typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
	(cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
	(cxx_alignof_expr): Pass it.
	* parser.c (cp_parser_unary_expression): Pass it.
	* pt.c (tsubst_copy): Copy it.
	(tsubst_copy_and_build): Pass it.
	* decl.c (fold_sizeof_expr): Pass it.

2018-04-23  Jakub Jelinek  <jakub@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/85470 - wrong error with static data member.
	* decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
	* typeck2.c (store_init_value): Likewise.

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

	PR c++/85462
	* cp-tree.h (tinst_level): Remove in_system_header_p member,
	change refcount member from unsigned char to unsigned short,
	add refcount_infinity static data member, adjust comments.
	* pt.c (tinst_level::refcount_infinity): Define.
	(inc_refcount_use): Remove assert, don't increment if refcount
	is already refcount_infinity, adjust comment.
	(dec_refcount_use): Remove assert, don't decrement if refcount
	is refcount_infinity, adjust comment.
	(push_tinst_level_loc): Formatting fix.

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

	PR c++/84611
	* pt.c (lookup_template_class_1): Check pushtag return value for
	error_mark_node.

2018-04-19  Alexandre Oliva  <aoliva@redhat.com>

	PR c++/80290
	* cp-tree.h (tinst_level::free): Fix whitespace.

2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84630
	* pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
	for error_mark_node.

2018-04-18  Jakub Jelinek  <jakub@redhat.com>

	PR c++/84463
	* typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
	tricks from here to ...
	* cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
	if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.

2018-04-18  Alexandre Oliva <aoliva@redhat.com>

	PR c++/80290
	* cp-tree.h (struct tinst_level): Split decl into tldcl and
	targs.  Add private split_list_p, tree_list_p, and not_list_p
	inline const predicates; to_list private member function
	declaration; free public member function declaration; list_p,
	get_node and maybe_get_node accessors, and refcount data
	member.  Narrow errors to unsigned short.
	* error.c (print_instantiation_full_context): Use new
	accessors.
	(print_instantiation_partial_context_line): Likewise.  Drop
	const from tinst_level-typed parameter.
	* mangle.c (mangle_decl_string): Likewise.
	* pt.c (freelist): New template class.
	(tree_list_freelist_head): New var.
	(tree_list_freelist): New fn, along with specializations.
	(tinst_level_freelist_head): New var.
	(pending_template_freelist_head): Likewise.
	(tinst_level_freelist, pending_template_freelist): New fns.
	(tinst_level::to_list, tinst_level::free): Define.
	(inc_refcount_use, dec_refcount_use): New fns for tinst_level.
	(set_refcount_ptr): New template fn.
	(add_pending_template): Adjust for refcounting, freelists and
	new accessors.
	(neglectable_inst_p): Take a NULL d as a non-DECL.
	(limit_bad_template_recursion): Use new accessors.
	(push_tinst_level): New overload to create the list.
	(push_tinst_level_loc): Make it static, split decl into two
	args, adjust tests and initialization to cope with split
	lists, use freelist, adjust for refcounting.
	(push_tinst_level_loc): New wrapper with the old interface.
	(pop_tinst_level): Adjust for refcounting.
	(record_last_problematic_instantiation): Likewise.
	(reopen_tinst_level): Likewise.  Use new accessors.
	(instantiate_alias_template): Adjust for split list.
	(fn_type_unification): Likewise.
	(get_partial_spec_bindings): Likewise.
	(instantiate_pending_templates): Use new accessors.  Adjust
	for refcount.  Release pending_template to freelist.
	(instantiating_current_function_p): Use new accessors.

2018-04-16  Alexandre Oliva <aoliva@redhat.com>

	PR c++/85039
	* parser.c (cp_parser_builtin_offset): Reject type definitions.
	* mangle.c (nested_anon_class_index): Avoid crash returning -1
	if we've seen errors.

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

	PR c++/85385
	* name-lookup.c (macro_use_before_def::maybe_make): New function,
	checking that the use is indeed before the definition.
	(macro_use_before_def::macro_use_before_def): Make private.
	(macro_use_before_def::~macro_use_before_def): Make private.  Move
	check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
	(lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
	than using new directly.

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

	PR c++/85356 - ICE with pointer to member function.
	* pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
	flag_noexcept_type.  Build the new spec within the function context.
	* except.c (build_noexcept_spec): Do get constant value in templates
	if flag_noexcept_type.
	* decl.c (check_redeclaration_exception_specification): Don't
	instantiate noexcept on a dependent declaration.

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

	PR c++/85258
	* constexpr.c (reduced_constant_expression_p): Return false for null
	trees.

2018-04-11  Marek Polacek  <polacek@redhat.com>

	PR c++/85032
	* constexpr.c (potential_constant_expression_1): Consider conversions
	from classes to literal types potentially constant.

2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/70808
	* init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
	the type like TYPE_PTR_OR_PTRMEM_P.

2018-04-10  Jason Merrill  <jason@redhat.com>

	PR debug/65821 - wrong location for main().
	* call.c (clear_location_r, convert_default_arg): Revert.
	* tree.c (break_out_target_exprs): Add clear_location parm.
	(struct bot_data): New.
	(bot_manip): Clear location if requested.
	* init.c (get_nsdmi): Pass clear_location.

2018-04-10  David Malcolm  <dmalcolm@redhat.com>

	PR c++/85110
	* call.c (get_fndecl_argument_location): Make non-static.
	* cp-tree.h (get_fndecl_argument_location): New decl.
	* typeck.c (convert_for_assignment): When complaining due to
	conversions for an argument, show the location of the parameter
	within the decl.

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

	PR c++/85312 - P0962 cleanup
	* parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
	diagnostics.

2018-04-10  Jason Merrill  <jason@redhat.com>

	PR debug/65821 - wrong location for main().
	* call.c (clear_location_r): New.
	(convert_default_arg): Use it.
	* tree.c (bot_manip): Remove builtin_LINE/FILE handling.

	PR c++/85285 - ICE with flexible array after substitution.
	* pt.c (instantiate_class_template_1): Check for flexible array in
	union.

2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/85227
	* decl.c (cp_finish_decomp): In a template, if the type is incomplete
	issue a pedwarn and defer trying to do bindings.

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

	PR c++/85279 - dump_expr doesn't understand decltype.
	* error.c (dump_expr): Handle DECLTYPE_TYPE.

	PR c++/85262 - ICE with redundant qualification on constructor.
	* call.c (build_new_method_call_1): Move make_args_non_dependent
	after A::A() handling.

	PR c++/85277 - ICE with invalid offsetof.
	* semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
	Adjust -Winvalid-offsetof diagnostic to say conditionally supported.

	PR c++/85264 - ICE with excess template-parameter-list.
	* parser.c (cp_parser_check_template_parameters): Add template_id_p
	parameter.  Don't allow an extra template header if true.
	(cp_parser_class_head): Pass template_id_p.
	(cp_parser_elaborated_type_specifier): Likewise.
	(cp_parser_alias_declaration): Likewise.
	(cp_parser_check_declarator_template_parameters): Likewise.

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

	PR c++/85194
	* parser.c (cp_parser_simple_declaration): For structured bindings,
	if *maybe_range_for_decl is NULL after parsing it, set it to
	error_mark_node.

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

	PR c++/85256 - ICE capturing pointer to VLA.
	* lambda.c (add_capture): Distinguish between variable-size and
	variably-modified types.

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

	PR c++/85214 - ICE with alias, generic lambda, constexpr if.
	* pt.c (extract_locals_r): Remember local typedefs.

2018-04-06  David Malcolm  <dmalcolm@redhat.com>

	PR c++/84269
	* name-lookup.c (struct std_name_hint): Move out of
	get_std_name_hint; add field "min_dialect".
	(get_std_name_hint): Add min_dialect values to all initializers.
	Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
	<future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
	<shared_mutex>, <string_view>, <thread>, and <variant>.
	Add fstream, ifstream, and ofstream to <fstream>.
	Add istringstream, ostringstream, and stringstream to <sstream>.
	Add basic_string to <string>.
	Add tuple_element and tuple_size to <tuple>.
	Add declval to <utility>.
	Fix ordering of <queue> and <tuple>.
	Return a std_name_hint, rather than a const char *.
	(get_cxx_dialect_name): New function.
	(maybe_suggest_missing_std_header): Detect names that aren't yet
	available in the current dialect, and instead of suggesting a
	missing #include, warn about the dialect.

2018-04-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/85210
	* pt.c (tsubst_decomp_names): Return error_mark_node and assert
	errorcount is set if tsubst doesn't return a VAR_DECL.

2018-04-06  David Malcolm  <dmalcolm@redhat.com>

	PR c++/85021
	* name-lookup.c (using_directives_contain_std_p): New function.
	(has_using_namespace_std_directive_p): New function.
	(suggest_alternatives_for): Simplify if/else logic using early
	returns.  If no candidates were found, and there's a
	"using namespace std;" directive, call
	maybe_suggest_missing_std_header.
	(maybe_suggest_missing_header): Split later part of the function
	into..
	(maybe_suggest_missing_std_header): New.

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

	PR c++/85242 - ICE with class definition in template parm.
	* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
	processing_template_parmlist.

	PR c++/85240 - LTO ICE with using of undeduced auto fn.
	* cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.

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

	PR c++/85209
	* pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
	is not prev, if prev == decl.

	PR c++/85208
	* decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
	maybe_apply_pragma_weak here...
	(cp_maybe_mangle_decomp): ... but call it here instead.

2018-04-05  Jason Merrill  <jason@redhat.com>

	PR c++/85136 - ICE with designated init in template.
	* decl.c (maybe_deduce_size_from_array_init): Handle dependent
	designated initializer.
	(check_array_designated_initializer): Update ce->index with the
	constant value.

	PR c++/83808 - ICE with VLA initialization.
	* typeck2.c (process_init_constructor_array): Don't require a VLA
	initializer to have VLA type.

2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80956
	* call.c (convert_like_real): Fail gracefully for a broken
	std::initializer_list, missing a definition.

	* name-lookup.c (do_pushtag): Tweak message, use %< and %>.

2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84792
	* decl.c (grokdeclarator): Fix diagnostic about typedef name used
	as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.

2018-04-05  Jason Merrill  <jason@redhat.com>

	PR c++/82152 - ICE with class deduction and inherited ctor.
	* pt.c (do_class_deduction): Ignore inherited ctors.

	PR c++/84665 - ICE with array of empty class.
	* decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.

	PR c++/85228 - ICE with lambda in enumerator in template.
	* pt.c (bt_instantiate_type_proc): Don't assume
	CLASSTYPE_TEMPLATE_INFO is non-null.

2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement P0969
	* decl.c (find_decomp_class_base): Check accessibility instead
	of declared access, adjust diagnostic.

2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement P0961
	* decl.c (get_tuple_decomp_init): Check the templatedness
	of a member get.

2018-04-05  Jason Merrill  <jason@redhat.com>

	PR c++/85200 - ICE with constexpr if in generic lambda.
	* pt.c (extract_locals_r): Don't record the local specs of variables
	declared within the pattern.

2018-04-05  Alexandre Oliva <aoliva@redhat.com>

	PR c++/84979
	* pt.c (check_auto_in_tmpl_args): New.
	(tsubst_qualified_id): Use it to reject template args
	referencing auto for non-type templates.
	* parser.c (cp_parser_template_id): Likewise.
	* cp-tree.h (check_auto_in_tmpl_args): Declare.
	* typeck2.c (build_functional_cast): Report correct location
	for invalid use of auto.

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

	PR c++/85215 - ICE with copy-init from conversion.
	* call.c (merge_conversion_sequences): Fix type of direct binding
	sequence.

	PR c++/84938 - ICE with division by ~-1.
	* call.c (set_up_extended_ref_temp): Call cp_fully_fold.

	PR c++/84936 - ICE with unexpanded pack in mem-initializer.
	* parser.c (cp_parser_mem_initializer_list): Call
	check_for_bare_parameter_packs.

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

	PR inline-asm/85172
	* constexpr.c (cxx_eval_builtin_function_call): For calls to
	builtin_valid_in_constant_expr_p functions, don't call
	cxx_eval_constant_expression if argument is not
	potential_constant_expression.

	PR c++/85146
	* cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
	argument.
	* semantics.c (calculate_bases): Add complain argument.  Use
	complete_type_or_maybe_complain instead of just complete_type and
	return an empty vector if it fails.  Move make_tree_vector () call
	after early return.  Formatting fixes.
	(calculate_direct_bases): Likewise.  Call release_tree_vector at the
	end.
	(dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
	* pt.c (tsubst_pack_expansion): Adjust calculate_bases and
	calculate_direct_bases callers, formatting fixes.

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

	PR c++/85006 - -fconcepts ICE with A<auto...> return type
	* pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.

	PR c++/85200 - ICE with constexpr if in generic lambda.
	* tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.

	PR c++/84221 - bogus -Wunused with attribute and template.
	* decl2.c (is_late_template_attribute): Handle unused and used
	normally on non-TYPE_DECL.

	PR c++/85135 - ICE with omitted template arguments.
	* decl.c (grokdeclarator): Catch deduced class type in trailing
	return type.

	PR c++/85133 - ICE with missing concept initializer.
	* decl.c (cp_finish_decl): If a concept initializer is missing, use
	true.

	PR c++/85118 - wrong error with generic lambda and std::bind.
	* call.c (add_template_conv_candidate): Disable if there are any
	call operators.

	PR c++/85141 - ICE with compound assignment and static member fn.
	* typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
	compound assignment.

	PR c++/85148 - ICE with 'this' in array NSDMI.
	* tree.c (replace_placeholders_r): Use handled_component_p.

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

	PR c++/65923
	* decl.c (grokfndecl): Handle standard UDL diagnostics here..
	* parser.c (cp_parser_unqualified_id): ..not here.

2018-04-04  Alexandre Oliva <aoliva@redhat.com>

	PR c++/84943
	* typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
	used.
	* decl2.c (mark_used): Return without effects if tf_conv.

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

	PR c++/85092 - C++17 ICE with unused list constructor.
	* call.c (conv_binds_ref_to_prvalue): Also count ck_identity
	from a TARGET_EXPR.

	PR c++/85113 - ICE with constexpr and __builtin_constant_p.
	* constexpr.c (cxx_eval_builtin_function_call): Only defer
	__builtin_constant_p if ctx->quiet.

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

	PR c++/84768
	* pt.c (rewrite_template_parm): If the first argument is
	error_mark_node return it immediately.
	(build_deduction_guide): Check the return value of the
	latter for error_mark_node.
	(do_class_deduction): Check the return value of the latter.

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

	* semantics.c (finish_if_stmt_cond): Use
	instantiation_dependent_expression_p.

	PR c++/85149 - generic lambda and constexpr if.
	* pt.c (build_extra_args, add_extra_args): Split from
	tsubst_pack_expansion.
	(tsubst_expr) [IF_STMT]: Use them.
	* cp-tree.h (IF_STMT_EXTRA_ARGS): New.

	* typeck.c (merge_types): Limit matching attribute shortcut to
	the default case.

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

	PR c++/85147
	* pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.

	PR c++/85140
	* name-lookup.c (handle_namespace_attrs): Return early if attributes
	is error_mark_node.

	PR c++/85134
	* decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
	fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
	instead for static data members clear init and set DECL_EXTERNAL.

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

	PR c++/64095 - auto... parameter pack.
	* parser.c (cp_parser_parameter_declaration): Handle turning autos
	into packs here.
	(cp_parser_parameter_declaration_list): Not here.

2018-03-31  Alexandre Oliva <aoliva@redhat.com>

	PR c++/85027
	* class.c (instantiate_type): Peel off SAVE_EXPR before
	BASELINK.

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

	* typeck2.c (process_init_constructor_record): Use
	init_list_type_node for the CONSTRUCTOR around an anonymous union
	designated initializer.

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

	PR c++/84791
	* semantics.c (finish_omp_reduction_clause): If
	OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
	even if processing_template_decl.

2018-03-29  David Malcolm  <dmalcolm@redhat.com>

	PR c++/84269
	* name-lookup.c (get_std_name_hint): Add names from <memory>,
	<tuple>, and <utility>.

2018-03-29  Jason Merrill  <jason@redhat.com>

	PR c++/85093 - too many template args with pack expansion.
	* pt.c (coerce_template_parms): Keep pack expansion args that will
	need to be empty.

2018-03-29  Jason Merrill  <jason@redhat.com>

	* pt.c (build_non_dependent_expr): Propagate expr location.

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

	PR c++/85060 - wrong-code with call to base member in template.
	* search.c (any_dependent_bases_p): Check uses_template_parms
	rather than processing_template_decl.

2018-03-29  David Malcolm  <dmalcolm@redhat.com>

	PR c++/85110
	* typeck.c (convert_for_assignment): When complaining due to
	conversions for an argument, attempt to use the location of the
	argument.

2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/85028
	* pt.c (tsubst_default_argument): Early return if the type of the
	parameter is erroneous.

2018-03-28  Alexandre Oliva <aoliva@redhat.com>

	PR c++/84973
	* decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
	templates.

	PR c++/84968
	* tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.

2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/85067
	* method.c (defaulted_late_check): Partially revert r253321 changes,
	do not early return upon error.

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

	PR c++/85077
	* cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
	type call fold to generate VECTOR_CSTs when possible.

	PR c++/85076
	* tree.c (cp_build_reference_type): If to_type is error_mark_node,
	return it right away.

2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>

	* search.c (check_final_overrider): Use inform instead of error
	for the diagnostics of the overridden functions.  Tweak wording.

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

	PR c++/85068
	* class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
	is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.

2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/84632
	* init.c (build_aggr_init): When initializing from array,
	reject anything but CONSTRUCTORs and TARGET_EXPRs.
	(build_vec_init): Handle separately ARRAY_TYPEs.

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

	PR c++/85062 - ICE with alignas in wrong place.
	* decl.c (grokdeclarator): Ignore attributes on type-specifiers
	here.

	PR c++/85049 - ICE with __integer_pack.
	* pt.c (unify_pack_expansion): Don't try to deduce generated packs.
	* cp-tree.h (TEMPLATE_PARM_P): New.

2018-03-23  Jason Merrill  <jason@redhat.com>

	PR c++/78489 - wrong SFINAE behavior.

	PR c++/84489
	* pt.c (type_unification_real): Don't defer substitution failure.

2018-03-23  Jakub Jelinek  <jakub@redhat.com>

	PR c++/85015
	* decl.c (compute_array_index_type): Set osize to mark_rvalue_use
	result.

	PR c++/84942
	* pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
	cp_build_unary_op call with gcc_unreachable ().

2018-03-23  Marek Polacek  <polacek@redhat.com>

	PR c++/85045
	* cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
	Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
	(cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.

2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement P0962
	* parser.c (cp_parser_perform_range_for_lookup): Change
	the condition for deciding whether to use members.

2018-03-23  Marek Polacek  <polacek@redhat.com>

	PR c++/85033
	* semantics.c (finish_offsetof): Don't allow CONST_DECLs.

2018-03-23  Alexandre Oliva <aoliva@redhat.com>

	PR c++/71251
	* parser.c (cp_parser_alias_declaration): Call
	parser_check_template_parameters.

	PR c++/84789
	* pt.c (resolve_typename_type): Drop assert that stopped
	simplification to template-independent types.  Add assert to
	verify the initial scope is template dependent.
	* parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
	Reparse the id expression as a type-name, not a declarator.

	PR c++/84729
	* init.c (build_vec_init): Error at parenthesized array init.

	PR c++/84610
	PR c++/84642
	PR c++/84942
	* cp-tree.h (temp_override): New template class, generalizing
	a cleanup that was only used...
	* parser.c (cp_parser_parameter_declaration_clause):
	... here for auto_is_implicit_function_template_parm_p.
	(cp_parser_gnu_attributes_opt): Use it here as well.
	(cp_parser_std_attribute): Likewise.

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

	PR c++/84854
	* semantics.c (finish_if_stmt_cond): Check if the type of the condition
	is boolean.

2018-03-21  Jason Merrill  <jason@redhat.com>

	PR c++/81311 - wrong C++17 overload resolution.
	* call.c (build_user_type_conversion_1): Remove C++17 code.
	(conv_binds_ref_to_prvalue): New.
	(build_over_call): Handle C++17 copy elision.
	(build_special_member_call): Only do C++17 copy elision here if the
	argument is already the right type.

2018-03-21  Alexandre Oliva <aoliva@redhat.com>

	PR c++/71965
	* init.c (build_vec_init): Silence error, former sorry,
	without tf_error.

	PR c++/84610
	PR c++/84642
	* parser.c (abort_fully_implicit_template_p): New.
	(cp_parser_skip_to_end_of_statement): Use it.
	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
	(finish_fully_implicit_template_p): Clear
	implicit_template_parms and implicit_template_scope.

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

	PR c++/84972
	* decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
	error_mark_node when check_array_designated_initializer fails.

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

	PR c++/84961
	* cp-tree.h (genericize_compound_lvalue): Declare.
	* typeck.c (genericize_compound_lvalue): New function.
	(unary_complex_lvalue, cp_build_modify_expr): Use it.
	* semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
	and PREDECREMENT_EXPR in output and "m" constrained input operands with
	COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
	COMPOUND_EXPR operand.

2018-03-21  Nathan Sidwell  <nathan@acm.org>

	PR c++/85008
	* tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
	* decl2.c (vague_linkage_p): Likewise.

2018-03-21  David Malcolm  <dmalcolm@redhat.com>

	PR c++/84994
	* constexpr.c (constexpr_fn_retval): Make non-"static".
	* cp-tree.h (constexpr_fn_retval): New decl.
	* search.c (direct_accessor_p): Update leading comment.
	(reference_accessor_p): Likewise.
	(field_accessor_p): Replace check that function body is a
	RETURN_EXPR with a call to constexpr_fn_retval.  Fix
	indentation of "field_type" decl.

2018-03-21  Nathan Sidwell  <nathan@acm.org>

	PR c++/84804
	* name-lookup.c (do_pushtag): Permit lambdas to be pushed into
	complete classes.

2018-03-21  Martin Sebor  <msebor@redhat.com>

	PR c++/84850
	* call.c (first_non_public_field): New template and function.
	(first_non_trivial_field): New function.
	(maybe_warn_class_memaccess): Call them.

2018-03-21  David Malcolm  <dmalcolm@redhat.com>

	PR c++/84892
	* search.c (field_accessor_p): Use class_of_this_parm rather than
	type_of_this_parm, to check that "this" is a "const T *", rather
	than a "T *const".

2018-03-21  Nathan Sidwell  <nathan@acm.org>

	* class.c (finish_struct_anon_r): Refactor, deprecate anything
	other than public non-static data members.
	* parser.c (cp_parser_init_declarator): Deprecate attributes after
	parenthesized initializer.

	PR c++/84836
	* name-lookup.c (update_binding): Correct logic for local binding
	update.

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

	PR c++/71638, ICE with NSDMI and reference.
	* constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
	even when we replace an element.

2018-03-20  Marek Polacek  <polacek@redhat.com>

	PR c++/84978, ICE with NRVO.
	* constexpr.c (cxx_eval_constant_expression): Handle the case when
	a RESULT_DECL isn't in the hash map.

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

	PR c++/84978, ICE with NRVO.
	* cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
	(cp_get_callee_fndecl_nofold): New.
	* cp-gimplify.c (cp_genericize_r): Use it instead.
	* call.c (check_self_delegation): Likewise.

2018-03-20  Nathan Sidwell  <nathan@acm.org>

	PR c++/84962
	* name-lookup.c (pushdecl_class_level): Push anon-struct's
	member_vec, if there is one.

	PR c++/84970
	* cp-tree.h (lookup_list_keep): Declare.
	* tree.c (lookup_list_keep): New, broken out of ...
	(build_min): ... here.  Call it.
	* decl.c (cp_finish_decl): Call lookup_list_keep.

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

	PR c++/84937 - ICE with class deduction and auto.
	* pt.c (rewrite_template_parm): Fix auto handling.

2018-03-19  Marek Polacek  <polacek@redhat.com>

	PR c++/84925
	* pt.c (enclosing_instantiation_of): Check if fn is null.

	PR c++/84927
	* constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
	as we evaluate the elements.
	(cxx_eval_constant_expression): Verify constructor's flags
	unconditionally.

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

	PR c++/71834 - template-id with too few arguments.
	* pt.c (coerce_template_parms): Check fixed_parameter_pack_p.

2018-03-19  Nathan Sidwell  <nathan@acm.org>

	PR c++/84835
	* lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
	* pt.c (build_template_decl): Propagate language linkage.

	PR c++/84812
	* name-lookup.c (set_local_extern_decl_linkage): Defend against
	ambiguous lookups.

2018-03-16  Jakub Jelinek  <jakub@redhat.com>

	PR c/84910
	* parser.c (cp_parser_lambda_introducer): Remove trailing space from
	diagnostics.
	* method.c (synthesize_method): Likewise.
	* pt.c (convert_nontype_argument): Likewise.

2018-03-16  Jason Merrill  <jason@redhat.com>

	PR c++/84720 - ICE with rvalue ref non-type argument.
	* pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
	(convert_nontype_argument): Revert earlier change.

	PR c++/80227 - SFINAE and negative array size.
	* decl.c (compute_array_index_type): Use
	build_converted_constant_expr and valid_constant_size_p.

	PR c++/84906 - silent wrong code with ambiguous conversion.
	* call.c (build_user_type_conversion_1): Set need_temporary_p on
	ambiguous conversion.
	(convert_like_real): Check it.

	PR c++/83937 - wrong C++17 handling of init-list ctor argument.
	* call.c (build_special_member_call): Don't convert an init-list
	argument directly to the class type.

2018-03-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/79937
	PR c++/82410
	* cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
	(find_placeholder): Declare.
	* tree.c (struct replace_placeholders_t): Add exp member.
	(replace_placeholders_r): Don't walk into ctors with
	CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
	d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
	(replace_placeholders): Initialize data.exp.
	(find_placeholders_r, find_placeholders): New functions.
	* typeck2.c (process_init_constructor_record,
	process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
	if adding NSDMI on which find_placeholder returns true.
	* call.c (build_over_call): Don't call replace_placeholders here.
	* cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
	TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
	TARGET_EXPR_INITIAL.
	(cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
	ctor.

2018-03-16  Jason Merrill  <jason@redhat.com>

	PR c++/83911 - ICE with multiversioned constructor.
	* cp-gimplify.c (cp_genericize_r): Replace versioned function with
	dispatchere here.
	* call.c (build_over_call): Not here.

2018-03-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/84874
	* decl.c (reshape_init_class): Don't assert d->cur->index == field
	if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.

2018-03-15  Jakub Jelinek  <jakub@redhat.com>

	PR c++/84222
	* cp-tree.h (cp_warn_deprecated_use): Declare.
	* tree.c (cp_warn_deprecated_use): New function.
	* typeck2.c (build_functional_cast): Use it.
	* decl.c (grokparms): Likewise.
	(grokdeclarator): Likewise.  Temporarily push nested class scope
	around grokparms call for out of class member definitions.

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

	PR c++/84820 - no error for invalid qualified-id.
	* parser.c (cp_parser_make_indirect_declarator): Don't wrap
	cp_error_declarator.

	PR c++/84801 - ICE with unexpanded pack in lambda.
	* pt.c (check_for_bare_parameter_packs): Don't return early for a
	lambda in non-template context.

	PR c++/81236 - auto variable and auto function
	* pt.c (tsubst_baselink): Update the type of the BASELINK after
	mark_used.

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

	PR c++/83916 - ICE with template template parameters.
	* pt.c (convert_template_argument): Don't substitute into type of
	non-type parameter if we don't have enough arg levels.
	(unify): Likewise.

2018-03-14  Marek Polacek  <polacek@redhat.com>

	PR c++/84596
	* semantics.c (finish_static_assert): Check
	instantiation_dependent_expression_p instead of
	{type,value}_dependent_expression_p.

2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/82336 - link error with list-init default argument.
	* decl.c (check_default_argument): Unshare an initializer list.

2018-03-13  Jakub Jelinek  <jakub@redhat.com>

	PR c++/84843
	* decl.c (duplicate_decls): For redefinition of built-in, use error
	and return error_mark_node.  For redeclaration, return error_mark_node
	rather than olddecl if !flag_permissive.

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

	PR c++/82565 - ICE with concepts and generic lambda.
	* pt.c (instantiate_decl): Clear fn_context for lambdas.

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

	PR c++/84720 - ICE with rvalue ref non-type argument.
	* pt.c (convert_nontype_argument): Handle rvalue references.

	PR c++/84839 - ICE with decltype of parameter pack.
	* pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
	instantiating dummy parms.

	* parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
	parameter even without -Wpedantic.

	PR c++/84798 - ICE with auto in abstract function declarator.
	* parser.c (cp_parser_parameter_declaration_clause): Check
	parser->default_arg_ok_p.

2018-03-13  Jakub Jelinek  <jakub@redhat.com>

	PR c++/84808
	* constexpr.c (find_array_ctor_elt): Don't use elt reference after
	first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
	sizetype.  Formatting fixes.

2018-03-12  Jason Merrill  <jason@redhat.com>

	PR c++/84355 - ICE with deduction for member class template.
	* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
	CLASS_PLACEHOLDER_TEMPLATE.

	PR c++/84802 - ICE capturing uninstantiated class.
	* lambda.c (build_capture_proxy): Call complete_type.

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

	PR c++/84770 - ICE with typedef and parameter pack.
	* pt.c (verify_unstripped_args_1): Split out from
	verify_unstripped_args.

	PR c++/84785 - ICE with alias template and default targs.
	* pt.c (type_unification_real): Set processing_template_decl if
	saw_undeduced == 1.

	PR c++/84752 - ICE with capture of constexpr array.
	* call.c (standard_conversion): Set rvaluedness_matches_p on the
	identity conversion under ck_lvalue.

2018-03-09  Jason Merrill  <jason@redhat.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71169
	PR c++/71832
	* pt.c (any_erroneous_template_args_p): New.
	* cp-tree.h (any_erroneous_template_args_p): Declare it.
	* parser.c (cp_parser_class_specifier_1): Use it.

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

	PR c++/84726 - unnecessary capture of constant vars.
	* cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
	(LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
	* expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
	* lambda.c (is_constant_capture_proxy)
	(current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
	(prune_lambda_captures): New.
	(finish_lambda_function): Call prune_lambda_captures.

2018-03-09  Jason Merrill  <jason@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/84076
	* call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
	build ADDR_EXPR with REFERENCE_TYPE.
	(build_over_call): For purposes of check_function_arguments, if
	argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
	its operand rather than the argument itself.

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

	PR c++/84724
	* decl.c (duplicate_decls): Don't override __* prefixed builtins
	except for __[^b]*_chk, instead issue permerror and for -fpermissive
	also a note and return olddecl.

2018-03-09  Nathan Sidwell  <nathan@acm.org>

	PR c++/84733
	* name-lookup.c (do_pushdecl_with_scope): Only clear
	current_function_decl when pushing a non-class (i.e. namespace)
	scope.

2018-03-08  Jason Merrill  <jason@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/80598
	* call.c (build_over_call): In templates set TREE_USED (first_fn) when
	not calling mark_used for the benefit of -Wunused-function warning.

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

	* lambda.c (is_capture_proxy_with_ref): Remove.
	* constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.

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

	PR c++/84684
	* constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
	arguments.

2018-03-06  Alexandre Oliva <aoliva@redhat.com>

	PR c++/84231
	* tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
	only while processing template decls.
	* typeck.c (build_x_conditional_expr): Move wrapping of
	reference type around type...
	* call.c (build_conditional_expr_1): ... here.  Rename
	is_lvalue to is_glvalue.
	* parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
	INDIRECT_REF of COND_EXPR too.

	PR c++/84593
	* init.c (build_zero_init_1): Zero-initialize references.

	PR c++/84492
	* semantics.c (finish_stmt_expr_expr): Reject unresolved
	overloads used as stmt expr values.

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

	PR c++/84708 - ICE with lambda in local class NSDMI.
	* lambda.c (lambda_expr_this_capture): Handle local class NSDMI
	context.

2018-03-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/84684
	* constexpr.c (constexpr_call_hasher::equal): Return false if
	lhs->hash != rhs->hash.  Change return 1 to return true and
	return 0 to return false.

2018-03-05  Nathan Sidwell  <nathan@acm.org>

	PR c++/84702
	* pt.c (process_template_arg): Mark lookup_keep on a default arg.

2018-03-05  Marek Polacek  <polacek@redhat.com>

	PR c++/84707
	* decl.c (duplicate_decls): Check DECL_NAME before accessing
	UDLIT_OPER_P.

2018-03-05  Nathan Sidwell  <nathan@acm.org>

	PR c++/84694
	* friend.c (do_friend): Restore check for identifier_p inside
	TEMPLATE_ID_EXPR.

2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84618
	* parser.c (cp_parser_lambda_introducer): Reject any capture not
	involving a VAR_DECL or a PARM_DECL.

2018-03-05  Pádraig Brady  <P@draigBrady.com>
	    Jason  Merrill  <jason@redhat.com>
	    Nathan Sidwell  <nathan@acm.org>

	PR c++/84497
	* decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.

2018-03-03  Jason Merrill  <jason@redhat.com>

	PR c++/84686 - missing volatile loads.
	* cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.

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

	PR c++/71464
	* optimize.c (maybe_thunk_body): Bail out immediately if either
	fns[0] or fns[1] is null.

2018-03-02  Marek Polacek  <polacek@redhat.com>

	PR c++/84578
	* constexpr.c (get_array_or_vector_nelts): New.
	(cxx_eval_array_reference): Use it.
	(cxx_eval_vec_init_1): Likewise.
	(cxx_eval_store_expression): Likewise.

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

	* semantics.c (force_paren_expr): Remove redundant test.

2018-03-02  Marek Polacek  <polacek@redhat.com>

	PR c++/84663
	* decl.c (cp_complete_array_type): Check error_mark_node.

	PR c++/84664
	* typeck.c (cp_perform_integral_promotions): Check the result of
	mark_rvalue_use.

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

	PR c++/84662
	* pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
	RETURN instead of return.
	<case POINTER_PLUS_EXPR>: Likewise.
	<case CONVERT_EXPR>: If op0 is error_mark_node, just return
	it instead of wrapping it into CONVERT_EXPR.

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

	Fix MIPS16 ICE.
	* pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.

2018-03-02  Marek Polacek  <polacek@redhat.com>

	PR c++/84590
	* cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
	wrapped in VIEW_CONVERT_EXPR.

2018-03-01  Martin Sebor  <msebor@redhat.com>

	PR c++/84294
	* decl.c (check_redeclaration_no_default_args): Merge attributes
	specified on redeclarations of the same function template.
	Remove dead code.

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

	PR c++/84582
	* semantics.c (force_paren_expr): Create a PAREN_EXPR when in
	a template.
	(maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
	* typeck2.c (store_init_value): Call fold_non_dependent_expr instead
	of instantiate_non_dependent_expr.
	* tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.

2018-03-01  Nathan Sidwell  <nathan@acm.org>

	PR c++/84434
	* name-lookup.c (member_vec_dedup): Remove manually peeled
	iteration.  Ignore dependent ctor inheritance.

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

	PR c++/71569 - decltype of template.
	* parser.c (cp_parser_decltype_expr): Handle missing template args.

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

	PR c++/84596
	* constexpr.c (require_rvalue_constant_expression): New function.
	* cp-tree.h: Declare it.
	* semantics.c (finish_static_assert): Use it instead of
	require_potential_rvalue_constant_expression.

2018-03-01  Jason Merrill  <jason@redhat.com>
	    Alexandre Oliva <aoliva@redhat.com>

	PR c++/71569 - ICE with redundant args on member variable template.
	* decl.c (start_decl): Handle partial specialization of member
	variable template.
	* pt.c (determine_specialization): Allow partial specialization
	of member variable template without specializing enclosing class.
	(process_partial_specialization): Improve error message.

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

	PR c++/71784 - ICE with ref-qualifier and explicit specialization.
	* pt.c (determine_specialization): Check ref-qualifier.

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

	PR c++/84609
	* parser.c (cp_parser_attributes_opt): Formatting fix.
	(cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
	cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
	New functions.
	(cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
	instead of tentative parse to peek over optional attribute tokens
	to check for CPP_COLON after them.

	PR c++/83871
	PR c++/83503
	* pt.c (INCLUDE_STRING): Remove define.
	(warn_spec_missing_attributes): Use pretty_printer instead of
	std::string.  Fix up inform call so that the list of attributes
	is in %s argument.

2018-02-28  Martin Sebor  <msebor@redhat.com>

	PR testsuite/84617
	* decl.c (duplicate_decls): Fully merge attributes const, pure,
	and malloc.

2018-02-28  Nathan Sidwell  <nathan@acm.org>

	PR c++/84602
	* name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
	* name-lookup.c (fields_linear_search): Look in an anon-aggr
	regardless of want_type.
	(search_anon_aggr): Just use get_class_binding_direct.

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

	* decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
	inform_n.

2018-02-27  Martin Sebor  <msebor@redhat.com>

	* pt.c: Avoid including <string> directly.

2018-02-27  Martin Sebor  <msebor@redhat.com>

	PR c++/83871
	PR c++/83503
	* cp-tree.h (warn_spec_missing_attributes): New function.
	((check_explicit_specialization): Add an argument.  Call the above
	function.
	* decl.c (duplicate_decls): Avoid applying primary function template's
	attributes to its explicit specializations.
	cp/pt.c (warn_spec_missing_attributes): Define.

2018-02-27  Håkon Sandsmark  <hsandsmark@gmail.com>

	PR c++/71546 - lambda init-capture with qualified-id.
	* parser.c (cp_parser_lambda_introducer): Clear scope after
	each lambda capture.

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

	PR c++/84426
	* name-lookup.h (get_member_slot): Rename ...
	(find_member_slot): ... here.
	(add_member_slot): New.
	* name-lookup.c (member_vec_linear_search): No need to check for
	NULL slot.
	(get_member_slot): Rename ...
	(find_member_slot): ... here.  Don't add slot for incomplete class.
	(add_member_slot): New.
	* class.c (add_method): Adjust get_member_slot rename.  Bail out
	if push_class_level_binding fails.  Create slot and grok
	properties once we're committed to insertion.

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

	PR c++/84489 - dependent default template argument
	* pt.c (type_unification_real): Handle early substitution failure.

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

	PR c++/84560 - ICE capturing multi-dimensional VLA.
	* tree.c (array_of_runtime_bound_p): False if the element is
	variably-modified.

	PR c++/84441 - ICE with base initialized from ?:
	* call.c (unsafe_copy_elision_p): Handle COND_EXPR.

	PR c++/84520 - ICE with generic lambda in NSDMI.
	* lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
	'this' in a generic lambda instantiation.

	PR c++/84559 - ICE with constexpr VLA.
	* constexpr.c (ensure_literal_type_for_constexpr_object): Check
	for constexpr variable with VLA type.

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

	PR c++/84558
	* constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
	a valid constant initializer.  Formatting fixes.

2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84540
	* pt.c (tsubst_attributes): Handle correctly tsubst_attribute
	returning NULL_TREE.
	(apply_late_template_attributes): Likewise.

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

	PR c++/84557
	* parser.c (cp_parser_omp_var_list_no_open): Only call
	cp_parser_lookup_name_simple on names satisfying identifier_p.
	(cp_parser_oacc_routine): Likewise.

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

	PR c++/84551 - ICE with concepts and -g.
	* parser.c (add_debug_begin_stmt): Do nothing in a concept.

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

	PR c++/84325
	* tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
	non-types.

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

	PR c++/84447 - ICE with deleted inherited ctor with default arg.
	* call.c (build_over_call): Handle deleted functions in one place.

2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84533
	* decl.c (redeclaration_error_message): Don't try to use
	DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.

2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>

	* lambda.c (build_capture_proxy): Define static.
	* cp-tree.h (build_capture_proxy): Remove.

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

	PR c++/84537
	* name-lookup.c (suggest_alternative_in_explicit_scope): Return false
	if name is error node.

2018-02-25  Jason Merrill  <jason@redhat.com>

	PR c++/84015 - ICE with class deduction and auto template parm.
	* pt.c (rewrite_template_parm): Use tf_partial in first tsubst.

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

	PR c++/83692
	* constexpr.c (maybe_constant_init_1): New function.
	(maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
	(cxx_constant_init): New function.
	* cp-tree.h (cxx_constant_init): Declare.
	* typeck2.c (store_init_value): Call cxx_constant_init instead of
	cxx_constant_value.  Move the maybe_constant_init call under an 'else'.

2018-02-22  Jason Merrill  <jason@redhat.com>

	PR c++/70468 - ICE with constructor delegation via typedef.
	* pt.c (tsubst_initializer_list): Check for other mem-initializers
	with constructor delegation.

2018-02-22  Jason Merrill  <jason@redhat.com>

	PR c++/84424 - ICE with constexpr and __builtin_shuffle.
	* constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
	VECTOR_TYPE.

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

	PR c++/84493
	* parser.c (cp_parser_braced_list): Use require_open instead of
	consume_open.

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

	PR c++/84454 - ICE with pack expansion in signature.
	* error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.

2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>

	* cp-objcp-common.c (cxx_block_may_fallthru): Add case for
	IF_STMT.

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

	PR c++/84446
	* parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
	on error_mark_node.

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

	PR c++/84445
	* class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
	TREE_HAS_CONSTRUCTOR if instance is not an internal function call.

	PR c++/84449
	* tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
	returns error_mark_node, return it immediately.
	(break_out_target_exprs): If cp_walk_tree with bot_manip returns
	error_mark_node, return error_mark_node.

	PR c++/84455
	* pt.c (tsubst_lambda_expr): If not nested, increment temporarily
	function_depth to avoid GC during finish_lambda_function.

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

	PR c++/84429 - ICE capturing VLA.
	* lambda.c (build_capture_proxy): Handle reference refs.

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

	PR c++/84448
	* parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
	either operand is error_mark_node, set current.lhs to that instead of
	creating a binary op with error_mark_node operands.

	PR c++/84430
	* constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.

2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84348
	* decl.c (grokdeclarator): Early return error_mark_node upon
	ill-formed friend declaration.

2018-02-16  Marek Polacek  <polacek@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/84192
	* constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
	set *jump_target to anything if jump_target is NULL.

2018-02-16  Jason Merrill  <jason@redhat.com>

	PR c++/84151 - unnecessary volatile load with static member.
	* call.c (build_new_method_call_1): Avoid loading from a volatile
	lvalue used as the object argument for a static member function.

	PR c++/81853 - using-directive and constexpr.
	* constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.

	PR c++/84420 - ICE with structured binding in lambda.
	* lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.

	PR c++/83835 - C++17 error with constructor ctors.
	* call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.

	PR c++/82664 - ICE with reference to function template parm.
	* pt.c (convert_nontype_argument_function): Avoid obfuscationg
	NOP_EXPRs.

	PR c++/82764 - C++17 ICE with empty base
	* class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.

2018-02-16  Jason Merrill  <jason@redhat.com>

	PR c++/84421 - type-dependent if constexpr
	* semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.

2018-02-16  Nathan Sidwell  <nathan@acm.org>

	Deprecate -ffriend-injection.
	* decl.c (cxx_init_decl_processing): Emit warning on option.
	* name-lookup.c (do_pushdecl): Emit warning if we push a visible
	friend.

2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82468
	* decl.c (check_special_function_return_type): Reject template
	template parameter in deduction guide.

2018-02-16  Nathan Sidwell  <nathan@acm.org>

	PR c++/84375
	* name-lookup.c (do_pushdecl): Bail out on bad local friend injection.

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

	PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
	* call.c (convert_like_real): Don't use the copy-list-initialization
	shortcut for ck_base.

	PR c++/84045 - ICE with typedef and noexcept.
	* except.c (build_noexcept_spec): Use strip_typedefs_expr.

	PR c++/84376 - ICE with omitted template arguments.
	* pt.c (dguide_name_p): Check for IDENTIFIER_NODE.

	PR c++/84368 - wrong error with local variable in variadic lambda.
	* pt.c (tsubst_pack_expansion): Fix handling of non-packs in
	local_specializations.

2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84330
	* constraint.cc (tsubst_constraint_info): Handle an error_mark_node
	as first argument.

2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84350
	* pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
	init, early return.

2018-02-14  Nathan Sidwell  <nathan@acm.org>

	* decl2.c (mark_vtable_entries): Set input_location to decl's.
	(c_parse_final_cleanups): Restore input_location after emitting
	vtables.

2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
	(do_auto_deduction (tree, tree, tree, tsubst_flags_t,
	auto_deduction_context, tree, int): Add defaults.
	* pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
	(tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
	tsubst_flags_t argument.
	* init.c (build_new): Likewise.

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

	PR c++/84364
	* typeck.c (check_return_expr): Don't emit -Weffc++ warning
	about return other than *this in assignment operators if
	retval is type dependent expression.

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

	PR c++/84333
	* call.c (build_conditional_expr_1): Use cp_save_expr instead of
	save_expr for the G++ extension.

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

	PR c++/84080 - ICE with return type deduction and specialization.
	* pt.c (determine_specialization): Check uses_template_parms.

	Fix more variadic capture issues.
	* pt.c (find_parameter_packs_r): Also look at explicit captures.
	(check_for_bare_parameter_packs): Check current_class_type for
	lambda context.
	(extract_locals_r): Handle seeing a full instantiation of a pack.
	(tsubst_pack_expansion): Likewise.  Force lambda capture.
	* parser.c (cp_parser_lambda_introducer): Don't
	check_for_bare_parameter_packs.

	PR c++/84338 - wrong variadic sizeof.
	* pt.c (argument_pack_select_arg): Like the macro, but look through
	a pack expansion.
	(tsubst, tsubst_copy, dependent_template_arg_p): Use it.
	(extract_fnparm_pack): Do make_pack_expansion.
	(extract_locals_r): Do strip a pack expansion.
	* cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.

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

	PR c++/84341
	* parser.c (cp_parser_binary_expression): Use build_min instead of
	build2_loc to build the no_toplevel_fold_p toplevel binary expression.

2018-02-12  Nathan Sidwell  <nathan@acm.org>

	PR c++/84263
	* parser.c (cp_parser_decltype): Push and pop
	deferring_access_checks.  Reorganize to avoid goto.

2018-02-12  Richard Biener  <rguenther@suse.de>

	PR c++/84281
	* constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
	uniform constructors and delay allocating them fully.

2018-02-09  Jason Merrill  <jason@redhat.com>

	PR c++/84036 - ICE with variadic capture.
	Handle variadic capture proxies more like non-variadic.
	* lambda.c (build_capture_proxy): Remove workaround.
	* pt.c (find_parameter_packs_r): The proxy is a pack.
	(instantiate_class_template_1): Remove dead lambda code.
	(extract_fnparm_pack): Don't make_pack_expansion.
	(extract_locals_r): Don't strip a pack expansion.
	(tsubst_pack_expansion): Handle proxy packs.  Use
	PACK_EXPANSION_EXTRA_ARGS less.
	(tsubst_decl) [FIELD_DECL]: Don't register_specialization.
	(tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
	[VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
	(tsubst_expr) [DECL_EXPR]: Handle proxy packs.
	(tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.

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

	PR sanitizer/83987
	* tree.c (cp_free_lang_data): Revert 2018-01-23 change.

2018-02-09  Jason Merrill  <jason@redhat.com>

	PR c++/81917 - ICE with void_t and partial specialization.
	* pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
	calling most_specialized_partial_spec.

2018-02-09  Nathan Sidwell  <nathan@acm.org>

	PR c/84293
	* typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
	Pass expr location to strict_aliasing_warning.

2018-02-09  Jason Merrill  <jason@redhat.com>

	PR c++/84296 - ICE with qualified-id in template.
	PR c++/83714
	* pt.c (unknown_base_ref_p): New.
	(instantiation_dependent_scope_ref_p): Use it instead of
	any_dependent_bases_p.

2018-02-09  Marek Polacek  <polacek@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/83659
	* constexpr.c (cxx_fold_indirect_ref): Sync some changes from
	fold_indirect_ref_1, including poly_*int64.  Verify first that
	tree_fits_poly_int64_p (op01).  Formatting fixes.

2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
	* lambda.c (build_capture_proxy): Likewise.
	* search.c (field_access_p): Likewise.
	* semantics.c (omp_clause_decl, omp_privatize_field,
	finish_omp_clauses): Likewise.

2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/83806
	* typeck.c (decay_conversion): Use mark_rvalue_use for the special
	case of nullptr too.

2018-02-08  Nathan Sidwell  <nathan@acm.org>

	* class.c (finish_struct): Fix std:initializer_list diagnostic
	formatting.

2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/83204
	* pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.

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

	PR c++/84082
	* parser.c (cp_parser_dot_deref_incomplete): New function.
	(cp_parser_postfix_dot_deref_expression): Use it.

2018-02-07  David Malcolm  <dmalcolm@redhat.com>

	PR c++/81610
	PR c++/80567
	* name-lookup.c (suggest_rid_p): New function.
	(lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
	suggest_rid_p.

2018-02-07  Jason Merrill  <jason@redhat.com>

	PR c++/84182 - ICE with captured lambda
	PR c++/84181
	* pt.c (extract_locals_r, extract_local_specs): New.
	(tsubst_pack_expansion): Use them.

2018-02-07  Martin Liska  <mliska@suse.cz>

	PR c++/84059.
	* class.c (add_method): Append argument value.
	* cp-tree.h (maybe_version_functions): Add new argument.
	* decl.c (decls_match): Call it if a declaration does not
	have DECL_FUNCTION_VERSIONED.
	(maybe_version_functions): record argument is added.

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

	* class.c: Remove unused global variables.
	(build_primary_vtable): Don't gather statistics.
	(print_class_statistics): Remove.
	* cp-tree.h (print_class_statistics): Remove.
	* tree.c (cxx_print_statistics): Don't call print_class_statistics.

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

	* class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
	* constexpr.c (cx_check_missing_mem_inits): Likewise.
	* decl.c (next_initializable_field, find_decomp_class_base,
	cp_finish_decomp): Likewise.
	* typeck2.c (process_init_constructor_record): Likewise.

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

	PR c++/84181 - ICE with lambda parm in template argument.
	* tree.c (strip_typedefs_expr): Use cp_tree_operand_length.

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

	PR c++/84160 - ICE with nested variadic capture.
	* lambda.c (is_capture_proxy_with_ref): New.
	(insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
	COMPONENT_REF.
	* expr.c (mark_use): Use is_capture_proxy_with_ref.
	* constexpr.c (potential_constant_expression_1): Likewise.
	* semantics.c (process_outer_var_ref): Likewise.

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

	PR c++/84125
	* typeck.c (build_address): Relax the assert when
	processing_template_decl.

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

	PR c++/84126 - ICE with variadic generic lambda
	PR c++/84036
	PR c++/82249
	* pt.c (tsubst_pack_expansion): Handle function parameter_packs in
	PACK_EXPANSION_EXTRA_ARGS.

2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/83796
	* call.c (convert_like_real): If w're initializing from {} explicitly
	call abstract_virtuals_error_sfinae.

2018-01-31  Jason Merrill  <jason@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/83993
	* constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
	around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
	on ADDR_EXPR.

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

	PR c++/83993
	* constexpr.c (diag_array_subscript): Emit different diagnostics
	if TYPE_DOMAIN (arraytype) is NULL.
	(cxx_eval_array_reference, cxx_eval_store_expression): For arrays
	with NULL TYPE_DOMAIN use size_zero_node as nelts.

2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84092
	* semantics.c (finish_qualified_id_expr): When handling an
	UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.

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

	PR c++/84138
	* cp-gimplify.c (cp_fold): Check if X is an error node before
	calling useless_type_conversion_p.

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

	PR c++/84091 - ICE with local class in lambda in template.
	* decl2.c (determine_visibility): Look for outer containing template
	instantiation.

	PR c++/84098 - ICE with lambda in template NSDMI.
	* pt.c (instantiate_class_template_1): Ignore more lambdas.

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

	PR c++/68810 - wrong location for reinterpret_cast error.
	* cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
	!dofold.

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

	PR c++/83996
	* constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
	=> fooarray[1] in offset_int.

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

	PR c++/83942 - wrong unused warning with static_cast.
	* cvt.c (ocp_convert): Call mark_rvalue_use.

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

	PR c++/83956 - wrong dtor error with anonymous union
	* method.c (walk_field_subobs): Variant members only affect
	deletedness.
	(maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.

	PR c++/84036 - ICE with variadic capture.
	PR c++/82249
	* pt.c (tsubst_pack_expansion): When optimizing a simple
	substitution, pull a single pack expansion out of its pack.

	PR c++/82514 - ICE with local class in generic lambda.
	* pt.c (regenerated_lambda_fn_p): Remove.
	(enclosing_instantiation_of): Don't use it.
	(tsubst_function_decl): Call enclosing_instantiation_of.

	* pt.c (lookup_template_class_1): Add sanity check.
	* name-lookup.c (do_pushtag): Don't add closures to local_classes.

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

	PR c++/84031
	* decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
	recursive calls that return ret.
	(cp_finish_decomp): Ignore unnamed bitfields.

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

	PR c++/82249 - wrong mismatched pack length error.
	* pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
	unsubstituted function parameter pack.

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

	PR c++/83921
	* decl.c (check_for_uninitialized_const_var): Not static; add
	bool and tsubst_flags_t parameters; adjust to be used both in
	constexpr context and not.
	* constexpr.c (potential_constant_expression_1): Use the above.
	* cp-tree.h (check_for_uninitialized_const_var): Declare.

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

	PR c++/83947 - ICE with auto declarations.
	* pt.c (do_auto_deduction): Don't deduce from an auto decl.
	* decl.c (undeduced_auto_decl): Limit to vars and fns.

2018-01-23  David Malcolm  <dmalcolm@redhat.com>

	PR c++/83974
	* pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
	for pointer to member function types.

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

	PR sanitizer/83987
	* tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
	DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.

2018-01-23  Nathan Sidwell  <nathan@acm.org>

	PR c++/83988
	* pt.c (tsubst_baselink): Remove optype assert.
	* ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.

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

	PR c++/83958
	* decl.c (cp_finish_decomp): Diagnose if reference structure binding
	refers to incomplete type.

2018-01-23  Nathan Sidwell  <nathan@acm.org>

	Deprecate ARM-era for scope handling
	* decl.c (poplevel): Flag_new_for_scope is a boolean-like.
	(cxx_init_decl_processing): Deprecate flag_new_for_scope being
	cleared.
	* name-lookup.c (check_for_out_of_scope_variable): Deprecate and
	cleanup handling.
	* semantics.c (begin_for_scope): Flag_new_for_scope is
	boolean-like.
	(finish_for_stmt, begin_range_for_stmt): Likewise.

2018-01-22  Jason Merrill  <jason@redhat.com>

	PR c++/83720
	* decl2.c (determine_visibility): Fix template_decl handling
	instead of blocking it.

	PR c++/83720 - ICE with lambda and LTO.
	* decl2.c (determine_visibility): Clear template_decl for
	function-scope decls.  Propagate anonymous linkage from containing
	function.

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

	PR c++/81933
	* typeck2.c (split_nonconstant_init_1): Return false if we didn't
	split out anything.

2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR c++/83895
	* decl.c (grokdeclarator): Don't diagnose extra parens
	on typedefs.

2018-01-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/81167
	* call.c (joust): Use TREE_TYPE (source) if source is
	a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).

	PR c++/83919
	* typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
	for direct enum init.
	* decl.c (reshape_init): Likewise.

2018-01-19  Marek Polacek  <polacek@redhat.com>

	* constexpr.c (fold_simple): Simplify.

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

	PR c++/83714
	* search.c (any_dependent_bases_p): Handle null TREE_BINFO.
	* pt.c (instantiation_dependent_scope_ref_p): True if
	any_dependent_bases_p.

2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>

	* cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
	vs DECL_NONTRIVIALLY_INITIALIZED_P).

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

	PR c++/82461 - constexpr list-initialized member
	* constexpr.c (potential_constant_expression_1): Check
	TARGET_EXPR_DIRECT_INIT_P.

2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/81013
	* decl.c (xref_basetypes): Early return upon error about derived
	union.

2018-01-18  Nathan Sidwell  <nathan@acm.org>

	PR c++/83160
	* cp-tree.h (mark_use): Declare.
	* expr.c (mark_use): Make extern.
	* call.c (direct_reference_binding): Set inner conv's
	rvaluedness_matches_p, if it is an identity.
	(convert_like_real): Mark lvalue or rvalue use for identity as
	rvaledness_matches_p demands.

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

	PR c++/83824
	* parser.c (attr_chainon): New function.
	(cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
	cp_parser_namespace_definition, cp_parser_init_declarator,
	cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
	cp_parser_gnu_attributes_opt): Use it.
	(cp_parser_member_declaration, cp_parser_objc_class_ivars,
	cp_parser_objc_struct_declaration): Likewise.  Don't reset
	prefix_attributes if attributes is error_mark_node.

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

	PR c++/78344
	* decl.c (grokdeclarator): Do not append the error_mark_node
	due to an erroneous optional attribute-specifier-seq.

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

	PR c++/83897
	* cp-gimplify.c (cp_maybe_instrument_return): Handle
	CLEANUP_POINT_EXPR.

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

	PR c++/81054
	* constexpr.c (ensure_literal_type_for_constexpr_object): Return
	error_mark_node when we give an error.
	* decl.c (cp_finish_decl): Use the latter.

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

	PR c++/83287
	* init.c (build_raw_new_expr): Scan list for lookups to keep.

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

	PR c++/83814
	* expr.c (fold_for_warn): Move from c-common.c, reducing to just
	the C++ part.  If processing a template, call
	fold_non_dependent_expr rather than fully folding.

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

	PR c++/81067 - redundant NULL warning.
	* call.c (convert_like_real): Restore null_node handling.

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

	PR c++/81843 - ICE with variadic member template.
	PR c++/72801
	* pt.c (unify_pack_expansion): Don't try to deduce enclosing
	template args.

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

	PR c++/83799
	* pt.c (type_dependent_expression_p): Strip any location wrapper
	before testing tree codes.
	(selftest::test_type_dependent_expression_p): New function.
	(selftest::cp_pt_c_tests): Call it.

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

	PR c++/83739
	* pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
	this not a final instantiation.

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

	PR c++/83714 - ICE checking return in template.
	* typeck.c (check_return_expr): Call build_non_dependent_expr.

2018-01-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/83817
	* pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
	is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
	instead of CALL_FROM_THUNK_P.

	PR c++/83825
	* name-lookup.c (member_vec_dedup): Return early if len is 0.
	(resort_type_member_vec, set_class_bindings,
	insert_late_enum_def_bindings): Use vec qsort method instead of
	calling qsort directly.

2018-01-15  Martin Sebor  <msebor@redhat.com>

	PR c++/83588
	* class.c (find_flexarrays): Make a record of multiple flexible array
	members.

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

	PR c++/83186 - ICE with static_cast of list-initialized temporary.
	* typeck.c (build_static_cast): Use build_non_dependent_expr.

2018-01-12  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (mark_rvalue_use): Add parm name.
	* expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
	mark_rvalue_use.
	* call.c (convert_like_real): Fix formatting.

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

	PR c++/82728 - wrong -Wunused-but-set-variable
	PR c++/82799
	PR c++/83690
	* call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
	* decl.c (case_conversion): Likewise.
	* semantics.c (finish_static_assert): Call
	perform_implicit_conversion_flags.

2018-01-11  Nathan Sidwell  <nathan@acm.org>

	* method.c (enum mangling_flags): Delete long-dead enum.

2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>

	* parser.c (cp_parser_std_attribute_spec): When
        token_pair::require_open / require_close return false simply
	return error_mark_node, avoid duplicate cp_parser_error about
	expected '(' / ')', respectively.

2018-01-10  David Malcolm  <dmalcolm@redhat.com>

	PR c++/43486
	* call.c (null_ptr_cst_p): Strip location wrappers when
	converting from '0' to a pointer type in C++11 onwards.
	(conversion_null_warnings): Replace comparison with null_node with
	call to null_node_p.
	(build_over_call): Likewise.
	* cp-gimplify.c (cp_fold): Remove the early bailout when
	processing_template_decl.
	* cp-lang.c (selftest::run_cp_tests): Call
	selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
	* cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
	(selftest::run_cp_tests): Move decl to bottom of file.
	(null_node_p): New inline function.
	(selftest::cp_pt_c_tests): New decl.
	(selftest::cp_tree_c_tests): New decl.
	* cvt.c (build_expr_type_conversion): Replace comparison with
	null_node with call to null_node_p.
	* error.c (args_to_string): Likewise.
	* except.c (build_throw): Likewise.
	* mangle.c (write_expression): Skip location wrapper nodes.
	* parser.c (literal_integer_zerop): New function.
	(cp_parser_postfix_expression): Call maybe_add_location_wrapper on
	the result for RID_TYPEID. Pass true for new "wrap_locations_p"
	param of cp_parser_parenthesized_expression_list.  When calling
	warn_for_memset, replace integer_zerop calls with
	literal_integer_zerop, eliminating the double logical negation
	cast to bool.  Eliminate the special-casing for CONST_DECL in
	favor of the fold_for_warn within warn_for_memset.
	(cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
	param, defaulting to false.  Convert "expr" to a cp_expr, and call
	maybe_add_location_wrapper on it when wrap_locations_p is true.
	(cp_parser_unary_expression): Call maybe_add_location_wrapper on
	the result for RID_ALIGNOF and RID_SIZEOF.
	(cp_parser_builtin_offsetof): Likewise.
	* pt.c: Include "selftest.h".
	(tsubst_copy): Handle location wrappers.
	(tsubst_copy_and_build): Likewise.
	(build_non_dependent_expr): Likewise.
	(selftest::test_build_non_dependent_expr): New function.
	(selftest::cp_pt_c_tests): New function.
	* tree.c: Include "selftest.h".
	(lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
	(selftest::test_lvalue_kind): New function.
	(selftest::cp_tree_c_tests): New function.
	* typeck.c (string_conv_p): Strip any location wrapper from "exp".
	(cp_build_binary_op): Replace comparison with null_node with call
	to null_node_p.
	(build_address): Use location of operand when building address
	expression.

2018-01-10  Marek Polacek  <polacek@redhat.com>

	PR c++/82541
	* call.c (build_conditional_expr_1): Check complain before warning.
	* pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
	-Wduplicated-branches.

2018-01-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/81327
	* call.c (maybe_warn_class_memaccess): Add forward declaration.
	Change last argument from tree * to const vec<tree, va_gc> *, adjust
	args uses and check number of operands too.  Don't strip away any
	nops.  Use maybe_constant_value when looking for INTEGER_CST args.
	Deal with src argument not having pointer type.  Check
	tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
	test.
	(build_over_call): Call maybe_warn_class_memaccess here on the
	original arguments.
	(build_cxx_call): Rather than here on converted arguments.

2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/81055
	* init.c (build_vec_init): Avoid building an INIT_EXPR with
	error_mark_node as second argument.

2018-01-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/83734
	* constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
	in STATEMENT_LIST.  Remove unneeded assert.

2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* constexpr.c (cxx_eval_array_reference): Handle polynomial
	VECTOR_CST_NELTS.
	(cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
	* call.c (build_conditional_expr_1): Likewise.
	* decl.c (cp_finish_decomp): Likewise.
	* mangle.c (write_type): Likewise.
	* typeck.c (structural_comptypes): Likewise.
	(cp_build_binary_op): Likewise.
	* typeck2.c (process_init_constructor_array): Likewise.

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

	PR c++/83555
	* typeck.c (build_static_cast_1): For static casts to reference types,
	call build_base_path with flag_delete_null_pointer_checks as nonnull
	instead of always false.  When -fsanitize=null, call
	ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
	* cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
	call if the first argument is INTEGER_CST with REFERENCE_TYPE.

2018-01-03  Nathan Sidwell  <nathan@acm.org>

	PR c++/83667
	* method.c (make_alias_for): Copy DECL_CONTEXT.

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

	PR c++/83592
	* decl.c (grokdeclarator): Don't warn about MVP in typename context.

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

	PR preprocessor/83602
	* name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
	for builtin macros.

	PR c++/83634
	* cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
	error_mark_node, return error_mark_node.

	Update copyright years.

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

	PR c++/83556
	* tree.c (replace_placeholders_r): Pass NULL as last argument to
	cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
	non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
	to false and return.
	(replace_placeholders): Pass NULL instead of &pset as last argument
	to cp_walk_tree.

2018-01-02  Nathan Sidwell  <nathan@acm.org>

	* constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
	lval var.

Copyright (C) 2018 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.
