2018-12-27  Martin Liska  <mliska@suse.cz>

	PR c++/88263
	* decl2.c (get_local_tls_init_fn): Add location_t argument and
	use it.
	(get_tls_init_fn): Call it with location of variable for which
	we'll need to create tls_init function.
	(handle_tls_init): Likewise.

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

	PR c++/86524
	PR c++/88446
	* cp-tree.h (cp_fold_maybe_rvalue, cp_fold_rvalue): Declare.
	(fold_non_dependent_expr): Add manifestly_const_eval argument.
	* constexpr.c (cxx_eval_builtin_function_call): Evaluate
	__builtin_constant_p if ctx->manifestly_const_eval even in constexpr
	functions.  Don't reuse dummy{1,2} vars between different arguments.
	Use cp_fold_rvalue instead of cp_fully_fold.  Fix comment typo.
	(fold_non_dependent_expr): Add manifestly_const_eval argument, pass
	it through to cxx_eval_outermost_constant_expr and
	maybe_constant_value.
	* cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): No longer
	static.
	* semantics.c (finish_static_assert): Call fold_non_dependent_expr
	with true as manifestly_const_eval.

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

	PR c++/88196 - ICE with class non-type template parameter.
	* pt.c (convert_nontype_argument): If the expr is a PTRMEM_CST, also
	check if the type we're converting it to is TYPE_PTRMEM_P.

2018-12-20  H.J. Lu  <hongjiu.lu@intel.com>

	PR c/51628
	* call.c (convert_for_arg_passing): Call
	warn_for_address_or_pointer_of_packed_member.
	* typeck.c (convert_for_assignment): Likewise.

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.

	* cp-tree.h (cp_fully_fold_init): Declare.
	* cp-gimplify.c (cp_fully_fold_init): New function.
	* typeck2.c (split_nonconstant_init, store_init_value): Use it
	instead of cp_fully_fold.

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

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

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

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.

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

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

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

	PR c++/88375
	* typeck.c (convert_for_assignment): Capture location of rhs
	before stripping, and if available.  Use the location when
	complaining about bad conversions, labelling it with the
	rhstype if the location was present.
	* typeck2.c (digest_init_r): Capture location of init before
	stripping.

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

	PR c++/87504
	* call.c (op_error): Convert 1st param from location_t to
	const op_location_t &.  Use binary_op_rich_location for binary
	ops.
	(build_conditional_expr_1): Convert 1st param from location_t to
	const op_location_t &.
	(build_conditional_expr): Likewise.
	(build_new_op_1): Likewise.
	(build_new_op): Likewise.
	* cp-tree.h (build_conditional_expr): Likewise.
	(build_new_op): Likewise.
	(build_x_binary_op): Likewise.
	(cp_build_binary_op): Likewise.
	* parser.c (cp_parser_primary_expression): Build a location
	for id-expression nodes.
	(cp_parser_binary_expression): Use an op_location_t when
	calling build_x_binary_op.
	(cp_parser_operator): Build a location for user-defined literals.
	* typeck.c (build_x_binary_op): Convert 1st param from location_t
	to const op_location_t &.
	(cp_build_binary_op): Likewise.  Use binary_op_rich_location.

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

	PR c++/43064
	PR c++/43486
	* call.c (build_conditional_expr_1): Strip location wrappers when
	checking for CONST_DECL.
	(conversion_null_warnings): Use location of "expr" if available.
	* class.c (fixed_type_or_null): Handle location wrappers.
	* constexpr.c (potential_constant_expression_1): Likewise.
	* cvt.c (ignore_overflows): Strip location wrappers when
	checking for INTEGER_CST, and re-wrap the result if present.
	(ocp_convert): Call fold_for_warn before checking for INTEGER_CST.
	* decl.c (reshape_init_r): Strip any location wrapper.
	(undeduced_auto_decl): Likewise.
	* expr.c (mark_discarded_use): Likewise for expr.
	* init.c (build_aggr_init): Likewise before checking init for
	DECL_P.
	(warn_placement_new_too_small): Call fold_for_warn on adj before
	checking for CONSTANT_CLASS_P, and on nelts.  Strip any location
	wrapper from op0 and on oper before checking for VAR_P.
	* parser.c (cp_parser_primary_expression): Call
	maybe_add_location_wrapper on numeric and string literals.
	(cp_parser_postfix_expression): Strip any location wrapper when
	checking for DECL_IS_BUILTIN_CONSTANT_P.
	(cp_parser_unary_expression): Ensure that folding of NEGATE_EXPR
	around a constant happens in the presence of location wrappers and
	returns a wrapped result.
	(cp_parser_has_attribute_expression): Strip any location wrapper
	from "oper".
	(cp_parser_binary_expression): Strip any location wrapper when
	checking for DECL_P on the lhs.
	(cp_parser_decltype): Strip any location wrapper from result of
	cp_parser_decltype_expr.
	(cp_parser_mem_initializer): Add location wrappers to the
	parenthesized expression list.
	(cp_parser_template_parameter_list): Don't create wrapper nodes
	within a template-parameter-list.
	(cp_parser_template_argument_list): Don't create wrapper nodes
	within a template-argument-list.
	(cp_parser_parameter_declaration): Strip location wrappers from
	default arguments.
	(cp_parser_gnu_attribute_list): Don't create wrapper nodes.
	(cp_parser_std_attribute_spec_seq): Likewise.
	(cp_parser_omp_all_clauses): Don't create wrapper nodes within
	OpenMP clauses.
	(cp_parser_omp_for_loop): Likewise.
	(cp_parser_omp_declare_reduction_exprs): Likewise.
	* pt.c (convert_nontype_argument_function): Strip location
	wrappers from fn_no_ptr before checking for FUNCTION_DECL.
	(tsubst_default_argument): Move note about which callsite led to
	instantiation to after the check_default_argument call.
	(do_auto_deduction): Likewise from init before checking for
	DECL_P.
	* semantics.c (force_paren_expr): Likewise from expr before
	checking for DECL_P.
	(finish_parenthesized_expr): Likewise from expr before
	checking for STRING_CST.
	(perform_koenig_lookup): Likewise from fn.
	(finish_call_expr): Likewise.
	(finish_id_expression): Rename to...
	(finish_id_expression_1): ...this, calling
	maybe_add_location_wrapper on the result.
	(capture_decltype): Use lookup_name_real rather than value_member
	when looking up decl within the capture-list.
	* tree.c (cp_stabilize_reference): Strip any location wrapper.
	(builtin_valid_in_constant_expr_p): Likewise.
	(strip_typedefs_expr): Strip any location wrapper before checking
	for decls or constants.
	(is_overloaded_fn): Likewise.
	(maybe_get_fns): Likewise.
	(selftest::test_lvalue_kind): Verify lvalue_p.
	* typeck.c (cxx_sizeof_expr): Strip any location wrapper.
	(cxx_alignof_expr): Likewise.
	(is_bitfield_expr_with_lowered_type): Handle location wrappers.
	(cp_build_array_ref): Call maybe_constant_value on "idx".
	(cp_build_binary_op): Strip location wrapper from first_arg before
	checking for PARM_DECL.  Likewise for op1 before checking for
	INTEGER_CST in two places.  Likewise for orig_op0 and orig_op1
	when checking for STRING_CST.
	(cp_build_addr_expr_1): Likewise for arg when checking for
	FUNCTION_DECL.
	(cp_build_modify_expr): Likewise for newrhs when checking for
	STRING_CST.
	(convert_for_assignment): Don't strip location wrappers when
	stripping NON_LVALUE_EXPR.
	(maybe_warn_about_returning_address_of_local): Strip location
	wrapper from whats_returned before checking for DECL_P.
	(can_do_nrvo_p): Strip location wrapper from retval.
	(treat_lvalue_as_rvalue_p): Likewise.
	(check_return_expr): Likewise.
	* typeck2.c (cxx_incomplete_type_diagnostic): Strip location
	wrapper from value before checking for VAR_P or PARM_DECL.
	(digest_init_r): Strip location wrapper from init.  When
	copying "init", also copy the wrapped node.

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-19  Alexandre Oliva <aoliva@redhat.com>

	PR c++/87012
	* pt.c (convert_template_argument): Canonicalize type after
	tsubst/deduce.

	PR c++/88146
	* method.c (do_build_copy_constructor): Guard cvquals init and
	loop over fields to run for non-inherited ctors only.
	(synthesize_method): Retain location of inherited ctor.

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-17  Jonathan Wakely  <jwakely@redhat.com>

	PR c++/52321
	* typeck.c (build_static_cast): Print a note when the destination
	type or the operand is a pointer/reference to incomplete class type.

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

	PR c++/88482
	* except.c (verify_library_fn): New function.
	(declare_library_fn): Use it.  Initialize TM even if the non-TM
	library function has been user declared.
	(do_end_catch): Don't set TREE_NOTHROW on error_mark_node.
	(expand_start_catch_block): Don't call initialize_handler_parm
	for error_mark_node.
	(build_throw): Use verify_library_fn.  Initialize TM even if the
	non-TM library function has been user declared.  Don't crash if
	any library fn is error_mark_node.

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

	* pt.c (tsubst_expr) [DECL_EXPR]: Ignore class-scope bindings when
	looking up a capture proxy.

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

	PR c++/84644
	* decl.c (check_tag_decl): A decltype with no declarator
	doesn't declare anything.

