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/86523
	* decl2.c (c_parse_final_cleanups): Call write_out_vars before
	start_static_storage_duration_function sets current_function_decl.

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.
	* tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
	cp_unevaluated_operand.
	[ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.

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

	* class.c (resolve_address_of_overloaded_function): Don't emit an
	inform if the matching permerror returns false.
	* pt.c (check_specialization_namespace): Likewise.

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.
	* parser.c (cp_parser_template_id): Combine entering_scope decl &
	initializer.

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.

	PR c++/86443
	* semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
	instead of setting *lastp turn orig_declv elt into a TREE_LIST.
	(finish_omp_for): Adjust handle_omp_for_class_iterator caller.
	* pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
	TREE_LIST for both the original class iterator and the "last" helper
	var.

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

	* decl.c (grokdeclarator): Use rich_location::add_range in three
	more places; include gcc-rich-location.h.

2018-07-07  Aldy Hernandez  <aldyh@redhat.com>

	* decl.c (build_enumerator): Change overflow type to overflow_type.
	* init.c (build_new_1): Same.

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

	* cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
	NO_IMPLICIT_EXTERN_C.
	* cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.

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

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

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

	* decl.c (min_location): New.
	(smallest_type_quals_location): Use the latter.
	(check_concept_fn): Use DECL_SOURCE_LOCATION.
	(grokdeclarator): Use accurate locations in a number of error
	messages involving ds_thread, ds_storage_class, ds_virtual,
	ds_constexpr, ds_typedef and ds_friend; exploit min_location.

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

	PR c++/86201
	* typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.

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.

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

	* parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
	in error message about __thread and thread_local at the same time.

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

	PR c++/86184
	* tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.

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

	* parser.c (cp_parser_error_1): After issuing a conflict marker
	error, consume tokens until the end of the source line.

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

	PR c++/86342 - -Wdeprecated-copy and system headers.
	* decl2.c (cp_warn_deprecated_use): Don't warn about declarations
	in system headers.

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.

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

	* name-lookup.c (do_pushtag): If we skip a class level, also skip
	its template level.

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

	PR c++/86320 - memory-hog with std::array of pair
	* typeck2.c (process_init_constructor_array): Only compute a
	constant initializer once.

	PR c++/80290 - memory-hog with std::pair.
	* pt.c (fn_type_unification): Add convs parameter.
	(check_non_deducible_conversion): Remember conversion.
	(check_non_deducible_conversions): New.  Do checks here.
	(type_unification_real): Not here.  Remove flags parm.
	* call.c (add_function_candidate): Make convs a parameter.
	Don't recalculate the conversion if it's already set.
	(add_template_candidate_real): Allocate convs here.
	(good_conversion, conv_flags): 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-23  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (bad_specifiers): Add const location_t* parameter and
	use locations in error messages about 'inline' and 'virtual'.
	(mark_inline_variable): Add location_t parameter and use it in
	error_at and pedwarn messages.
	(grokdeclarator): Use declspecs->locations[ds_constexpr],
	declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
	declspecs->locations[ds_inline] in many error messages; adjust
	bad_specifiers and mark_inline_variable calls.
	(grokvardecl): Use declspecs->locations[ds_concept] in error message.

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.
	* call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
	Pass it.
	* call.c (build_cxx_call): Don't mess with builtins in a template.
	* typeck2.c (store_init_value): If fold_non_dependent_expr didn't
	produce a constant value, go back to the uninstantiated form.

	Avoid taking the address of something just because it's in parens.
	* constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
	(cxx_fold_indirect_ref): Use it.
	(cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
	* cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
	* semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
	static_cast to reference type.
	(maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.

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

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

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

	Let -fmem-report see callers of cxx_make_type.
	* lex.c (cxx_make_type): Add MEM_STAT_DECL.
	(make_class_type): Likewise.
	(cxx_make_type_hook): New.
	* cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.

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

	PR c++/85634
	* friend.c (add_friend): Keep lookup sets of tempate sets.

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

	* decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
	tidy handling of a null location_t argument; use proper location
	information in a few additional error messages.
	(grokdeclarator): Update calls.

2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
	    Thomas Schwinge <thomas@codesourcery.com>
	    Cesar Philippidis  <cesar@codesourcery.com>

	* parser.c (cp_parser_omp_clause_name): Add support for finalize
	and if_present. Make present_or_{copy,copyin,copyout,create} aliases
	to their non-present_or_* counterparts. Make 'self' an alias to
	PRAGMA_OACC_CLAUSE_HOST.
	(cp_parser_oacc_data_clause): Update GOMP mappings for
	PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
	PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
	(cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
	Remove support for present_or_* clauses.
	(OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
	(OACC_PARALLEL_CLAUSE_MASK): Likewise.
	(OACC_DECLARE_CLAUSE_MASK): Likewise.
	(OACC_DATA_CLAUSE_MASK): Likewise.
	(OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
	(OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
	(OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
	(cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
	* pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
	* semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.

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

	PR c++/86240
	* constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
	(fold_simple_1): Likewise.
	* error.c (dump_expr): Likewise.

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

	PR c++/85634
	* cp-tree.h (lookup_keep): Drop KEEP parm.
	(lookup_list_keep): Delete.
	(maybe_get_fns): Declare.
	* parser.c (cp_parser_primary_expression): Call lookup_keep here.
	(cp_parser_template_id): Not here ...
	* decl.c (cp_finish_decl): ... nor here ...
	* init.c (build_raw_new_expr): ... nor here ...
	* pt.c (process_template_parm): ... nor here ...
	* semantics.c (perform_koenig_lookup): Call lookup_keep.
	(finish_call_expr): Not here.
	* tree.c (ovl_cache): Delete.
	(ovl_make, ovl_copy): No cache.
	(lookup_keep): Always keep.
	(lookup_list_keep): Delete.
	(maybe_get_fns): New, broken out of ...
	(get_fns): ... here.  Call it.
	(built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
	(build_min_nt_call_vec): Likewise.

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

	* cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
	* constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.

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

	* tree.c (cp_expr_location): New.
	* cp-tree.h (cp_expr_loc_or_loc): New.
	* call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
	error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
	typeck2.c: Use it instead of EXPR_LOC_OR_LOC.

	* parser.c (cp_parser_lambda_expression): Use a range for
	LAMBDA_EXPR_LOCATION.

	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.

	PR c++/86171 - ICE with recursive alias instantiation.
	* pt.c (tsubst_decl): Handle recursive alias instantiation.

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

	* decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
	in errors about redefined default arguments; tidy.

2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>

	* constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
	* cp-gimplify.c (cp_fold): Likewise.

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

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

	* name-lookup.c (do_pushtag): Don't look through complete types, but
	don't add to them either.  Get context from current_binding_level.
	* pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.

	* decl.c (start_enum): Do compare dependent underlying type.

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

	PR c++/86063
	* decl2.c (cp_check_const_attributes): Skip trees that are not
	TREE_LISTs.

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

	P0624R2 - Default constructible and assignable stateless lambdas
	* method.c (synthesized_method_walk): For C++2a don't mark
	sfk_constructor or sfk_copy_assignment as deleted if lambda has
	no lambda-captures.

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

	* decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
	OPT_Wshadow warning_at.
	(grokfndecl): Consistently use the location_t argument in
	literal operator diagnostic messages.
	(grokdeclarator): Use declspecs->locations[ds_storage_class]
	in error_at call.
	* decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
	in permerror call.

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

	PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
	* constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
	constructors.

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

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

	* decl2.c (coerce_new_type, coerce_delete_type): Add location_t
	parameter and adjust error_at calls.
	* decl.c (grok_op_properties): Adjust calls.
	* cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.

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

	Core issue 1331 - const mismatch with defaulted copy constructor
	* class.c (check_bases_and_members): When checking a defaulted
	function, mark it as deleted rather than giving an error.

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.

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

	* decl.c (grok_op_properties): Consistently use the location
	of the decl; remove special casing of POSTINCREMENT_EXPR and
	POSTDECREMENT_EXPR wrt default arguments.

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

	* constexpr.c (cxx_eval_binary_expression): Special case comparison
	of pointers to members of the same union.

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

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

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

	* decl.c (grokfndecl): Use the location_t argument in two more places.

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

	PR c++/85977
	* pt.c (unify): If ELTTYPE has no deducible template parms, skip
	deduction from the list elements.
	(type_unification_real): Check convertibility of list elements.

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.

	PR c++/85710 - ICE with -Wmemset-elt-size.
	* semantics.c (finish_call_expr): Call warn_for_memset here.
	* parser.c (cp_parser_postfix_expression): Not here.
	(literal_integer_zerop): No longer static.
	* pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.

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

	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.

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.

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

	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++/85764 - bogus 'this' not captured error.
	* lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
	(nonlambda_method_basetype): Handle NSDMI.

	CWG 1581: When are constexpr member functions defined?
	* constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
	(cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.

	PR c++/58281 - explicit instantiation of constexpr
	* pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.

	* pt.c (instantiate_decl): Any defaulted function is defined.

2018-05-30  Jonathan Wakely  <jwakely@redhat.com>

	PR c++/77777
	* call.c (resolve_args): Use location of expression, not current input
	location.

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

	Do not warn about zero-as-null when NULL is used.
	* call.c (conversion_null_warnings): Check for pointer
	types converted from zero constants.
	(convert_like_real): Add a warning sentinel at the end.
	* tree.c (maybe_warn_zero_as_null_pointer_constant): Also
	check null_node_p.

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

	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++/85873 - constant initializer_list array not in .rodata.
	* tree.c (build_target_expr): Set TREE_READONLY.
	* call.c (set_up_extended_ref_temp): Set TREE_READONLY.

	* parser.c (cp_parser_check_condition_declarator): Handle
	cp_error_declarator.

2018-05-30  Jonathan Wakely  <jwakely@redhat.com>

	* typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
	of using it in dead store.

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

	PR c++/67445 - returning temporary initializer_list.
	PR c++/67711 - assigning from temporary initializer_list.
	PR c++/48562 - new initializer_list.
	* typeck.c (maybe_warn_about_returning_address_of_local): Also warn
	about returning local initializer_list.
	* cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
	* call.c (build_over_call): Warn about assignment from temporary
	init_list.
	* init.c (build_new_1): Warn about 'new std::initializer_list'.
	(find_list_begin, maybe_warn_list_ctor): New.
	(perform_member_init): Use maybe_warn_list_ctor.

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

	PR c++/85883
	* init.c (build_new): Handle deducing a class with new
	with more than one argument.

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-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* decl2.c (start_static_storage_duration_function): Use
	splay_tree_delete_pointers.

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

	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.

	CWG 616, 1213 - value category of subobject references.
	* tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.

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.

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

	Pedwarn on a non-standard position of a C++ attribute.
	* parser.c (cp_parser_namespace_definition): Pedwarn about attributes
	after the namespace name.

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

	* cp-tree.h (INDIRECT_TYPE_P): New.
	* call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
	joust): Use it instead of POINTER_TYPE_P.
	* class.c (update_vtable_entry_for_fn, find_flexarrays,
	* fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
	* constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
	* cxx_eval_increment_expression, potential_constant_expression_1):
	Likewise.
	* cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
	* cp-objcp-common.c (cxx_get_alias_set): Likewise.
	* cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
	cp_ubsan_maybe_instrument_downcast): Likewise.
	* cvt.c (cp_convert_to_pointer, ocp_convert,
	cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
	* cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
	pp_cxx_offsetof_expression_1): Likewise.
	* decl.c (grokparms, static_fn_type): Likewise.
	* decl2.c (grokbitfield): Likewise.
	* error.c (dump_expr): Likewise.
	* except.c (initialize_handler_parm, check_noexcept_r): Likewise.
	* init.c (warn_placement_new_too_small): Likewise.
	* lambda.c (build_capture_proxy, add_capture): Likewise.
	* parser.c (cp_parser_omp_for_loop): Likewise.
	* pt.c (convert_nontype_argument, fn_type_unification,
	uses_deducible_template_parms, check_cv_quals_for_unify,
	dependent_type_p_r): Likewise.
	* search.c (check_final_overrider): Likewise.
	* semantics.c (handle_omp_array_sections, finish_omp_clauses,
	finish_omp_for): Likewise.
	* tree.c (cp_build_qualified_type_real): Likewise.
	* typeck.c (build_class_member_access_expr,
	finish_class_member_access_expr, build_x_indirect_ref,
	cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
	Likewise.

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

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

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

	Fix cast to rvalue reference from prvalue.
	* cvt.c (diagnose_ref_binding): Handle rvalue reference.
	* rtti.c (build_dynamic_cast_1): Don't try to build a reference to
	non-class type.  Handle xvalue argument.
	* typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
	rvalue reference.
	* semantics.c (finish_compound_literal): Do direct-initialization,
	not cast, to initialize a reference.

	CWG 616, 1213 - value category of subobject references.
	* tree.c (lvalue_kind): A reference to a subobject of a prvalue is
	an xvalue.
	* typeck2.c (build_m_component_ref): Likewise.
	* typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
	distinction between temporary and xvalue.

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

	Implement P0614R1, Range-based for statements with initializer.
	* parser.c (cp_parser_range_based_for_with_init_p): New.
	(cp_parser_init_statement): Use it.  Parse the optional init-statement
	for a range-based for loop.
	(cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.

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

	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.

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

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

	* parser.c (cp_parser_parameter_declaration_list): Remove
	bool* parameter.
	(cp_parser_parameter_declaration_clause): Adjust.
	(cp_parser_cache_defarg): Likewise.

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

	PR c++/84588
	* parser.c (cp_parser_maybe_commit_to_declaration,
	cp_parser_check_condition_declarator): New.
	(cp_parser_simple_declaration): Use the first above.
	(cp_parser_condition): Use both the above; enforce
	[stmt.stmt]/2 about the declarator not specifying
	a function or an array; improve error-recovery.

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

	PR libstdc++/85843 - warning in logic_error copy constructor.
	* class.c (type_has_user_nondefault_constructor): Check for a
	user-provided ctor, not user-declared.

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

	* pt.c (tsubst_pack_expansion): Sorry rather than abort
	on __integer_pack as subexpression of pattern.

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

	PR c++/58407 - deprecated implicit copy ops.
	* call.c (build_over_call): Warn about deprecated trivial fns.
	* class.c (classtype_has_user_copy_or_dtor): New.
	(type_build_ctor_call): Check TREE_DEPRECATED.
	(type_build_dtor_call): Likewise.
	* decl2.c (cp_warn_deprecated_use): Move from tree.c.
	Add checks.  Return bool.  Handle -Wdeprecated-copy.
	(mark_used): Use it.
	* decl.c (grokdeclarator): Remove redundant checks.
	* typeck2.c (build_functional_cast): Likewise.
	* method.c (lazily_declare_fn): Mark deprecated copy ops.
	* init.c (build_aggr_init): Only set TREE_USED if there are
	side-effects.

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-18  Richard Sandiford  <richard.sandiford@linaro.org>

	* constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
	(potential_constant_expression_1): Likewise.

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

	PR c++/85363
	* call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
	* tree.c (bot_manip): Call set_flags_from_callee for
	AGGR_INIT_EXPRs too.

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

	* cp-tree.h (cp_expr): Remove copy constructor.
	* mangle.c (struct releasing_vec): Declare copy constructor.

	* constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.

	PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
	* call.c (build_conditional_expr_1): Don't force_rvalue when one arm
	is a throw-expression.

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

	* cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
	(FOR_EACH_CLONE): Update.
	* decl.c (grokdeclarator): Use it.
	* decl2.c (vague_linkage_p): Likewise.
	* mangle.c (mangle_decl): Likewise.
	* method.c (lazily_declare_fn): Likewise.
	* optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
	* repo.c (repo_emit_p): Likewise.
	* tree.c (decl_linkage): Likewise.

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

	Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
	* tree.c (build_cp_fntype_variant): New.
	(build_ref_qualified_type, build_exception_variant)
	(strip_typedefs, cxx_copy_lang_qualifiers): Use it.
	(cxx_type_hash_eq, cp_check_qualified_type): Check
	TYPE_HAS_LATE_RETURN_TYPE.
	(cp_build_type_attribute_variant): Check cxx_type_hash_eq.
	(cp_build_qualified_type_real): No need to preserve C++ qualifiers.
	* class.c (build_clone): Use cxx_copy_lang_qualifiers.
	(adjust_clone_args): Likewise.
	* decl.c (grokfndecl): Add late_return_type_p parameter.  Use
	build_cp_fntype_variant.
	(grokdeclarator): Pass late_return_type_p to grokfndecl.
	(check_function_type): Use cxx_copy_lang_qualifiers.
	(static_fn_type): Use cxx_copy_lang_qualifiers.
	* decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
	(cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
	(change_return_type): Use cxx_copy_lang_qualifiers.
	* mangle.c (write_type): Use cxx_copy_lang_qualifiers.
	* parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
	return type on the declarator like a normal trailing return type.
	* pt.c (tsubst_function_type): Use build_cp_fntype_variant.
	(copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
	* typeck.c (merge_types): Use build_cp_fntype_variant.

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

	* cp-tree.h (TYPE_REF_P): New.
	(TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
	* call.c (build_list_conv, build_aggr_conv, standard_conversion,
	direct_reference_binding, reference_binding, implicit_conversion,
	add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
	build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
	build_over_call, perform_implicit_conversion_flags,
	extend_ref_init_temps, type_has_extended_temps): Use it.
	* class.c (one_inheriting_sig, check_field_decls,
	check_bases_and_members, find_flexarrays, finish_struct,
	fixed_type_or_null): Likewise.
	* constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
	non_const_var_error, cxx_eval_constant_expression,
	potential_constant_expression_1): Likewise.
	* cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
	cp_genericize_r, cxx_omp_privatize_by_reference,
	cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
	cp_fold_maybe_rvalue): Likewise.
	* cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
	* cvt.c (build_up_reference, convert_to_reference,
	convert_from_reference, convert_to_void, noexcept_conv_p,
	fnptr_conv_p): Likewise.
	* decl.c (poplevel, check_for_uninitialized_const_var,
	check_initializer, initialize_local_var, cp_finish_decl,
	get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
	move_signature_fn_p, grok_op_properties, finish_function): Likewise.
	* decl2.c (grok_array_decl, cp_reconstruct_complex_type,
	decl_maybe_constant_var_p): Likewise.
	* error.c (dump_type_prefix, dump_expr): Likewise.
	* except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
	is_admissible_throw_operand_or_catch_parameter): Likewise.
	* expr.c (mark_use): Likewise.
	* init.c (build_zero_init_1, build_value_init_noctor,
	perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
	build_new, build_delete): Likewise.
	* lambda.c (build_lambda_object): Likewise.
	* mangle.c (write_expression, write_template_arg): Likewise.
	* method.c (forward_parm, do_build_copy_constructor,
	do_build_copy_assign, build_stub_object, constructible_expr,
	walk_field_subobs): Likewise.
	* parser.c (cp_parser_omp_for_loop_init,
	cp_parser_omp_declare_reduction_exprs,
	cp_parser_omp_declare_reduction): Likewise.
	* pt.c (convert_nontype_argument_function, convert_nontype_argument,
	convert_template_argument, tsubst_pack_expansion,
	tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
	maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
	more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
	value_dependent_expression_p, build_deduction_guide): Likewise.
	* semantics.c (finish_handler_parms, finish_non_static_data_member,
	finish_compound_literal, omp_privatize_field,
	handle_omp_array_sections_1, handle_omp_array_sections,
	cp_check_omp_declare_reduction, finish_omp_reduction_clause,
	finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
	finish_omp_clauses, finish_decltype_type, capture_decltype,
	finish_builtin_launder): Likewise.
	* tree.c (lvalue_kind, cp_build_reference_type, move,
	cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
	* typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
	cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
	cp_build_addr_expr_1, maybe_warn_about_useless_cast,
	build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
	build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
	convert_for_initialization,
	maybe_warn_about_returning_address_of_local, check_return_expr,
	cp_type_quals, casts_away_constness, non_reference): Likewise.
	* typeck2.c (cxx_readonly_error, store_init_value,
	process_init_constructor_record, build_x_arrow, build_functional_cast,
	add_exception_specifier): Likewise.

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

	* pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
	(tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.

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

	* decl.c (cp_finish_decl): Don't instantiate auto variable.
	(check_static_variable_definition): Allow auto.
	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.

	* cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
	(DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.

	Core issue 2310 - conversion to base of incomplete type.
	* class.c (build_base_path): Check COMPLETE_TYPE_P for source type.

	CWG 2267 - list-initialization of reference temporary
	* call.c (reference_binding): List-initializing a reference
	temporary is copy-list-initialization.

	* parser.c (cp_parser_class_head): Use num_template_headers_for_class.

	* pt.c (instantiate_decl): Make sure we aren't trying to do a nested
	instantiation in template context.

	* class.c (vbase_has_user_provided_move_assign): Use
	user_provided_p.

	* lambda.c (lambda_expr_this_capture): Improve logic.

	* decl.c (make_typename_type): s/parameters/arguments/.
	* parser.c (cp_parser_nested_name_specifier_opt): Likewise.
	* pt.c (make_pack_expansion): Correct error message.

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

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

	PR c++/85713
	Revert:
	2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84588
	* parser.c (cp_parser_parameter_declaration_list): When the
	entire parameter-declaration-list is erroneous maybe call
	abort_fully_implicit_template.

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

	PR c++/84588
	* parser.c (cp_parser_parameter_declaration_list): When the
	entire parameter-declaration-list is erroneous maybe call
	abort_fully_implicit_template.

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.

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

	Remove fno-for-scope
	* cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
	(DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
	(SET_DECL_SHADOWED_FOR_VAR): Delete.
	(decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
	(check_for_out_of_scope_variable, init_shadowed_var_for_decl):
	Don't declare.
	* name-lookup.h (struct cp_binding_level): Remove
	dead_vars_from_for field.
	* cp-lang.c (cp_init_ts): Delete.
	(LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
	* cp-objcp-common.c (shadowed_var_for_decl): Delete.
	(decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
	(init_shadowed_var_for_decl): Delete.
	* decl.c (poplevel): Remove shadowed for var handling.
	(cxx_init_decl_processing): Remove -ffor-scope deprecation.
	* name-lookup.c (find_local_binding): Remove shadowed for var
	handling.
	(check_local_shadow): Likewise.
	(check_for_out_of_scope_variable): Delete.
	* parser.c (cp_parser_primary_expression): Remove shadowed for var
	handling.
	* pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
	* semantics.c (begin_for_scope): Always have a scope.
	(begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
	(begin_range_for_stmt, finish_id_expression): Likewise.

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

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

	* cvt.c (ocp_convert): Early handle the special case of a
	null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.

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

	PR c++/85600 - virtual delete failure.
	* init.c (build_delete): Always save_expr when deleting.

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

	* decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
	* name-lookup.c (do_pushdecl): Likewise.

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

	PR c++/68374
	* name-lookup.c (check_local_shadow): Don't handle static old
	declarations in the block handling locals shadowing locals.

2018-05-01  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.

	PR c++/84701 - unsigned typeof.
	* decl.c (grokdeclarator): Overhaul diagnostics for invalid use
	of long/short/signed/unsigned.

	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.

	PR c++/61982 - dead stores to destroyed objects.
	* call.c (build_trivial_dtor_call): New, assigns a clobber.
	(build_over_call, build_special_member_call): Use it.
	* cp-tree.h: Declare it.
	* init.c (build_delete): Remove trivial path.

	* init.c (build_dtor_call): Use build_special_member_call.
	(build_delete): Remove redundant uses of save_addr.

	* decl.c (build_clobber_this): Use build_clobber.

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

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

	* cvt.c (cp_fold_convert): Use convert_ptrmem.
	* typeck.c (convert_ptrmem): Add a NOP even if no adjustment.

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

	PR c++/84691
	* decl.c (grokdeclarator): Clear friendp upon definition in local
	class definition error.

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

	* typeck.c (convert_ptrmem): Move local var decls to initialization.

	* cp-tree.h (TEMPLATE_INFO): Fix comments.
	(TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
	(NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
	(dump, print_other_binding_stacks): Remove declarations.
	* name-lookup.c (print_other_binding_stack): Make static.
	* pt.c (build_template_decl): Make static.

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

	PR c++/85545 - ICE with noexcept PMF conversion.
	* cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.

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.