2018-12-14  Alexandre Oliva <aoliva@redhat.com>

	PR c++/87814
	* pt.c (tsubst_exception_specification): Handle
	DEFERRED_NOEXCEPT with !defer_ok.

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

	PR c++/86823
	* parser.c (cp_parser_template_id): Rearrange deferred access
	checks into the firewall.

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

	PR c++/88216 - ICE with class type in non-type template parameter.
	* mangle.c (write_expression): Handle TARGET_EXPR and
	VIEW_CONVERT_EXPR.
	* pt.c (convert_nontype_argument): Don't call
	get_template_parm_object for value-dependent expressions.

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-12  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Fix location of error message about
	static data member definition.

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

	PR c++/88446
	* cp-tree.h (maybe_constant_value): Add manifestly_const_eval
	argument.
	* constexpr.c (struct constexpr_call): Rename pretend_const_required
	member to manifestly_const_eval.
	(struct constexpr_ctx): Likewise.
	(constexpr_call_hasher::equal): Adjust users.
	(cxx_eval_builtin_function_call): Likewise.  Formatting fix.
	(cxx_eval_call_expression): Adjust users.
	(cxx_eval_outermost_constant_expr, maybe_constant_init_1,
	maybe_constant_init): Rename pretend_const_required argument to
	manifestly_const_eval, adjust function comments.
	(maybe_constant_value): Add manifestly_const_eval argument.  If true,
	don't cache and call cxx_eval_outermost_constant_expr with true as
	manifestly_const_eval.
	* decl.c (compute_array_index_type_loc): Call maybe_constant_value
	with true as manifestly_const_eval.

	PR c++/88449
	* constexpr.c (struct constexpr_call): Add pretend_const_required
	member.
	(constexpr_call_hasher::equal): Return false if pretend_const_required
	members differ.
	(cxx_eval_call_expression): Adjust new_call initialization.  Hash in
	ctx->pretend_const_required.

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

	PR c++/87861
	* class.c (build_vtbl_initializer): For TARGET_VTABLE_USES_DESCRIPTORS
	bump index for each added word.
	* constexpr.c (find_array_ctor_elt): Add forward declaration.
	(cxx_eval_call_expression): Handle TARGET_VTABLE_USES_DESCRIPTORS
	vtable calls.
	(cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Divide token
	by TARGET_VTABLE_USES_DESCRIPTORS if non-zero.

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

	PR c++/86608 - reading constexpr volatile variable.
	* constexpr.c (potential_constant_expression_1): Check want_rval
	instead of checking if we have a decl.
	* decl2.c (decl_maybe_constant_var_p): Don't consider volatile
	constexpr variables as maybe constant.

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

	* decl.c (grokvardecl): Add location_t parameter and use it
	in build_lang_decl_loc and build_decl calls.
	(grokdeclarator): Move up loc declaration and use it in the
	grokvardecl call too.

2018-12-09  Cesar Philippidis  <cesar@codesourcery.com>

	* parser.c (cp_parser_oacc_kernels_parallel): Adjust EXPR_LOCATION
	on the combined acc loop.

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

	* decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in error messages
	about bit-fields with function type, warn_if_not_aligned type, and
	static bit-fields; avoid DECL_NAME for unnamed declarations.

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-06  Paolo Carlini  <paolo.carlini@oracle.com>

	* class.c (check_bitfield_decl): In error message about non-integral
	type print the type itself too.
	* decl.c (grokdeclarator): Do not ICE on unnamed bit-fields declared
	friends; when calling build_decl for a FIELD_DECL possibly pass the
	declarator->id_loc.

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

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

	PR c++/86397
	* except.c (build_noexcept_spec): Resolve nondependent
	expressions.

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

	PR c++/88136 - -Wdeprecated-copy false positives
	* class.c (classtype_has_depr_implicit_copy): Rename from
	classtype_has_user_copy_or_dtor.
	* method.c (lazily_declare_fn): Adjust.
	* decl2.c (cp_warn_deprecated_use): Refer to -Wdeprecated-copy-dtor
	if deprecation is due to a destructor.

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

	PR c++/88373 - wrong parse error with ~.
	* parser.c (cp_parser_template_name): Check tag_type for
	none_type.

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.

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.

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

	PR c++/85110
	* call.c (conversion_null_warnings): Try to use the location of
	the expression for the warnings.  Add notes showing the parameter
	of the function decl, where available.
	(get_fndecl_argument_location): For implicitly-declared functions,
	use the fndecl location rather than that of the param.
	(maybe_inform_about_fndecl_for_bogus_argument_init): New function.
	(convert_like_real): Use it in various places to avoid repetition.
	(complain_about_bad_argument): Likewise.
	* cp-tree.h (maybe_inform_about_fndecl_for_bogus_argument_init):
	New declaration.
	* decl2.c (check_default_args): Put all diagnostics for the fndecl
	into a diagnostic group.  Use the location of the parameter when
	complaining about parameters with missing default arguments in
	preference to that of the fndecl.  Attempt to record the location
	of the first parameter with a default argument and emit a note
	for the first parameter that's missing one.
	* typeck.c (convert_arguments): When complaining about parameters
	with incomplete types, attempt to use the location of the
	argument.  Where available, add a note showing the pertinent
	parameter in the fndecl.
	(convert_for_assignment): When complaining about bad conversions
	at function calls, use the location of the unstripped argument.
	(convert_for_initialization): When checking for bogus references,
	add an auto_diagnostic_group, and update the note to use the
	location of the pertinent parameter, rather than just the callee.

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

	* decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in error message;
	print the type too; fix thinko in INDIRECT_TYPE_P use.

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

	PR c++/85569
	* constexpr.c (adjust_temp_type): Test for type equality with
	same_type_p.
	(constexpr_call_hasher::equal): Likewise.

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

	PR c++/84636
	* decl.c (grokdeclarator): Avoid crashing on an anonymous bit-field
	with function type.

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

	PR c++/88184 - ICE when treating name as template-name.
	* pt.c (lookup_template_function): Always build the TEMPLATE_ID_EXPR
	with unknown_type_node.

2018-12-04  Julian Brown  <julian@codesourcery.com>

	* parser.c (cp_parser_oacc_wait_list): Fix error message and avoid
	duplicate diagnostic.

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

	PR c++/88258
	* parser.c (cp_parser_skip_to_closing_parenthesis_1,
	cp_parser_skip_to_end_of_statement,
	cp_parser_skip_to_end_of_block_or_statement,
	cp_parser_skip_to_closing_brace,
	cp_parser_skip_to_closing_square_bracket,
	cp_parser_skip_balanced_tokens): Don't treat CPP_PRAGMA_EOL specially
	if in_pragma is false.

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

	Implement P0634R3, Down with typename!
	* parser.c (CP_PARSER_FLAGS_TYPENAME_OPTIONAL): New enumerator.
	(cp_parser_type_name): Remove declaration.
	(cp_parser_postfix_expression): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id.
	(cp_parser_new_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
	cp_parser_type_specifier_seq.
	(cp_parser_lambda_declarator_opt): Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
	cp_parser_parameter_declaration_clause.
	(cp_parser_condition): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_simple_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_init_declarator.
	(cp_parser_conversion_type_id): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_specifier_seq.
	(cp_parser_default_type_template_argument): Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_type_id.
	(cp_parser_template_parameter): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_parameter_declaration.
	(cp_parser_explicit_instantiation): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_simple_type_specifier): Adjust call to cp_parser_type_name
	to relay if we should treat the typename keyword as optional.  Maybe
	call cp_parser_make_typename_type is parsing a template-id and it's
	not a TYPE_DECL.
	(cp_parser_type_name): Remove unused function.
	(cp_parser_enum_specifier): Pass to CP_PARSER_FLAGS_NONE
	cp_parser_type_specifier_seq.
	(cp_parser_alias_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id.
	(cp_parser_init_declarator): New parameter.  Pass it down to
	cp_parser_declarator.
	(cp_parser_declarator): New parameter.  Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.  Pass the new parameter to
	cp_parser_direct_declarator.
	(cp_parser_direct_declarator): New parameter.  Pass it to
	cp_parser_parameter_declaration_clause and cp_parser_declarator.
	(cp_parser_declarator_id):
	(cp_parser_type_id_1): New parameter.  Pass it to
	cp_parser_type_specifier_seq.  Adjust call to cp_parser_declarator.
	(cp_parser_type_id): New parameter.  Pass it to cp_parser_type_id_1.
	(cp_parser_template_type_arg): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_id_1.
	(cp_parser_trailing_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id_1.
	(cp_parser_type_specifier_seq): New parameter.
	(function_being_declared_is_template_p):
	(cp_parser_parameter_declaration_clause): New parameter.  Pass it to
	cp_parser_parameter_declaration_list.
	(cp_parser_parameter_declaration_list): New parameter.  Pass it to
	cp_parser_parameter_declaration.
	(cp_parser_parameter_declaration): New parameter.  Pass it to
	cp_parser_decl_specifier_seq.  Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_member_declaration): Adjust call to
	cp_parser_decl_specifier_seq to also include
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL.  Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_declarator.
	(cp_parser_exception_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_specifier_seq and cp_parser_declarator.
	(cp_parser_requirement_parameter_list): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_parameter_declaration_clause.
	(cp_parser_constructor_declarator_p): Resolve the TYPENAME_TYPE.
	(cp_parser_single_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_decl_specifier_seq and cp_parser_init_declarator.
	(cp_parser_cache_defarg): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator and cp_parser_parameter_declaration_list.
	(cp_parser_objc_method_tail_params_opt): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_parameter_declaration.
	(cp_parser_objc_class_ivars): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_objc_try_catch_finally_statement): Pass CP_PARSER_FLAGS_NONE
	to cp_parser_parameter_declaration
	(cp_parser_objc_struct_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_omp_for_loop_init): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator and cp_parser_type_specifier_seq.

2018-11-30  David Malcolm  <dmalcolm@redhat.com>

	* typeck2.c: Include "gcc-rich-location.h".
	(cxx_incomplete_type_diagnostic): When complaining about possibly
	missing parens, add a fix-it hint if the member function takes no
	additional params.

2018-11-30  James Norris  <jnorris@codesourcery.com>

	* parser.c (cp_parser_oacc_enter_exit_data): Use existing local
	variable.

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

	* decl.c (compute_array_index_type_loc): New, like the current
	compute_array_index_type but takes a location_t too.
	(compute_array_index_type): Forward to the latter.
	(create_array_type_for_decl): Use compute_array_index_type_loc.

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

	PR c++/88121
	* cp-name-hint.h (suggest_alternative_in_scoped_enum): New decl.
	* error.c (dump_scope): Ensure that we print any scope for values
	of unscoped enums.  Print the scope of values of scoped enums.
	(qualified_name_lookup_error): Offer suggestions for failures
	within scoped enums by calling suggest_alternative_in_scoped_enum.
	* name-lookup.c (class namespace_hints): Update comment to mention
	scoped enums.
	(namespace_hints::namespace_hints): Call
	maybe_add_candidate_for_scoped_enum.
	(namespace_hints::maybe_add_candidate_for_scoped_enum): New member
	(suggest_alternatives_for): Update comment to mention scoped
	enums.
	(suggest_alternative_in_scoped_enum): New function.

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

	Implement P1094R2, Nested inline namespaces.
	* parser.c (cp_parser_namespace_definition): Parse the optional inline
	keyword in a nested-namespace-definition.  Adjust push_namespace call.
	Formatting fix.

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

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

2018-11-28  Jan Hubicka  <hubicka@ucw.cz>

	* except.c (do_allocate_exception): Annotate __cxa_allocate_exception
	as COLD.

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

	PR c++/88222 - ICE with bit-field with invalid type.
	* decl.c (grokdeclarator): Check if declarator is null.

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

	PR c++/87476
	* typeck2.c (digest_init_r): Re-add handing of signed/unsigned char
	strings and add it to the initialization of wide array from non-wide
	string diagnostics too.

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

	PR c++/88187
	* decl.c (grokdeclarator): Don't diagnose deduction guide errors
	if !funcdecl_p.

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

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

	PR c++/87386
	* parser.c (cp_parser_operator): Use str.get_value () instead of just
	str in USERDEF_LITERAL_VALUE and USERDEF_LITERAL_SUFFIX_ID arguments.

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.

	PR c++/87386
	* parser.c (cp_parser_primary_expression): Use
	id_expression.get_location () instead of id_expr_token->location.
	Adjust the range from id_expr_token->location to
	id_expressio.get_finish ().
	(cp_parser_operator_function_id): Pass location of the operator
	token down to cp_parser_operator.
	(cp_parser_operator): Add start_loc argument, always construct a
	location with caret at start_loc and range from start_loc to the
	finish of the last token.

	PR c++/87393
	* parser.c (cp_parser_linkage_specification): Remove useless
	dereference of the consume_open method result.

2018-11-20  Martin Sebor  <msebor@redhat.com>

	* cp-tree.h (cp_check_const_attributes): Declare.
	* decl2.c (cp_check_const_attributes): Declare extern.
	* parser.c (cp_parser_has_attribute_expression): New function.
	(cp_parser_unary_expression): Handle RID_HAS_ATTRIBUTE_EXPRESSION.
	(cp_parser_gnu_attribute_list): Add argument.

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

	PR c++/88110
	* constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Punt
	if get_base_address of ADDR_EXPR operand is not a DECL_P.

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

	PR c++/87781 - detect invalid elaborated-type-specifier.
	* parser.c (cp_parser_elaborated_type_specifier): Ensure that
	typename follows a nested-name-specifier.

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

	* decl2.c (grokfield): Remove obsolete _vptr check; fix
	explicit template argument list error location.

2018-11-16  Kamlesh Kumar  <kamleshbhalui@gmail.com>

	DR 1207
	PR c++/52869
	* parser.c (cp_parser_noexcept_specification_opt): Call
	inject_this_parameter.

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

	Implement P0479R5, [[likely]] and [[unlikely]].
	* tree.c (handle_likeliness_attribute): New.
	(std_attribute_table): Add likely/unlikely.
	* cp-gimplify.c (lookup_hotness_attribute, remove_hotness_attribute)
	(process_stmt_hotness_attribute, first_stmt): New.
	(genericize_if_stmt): Check for duplicate predictions.
	* parser.c (cp_parser_statement): Call
	process_stmt_hotness_attribute.
	(cp_parser_label_for_labeled_statement): Apply attributes to case.
	* decl.c (finish_case_label): Give label in template type void.
	* pt.c (tsubst_expr) [CASE_LABEL_EXPR]: Copy attributes.
	[PREDICT_EXPR]: Handle.

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

	Remove ovl_used, it is no longer needed
	* cp-tree.h (OVL_USED_P): Delete.
	(lookup_keep): Delete.
	* friend.c (add_friend): Don't call it.
	* parser.c (lookup_literal_operator): Likewise.
	(cp_parser_primary_expression): Likewise.
	* semantics.c (perform_koenig_lookup): Likewise.
	* pt.c (tsubst_copy <OVERLOAD>): Don't assert OVL_USED_P.
	* tree.c (ovl_copy): Delete.
	(ovl_insert): Remove OVL_USED_P checks.
	(ovl_iterator::reveal_node): Likewise.
	(ovl_iterator::remove__node): Likewise.
	(ovl_used, lookup_keep): Delete.

	PR c++/87269
	* parser.c (lookup_literal_operator): Mark overload for keeping
	when inside template.  Refactor.

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-15  Paolo Carlini  <paolo.carlini@oracle.com>

	* constexpr.c (ensure_literal_type_for_constexpr_object): Use
	DECL_SOURCE_LOCATION in error_at calls.

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

	DR 2336
	* cp-tree.h (enum special_function_kind): Add sfk_virtual_destructor.
	* method.c (type_has_trivial_fn): Add it.
	(SFK_DTOR_P): Likewise.
	(synthesized_method_base_walk): Don't check access of vbases of
	abstract classes when sfk_virtual_destructor.
	(synthesized_method_walk): Skip vbases of abstract classes except
	when sfk_virtual_destructor.
	(get_defaulted_eh_spec): Set sfk_virtual_destructor as needed.

	* cp-tree.h (enum special_function_kind): Reorder and comment.
	* method.c (SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P)
	(SFK_MOVE_P): New predicates.
	(walk_field_subobs, synthesized_method_base_walk): Drop
	copy_arg_p, move_p, assign_p args.  Use new SFK predicates.  Order
	parameters consistently.
	(synthesized_method_walk): Drop ctor_p, copy_arg_p, move_p,
	assign_p calculations.  Use new SFK predicates.  Adjust calls to
	worker functions.

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

	* parser.c (make_id_declarator): Add location_t parameter.
	(cp_parser_lambda_declarator_opt): Adjust call.
	(cp_parser_decomposition_declaration): Likewise.
	(cp_parser_alias_declaration): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_objc_class_ivars): Likewise.
	* decl.c (grokdeclarator): Use declarator->id_loc in two error
	messages.

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

	P1236R1 - Signed integers are two's complement
	* constexpr.c (cxx_eval_check_shift_p): Disable the signed LSHIFT_EXPR
	checks for c++2a.

2018-11-13  David Malcolm  <dmalcolm@redhat.com>

	* call.c: Replace "source_location" with "location_t".
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* typeck.c: Likewise.

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

	Implement P0315R4, Lambdas in unevaluated contexts.
	* decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR.
	* mangle.c (write_expression): Handle LAMBDA_EXPR.
	* parser.c (cp_parser_lambda_expression): Allow lambdas in
	unevaluated context.  Start the tentative firewall sooner.
	(cp_parser_lambda_body): Use cp_evaluated.
	* pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR.
	(tsubst_function_decl): Substitute a lambda even if it isn't
	dependent.
	(tsubst_lambda_expr): Use cp_evaluated.  Always complain.
	(tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial.
	* semantics.c (begin_class_definition): Allow in template parm list.
	* tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR.
	(cp_tree_equal): Handle LAMBDA_EXPR.

	* pt.c (fn_type_unification): If we have a full set of explicit
	arguments, go straight to substitution.

	* decl2.c (min_vis_expr_r, expr_visibility): New.
	(min_vis_r): Call expr_visibility.
	(constrain_visibility_for_template): Likewise.

	Implement P0722R3, destroying operator delete.
	* call.c (std_destroying_delete_t_p, destroying_delete_p): New.
	(aligned_deallocation_fn_p, usual_deallocation_fn_p): Use
	destroying_delete_p.
	(build_op_delete_call): Handle destroying delete.
	* decl2.c (coerce_delete_type): Handle destroying delete.
	* init.c (build_delete): Don't call dtor with destroying delete.
	* optimize.c (build_delete_destructor_body): Likewise.

	Implement P0780R2, pack expansion in lambda init-capture.
	* parser.c (cp_parser_lambda_introducer): Parse pack init-capture.
	* pt.c (tsubst_pack_expansion): Handle init-capture packs.
	(lookup_init_capture_pack): New.
	(tsubst_expr) [DECL_EXPR]: Use it.
	(tsubst_lambda_expr): Remember field pack expansions for
	init-captures.

	* cp-tree.h (struct cp_evaluated): New.
	* init.c (get_nsdmi): Use it.
	* parser.c (cp_parser_enclosed_template_argument_list): Use it.
	* pt.c (coerce_template_parms, tsubst_aggr_type): Use it.

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

	* parser.c (cp_parser_omp_clause_final, cp_parser_omp_clause_if): Use
	cp_parser_assignment_expression instead of cp_parser_condition.
	(cp_parser_omp_clause_num_threads, cp_parser_omp_clause_num_tasks,
	cp_parser_omp_clause_grainsize, cp_parser_omp_clause_priority,
	cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
	cp_parser_omp_clause_linear, cp_parser_omp_clause_device): Use
	cp_parser_assignment_expression instead of cp_parser_expression.
	(cp_parser_omp_clause_hint): Likewise.  Formatting fix.

	* parser.c (cp_parser_omp_clause_reduction): Call sorry_at on
	reduction clause with inscan modifier.

	* parser.c (cp_parser_omp_requires): Call sorry_at on requires
	clauses other than atomic_default_mem_order.

2018-11-09  Martin Sebor  <msebor@redhat.com>

	PR middle-end/81824
	* pt.c (warn_spec_missing_attributes): Move code to attribs.c.
	Call decls_mismatched_attributes.

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

	* constexpr.c (potential_constant_expression_1): Handle OMP_DEPOBJ.
	* cp-gimplify.c (cp_genericize_r): Handle
	OMP_CLAUSE_{IN,TASK}_REDUCTION.
	(cxx_omp_predetermined_sharing_1): Don't return
	OMP_CLAUSE_DEFAULT_SHARED for const qualified decls with no mutable
	member.  Return OMP_CLAUSE_DEFAULT_FIRSTPRIVATE for this pointer.
	* cp-objcp-common.c (cp_common_init_ts): Handle OMP_DEPOBJ.
	* cp-tree.def (OMP_DEPOBJ): New tree code.
	* cp-tree.h (OMP_ATOMIC_DEPENDENT_P): Return true also for first
	argument being OMP_CLAUSE.
	(OMP_DEPOBJ_DEPOBJ, OMP_DEPOBJ_CLAUSES): Define.
	(cp_convert_omp_range_for, cp_finish_omp_range_for): Declare.
	(finish_omp_atomic): Add LOC, CLAUSES and MO arguments.  Remove
	SEQ_CST argument.
	(finish_omp_for_block): Declare.
	(finish_omp_flush): Add MO argument.
	(finish_omp_depobj): Declare.
	* cxx-pretty-print.c (cxx_pretty_printer::statement): Handle
	OMP_DEPOBJ.
	* dump.c (cp_dump_tree): Likewise.
	* lex.c (cxx_init): Likewise.
	* parser.c: Include memmodel.h.
	(cp_parser_for): Pass false as new is_omp argument to
	cp_parser_range_for.
	(cp_parser_range_for): Add IS_OMP argument, return before finalizing
	if it is true.
	(cp_parser_omp_clause_name): Handle nontemporal, in_reduction and
	task_reduction clauses.
	(cp_parser_omp_var_list_no_open): Handle
	OMP_CLAUSE_{IN,TASK}_REDUCTION.  For OMP_CLAUSE_DEPEND, parse clause
	operands as either an array section, or lvalue assignment expression.
	(cp_parser_omp_clause_if): Handle cancel and simd modifiers.
	(cp_parser_omp_clause_defaultmap): Parse new kinds of defaultmap
	clause.
	(cp_parser_omp_clause_reduction): Add IS_OMP and KIND arguments.
	Parse reduction modifiers.  Pass KIND to c_parser_omp_variable_list.
	(cp_parser_omp_clause_lastprivate, cp_parser_omp_iterators): New
	functions.
	(cp_parser_omp_clause_depend): Parse iterator modifier and handle
	iterators.  Parse mutexinoutset and depobj kinds.
	(cp_parser_oacc_all_clauses): Adjust cp_parser_omp_clause_reduction
	callers.
	(cp_parser_omp_all_clauses): Likewise.  Handle
	PRAGMA_OMP_CLAUSE_NONTEMPORAL and
	PRAGMA_OMP_CLAUSE_{IN,TASK}_REDUCTION.  Call
	cp_parser_omp_clause_lastprivate for OpenMP lastprivate clause.
	(cp_parser_omp_atomic): Pass pragma_tok->location as
	LOC to finish_omp_atomic.  Parse hint and memory order clauses.
	Handle default memory order from requires directive if any.  Adjust
	finish_omp_atomic caller.
	(cp_parser_omp_critical): Allow comma in between (name) and hint
	clause.
	(cp_parser_omp_depobj): New function.
	(cp_parser_omp_flush): Parse flush with memory-order-clause.
	(cp_parser_omp_for_cond): Allow NE_EXPR even in OpenMP loops.
	(cp_convert_omp_range_for, cp_finish_omp_range_for): New functions.
	(cp_parser_omp_for_loop): Parse C++11 range for loops among omp
	loops.  Handle OMP_CLAUSE_IN_REDUCTION like OMP_CLAUSE_REDUCTION.
	(OMP_SIMD_CLAUSE_MASK): Add if and nontemporal clauses.
	(cp_parser_omp_simd, cp_parser_omp_for): Call keep_next_level before
	begin_omp_structured_block and call finish_omp_for_block on
	finish_omp_structured_block result.
	(cp_parser_omp_master): Add p_name, mask and cclauses arguments.
	Allow to be called while parsing combined parallel master.
	Parse combined master taskloop{, simd}.
	(cp_parser_omp_parallel): Parse combined
	parallel master{, taskloop{, simd}} constructs.
	(cp_parser_omp_single): Use SET_EXPR_LOCATION.
	(OMP_TASK_CLAUSE_MASK): Add in_reduction clause.
	(OMP_TASKWAIT_CLAUSE_MASK): Define.
	(cp_parser_omp_taskwait): Handle taskwait with depend clauses.
	(OMP_TASKGROUP_CLAUSE_MASK): Define.
	(cp_parser_omp_taskgroup): Parse taskgroup clauses, adjust
	c_finish_omp_taskgroup caller.
	(cp_parser_omp_distribute): Call keep_next_level before
	begin_omp_structured_block and call finish_omp_for_block on
	finish_omp_structured_block result.
	(cp_parser_omp_teams): Force a BIND_EXPR with BLOCK around teams
	body.
	(cp_parser_omp_target_data): Allow target data with only
	use_device_ptr clauses.
	(cp_parser_omp_target): Set OMP_REQUIRES_TARGET_USED bit in
	omp_requires_mask.
	(cp_parser_omp_requires): New function.
	(OMP_TASKLOOP_CLAUSE_MASK): Add reduction and in_reduction clauses.
	(cp_parser_omp_taskloop): Add forward declaration.  Disallow
	in_reduction clause when combined with parallel master.  Call
	keep_next_level before begin_omp_structured_block and call
	finish_omp_for_block on finish_omp_structured_block result.
	(cp_parser_omp_construct): Adjust cp_parser_omp_master caller.
	(cp_parser_pragma): Handle PRAGMA_OMP_DEPOBJ and PRAGMA_OMP_REQUIRES.
	* pt.c (tsubst_omp_clause_decl): Add iterators_cache argument.
	Adjust recursive calls.  Handle iterators.
	(tsubst_omp_clauses): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION and
	OMP_CLAUSE_NONTEMPORAL.  Adjust tsubst_omp_clause_decl callers.
	(tsubst_decomp_names):
	(tsubst_omp_for_iterator): Change orig_declv into a reference.
	Handle range for loops.  Move orig_declv handling after declv/initv
	handling.
	(tsubst_expr): Force a BIND_EXPR with BLOCK around teams body.
	Adjust finish_omp_atomic caller.  Call keep_next_level before
	begin_omp_structured_block.  Call cp_finish_omp_range_for for range
	for loops and use {begin,finish}_omp_structured_block instead of
	{push,pop}_stmt_list if there are any range for loops.  Call
	finish_omp_for_block on finish_omp_structured_block result.
	Handle OMP_DEPOBJ.  Handle taskwait with depend clauses.  For
	OMP_ATOMIC call tsubst_omp_clauses on clauses if any, adjust
	finish_omp_atomic caller.  Use OMP_ATOMIC_MEMORY_ORDER rather
	than OMP_ATOMIC_SEQ_CST.  Handle clauses on OMP_TASKGROUP.
	(dependent_omp_for_p): Always return true for range for loops if
	processing_template_decl.  Return true if class type iterator
	does not have INTEGER_CST increment.
	* semantics.c: Include memmodel.h.
	(handle_omp_array_sections_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION
	like OMP_CLAUSE_REDUCTION.
	(handle_omp_array_sections): Likewise.  Call save_expr on array
	reductions before calling build_index_type.  Handle depend clauses
	with iterators.
	(finish_omp_reduction_clause): Call save_expr for whole array
	reduction sizes.  Don't mark OMP_CLAUSE_DECL addressable if it has
	reference type.  Do mark decl_placeholder addressable if needed.
	Use error_at with OMP_CLAUSE_LOCATION (c) as first argument instead
	of error.
	(cp_omp_finish_iterators): New function.
	(finish_omp_clauses): Don't diagnose nonmonotonic clause with static,
	runtime or auto schedule kinds.  Diagnose nogroup clause used with
	reduction clause(s).  Handle depend clause with
	OMP_CLAUSE_DEPEND_DEPOBJ.  Diagnose bit-fields.  Require
	omp_depend_t type for OMP_CLAUSE_DEPEND_DEPOBJ kinds and
	some different type for other kinds.  Use cp_build_addr_expr
	and cp_build_indirect_ref instead of cxx_mark_addressable.
	Handle depend clauses with iterators.  Only handle static data members
	in the special case that const qualified vars may be specified in
	firstprivate clause.  Complain if const qualified vars without mutable
	members are mentioned in data-sharing clauses other than firstprivate
	or shared.  Use error_at with OMP_CLAUSE_LOCATION (c) as first
	argument instead of error.  Diagnose more than one nontemporal clause
	refering to the same variable.  Use error_at rather than error for
	priority and hint clause diagnostics.  Fix pasto for hint clause.
	Diagnose hint expression that doesn't fold into INTEGER_CST.
	Diagnose if clause with modifier other than cancel.  Handle
	OMP_CLAUSE_{IN,TASK}_REDUCTION like OMP_CLAUSE_REDUCTION.  Allow any
	lvalue as OMP_CLAUSE_DEPEND operand (besides array section), adjust
	diagnostics.
	(handle_omp_for_class_iterator): Don't create a new TREE_LIST if one
	has been created already for range for, just fill TREE_PURPOSE and
	TREE_VALUE.  Call cp_fully_fold on incr.
	(finish_omp_for): Don't check cond/incr if cond is global_namespace.
	Pass to c_omp_check_loop_iv_exprs orig_declv if non-NULL.  Don't
	use IS_EMPTY_STMT on NULL pre_body.  Adjust c_finish_omp_for caller.
	(finish_omp_for_block): New function.
	(finish_omp_atomic): Add LOC argument, pass it through
	to c_finish_omp_atomic and set it as location of OMP_ATOMIC* trees.
	Remove SEQ_CST argument.  Add CLAUSES and MO arguments.  Adjust
	c_finish_omp_atomic caller.  Stick clauses if any into first argument
	of wrapping OMP_ATOMIC.
	(finish_omp_depobj): New function.
	(finish_omp_flush): Add MO argument, if not
	MEMMODEL_LAST, emit __atomic_thread_fence call with the given value.
	(finish_omp_cancel): Diagnose if clause with modifier other than
	cancel.

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

	PR c++/87904
	* cp-tree.h (struct tree_overload): Fix comment.
	* tree.c (ovl_iterator::reveal_node): Propagate OVL_DEDUP_P.

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

	Implement UDL changes from P0732R2.
	* cp-tree.h (struct releasing_vec): Move from mangle.c.
	Add get_ref method.
	* parser.c (cp_parser_userdef_string_literal): Use it.  Handle
	passing the string to a single template parameter of class type.
	(cp_parser_template_declaration_after_parameters): Allow it.
	Pedwarn about the character pack template that was proposed but not
	accepted for C++14, and don't suggest it.

	Implement P0732R2, class types in non-type template parameters.
	* error.c (dump_simple_decl): Look through a template parm object.
	* mangle.c (write_template_arg): Likewise.
	(mangle_template_parm_object): New.
	* pt.c (template_parm_object_p, get_template_parm_object): New.
	(invalid_tparm_referent_p): Factor from convert_nontype_argument.
	(convert_nontype_argument, invalid_nontype_parm_type_p): Handle
	class-type template arguments.
	* tree.c (lvalue_kind): Likewise.

	* cvt.c (ocp_convert): Don't wrap a CONSTRUCTOR in a NOP_EXPR.
	* constexpr.c (initialized_type): Fix AGGR_INIT_EXPR handling.
	(cxx_eval_vec_init_1): Correct type of AGGR_INIT_EXPR.
	(cxx_eval_outermost_constant_expr): Make sure a CONSTRUCTOR has the
	right type.  Don't wrap a CONSTRUCTOR if one was passed in.
	* tree.c (build_aggr_init_expr): Check for void.

	PR c++/60503 - wrong lambda attribute syntax.
	* parser.c (cp_parser_lambda_declarator_opt): Fix attribute
	handling.

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

	* decl.c (duplicate_decls): Refactor checks.

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

	Implement P0846R0, ADL and function templates.
	* decl.c (grokfndecl): Allow FUNCTION_DECL in assert.
	* lex.c (unqualified_fn_lookup_error): Handle TEMPLATE_ID_EXPR.
	* parser.c (cp_parser_postfix_expression): Do ADL for a template-name.
	(cp_parser_template_id): Give errors if parsing the template argument
	list didn't go well.  Allow FUNCTION_DECL in assert.
	(cp_parser_template_name): Consider a name to refer to a template if
	it is an unqualified-id followed by a <.  Don't return the identifier
	if the decl is a function and dependent.
	* pt.c (tsubst_copy) <case OVERLOAD>: Remove assert.

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

	* cp-tree.h (struct lang_function): Delete x_local_names field.
	(struct lang_decl_base): Rename u2sel to spare.
	(struct lang_decl_min): Remove lang_decl_u2 union.  Keep access
	field.
	(LANG_DECL_U2_CHECK): Delete.
	(DECL_DISCRIMINATOR_P): Require function scope.
	(DECL_DISCRIMINATOR): Adjust.
	(DECL_DISCRIMINATOR_SET_P): Delete.
	(DECL_CAPTURED_VARIABLE, DECL_ACCESS, THUnK_VIRTUAL_OFFSET): Adjust.
	(local_classes): Don't declare.
	(determine_local_discriminator): Declare.
	* decl.c (push_local_name): Delete.
	(local_entities, determina_local_discrminator): New.
	(duplicate_decls): Copy DECL_ACCESS. Fix formatting.
	(cp_finish_decl): Use determine_local_discriminator.
	(save_function_data): Drop x_local_names.
	(finish_function): Drop local_names.
	* decl2.c (finish_anon_union): Use determine_local_disciminator.
	* mangle.c (write_unnamed_type_name): Use
	discriminator_for_local_entity.
	(local_class_index): Delete.
	(discriminator_for_local_entity): Reimplement.
	(write_local_name): Adjust discriminator code.
	* name-lookup.c (do_pushtag): Call determine_local_discrimiator.
	* semantics.c (finish_omp_threadprivate): Drop DECL_DISCRIMINATOR
	handling.
	* class.c (local_classes): Delete.
	(init_class_processing): Don't init it.

2018-11-01  Martin Liska  <mliska@suse.cz>
	    Jason Merrill  <jason@redhat.com>

	PR c++/64266
	PR bootstrap/70422
	PR ipa/81277
	* cp-tree.h (DECL_FNAME_P): New macro.
	* decl.c (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
	DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
	(cp_finish_decl):
	* lambda.c (is_capture_proxy): Use DECL_FNAME_P.
	* pt.c (tsubst_expr): Handle DECL_PRETTY_FUNCTION_P.

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

	* cp-tree.h (OVL_DEDUP_P): New.
	* name-lookup.c (name_lookup::add_overload): Check OVL_DEDUP_P.
	(get_class_binding_direct): Likwise.
	* tree.c (ovl_make): Propagate OVL_DEDUP_P.
	(ovl_copy): Copy it.
	(ovl_insert): Do not keep using-decls ordered.
	(lookup_maybe_add): Adjust comment.

2018-10-30  Marek Polacek  <polacek@redhat.com>

	Implement P0892R2, explicit(bool).
	* call.c (add_template_candidate_real): Return if the declaration is
	explicit and we're only looking for non-converting constructor.
	* cp-tree.h (lang_decl_fn): Add has_dependent_explicit_spec_p bit.
	(DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P): New macro.
	(cp_decl_specifier_seq): Add explicit_specifier field.
	(build_explicit_specifier, store_explicit_specifier): Declare.
	* decl.c (grokdeclarator): Call store_explicit_specifier.
	(build_explicit_specifier): New function.
	* parser.c (cp_parser_function_specifier_opt) <case RID_EXPLICIT>:
	Parse C++20 explicit(bool).
	* pt.c (store_explicit_specifier, lookup_explicit_specifier): New.
	(tsubst_function_decl): Handle explicit(dependent-expr).

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

	* decl.c (grokdeclarator): Use declarator->id_loc in diagnostic
	about flexible array members.

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

	* cp-name-hint.h: New file.
	* cp-tree.h (expr_to_string): New decl.
	(suggest_alternatives_for): Move to cp-name-hint.h, changing
	return type from bool to name_hint.
	(suggest_alternative_in_explicit_scope): Likewise.
	* error.c: Define INCLUDE_UNIQUE_PTR.  Include "cp-name-hint.h".
	(expr_to_string): Make non-static.
	(qualified_name_lookup_error): For the non-"::" case, take
	responsibity for issuing any suggestion from
	suggest_alternative_in_explicit_scope, as it changes from
	returning a bool to returning a name_hint.  Replace fallback call
	to suggest_alternatives_for to a call to
	suggest_alternatives_in_other_namespaces, capturing the fact that
	we don't have enough location information to issue a fix-it hint
	for this case.  Update the error to support emitting a fix-it hint
	where appropriate.  For the "::" case, take responsibility for
	issuing any suggestion from suggest_alternatives_for, supporting
	emitting a fix-it hint.
	* lex.c: Define INCLUDE_UNIQUE_PTR.  Include "gcc-rich-location.h"
	and "cp-name-hint.h".
	(unqualified_name_lookup_error): Take responsibility for issuing
	any suggestion from suggest_alternatives_for, supporting emitting
	a fix-it hint.
	* name-lookup.c (class namespace_limit_reached): New subclass of
	deferred_diagnostic.
	(class show_candidate_location): Likewise.
	(class suggest_alternatives): Likewise.
	(class namespace_hints): New class.
	(suggest_alternatives_for): Convert return type from bool to
	name_hint, replacing all direct diagnostic emission by setting
	suggestions on the return value, or creating deferred diagnostics.
	Specifically, split out initial traversal of namespaces into
	namespace_hints' ctor, and maybe_decorate_with_limit, and move the
	rest of the implementation to
	namespace_hints::convert_candidates_to_name_hint and
	suggest_alternatives_for_1.
	(namespace_hints::namespace_hints): New ctor, adapted from
	suggest_alternatives_for's initial namespace traversal, storing
	location and name, and converting locals "candidates", "limited"
	and "limit" into members.
	(namespace_hints::convert_candidates_to_name_hint): New member
	function.
	(namespace_hints::maybe_decorate_with_limit): New member function.
	(suggest_alternatives_for_1): New function, based on second half
	of old implementation of suggest_alternatives_for, converting from
	immediate emission of suggestions to using name_hint.
	(suggest_alternatives_in_other_namespaces): New function.
	(maybe_suggest_missing_std_header): Convert from immediate
	emission of suggestions to using name_hint, moving emission
	implementation to...
	(class missing_std_header): New subclass of deferred_diagnostic.
	(maybe_suggest_missing_header): Convert return type from bool to
	name_hint.
	(suggest_alternative_in_explicit_scope): Convert from immediate
	emission of suggestions to using name_hint.
	* parser.c: Replace include of "c-family/name-hint.h" with
	"cp-name-hint.h".
	(cp_parser_diagnose_invalid_type_name): Update
	"is there a suggestion" logic for change to
	name_hint::operator bool.  Take responsibility for emitting
	fix-it hints from suggest_alternative_in_explicit_scope.
	(cp_parser_namespace_name): Take responsibility for emitting
	fix-it hints from suggest_alternative_in_explicit_scope.  Don't
	emit the "expected namespace-name" error if we've already emitted
	an "is not a namespace-name" error.

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

	PR c++/56856
	* call.c (build_over_call): Eliminate the "arglocs" array, and the
	call to maybe_constant_value when building "fargs".

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

	* decl.c (create_array_type_for_decl): Add location_t parameter
	and use it.
	(grokdeclarator): Adjust call.

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

	PR c++/87594 - constexpr rejects-valid with range-based for.
	* constexpr.c (potential_constant_expression_1): If the condition
	can't be evaluated, return true.

2018-10-29  Joseph Myers  <joseph@codesourcery.com>
	    Julian Brown  <julian@codesourcery.com>

	PR c++/66053
	* semantics.c (handle_omp_array_sections_1): Allow array
	sections with "this" pointer for OpenACC.

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

	* parser.c (cp_parser_sizeof_operand): Remove redundant use of
	grokdeclarator.

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-24  Martin Sebor  <msebor@redhat.com>

	PR c++/84851
	* call.c (maybe_warn_class_memaccess): Tighten up.

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

	* Make-lang.in (selftest-c++): New.
	(CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
	(selftest-c++-gdb, selftest-c++-valgrind): Move here from
	gcc/Makefile.in.

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

	PR c++/84705
	* tree.c (build_cplus_new): Avoid duplicate diagnostic about
	incomplete type, early return error_mark_node if the second
	argument is error_mark_node.

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

	* parser.h (struct cp_parser): Drop implicit_extern_c.
	* parser.c (cp_debug_parser): Drop implicit_extern_c.
	(cp_parser_new): Likewise.
	(cp_parser_translation_unit): Handle implicit extern c here.  Call
	cp_parser_toplevel_declaration.
	(cp_parser_toplevel_declaration): New, broken out of ...
	(cp_parser_declaration_seq_opt): ... here.  Call it.  Drop
	implicit extern C handling.

2018-10-11  Will Wray  <wjwray@gmail.com>

	PR c++/87364
	* cxx-pretty-print.c (pp_cxx_enumeration_constant): New function.
	(cxx_pretty_printer::constant): Use it.

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

	PR c++/84993
	* call.c (enforce_access): Move diagnostics to...
	(complain_about_access): ...this new function.
	* cp-tree.h (class access_failure_info): Rename split out field
	"m_field_decl" into "m_decl" and "m_diag_decl".
	(access_failure_info::record_access_failure): Add tree param.
	(access_failure_info::was_inaccessible_p): New accessor.
	(access_failure_info::get_decl): New accessor.
	(access_failure_info::get_diag_decl): New accessor.
	(access_failure_info::get_any_accessor): New member function.
	(access_failure_info::add_fixit_hint): New static member function.
	(complain_about_access): New decl.
	* typeck.c (access_failure_info::record_access_failure): Update
	for change to fields.
	(access_failure_info::maybe_suggest_accessor): Split out into...
	(access_failure_info::get_any_accessor): ...this new function...
	(access_failure_info::add_fixit_hint): ...and this new function.
	(finish_class_member_access_expr): Split out "has no member named"
	error-handling into...
	(complain_about_unrecognized_member): ...this new function, and
	check that the guessed name is accessible along the access path.
	Only provide a spell-correction fix-it hint if it is; otherwise,
	attempt to issue an accessor fix-it hint.

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

	* parser.c (cp_parser_translation_unit): Return void.  Don't fail
	at first extra }, simplify logic.
	(c_parse_file): Call finish_translation_unit here.

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.

	PR c++/87547
	* rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead
	of TREE_TYPE.

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

	PR c++/87567 - constexpr rejects call to non-constexpr function.
	* constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return
	true if the condition is always false.
	<case WHILE_STMT>: Likewise.

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

	PR c++/84423
	* pt.c (convert_template_argument): Immediately return error_mark_node
	if the second argument is erroneous.
	* parser.c (cp_parser_type_id): Add location_t * parameter.
	(cp_parser_type_id_1): Likewise.
	(cp_parser_alias_declaration): Adjust cp_parser_type_id call,
	obtain the location of the type and save it.
	(cp_parser_template_type_arg): Adjust.
	(cp_parser_trailing_type_id): Likewise.
	* decl.c (grokdeclarator): Improve error message for 'auto' in
	alias declaration.

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

	PR c++/71128
	* pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be
	explicitly instantiated.

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

	PR c++/56856
	* call.c (build_over_call): Build a vec of locations of the
	arguments before the call to maybe_constant_value, and pass to
	check_function_arguments.
	* cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
	c_get_substring_location.
	* parser.c (cp_parser_string_literal): Capture string
	concatenation locations.

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

	* lang-specs.h: Use string contatenation, not line splicing.

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

	Implement P0840, language support for empty objects.
	* tree.c (handle_no_unique_addr_attribute): New.
	(cxx_attribute_table): Add [[no_unique_address]].
	* class.c (field_poverlapping_p): New.
	(layout_class_type): Check it.  Adjust DECL_SIZE of potentially
	overlapping fields.
	(layout_empty_base_or_field): Rename from layout_empty_base, handle
	FIELD_DECL as well.
	(build_base_field, record_subobject_offsets): Adjust.

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-10-02  Richard Biener  <rguenther@suse.de>

	* name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.

2018-09-28  Eric Botcazou  <ebotcazou@adacore.com>
	    Pierre-Marie de Rodat  <derodat@adacore.com>

	* method.c (use_thunk): Adjust call to cgraph_node::create_thunk.

2018-09-28  Richard Biener  <rguenther@suse.de>

	* error.c (cp_print_error_function): Simplify by eliding
	the BLOCK_ABSTRACT_ORIGIN chasing.

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

	PR c++/87398
	* constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only
	look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs.

2018-09-25  Martin Liska  <mliska@suse.cz>

	* name-lookup.c (namespace_scope_ht_size): Remove
	unused function.
	* parser.c (cp_lexer_next_token_is_not_keyword): Likewise.

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

	PR c++/87372 - __func__ constexpr evaluation.
	* constexpr.c (maybe_constant_init_1): Pass false for strict down to
	cxx_eval_outermost_constant_expr.

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

	PR c++/87109 - wrong ctor with maybe-rvalue semantics.
	* call.c (build_user_type_conversion_1): Refine the maybe-rvalue
	check to only return if we're converting the return value to a base
	class.

2018-09-20  Allan Sandfeld Jensen  <allan.jensen@qt.io>

	* g++spec.c (lang_specific_driver): Handle -r like -nostdlib.

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

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

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

	Add -Wclass-conversion.
	* decl.c (grok_op_properties): Change a warning from -Wconversion to
	-Wclass-conversion.  Make it print the types.

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

	PR c++/87324
	* parser.c (cp_parser_initializer_list): Assign error_mark_node
	to the index upon error.

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

	PR c++/87357 - missing -Wconversion warning
	* decl.c (grok_op_properties): Remove diagnostic parts mentioning
	a conversion to a reference to void.  Use
	same_type_ignoring_top_level_qualifiers_p rather than comparing types
	directly.

2018-09-18  Marek Polacek  <polacek@redhat.com>

	P1064R0 - Allowing Virtual Function Calls in Constant Expressions
	* call.c (build_over_call): No longer check if we're outside a template
	function.
	* class.c (build_vtbl_initializer): Build vtable's constructor with
	indexes.
	* constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
	initializer.  Handle OBJ_TYPE_REF.
	(potential_constant_expression_1): Handle OBJ_TYPE_REF.
	* decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
	(initialize_artificial_var): Mark the variable as constexpr.
	(grokdeclarator): Change error to pedwarn.  Only warn when
	pedantic and not C++2a.

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

	PR c++/85065
	* cp-tree.h (NON_ERROR): New.
	* pt.c (auto_hash::hash): Use it.
	(do_auto_deduction): Likewise.

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

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

2018-09-17  David Malcolm  <dmalcolm@redhat.com>

	* error.c (range_label_for_type_mismatch::get_text): Update for
	new param.

2018-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* typeck2.c (digest_init_r): Fix overlength strings.

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

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

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

	PR c++/85110
	* call.c (struct conversion_info): Add "loc" field.
	(arg_conversion_rejection): Add "loc" param, using it to
	initialize the new field.
	(bad_arg_conversion_rejection): Likewise.
	(explicit_conversion_rejection): Initialize the new field to
	UNKNOWN_LOCATION.
	(template_conversion_rejection): Likewise.
	(add_function_candidate): Pass on the argument location to the new
	param of arg_conversion_rejection.
	(add_conv_candidate): Likewise.
	(build_builtin_candidate): Likewise.
	(build_user_type_conversion_1): Likewise.
	(single_z_candidate): New function.
	(maybe_get_bad_conversion_for_unmatched_call): New function.
	(complain_about_bad_argument): New function, based on part of
	convert_for_assignment.
	(build_new_method_call_1): Split out handling of the "no viable
	candidates" case into...
	(complain_about_no_candidates_for_method_call): ...this new
	function, and use the new functions above to special-case the
	handling of a single non-viable candidate due to a bad argument.
	* cp-tree.h (complain_about_bad_argument): New decl.
	* typeck.c (convert_for_assignment): Split out one error-handling
	case into complain_about_bad_argument.

2018-09-09  Cesar Philippidis  <cesar@codesourcery.com>
	    Julian Brown  <julian@codesourcery.com>

	PR middle-end/86336
	* semantics.c (finish_omp_clauses): Treat C++ references the same in
	OpenACC as OpenMP.

2018-08-28  Martin Liska  <mliska@suse.cz>

	* constexpr.c (cxx_eval_call_expression): Add quotes
	to -fconstexpr-depth=.

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

	* class.c (build_vtbl_ref): Remove.
	(build_vtbl_ref_1): Rename to build_vtbl_ref.
	(build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.

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

	PR c++/87150 - wrong ctor with maybe-rvalue semantics.
	* call.c (struct conversion): Update commentary.
	(standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
	for ck_base.

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

	PR c++/86678 - constexpr function with non-constant after return.
	* constexpr.c (potential_constant_expression_1): Add jump_target.
	(breaks): Check for BREAK_STMT.
	(continues): Check for CONTINUE_STMT.

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

	* cxx-pretty-print.c (cxx_pretty_printer::statement) <case
	RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.

2018-09-07  Marek Polacek  <polacek@redhat.com>

	PR c++/87152 - range-based for loops with initializer broken in templates.
	* constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
	Recur into RANGE_FOR_INIT_STMT.
	* cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
	* cp-tree.h (RANGE_FOR_INIT_STMT): Define.
	* dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
	RANGE_FOR_INIT_STMT.
	* pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
	RANGE_FOR_INIT_STMT.
	* semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
	Do put the init statement in RANGE_FOR_INIT_STMT.
	(finish_range_for_decl): Pop it for templates.

2018-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* decl.c (check_initializer): Call cp_complete_array_type.

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

	PR c++/87109, wrong overload with ref-qualifiers.
	* call.c (build_user_type_conversion_1): Use NULL instead of 0.  Bail
	out if performing the maybe-rvalue overload resolution and a conversion
	function is getting called.

	PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
	* typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
	to std::move or std::forward.
	(is_std_forward_p): New function.

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

	* cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
	* except.c (build_throw): Use it.  Use CP_TYPE_VOLATILE_P.
	* typeck.c (treat_lvalue_as_rvalue_p): No longer static.  Add PARM_OK
	parameter.
	(maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
	(check_return_expr): Likewise.

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

	PR c++/84980
	* constraint.cc (finish_shorthand_constraint): Early return if the
	constraint is erroneous.

2018-09-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* decl.c (eval_check_narrowing): Remove.
	(check_initializer): Move call to braced_list_to_string from here ...
	* typeck2.c (store_init_value): ... to here.
	(digest_init_r): Remove handing of signed/unsigned char strings.

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.

	* decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
	of return types and parms.
	* parser.c (cp_parser_parameter_declaration_clause): Likewise,
	'()' always means '(void)'.

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-29  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/85265
	* parser.c (cp_parser_introduction_list): If cp_parser_identifier
	returns error_mark_node early exit the loop.
	(cp_parser_template_introduction): Improve error-recovery, remove
	error call about empty introduction-list.

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

	PR c++/85110
	* call.c (print_conversion_rejection): Add "fn" param and use it
	for "no known conversion" messages to underline the pertinent
	param.
	(print_z_candidate): Supply "fn" to the new param above.

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-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/86546
	* decl.c (finish_case_label): If the type is erroneous early
	return error_mark_node.

2018-08-27  David Malcolm  <dmalcolm@redhat.com>

	PR c++/63392
	* parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
	hint.

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

	PR c++/86993
	* cp-tree.h (cxx_readonly_error): Add location_t argument.
	* typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
	ERROR_FOR_ASSIGNMENT macro and readonly_error.  Add LOC argument
	to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
	pass LOC to it.  Formatting fixes.
	* typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
	(cp_build_modify_expr): Pass loc to cxx_readonly_error.
	* semantics.c (finish_asm_stmt): Pass input_location to
	cxx_readonly_error.

2018-08-27  David Malcolm  <dmalcolm@redhat.com>

	PR c++/87091
	* decl.c (grokdeclarator): Update for conversion of show_caret_p
	to a tri-state.
	* error.c (cp_printer): Likewise.
	* name-lookup.c (maybe_suggest_missing_std_header): Update call to
	maybe_add_include_fixit to suggest overriding the location, as it
	is for a note.
	* parser.c (cp_parser_string_literal): Update for conversion of
	show_caret_p to a tri-state.
	(cp_parser_elaborated_type_specifier): Likewise.
	(set_and_check_decl_spec_loc): Likewise.
	* pt.c (listify): Update call to maybe_add_include_fixit to not
	override the location, as it is for an error.
	* rtti.c (typeid_ok_p): Likewise.

2018-08-27  Martin Liska  <mliska@suse.cz>

	* call.c (build_call_a): Use new function
	fndecl_built_in_p and remove check for FUNCTION_DECL if
	possible.
	(build_cxx_call): Likewise.
	* constexpr.c (constexpr_fn_retval): Likewise.
	(cxx_eval_builtin_function_call): Likewise.
	(cxx_eval_call_expression): Likewise.
	(potential_constant_expression_1): Likewise.
	* cp-gimplify.c (cp_gimplify_expr): Likewise.
	(cp_fold): Likewise.
	* decl.c (decls_match): Likewise.
	(validate_constexpr_redeclaration): Likewise.
	(duplicate_decls): Likewise.
	(make_rtl_for_nonlocal_decl): Likewise.
	* name-lookup.c (consider_binding_level): Likewise.
	(cp_emit_debug_info_for_using): Likewise.
	* semantics.c (finish_call_expr): Likewise.
	* tree.c (builtin_valid_in_constant_expr_p): Likewise.

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

	PR c++/87080
	* typeck.c (maybe_warn_pessimizing_move): Do nothing in a template.

	PR c++/87029, Implement -Wredundant-move.
	* typeck.c (treat_lvalue_as_rvalue_p): New function.
	(maybe_warn_pessimizing_move): Call convert_from_reference.
	Warn about redundant moves.

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

	PR c++/67012
	PR c++/86942
	* decl.c (grokdeclarator): Disallow functions with trailing return
	type with decltype(auto) as its type.  Also check the function if
	it's inner declarator doesn't exist

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

	PR c++/86499
	* parser.c (cp_parser_lambda_introducer): Give error if a non-local
	lambda has a capture-default.

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

	* decl.c (check_static_variable_definition): Change to return void.

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

	PR c++/86981, Implement -Wpessimizing-move.
	* typeck.c (decl_in_std_namespace_p): New.
	(is_std_move_p): New.
	(maybe_warn_pessimizing_move): New.
	(can_do_nrvo_p): New, factored out of ...
	(check_return_expr): ... here.  Warn about potentially harmful
	std::move in a return statement.

	PR c++/65043
	* call.c (standard_conversion): Set check_narrowing.
	* typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
	than comparing with INTEGER_TYPE.

	* cp-tree.h: Fix typo.

2018-08-20  David Malcolm  <dmalcolm@redhat.com>

	PR other/84889
	* call.c (build_user_type_conversion_1): Add auto_diagnostic_group
	instance(s).
	(print_error_for_call_failure): Likewise.
	(build_op_call_1): Likewise.
	(build_conditional_expr_1): Likewise.
	(build_new_op_1): Likewise.
	(build_op_delete_call): Likewise.
	(convert_like_real): Likewise.
	(build_over_call): Likewise.
	(build_new_method_call_1): Likewise.
	(joust): Likewise.
	* class.c (check_tag): Likewise.
	(finish_struct_anon_r): Likewise.
	(one_inherited_ctor): Likewise.
	(finalize_literal_type_property): Likewise.
	(explain_non_literal_class): Likewise.
	(find_flexarrays): Likewise.
	(resolve_address_of_overloaded_function): Likewise.
	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
	(is_valid_constexpr_fn): Likewise.
	(cx_check_missing_mem_inits): Likewise.
	* cp-gimplify.c (cp_genericize_r): Likewise.
	* cvt.c (maybe_warn_nodiscard): Likewise.
	* decl.c (warn_extern_redeclared_static): Likewise.
	(check_redeclaration_exception_specification): Likewise.
	(check_no_redeclaration_friend_default_args): Likewise.
	(duplicate_decls): Likewise.
	(redeclaration_error_message): Likewise.
	(warn_misplaced_attr_for_class_type): Likewise.
	* decl2.c (finish_static_data_member_decl): Likewise.
	(no_linkage_error): Likewise.
	(cp_warn_deprecated_use): Likewise.
	* error.c (qualified_name_lookup_error): Likewise.
	* friend.c (make_friend_class): Likewise.
	(do_friend): Likewise.
	* init.c (perform_member_init): Likewise.
	(build_new_1): Likewise.
	(build_vec_delete_1): Likewise.
	(build_delete): Likewise.
	* lex.c (unqualified_name_lookup_error): Likewise.
	* name-lookup.c (check_extern_c_conflict): Likewise.
	(inform_shadowed): New function.
	(check_local_shadow): Add auto_diagnostic_group instances,
	replacing goto "inform_shadowed" label with call to subroutine.
	(set_local_extern_decl_linkage): Add auto_diagnostic_group
	instance(s).
	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
	(cp_parser_namespace_name): Likewise.
	* pt.c (check_specialization_namespace): Likewise.
	(check_template_variable): Likewise.
	(warn_spec_missing_attributes): Likewise.
	(check_explicit_specialization): Likewise.
	(process_partial_specialization): Likewise.
	(lookup_template_class_1): Likewise.
	(finish_template_variable): Likewise.
	(do_auto_deduction): Likewise.
	* search.c (check_final_overrider): Likewise.
	(look_for_overrides_r): Likewise.
	* tree.c (maybe_warn_parm_abi): Likewise.
	* typeck.c (cxx_sizeof_expr): Likewise.
	(cp_build_function_call_vec): Likewise.
	(cp_build_binary_op): Likewise.
	(convert_for_assignment): Likewise.
	(maybe_warn_about_returning_address_of_local): Likewise.
	* typeck2.c (abstract_virtuals_error_sfinae): Likewise.
	(check_narrowing): Likewise.

2018-08-17  David Malcolm  <dmalcolm@redhat.com>

	* typeck.c (string_conv_p): Extract location from EXP and use it
	in preference to input_location when issuing warnings.

2018-08-15  David Malcolm  <dmalcolm@redhat.com>

	* call.c: Include "gcc-rich-location.h".
	(convert_like_real): Add range label for "invalid conversion"
	diagnostic.
	(perform_implicit_conversion_flags): Add type label to the
	"could not convert" error.
	* error.c: Include "gcc-rich-location.h".
	(range_label_for_type_mismatch::get_text): New function.
	* typeck.c (convert_for_assignment): Add type label to
	the "cannot convert" error if a location is available.

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

	* decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
	emit an error instead of a permerror.

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

	PR c++/57891
	* call.c (struct conversion): Add check_narrowing_const_only.
	(build_converted_constant_expr): Set check_narrowing and
	check_narrowing_const_only.  Give error if expr is error node.
	(convert_like_real): Pass it to check_narrowing.
	* cp-tree.h (check_narrowing): Add a default parameter.
	* decl.c (compute_array_index_type): Use input_location instead of
	location_of.
	* pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
	* typeck2.c (check_narrowing): Don't warn for instantiation-dependent
	expressions.  Call maybe_constant_value instead of
	fold_non_dependent_expr.  Don't mention { } in diagnostic.  Only check
	narrowing for constants if CONST_ONLY.

2018-08-13  Martin Sebor  <msebor@redhat.com>

	PR tree-optimization/71625
	* decl.c (check_initializer):  Call braced_list_to_string.
	(eval_check_narrowing): New function.
	* gcc/cp/typeck2.c (digest_init_r): Accept strings literals
	as initilizers for all narrow character types.

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

	P0806R2 - Deprecate implicit capture of this via [=]
	* lambda.c (add_default_capture): Formatting fixes.  Warn about
	deprecated implicit capture of this via [=].

	PR c++/86915
	* decl.c (create_array_type_for_decl): Handle null name.

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

	P0595R1 - is_constant_evaluated
	* cp-tree.h (enum cp_built_in_function): New.
	(maybe_constant_init): Add pretend_const_required argument.
	* typeck2.c (store_init_value): Pass true as new argument to
	maybe_constant_init.
	* constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
	for BUILT_IN_UNREACHABLE.
	(struct constexpr_ctx): Add pretend_const_required field.
	(cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
	macro.  Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED.  Check also
	DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
	(cxx_eval_outermost_constant_expr): Add pretend_const_required
	argument, initialize pretend_const_required field in ctx.  If the
	result is TREE_CONSTANT and non_constant_p, retry with
	pretend_const_required false if it was true.
	(is_sub_constant_expr): Initialize pretend_const_required_field in
	ctx.
	(cxx_constant_value): Pass true as pretend_const_required to
	cxx_eval_outermost_constant_expr.
	(maybe_constant_value): Pass false as pretend_const_required to
	cxx_eval_outermost_constant_expr.
	(fold_non_dependent_expr): Likewise.
	(maybe_constant_init_1): Add pretend_const_required argument, pass it
	down to cxx_eval_outermost_constant_expr.  Pass !allow_non_constant
	instead of false as strict to cxx_eval_outermost_constant_expr.
	(maybe_constant_init): Add pretend_const_required argument, pass it
	down to maybe_constant_init_1.
	(cxx_constant_init): Pass true as pretend_const_required to
	maybe_constant_init_1.
	* cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
	CP_BUILT_IN_IS_CONSTANT_EVALUATED.
	(cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
	* decl.c: Include langhooks.h.
	(cxx_init_decl_processing): Register __builtin_is_constant_evaluated
	built-in.
	* tree.c (builtin_valid_in_constant_expr_p): Return true for
	CP_BUILT_IN_IS_CONSTANT_EVALUATED.
	* pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.

	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-07  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/59480, DR 136
	* decl.c (check_no_redeclaration_friend_default_args): New.
	(duplicate_decls): Use the latter; also check that a friend
	declaration specifying default arguments is a definition.

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

	PR c++/79133
	* name-lookup.c (check_local_shadow): Reject captures and parameters
	with the same name.

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

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

2018-08-03  David Malcolm  <dmalcolm@redhat.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	* decl.c: Include "gcc-rich-location.h".
	(add_return_star_this_fixit): New function.
	(finish_function): When warning about missing return statements in
	functions returning non-void, add a "return *this;" fix-it hint for
	assignment operators.

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

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

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

	* error.c (cxx_print_error_function): Duplicate "file" before
	passing it to pp_set_prefix.
	(cp_print_error_function): Use pp_take_prefix when saving the
	existing prefix.

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-01  Martin Sebor  <msebor@redhat.com>

	PR tree-optimization/86650
	* error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
	TREE_BLOCK (t) from within percent_K_format to this callsite.

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

	PR c++/86661
	* class.c (note_name_declared_in_class): Use location_of in permerror
	instead of DECL_SOURCE_LOCATION (for OVERLOADs).

2018-07-31  Tom de Vries  <tdevries@suse.de>

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

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

	P1008R1 - prohibit aggregates with user-declared constructors
	* class.c (check_bases_and_members): For C++2a set
	CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
	type_has_user_provided_or_explicit_constructor.

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

	PR c++/86653
	* parser.c (cp_parser_condition): Initialize non_constant_p
	to false.

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

	* error.c (cp_printer): In the leading comment, move "%H" and "%I"
	into alphabetical order, and add missing "%G" and "%K".  Within
	the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
	cases are in alphabetical order.

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

	* cp-tree.h (enum cp_tree_index): Add
	CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
	and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
	(abi_tag_identifier, aligned_identifier, begin_identifier,
	end_identifier, get__identifier, gnu_identifier,
	tuple_element_identifier, tuple_size_identifier, type_identifier,
	value_identifier, fun_identifier, closure_identifier): Define.
	* decl.c (initialize_predefined_identifiers): Initialize the above
	identifiers.
	(get_tuple_size): Use tuple_size_identifier instead of
	get_identifier ("tuple_size") and value_identifier instead of
	get_identifier ("value").
	(get_tuple_element_type): Use tuple_element_identifier instead of
	get_identifier ("tuple_element") and type_identifier instead of
	get_identifier ("type").
	(get_tuple_decomp_init): Use get__identifier instead of
	get_identifier ("get").
	* lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
	get_identifier ("_FUN").
	* parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
	instead of get_identifier ("__closure").
	(cp_parser_std_attribute): Use gnu_identifier instead of
	get_identifier ("gnu").
	(cp_parser_std_attribute_spec): Likewise.  Use aligned_identifier
	instead of get_identifier ("aligned").
	* class.c (check_abi_tags, inherit_targ_abi_tags): Use
	abi_tag_identifier instead of get_identifier ("abi_tag").

	PR c++/85515
	* cp-tree.h (enum cp_tree_index): Add
	CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
	(for_range__identifier, for_begin__identifier, for_end__identifier,
	for_range_identifier, for_begin_identifier, for_end_identifier):
	Define.
	* decl.c (initialize_predefined_identifiers): Initialize
	for_{range,begin,end}{,_}_identifier.
	* parser.c (build_range_temp): Use for_range__identifier instead of
	get_identifier ("__for_range").
	(cp_convert_range_for): Use for_begin__identifier and
	for_end__identifier instead of get_identifier ("__for_begin") and
	get_identifier ("__for_end").
	* semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
	local symbols to "__for_{range,begin,end}".

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

	PR c++/86569
	* cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
	of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
	or warn_nonnull_compare.

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

	Revert fix for c++/59480 (and testsuite followup)

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

	PR c++/59480, DR 136
	* decl.c (check_no_redeclaration_friend_default_args): New.
	(duplicate_decls): Use the latter; also check that a friend
	declaration specifying default arguments is a definition.

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

	PR c++/86550
	* parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
	specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.

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

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

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

	PR c++/59480, DR 136
	* decl.c (check_no_redeclaration_friend_default_args): New.
	(duplicate_decls): Use the latter; also check that a friend
	declaration specifying default arguments is a definition.

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

	* class.c (note_name_declared_in_class): Prefer permerror + inform
	to a pair of permerrors; use DECL_SOURCE_LOCATION.

2018-07-18  Richard Biener  <rguenther@suse.de>

	PR debug/8