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

	* g++spec.c (LIBCXX, LIBCXX_PROFILE, LIBCXX_STATIC): New.
	(LIBCXXABI, LIBCXXABI_PROFILE, LIBCXXABI_STATIC): New.
	(enum stdcxxlib_kind): New.
	(lang_specific_driver): Allow selection amongst multiple
	c++ runtime libraries.

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

	PR c++/96045
	* parser.c (cp_lexer_new_main): Adjust EOF token location.

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

	PR c++/97597
	* class.c (is_empty_base_ref): New.
	(build_base_path): Add NOP_EXPR after offset.
	* cp-tree.h (is_empty_base_ref): Declare it.
	* call.c (unsafe_return_slot_p): Call it.

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

	PR c++/98353
	* init.c (build_zero_init_1): Use build_zero_cst for SCALAR_TYPE_P
	zero initializers.

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

	PR c++/98332
	* constexpr.c (unshare_constructor): Check for NULL.
	(cxx_eval_vec_init_1): Always exit early if non-constant.

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

	* module.cc (has_definition): Check DECL_LANG_SPECIFIC.

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

	PR c++/93480
	* method.c (common_comparison_type): If comps[i] is a TREE_LIST,
	use its TREE_VALUE instead.
	(build_comparison_op): Handle array members.

2020-12-22  Gerald Pfeifer  <gerald@pfeifer.com>

	* module.cc (INCLUDE_STRING): Define.
	(INCLUDE_VECTOR): Ditto.

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

	* mangle.c (write_member_name): Add assert.
	(write_expression): Add asserts.

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

	* module.cc (create_dirs): Add logging.
	(finish_module_processing): Unlink before rename.

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

	PR bootstrap/98412
	* mapper-client.cc: INCLUDE_STRING, INCLUDE_VECTOR.
	(module_client::open_module_client): Avoid std::stoul.
	* mapper-resolver.cc: INCLUDE_STRING, INCLUDE_VECTOR.

2020-12-18  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* cp-lang.c (cxx_get_decl_init): New.
	(cxx_omp_finish_decl_inits): New.
	(LANG_HOOKS_GET_DECL_INIT): New.
	(LANG_HOOKS_OMP_FINISH_DECL_INITS): New.
	* cp-tree.h (dynamic_initializers): New.
	* decl.c (dynamic_initializers): New.
	* decl2.c (c_parse_final_cleanups): Add initializer entries
	from vars to dynamic_initializers.

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

	* module.cc (O_CLOEXEC, O_BINARY): Add window's support.
	(elf_in::defrost, module_state::do_import)
	(finish_module_processing): Use O_BINARY.

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

	PR c++/98343
	* cp-gimplify.c (source_location_table_entry_hash::pch_nx): Override
	static member functions from ggc_remove.

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

	* constraint.cc (satisfying_constraint): Move up definition
	and give it bool type.
	(failed_type_completion_count): Replace with ...
	(failed_type_completions): ... this.
	(note_failed_type_completion_for_satisfaction): Append the
	supplied argument to failed_type_completions.
	(some_type_complete_p): Define.
	(sat_entry::maybe_unstable): Replace with ...
	(sat_entry::ftc_begin, sat_entry::ftc_end): ... these.
	(satisfaction_cache::ftc_count): Replace with ...
	(satisfaction_cache::ftc_begin): ... this.
	(satisfaction_cache::satisfaction_cache): Adjust accordingly.
	(satisfaction_cache::get): Adjust accordingly, using
	some_type_complete_p.
	(satisfaction_cache::save): Adjust accordingly.
	(satisfying_constraint_p): Remove unused function.
	(satisfy_constraint): Set satisfying_constraint.
	(satisfy_declaration_constraints): Likewise.
	* decl.c (require_deduced_type): Call
	note_failed_type_completion_for_satisfaction.

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

	* constraint.cc (sat_entry::evaluating): New member.
	(satisfaction_cache::get): If entry->evaluating, diagnose
	self-recursive satisfaction.  Otherwise, set entry->evaluating
	if we're not reusing a cached satisfaction result.
	(satisfaction_cache::save): Clear entry->evaluating.
	(satisfy_atom): Set up diagnosing_failed_constraint before the
	first call to get().

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

	* constraint.cc (failed_type_completion_count): New.
	(note_failed_type_completion_for_satisfaction): New.
	(sat_entry::constr): Rename to ...
	(sat_entry::atom): ... this.
	(sat_entry::location): New member.
	(sat_entry::maybe_unstable): New member.
	(sat_entry::diagnose_instability): New member.
	(struct sat_hasher): Adjust after the above renaming.
	(get_satisfaction, save_satisfaction): Remove.
	(satisfaction_cache): Rewrite completely.
	(satisfy_atom): When instantiation of the parameter mapping
	fails, set diagnose_instability.  Propagate location from
	inst_cache.entry to cache.entry if the secondary lookup
	succeeded.
	(satisfy_declaration_constraints): When
	failed_type_completion_count differs before and after
	satisfaction, then don't cache the satisfaction result.
	* cp-tree.h (note_failed_type_completion_for_satisfaction):
	Declare.
	* pt.c (tsubst) <case TYPENAME_TYPE>: Use
	complete_type_or_maybe_complain instead of open-coding it.
	* typeck.c (complete_type_or_maybe_complain): Call
	note_failed_type_completion_for_satisfaction when type
	completion fails.

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

	PR c++/98340
	* module.cc (uintset<T>::hash::add): Use uintset (0u).MEMBER,
	rather than uintset::MEMBER.

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

	PR bootstrap/98300
	* module.cc: Fix ::read, ::write result signedness comparisons.

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

	* mapper-resolver.cc: Remove early include of
	sys/socket.h.  Specify no CODY_NETWORKING instead.
	* module.cc: Specify no CODY_NETWORKING.

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

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

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

	* module.cc (dumper::push): Clangify offsetof use.

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

	* mapper-resolver.cc: #include sys/socket before system.h
	due to poisoned bcopy use.

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

	* module.cc (loc_spans): Make spans a pointer, not inline.
	Adjust all accesses.

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

	* mapper-client.cc: Include sys/socket.h before system.h.

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

	* pt.c (in_template_function): Inspect cfun->decl instead of
	current_function_decl.

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

	* module.cc: Replace stubs with implementation.

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

	* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add mapper-client &
	mapper-resolver.
	* mapper-client.h: New.
	* mapper-client.cc: New.
	* mapper-resolver.cc: New.

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

	* name-lookup.c (do_namespace_alias): Set originating module
	before pushing.

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

	PR libstdc++/97600
	* call.c (build_user_type_conversion_1): Avoid considering
	conversion functions that return a clearly unsuitable type.

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

	* cp-tree.h (make_binding_vec): Add CXX_MEM_STAT_INFO.

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

	* config-lang.in (gtfiles): Add cp/module.cc.
	* decl2.c (c_parse_final_cleanups): Add module support.
	* lambda.c (record_lambda_scope): Call maybe_attach_decl.
	* module.cc (maybe_attach_decl, lazy_load_specializations): Stubs.
	(finish_module_procesing): Stub.
	* pt.c (lookup_template_class_1): Lazy load specializations.
	(instantiate_template_1): Likewise.

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

	* decl2.c (c_parse_final_cleanups): Refactor loop.

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

	* cp-tree.h (map_context_from, map_context_to): Declare.
	* module.cc (map_context_from, map_context_to): Define.
	* tree.c (cp_tree_equal): Check map_context_{from,to} for parm
	context difference.  Allow NON_LVALUE_EXPR and VIEW_CONVERT_EXPR
	with null types.

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

	* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE): Override.
	(LANG_HOOKS_PREPROCESS_OPTIONS): Override.
	(LANG_HOOKS_PREPROCESS_TOKEN): Override.
	* cp-objcp-common.c (cp_register_dumps): Add module dump.
	(cp_handle_option): New.
	* cp-objcp-common.h (cp_handle_option): Declare.
	(LANG_HOOKS_HANDLE_OPTION): Override.
	* cp-tree.h (module_dump_id): Declare.
	* module.cc (module_dump_id): Define.
	(module_begin_main_file, handle_module_option)
	(module_preproces_options): Stubs.

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

	* module.cc (lazy_specializations_p): Stub.
	* name-lookup.h (append_imported_binding_slot)
	(mergeable_namespacE_slots, lookup_class_binding)
	(walk_module_binding, import_module_binding, set_module_binding)
	(note_pending_specializations, load_pending_specializations)
	(add_module_decl, add_imported_namespace): Declare.
	(get_cxx_dialect_name): Declare.
	(enum WMB_flags): New.
	* name-lookup.c (append_imported_binding_slot)
	(mergeable_namespacE_slots, lookup_class_binding)
	(walk_module_binding, import_module_binding, set_module_binding)
	(note_pending_specializations, load_pending_specializations)
	(add_module_decl, add_imported_namespace): New.
	(get_cxx_dialect_name): Make extern.

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

	PR c++/78173
	* typeck.c (pointer_diff): Use complete_type_or_maybe_complain
	instead of complete_type_or_else.

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

	* cp-tree.h (struct type_identity): New.
	(make_temp_override): New.
	* decl.c (grokdeclarator): Use it.
	* except.c (maybe_noexcept_warning): Use it.
	* parser.c (cp_parser_enum_specifier): Use it.
	(cp_parser_parameter_declaration_clause): Use it.
	(cp_parser_gnu_attributes_opt): Use it.
	(cp_parser_std_attribute): Use it.

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

	* name-lookup.c (do_nonmember_using_decl): Add INSERT_P parm.
	Deal with exporting using decls.
	(finish_nonmember_using_decl): Examine BINDING_VECTOR.

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

	* cp-tree.h (visible_instantiation_path): Renamed.
	* module.cc (get_originating_module_decl, lazy_load_binding)
	(lazy_load_members, visible_instantiation_path): Stubs.
	* name-lookup.c (STAT_TYPE_VISIBLE_P, STAT_VISIBLE): New.
	(search_imported_binding_slot, init_global_partition)
	(get_fixed_binding_slot): New.
	(name_lookup::process_module_binding): New.
	(name_lookup::search_namespace_only): Search BINDING_VECTOR.
	(name_lookup::adl_namespace_fns): Likewise.
	(name_lookip::search_adl): Search visible instantiation path.
	(maybe_lazily_declare): Maybe lazy load members.
	(implicitly_exporT_namespace): New.
	(maybe_record_mergeable_decl): New.
	(check_module_override): New.
	(do_pushdecl): Deal with BINDING_VECTOR, check override.
	(add_mergeable_namespace_entity): New.
	(get_namespace_binding): Deal with BINDING_VECTOR.
	(do_namespace_alias): Call set_originating_module.
	(lookup_elaborated_type_1): Deal with BINDING_VECTOR.
	(do_pushtag): Call set_originating_module.
	(reuse_namespace): New.
	(make_namespace_finish): Add FROM_IMPORT parm.
	(push_namespace): Deal with BINDING_VECTOR & namespace reuse.
	(maybe_save_operator_binding): Save when module CMI in play.
	* name-lookup.h (add_mergeable_namespace_entity): Declare.

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

	* name-lookup.c: Include bitmap.h.
	(enum binding_slots): New.
	(maybe_add_fuzzy_binding): Return bool true if found.
	(consider_binding_level): Add module support.
	* module.cc (get_import_bitmap): Stub.

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

	* name-lookup.c (pop_local_binding): Check for IDENTIFIER_ANON_P.
	(update_binding): Level may be null, don't add namespaces to
	level.
	(newbinding_bookkeeping): New, broken out of ...
	(do_pushdecl): ... here, call it.  Don't push anonymous decls.
	(pushdecl, add_using_namespace): Correct comments.
	(do_push_nested_namespace): Remove assert.
	(make_namespace, make_namespace_finish): New, broken out of ...
	(push_namespace): ... here.  Call them.  Add namespace to level
	here.

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

	* error.c (dump_module_suffix): New.
	(dump_aggr_type, dump_simple_decl, dump_function_name): Call it.
	* ptree.c (cxx_print_decl): Print module information.
	* module.cc (module_name, get_importing_module): Stubs.

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

	* name-lookup.h (set_class_bindings): Return vector, take signed
	'extra' parm.
	* name-lookup.c (maybe_lazily_declare): Break out ...
	(get_class_binding): .. of here, call it.
	(find_member_slot): Adjust get_class_bindings call.
	(set_class_bindings): Allow -ve extra.  Return the vector.
	(set_identifier_type_value_with_scope): Remove checking assert.
	(lookup_using_decl): Set decl's context.
	(do_pushtag): Adjust set_identifier_type_value_with_scope handling.

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

	* parser.h (struct cp_token): Add main_source_p field.
	* parser.c (cp_lexer_new_main): Pass thought module token filter.
	Check macros.
	(cp_lexer_get_preprocessor_token): Set main_source_p.
	(enum module_parse): New.
	(cp_parser_diagnose_invalid_type_name): Deal with unrecognized
	module-directives.
	(cp_parser_skip_to_closing_parenthesize_1): Skip module-directivres.
	(cp_parser_skip_to_end_of_statement): Likewise.
	(cp_parser_skiup_to_end_of_block_or_statement): Likewise.
	(cp_parser_translation_unit): Add module parsing calls.
	(cp_parser_module_name, cp_parser_module_declaration): New.
	(cp_parser_import_declaration, cp_parser_module_export): New.
	(cp_parser_declaration): Add module export detection.
	(cp_parser_template_declaration): Adjust 'export' error message.
	(cp_parser_function_definition_after_declarator): Add
	module-specific logic.
	* module.cc (import_module, declare_module)
	(maybe_check_all_macros): Stubs.

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

	PR c++/97517
	* cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier): Handle
	NULLPTR_TYPE.
	(pp_cxx_type_specifier_seq): Likewise.
	(cxx_pretty_printer::type_id): Likewise.

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

	* decl.c (duplicate_decls): Add module-specific redeclaration
	logic.
	(cxx_init_decl_processing): Export the global namespace, maybe
	initialize modules.
	(start_decl): Reject local-extern in a module, adjust linkage of
	template var.
	(xref_tag_1): Add module-specific redeclaration logic.
	(start_enum): Likewise.
	(finish_enum_value_list): Export unscoped members of an exported
	enum.
	(grokmethod): Implement p1779 linkage of in-class defined
	functions.
	* decl2.c (no_linkage_error): Imports are ok.
	(c_parse_final_cleanups): Call fini_modules.
	* lex.c (cxx_dup_lang_specific): Clear some module flags in the
	copy.
	* module.cc (module_kind): Define.
	(module_may_redeclare, set_defining_module): Stubs.
	(init_modules): Error on modules.
	(fini_modules): Stub.
	* rtti.c (push_abi_namespace): Save and reset module_kind.
	(pop_abi_namespace): Restore module kind.
	(build_dynamic_cast_1, tinfo_base_init): Adjust.
	* semantics.c (begin_class_definition): Add module-specific logic.
	(expand_or_defer_fn_1): Keep bodies of more fns when modules_p.

2020-12-09  Tobias Burnus  <tobias@codesourcery.com>

	* parser.c (cp_parser_omp_allocate): New.
	(cp_parser_omp_construct, cp_parser_pragma): Call it.

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

	PR c++/98019
	* cvt.c (maybe_warn_nodiscard): Check c_inhibit_evaluation_warnings.

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

	PR c++/59238
	* init.c (expand_default_init): Pass tf_no_cleanup when building
	a TARGET_EXPR to go on the RHS of an INIT_EXPR.
	* typeck.c (cp_build_modify_expr): Likewise.

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

	PR c++/98103
	* constexpr.c (cxx_eval_dynamic_cast_fn): If the evaluating of vtable
	yields a null pointer, give an error and return.  Use objtype.

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

	* class.c (layout_class_type): Call set_instantiating_module.
	(build_self_reference): Likewise.
	* decl.c (grokfndecl): Call set_originating_module.
	(grokvardecl): Likewise.
	(grokdeclarator): Likewise.
	* pt.c (maybe_new_partial_specialization): Call
	set_instantiating_module, propagate DECL_MODULE_EXPORT_P.
	(lookup_template_class_1): Likewise.
	(tsubst_function_decl): Likewise.
	(tsubst_decl, instantiate_template_1): Likewise.
	(build_template_decl): Propagate module flags.
	(tsubst_template_dcl): Likewise.
	(finish_concept_definition): Call set_originating_module.
	* module.cc (set_instantiating_module, set_originating_module): Stubs.

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

	PR c++/96299
	* cp-tree.h (build_new_op): Add overload that omits some parms.
	(genericize_spaceship): Add location_t parm.
	* constexpr.c (cxx_eval_binary_expression): Pass it.
	* cp-gimplify.c (genericize_spaceship): Pass it.
	* method.c (genericize_spaceship): Handle class-type arguments.
	(build_comparison_op): Fall back to op</== when appropriate.

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

	* call.c (build_new_op_1): Set *overload for ambiguity.
	(build_new_method_call_1): Likewise.

2020-12-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* decl2.c: (is_atomic_expensive_p): New helper function.
	(build_atomic_load_byte): Rename to...
	(build_atomic_load_type): ... and add new parameter type.
	(get_guard_cond): Skip the atomic here if that is expensive.
	Use the correct type for the atomic load on certain targets.

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

	* cp-tree.h (struct tinst_level): Add path & visible fields.
	(build_cdtor_clones): Declare.
	(match_mergeable_specialization): Use a spec_entry, add insert parm.
	* class.c (build_cdtor_clones): Externalize.
	* pt.c (push_tinst_level_loc): Clear new fields.
	(match_mergeable_specialization): Adjust API.

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

	* decl2.c (start_objects): Refactor and adjust for named module
	initializers.
	(finish_objects): Likewise.
	(generate_ctor_or_dtor_function): Likewise.
	* module.cc (module_initializer_kind)
	(module_add_import_initializers): Stubs.

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

	* Make-lang.in (MODULE_VERSION): Override when DEVPHASE not empty.
	* module.cc: Comment.

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

	* cp-tree.h (mangle_module_substitution, mangle_identifier)
	(mangle_module_global_init): Declare.
	* mangle.c (struct globals): Add mod field.
	 (mangle_module_substitution, mangle_identifier)
	(mangle_module_global_init): Define.
	(write_module, maybe_write_module): New.
	(write_name): Call it.
	(start_mangling): Clear mod field.
	(finish_mangling_internal): Adjust.
	* module.cc (mangle_module, mangle_module_fini)
	(get_originating_module): Stubs.

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

	* cp-tree.h (module_token_pre, module_token_cdtor)
	(module_token_lang): Declare.
	* lex.c: Include langhooks.
	(struct module_token_filter): New.
	* cp-tree.h (module_token_pre, module_token_cdtor)
	(module_token_lang): Define.
	* module.cc (get_module, preprocess_module, preprocessed_module):
	Nop stubs.

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

	* Make-lang.in (MODULE_VERSION): Define.
	* module.cc: Add includes.

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

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

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

	PR c++/98043
	* decl.c (pop_switch): If SWITCH_STMT_TYPE is a scoped enum type,
	set it to the type of SWITCH_STMT_COND.

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

	* cp-tree.h (build_cplus_array_type): Add defaulted DEP parm.
	* tree.c (set_array_type_common): Add DEP parm.
	(build_cplus_array_type): Add DEP parm, determine dependency if
	needed.  Mark dependency of new types.
	(cp_build_qualified_type_real): Adjust array-building call, assert
	no surprising dependency.
	(strip_typedefs): Likewise.

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

	PR c++/98116
	* typeck.c (structural_comptypes): Move early outs to comptype.
	Always check template-alias match when comparing_specializations.
	(comptypes): Do early out checking here.

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

	PR c++/97093
	* constraint.cc (parameter_mapping_equivalent_p): Add some
	sanity checks.  Clarify comment.
	(tsubst_nested_requirement): Always perform satisfaction
	quietly first.  If that yields an erroneous result, emit a
	context message and replay satisfaction noisily with the
	diagnostic normal form.
	(finish_nested_requirement): Normalize the constraint-expression
	twice, once with diagnostic information and once without.  Store
	them in a TREE_LIST within the TREE_TYPE.
	(diagnose_nested_requirement): When replaying satisfaction, use
	the diagnostic normal form instead of renormalizing on the spot.

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

	PR c++/97093
	* constraint.cc (struct sat_info): Define.
	(tsubst_nested_requirement): Pass a sat_info object to
	satisfy_constraint.
	(satisfy_constraint_r): Take a sat_info argument instead of
	subst_info.
	(satisfy_conjunction): Likewise.
	(satisfy_disjunction): Likewise.  Instead of first evaluating
	each branch quietly, evaluate each branch only with
	unsatisfaction diagnostics disabled.  Exit early if evaluation
	of a branch returns error_mark_node.
	(satisfy_atom): Take a sat_info argument instead of subst_info.
	Fix a comment.  Check diagnose_unsatisfaction_p() instead of
	noisy() before replaying a substitution failure.
	(satisfy_constraint): Take a sat_info argument instead of
	subst_info.
	(satisfy_associated_constraints): Likewise.
	(satisfy_constraint_expression): Likewise.
	(satisfy_declaration_constraints): Likewise.
	(constraint_satisfaction_value): Likewise and adjust
	accordingly.  Fix formatting.
	(constraints_satisfied_p): Pass a sat_info object to
	constraint_satisfaction_value.
	(evaluate_concept_check): Pass a sat_info object to
	satisfy_constraint_expression.
	(diagnose_nested_requirement): Likewise.
	(diagnose_constraints): Pass an appropriate sat_info object to
	constraint_satisfaction_value.

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

	PR c++/98122
	* constexpr.c (cxx_union_active_member): New function.
	(cxx_fold_indirect_ref_1): Add ctx argument, pass it through to
	recursive call.  Handle UNION_TYPE.
	(cxx_fold_indirect_ref): Add ctx argument, pass it to recursive calls
	and cxx_fold_indirect_ref_1.
	(cxx_eval_indirect_ref): Adjust cxx_fold_indirect_ref calls.

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

	PR c++/93083
	* pt.c (convert_template_argument): Handle equivalent placeholders.
	(do_class_deduction): Look through EXPR_PACK_EXPANSION, too.

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

	* decl2.c (clear_consteval_vfns): Remove *.
	* pt.c (do_auto_deduction): Remove *.
	* parser.c (cp_parser_late_parsing_default_args): Change loop
	to use range 'for'.

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

	PR c++/98116
	* cp-tree.h (comparing_typenames): Delete.
	(cplus_build_array_type): Remove default parm.
	* pt.c (comparing_typenames): Delete.
	(spec_hasher::equal): Don't increment it.
	* tree.c (set_array_type_canon): Remove dep parm.
	(build_cplus_array_type): Remove dep parm changes.
	(cp_build_qualified_type_real): Remove dependent array type
	changes.
	(strip_typedefs): Likewise.
	* typeck.c (structural_comptypes): Revert comparing_typename
	changes.

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

	* cp-tree.h: Add various inline module state predicates, and
	declare the API that will be provided by modules.cc

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

	PR c++/80780
	* cp-gimplify.c (fold_builtin_source_location): Use 2 instead of 0
	as last argument to cxx_printable_name.

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

	* cp-tree.h (releasing_vec::operator[]): Change parameter type to
	ptrdiff_t.

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

	* cp-tree.h (OVL_EXPORT): New.
	(class ovl_iterator): Add get_using, exporting_p.
	* tree.c (ovl_insert): Extend using_or_hidden meaning to include
	an exported using.

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

	* cp-tree.h (DECL_UNINSTANTIATED_TEMPLATE_FRIEND): New.
	* pt.c (push_template_decl): Set it.
	(tsubst_friend_function): Clear it.

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

	* cp-tree.h (make_unbound_class_template_raw): Declare.
	(canonical_type_parameter): Declare.
	* decl.c (make_unbound_class_template_raw): Break out of ...
	(make_unboud_class_template): ... here.  Call it.
	* pt.c (canonical_type_parameter): Externalize.  Refactor & set
	structural_equality for type parms.

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

	PR c++/98107
	* tree.c (build_cplus_array_type): Mark dependency of new variant.
	(cp_build_qualified_type_real, strip_typedefs): Assert
	TYPE_DEPENDENT_P_VALID, or not a dependent type.

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

	PR libstdc++/93121
	* cp-tree.h (cp_build_bit_cast): Declare.
	* cp-tree.def (BIT_CAST_EXPR): New tree code.
	* cp-objcp-common.c (names_builtin_p): Handle RID_BUILTIN_BIT_CAST.
	(cp_common_init_ts): Handle BIT_CAST_EXPR.
	* cxx-pretty-print.c (cxx_pretty_printer::postfix_expression):
	Likewise.
	* parser.c (cp_parser_postfix_expression): Handle
	RID_BUILTIN_BIT_CAST.
	* semantics.c (cp_build_bit_cast): New function.
	* tree.c (cp_tree_equal): Handle BIT_CAST_EXPR.
	(cp_walk_subtrees): Likewise.
	* pt.c (tsubst_copy): Likewise.
	* constexpr.c (check_bit_cast_type, cxx_eval_bit_cast): New functions.
	(cxx_eval_constant_expression): Handle BIT_CAST_EXPR.
	(potential_constant_expression_1): Likewise.
	* cp-gimplify.c (cp_genericize_r): Likewise.

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

	* parser.c (cp_parser_primary_expression): Distinguish
	parms from vars in error.
	(cp_parser_late_parsing_default_args): Pushdecl parms
	as we go.

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

	* name-lookup.c (begin_scope): Set immediate_fn_ctx_p.
	* parser.c (cp_parser_late_parsing_default_args): Push
	sk_function_parms scope.

2020-12-03  Peter Bergner  <bergner@linux.ibm.com>

	PR c++/97947
	* typeck2.c (digest_init_r): Handle OPAQUE_TYPE as an aggregate type.

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

	PR c++/80780
	PR c++/93093
	* cp-tree.h (source_location_current_p): Declare.
	* tree.c (source_location_current_p): New function.
	* call.c (immediate_invocation_p): New function.
	(build_over_call): Use it to resolve LWG3396.
	* constexpr.c (cxx_eval_builtin_function_call): Temporarily set
	current_function_decl from ctx->call->fundef->decl if any.
	* cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Fold calls
	to immediate function std::source_location::current ().

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

	* decl.c (grokdeclarator): Improve diagnostic for
	disallowed CTAD placeholder.

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

	* decl.c (check_initializer): Also look through STMT_EXPR
	and BIND_EXPR.

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

	* cp-tree.h (comparing_typenames): Declare.
	* pt.c (comparing_typenames): Define.
	(spec_hasher::equal): Increment it around comparisons.
	* typeck.c (structural_comptypes): Adjust TYPENAME resolution
	check.

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

	PR c++/97975
	* constexpr.c (fold_non_dependent_init): Add a tree parameter.
	Use it.
	* cp-tree.h (fold_non_dependent_init): Add a tree parameter with
	a default value.
	* typeck2.c (store_init_value): Call fold_non_dependent_expr
	only when checking the initializer for constexpr variables.
	Call fold_non_dependent_init instead of maybe_constant_init.

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

	PR c++/97187
	PR c++/97993
	* pt.c (tsubst_copy_and_build) <case NEW_EXPR>: Return error_mark_node
	if init is erroneous.

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

	* cp-tree.h (DECL_MODULE_PURVIEW_P, DECL_MODULE_IMPORT_P)
	(DECL_MODULE_ENTITY_P): New.
	(DECL_MODULE_PENDING_SPECIALIZATIONS_P): New.
	(DECL_MODULE_PENDING_MEMBERS_P): New.
	(DECL_MODULE_ATTACHMENTS_P): New.
	(DECL_MODULE_EXPORT_P): New.
	(struct lang_decl_base): Shrink sel field.  Add new
	module-specific fields.

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

	* cp-tree.h (DECL_TINFO_P): Also for TYPE_DECLs.
	(get_tinfo_decl_direct): Declare.
	(get_pseudo_tinfo_index, get_pseudo_tinfo_type): Declare.
	* rtti.c (get_tinfo_decl_direct): Externalize.
	(get_tinfo_desc): Set DECL_TINFO_P on the typedef.
	(get_pseudo_tinfo_index, get_pseudo_tinfo_type): New.

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

	* cp-tree.h (maybe_add_lang_decl_raw, maybe_add_lang_type_raw):
	Declare.
	* lex.c (maybe_add_lang_decl_raw, maybe_add_lang_type_raw):
	Externalize, reformat.

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

	* cp-tree.h (build_cplus_array_type): Add defaulted DEP parm.
	* tree.c (set_array_type_common): Add DEP parm.
	(build_cplus_array_type): Add DEP parm, determine dependency if
	needed.
	(cp_build_qualified_type_real): Adjust array-building call.
	(strip_typedefs): Likewise.

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

	* ptree.c (cxx_print_xnode): Increase binding-vector prefix size.

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

	* cp-tree.def (BINDING_VECTOR): New.
	* name-lookup.h (struct binding_slot): New.
	(BINDING_VECTOR_SLOTS_PER_CLUSTER): New.
	(struct binding_index, struct binding_cluster): New.
	(BINDING_VECTOR_ALLOC_CLUSTERS, BINDING_VECTOR_CLUSTER_BASE)
	(BINDING_VECTOR_CLUSTER): New.
	(struct tree_binding_vec): New.
	(BINDING_VECTOR_NAME, BINDING_VECTOR_GLOBAL_DUPS_P)
	(BINDING_VECTOR_PARTITION_DUPS_P): New.
	(BINDING_BINDING_GLOBAL_P, BINDING_BINDING_PARTITION_P): New.
	(BINDING_VECTOR_PENDING_SPECIALIZATIONS)
	(BINDING_VECTOR_PENDING_IS_HEADER_P)
	(BINDING_VECTOR_PENDING_IS_PARTITION_P): New.
	* cp-tree.h (enum cp_tree_node_structure_enum): Add
	TS_CP_BINDING_VECTOR.
	(union lang_tree_node): Add binding_vec field.
	(make_binding_vec): Declare.
	(named_decl_hash::hash, named_decl_hash::equal): Check for binding
	vector.
	* decl.c (cp_tree_node_structure): Add BINDING_VECTOR case.
	* ptree.c (cxx_print_xnode): Add BINDING_VECTOR case.
	* tree.c (make_binding_vec): New.

2020-12-01  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR c++/98054
	* cxx-pretty-print.c (pp_cxx_trait_expression):
	Add support for __is_nothrow_{assignable,constructible}.

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

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

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

	* lex.c (init_reswords): Maybe enable module keywords.

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

	* lang-specs.h: Add module-related options.

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

	* parser.c (cp_parser_declaration): Add a not about where
	attributes may be placed.

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

	* error.c (add_quotes): Revert previous change and use pragma to
	suppress -Wformat-diag.

2020-11-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* g++spec.c (TIMELIB, TIME_LIBRARY): Remove.
	(lang_specific_driver): Remove TIME_LIBRARY handling.

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

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

2020-11-25  Martin Sebor  <msebor@redhat.com>

	PR bootstrap/94982
	* constraint.cc (debug_argument_list): Avoid -Wformat-diag.
	* error.c (function_category): Same.
	(print_template_differences): Same.
	* logic.cc (debug): Same.
	* name-lookup.c (lookup_using_decl): Same.
	* parser.c (maybe_add_cast_fixit): Same.
	(cp_parser_template_introduction): Same.
	* typeck.c (access_failure_info::add_fixit_hint): Same.

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

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

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

	PR c++/97899
	* typeck2.c (store_init_value): Don't split_nonconstant_init in a
	template.

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

	PR tree-optimization/96929
	* constexpr.c (cxx_eval_binary_expression): For shifts by constant
	with MSB set, emulate older wide_int_binop behavior to preserve
	diagnostics and -fpermissive behavior.

2020-11-23  Nathan Sidwell  <nathan@acm.org>

	* module.cc: New dummy file.
	* Make-lang.in: Add rules to build module.o

2020-11-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* decl.c (start_decl): Set DECL_INITIAL for initialized decls
	before attribute processing.

2020-11-23  Richard Sandiford  <richard.sandiford@arm.com>

	PR c++/97904
	* pt.c (tsubst): Use verify_type_context to check the type
	of an array element.

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

	PR c++/94695
	* parser.c (warn_for_range_copy): Warn when the loop variable is
	initialized with a value of a different type resulting in a copy.

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

	PR c++/97846
	* constexpr.c (potential_constant_expression_1): Reject
	LABEL_EXPRs that use non-artifical LABEL_DECLs.

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

	PR c++/97881
	* parser.c (warn_about_ambiguous_parse): Only assume "int" if we
	actually saw any type-specifiers.

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

	PR c++/97839
	* parser.c (cp_parser_lambda_declarator_opt): Don't require ().

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

	PR c++/97427
	* constexpr.c (cxx_set_object_constness): New function.
	(cxx_eval_call_expression): Set new_obj for destructors too.
	Call cxx_set_object_constness to set/unset TREE_READONLY of
	the object under construction/destruction.

2020-11-21  Aaron Sawdey  <acsawdey@linux.ibm.com>

	* error.c (dump_type): Handle opaque types.
	(dump_type_prefix): Handle opaque types.
	(dump_type_suffix): Handle opaque types.
	(dump_expr): Handle opaque types.
	* pt.c (tsubst): Allow opaque types in templates.
	(unify): Allow opaque types in templates.
	* typeck.c (structural_comptypes): Handle comparison
	of opaque types.

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

	PR other/97911
	* Make-lang.in (c++.serial): Change from goal to a variable.
	(.PHONY): Drop c++.serial and c++.prev.
	(cc1plus$(exeext)): Depend on $(c++.serial) rather than c++.serial.

2020-11-19  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (struct spec_entry): Moved from pt.c.
	(walk_specializations, match_mergeable_specialization)
	(get_mergeable_specialization_flags)
	(add_mergeable_specialization): Declare.
	* pt.c (struct spec_entry): Moved to cp-tree.h.
	(walk_specializations, match_mergeable_specialization)
	(get_mergeable_specialization_flags)
	(add_mergeable_specialization): New.

2020-11-19  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (struct constexpr_fundef): Moved from constexpr.c.
	(maybe_save_constexpr_fundef): Declare.
	(register_constexpr_fundef): Take constexpr_fundef object, return
	void.
	* decl.c (mabe_save_function_definition): Delete, functionality
	moved to maybe_save_constexpr_fundef.
	(emit_coro_helper, finish_function): Adjust.
	* constexpr.c (struct constexpr_fundef): Moved to cp-tree.h.
	(constexpr_fundef_hasher::equal): Constify.
	(constexpr_fundef_hasher::hash): Constify.
	(retrieve_constexpr_fundef): Make non-static.
	(maybe_save_constexpr_fundef): Break out checking and duplication
	from ...
	(register_constexpr_fundef): ... here.  Just register the constexpr.

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

	PR c++/97523
	* init.c (build_new): When value-initializing an array new,
	leave the INIT as an empty vector.

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

	PR c++/97895
	* pt.c (do_auto_deduction): Don't crash when the constructor has
	zero elements.

2020-11-19  Nathan Sidwell  <nathan@acm.org>

	PR c++/97905
	* decl.c (duplicate_decls): Relax new assert.

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

	* parser.c (cp_parser_objc_valid_prefix_attributes): Check
	for empty attributes.

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

	* Make-lang.in (c++.serial): New goal.
	(.PHONY): Add c++.serial c++.prev.
	(cc1plus$(exeext)): Depend on c++.prev.  Call LINK_PROGRESS.

2020-11-17  Nathan Sidwell  <nathan@acm.org>

	PR c++/97877
	* decl.c (duplicate_decls): Deal with duplicated DECL_LOCAL_DECL_P
	decls.  Extend decl_lang_specific checking assert.

2020-11-17  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (enum cp_tree_index): Reorder to place lazy fields
	after newly-added CPTI_MODULE_HWM.

2020-11-17  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/97871
	* parser.c (cp_parser_declaration): Remove checking assert.

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

	* decl.c (cp_finish_decl): Only check abstractness on definition.
	(require_complete_types_for_parms): Check abstractness here.
	(create_array_type_for_decl): Not here.
	(grokdeclarator, grokparms, complete_vars): Not here.
	* pt.c (tsubst, tsubst_arg_types, tsubst_function_type): Not here.
	* typeck2.c (struct pending_abstract_type): Remove.
	(struct abstract_type_hasher): Remove.
	(abstract_pending_vars, complete_type_check_abstract): Remove.
	(abstract_virtuals_error_sfinae): Handle arrays.
	* call.c (conv_is_prvalue): Split out from...
	(conv_binds_ref_to_prvalue): ...here.
	(implicit_conversion_1): Rename from implicit_conversion.
	(implicit_conversion): An abstract prvalue is bad.
	(convert_like_internal): Don't complain if expr is already
	error_mark_node.

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

	* cp-tree.h (USING_DECL_UNRELATED_P): New.
	(CONST_DECL_USING_P): New.
	* class.c (handle_using_decl): If USING_DECL_UNRELATED_P,
	clone the CONST_DECL.
	* name-lookup.c (supplement_binding_1): A clone hides its
	using-declaration.
	(lookup_using_decl): Rewrite to separate lookup and validation.
	(do_class_using_decl): Adjust.
	(finish_nonmember_using_decl): Adjust.
	* parser.c (make_location): Add cp_token overload.
	(finish_using_decl): Split out from...
	(cp_parser_using_declaration): ...here.  Don't look through enums.
	(cp_parser_using_enum): New.
	(cp_parser_block_declaration): Call it.
	(cp_parser_member_declaration): Call it.
	* semantics.c (finish_id_expression_1): Handle enumerator
	used from class scope.

2020-11-13  Vladimir N. Makarov  <vmakarov@redhat.com>

	* parser.c (cp_parser_asm_definition): Parse outputs for asm
	goto too.

2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/77404
	* parser.c (cp_parser_objc_class_interface): Pass the
	location of the class name to the interface declaration.

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

	* semantics.c (finish_compound_literal): Don't wrap the original
	compound literal in a TARGET_EXPR when inside a template.

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

	PR c++/97790
	* constexpr.c (cxx_eval_constant_expression) <case CLEANUP_POINT_EXPR,
	case TRY_FINALLY_EXPR, case CLEANUP_STMT>: Don't pass jump_target to
	cxx_eval_constant_expression when evaluating the cleanups.

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

	* parser.c (cp_parser_declaration): Unless we are compiling for
	Ojective-C++, warn about and discard any attributes that prefix
	a linkage specification.

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

	PR c++/88115
	* mangle.c (write_expression): Mangle __alignof_ differently
	from alignof when the ABI version is at least 15.

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

	PR c++/88115
	* cp-tree.h (cxx_sizeof_or_alignof_expr): Add bool parameter.
	* decl.c (fold_sizeof_expr): Pass false to
	cxx_sizeof_or_alignof_expr.
	* parser.c (cp_parser_unary_expression): Pass std_alignof to
	cxx_sizeof_or_alignof_expr.
	* pt.c (tsubst_copy): Pass false to cxx_sizeof_or_alignof_expr.
	(tsubst_copy_and_build): Pass std_alignof to
	cxx_sizeof_or_alignof_expr.
	* typeck.c (cxx_alignof_expr): Add std_alignof bool parameter
	and pass it to cxx_sizeof_or_alignof_type.  Set ALIGNOF_EXPR_STD_P
	appropriately.
	(cxx_sizeof_or_alignof_expr): Add std_alignof bool parameter
	and pass it to cxx_alignof_expr.  Assert op is either
	SIZEOF_EXPR or ALIGNOF_EXPR.

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

	PR c++/97518
	* pt.c (tsubst_qualified_id): Use EXPR_LOCATION of the qualified-id.
	Use it to maybe_wrap_with_location the final expression.

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

	PR c++/97518
	* cp-tree.h (finish_static_assert): Adjust declaration.
	* parser.c (cp_parser_static_assert): Pass false to
	finish_static_assert.
	* pt.c (tsubst_expr): Pass true to finish_static_assert.
	* semantics.c (find_failing_clause_r): New function.
	(find_failing_clause): New function.
	(finish_static_assert): Add a bool parameter.  Use
	iloc_sentinel.  Call contextual_conv_bool instead of
	perform_implicit_conversion_flags.  Don't check for INTEGER_CST before
	calling integer_zerop.  Call find_failing_clause and maybe use its
	location.  Print the original condition or the failing clause if
	SHOW_EXPR_P.

2020-11-10  Strager Neds  <strager.nds@gmail.com>

	* decl.c (duplicate_decls): Use new overload of
	set_decl_section_name.
	* method.c (use_thunk): Same.
	* optimize.c (maybe_clone_body): Same.
	* coroutines.cc (act_des_fn): Same.

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

	PR c/97748
	* cvt.c (convert_to_void): Check (complain & tf_warning) in the outer
	if rather than twice times in the inner one.  Use warn_if_unused_value.
	Formatting fix.

2020-11-10  Chung-Lin Tang  <cltang@codesourcery.com>

	* parser.c (cp_parser_omp_target_data): Add use of
	new c_omp_adjust_map_clauses function. Add GOMP_MAP_ATTACH_DETACH as
	handled map clause kind.
	(cp_parser_omp_target_enter_data): Likewise.
	(cp_parser_omp_target_exit_data): Likewise.
	(cp_parser_omp_target): Likewise.
	* semantics.c (handle_omp_array_sections): Adjust COMPONENT_REF case to
	use GOMP_MAP_ATTACH_DETACH map kind for C_ORT_OMP region type. Fix
	interaction between reference case and attach/detach.
	(finish_omp_clauses): Adjust bitmap checks to allow struct decl and
	same struct field access to co-exist on OpenMP construct.

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

	DR 1914
	* parser.c (cp_parser_check_std_attribute): Return bool.  Add a
	location_t parameter.  Return true if the attribute wasn't duplicated.
	Give a warning instead of an error.  Check more attributes.
	(cp_parser_std_attribute_list): Don't add duplicated attributes to
	the list.  Pass location to cp_parser_check_std_attribute.

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

	* constraint.cc (norm_info::norm_info): Initialize orig_decl.
	(norm_info::orig_decl): New data member.
	(normalize_atom): When caching an atom for the first time,
	compute a list of template parameters used in the targets of the
	parameter mapping and store it in the TREE_TYPE of the mapping.
	(get_normalized_constraints_from_decl): Set current_function_decl
	appropriately when normalizing.  As an optimization, don't
	set up a push_nested_class_guard when decl has no constraints.
	(sat_hasher::hash): Use this list to hash only the template
	arguments that are relevant to the atom.
	(satisfy_atom): Use this list to compare only the template
	arguments that are relevant to the atom.
	* pt.c (keep_template_parm): Do a sanity check on the parameter's
	index when flag_checking.

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

	* cp-tree.h (ATOMIC_CONSTR_MAP_INSTANTIATED_P): Define this flag
	for ATOMIC_CONSTRs.
	* constraint.cc (sat_hasher::hash): Use hash_atomic_constraint
	if the flag is set, otherwise keep using a pointer hash.
	(sat_hasher::equal): Return false if the flag's setting differs
	on two atoms.  Call atomic_constraints_identical_p if the flag
	is set, otherwise keep using a pointer equality test.
	(satisfy_atom): After instantiating the parameter mapping, form
	another ATOMIC_CONSTR using the instantiated mapping and query
	the cache again.  Cache the satisfaction value of both atoms.
	(diagnose_atomic_constraint): Simplify now that the supplied
	atom has an instantiated mapping.

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

	* constraint.cc (atom_cache): Define this deletable hash_table.
	(normalize_atom): Use it to cache ATOMIC_CONSTRs when not
	generating diagnostics.
	(sat_hasher::hash): Use htab_hash_pointer instead of
	hash_atomic_constraint.
	(sat_hasher::equal): Test for pointer equality instead of
	atomic_constraints_identical_p.
	* cp-tree.h (struct atom_hasher): Moved and renamed from ...
	* logic.cc (struct constraint_hash): ... here.
	(clause::m_set): Adjust accordingly.

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

	PR c++/93907
	* constraint.cc (tsubst_parameter_mapping): Also canonicalize
	the type arguments of a TYPE_ARGUMENT_PACk.

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

	* pt.c (tsubst): Replace *_ARGUMENT_PACK code with
	a call to tsubst_argument_pack.

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

	* class.c (handle_using_decl): Add an iloc_sentinel.

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

	PR c++/97762
	* parser.c (warn_about_ambiguous_parse): Handle the case when
	there is no type in the decl-specifiers.

2020-11-09  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (LOOKUP_FOUND_P): Add ENUMERAL_TYPE.
	* name-lookup.c (class name_lookup): Add comments.
	(name_lookup::adl_namespace_only): Replace with ...
	(name_lookup::adl_class_fns): ... this and ...
	(name_lookup::adl_namespace_fns): ... this.
	(name_lookup::adl_namespace): Deal with inline nests here.
	(name_lookup::adl_class): Complete the type here.
	(name_lookup::adl_type): Call broken-out enum ..
	(name_lookup::adl_enum): New.  No need to call the namespace adl
	if it is class-scope.
	(name_lookup::search_adl): Iterate over collected scopes here.

2020-11-09  Nathan Sidwell  <nathan@acm.org>

	* name-lookup.c (lookup_qualified_name): Expose an overload of a
	singleton with known type.
	(lookup_name_1): Just check the overload's type to expose it.
	* parser.c (cp_parser_lookup_name): Do not do that check here.

2020-11-08  Iain Sandoe  <iain@sandoe.co.uk>

	* parser.c (cp_parser_objc_at_property_declaration): Handle
	class keywords in @property attribute context.

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

	PR c++/81660
	* except.c (can_convert_eh): Change the return type to bool.  If
	the type TO and FROM are the same, return true.

2020-11-06  Iain Sandoe  <iain@sandoe.co.uk>

	* parser.c (cp_parser_objc_at_property_declaration):
	Improve parsing fidelity. Associate better location info
	with @property attributes.  Clean up the interface to
	objc_add_property_declaration ().

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

	PR c++/67453
	* decl.c (duplicate_decls): Propagate DECL_ATTRIBUTES and
	DECL_PRESERVE_P from olddecl to its clones if any.

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

	* cp-tree.h (DECL_UNDECLARED_BUILTIN_P): Delete.
	* cp-objcp-common.c (names_bultin_p): Rename
	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
	* decl.c (decls_match): Likewise.  Replace
	DECL_UNDECLARED_BUILTIN_P with DECL_IS_UNDECLARED_BUILTIN.
	(duplicate_decls): Likewise.
	* decl2.c (collect_source_refs): Likewise.
	* name-lookup.c (anticipated_builtin_p, print_binding_level)
	(do_nonmember_using_decl): Likewise.
	* pt.c (builtin_pack_fn_p): Likewise.
	* typeck.c (error_args_num): Likewise.

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

	* parser.c (cp_parser_template_declaration): Adjust 'export' warning.
	(cp_parser_explicit_specialization): Remove unneeded bool setting.

2020-11-06  Jan Hubicka  <jh@suse.cz>

	* tree.c (cp_fix_function_decl_p): Do not access ipa_ref_list dirrectly.

2020-11-06  Tobias Burnus  <tobias@codesourcery.com>

	* parser.c (cp_parser_omp_atomic): Add openacc parameter and update
	OpenACC matching.
	(cp_parser_omp_construct): Update call.

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

	* except.c (check_handlers_1): Add auto_diagnostic_group.

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

	PR c++/78209
	* pt.c (do_auto_deduction): If init is REFERENCE_REF_P, use its
	first operand.

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

	PR c++/97675
	* except.c (check_handlers_1): Use OPT_Wexceptions for the
	warning.  Use inform for the second part of the warning.

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

	PR c++/25814
	* cp-tree.h (enum cp_tree_index): Add CPTI_EXPLICIT_VOID_LIST.
	(explicit_void_list_node): Define.
	(PARENTHESIZED_LIST_P): New macro.
	(struct cp_declarator): Add function::parens_loc.
	* decl.c (cxx_init_decl_processing): Initialize explicit_void_list_node.
	(grokparms): Also break when explicit_void_list_node.
	* parser.c (make_call_declarator): New location_t parameter.  Use it
	to set declarator->u.function.parens_loc.
	(cp_parser_lambda_declarator_opt): Pass UNKNOWN_LOCATION to
	make_call_declarator.
	(warn_about_ambiguous_parse): New function.
	(cp_parser_init_declarator): Call warn_about_ambiguous_parse.
	(cp_parser_declarator): Set *parenthesized_p to false rather than to
	true.
	(cp_parser_direct_declarator): Create a location for the function's
	parentheses and pass it to make_call_declarator.
	(cp_parser_parameter_declaration_clause): Return explicit_void_list_node
	for (void).
	(cp_parser_parameter_declaration_list): Set PARENTHESIZED_LIST_P
	in the parameters tree.

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

	PR c++/97670
	* semantics.c (finish_omp_clauses): Look through array reductions to
	find underlying decl to clear in the aligned_head bitmap.  Use
	DECL_UID (t) instead of DECL_UID (OMP_CLAUSE_DECL (c)) when clearing
	in the bitmap.  Only diagnose errors about allocate vars not being
	privatized on the same construct on allocate clause if it has
	a DECL_P OMP_CLAUSE_DECL.

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

	* constexpr.c (potential_constant_expression_1): Handle
	expressions known to be non-constant for Objective-C.

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

	* tree.c (is_byte_access_type): Don't use char_type_p.

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

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

2020-11-03  Kamlesh Kumar  <kamleshbhalui@gmail.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/97453
	DR2303
	* pt.c (get_template_base): Consider closest base in template
	deduction when base of base also matches.

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

	* pt.c (tsubst_expr): Simplify using decl instantiation, add
	asserts.

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

	* class.c (copy_fndecl_with_name):  Always not top level.
	(build_cdtor_clones): Add update_methods parm, use it to
	conditionally update the method vec.  Return void
	(clone_cdtor): Adjust.
	(clone_constructors_and_destructors): Adjust comment.

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

	* pt.c (primary_template_specialization_p): Use
	VAR_OR_FUNCTION_DECL_P.
	(tsubst_template_decl): Check for FUNCTION_DECL, not !TYPE && !VAR
	for registering a specialization.

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

	* cp-tree.h (fixup_deferred_exception_variants): Declare.
	* parser.c (cp_parser_class_specifier_1): Call it when
	completing deferred parses rather than creating a variant.
	(cp_parser_member_declaration): Move comment from ...
	(cp_parser_noexcept_specification_opt): ... here.  Refactor the
	deferred parse.
	* tree.c (fixup_deferred_exception_variants): New.

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

	* pt.c (tsubst_lambda_expr): Reorder extra-scope handling to match
	the non-template case.
	(instantiate_body): Move a couple of declarations to their
	initializers.

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

	* decl.c (duplicate_decls): Return error_mark_node fo extern-c
	mismatch.

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

	* constexpr.c (potential_constant_expression_1): Treat
	__PRETTY_FUNCTION__ inside a template function as
	potentially-constant.
	* pt.c (uses_template_parms): Call
	instantiation_dependent_expression_p instead of
	value_dependent_expression_p.
	(instantiation_dependent_expression_p): Check
	potential_constant_expression before calling
	value_dependent_expression_p.

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

	PR c++/97632
	* init.c (build_new_1): Disable -Winit-list-lifetime for an unevaluated
	operand.

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

	* tree.c (bind_template_template_parm): Mark the parm as a
	template parm.
	(cp_tree_equal): Refactor CALL_EXPR.  Use comp_template_args for
	TREE_VECs.

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

	* rtti.c (init_rtti_processing): Move var decl to its init.
	(get_tinfo_decl): Likewise.  Break out creation to called helper
	...
	(get_tinfo_decl_direct): ... here.
	(build_dynamic_cast_1): Move var decls to their initializers.
	(tinfo_base_init): Set decl's location to BUILTINS_LOCATION.
	(get_tinfo_desc): Only push ABI namespace when needed.  Set type's
	context.

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

	* decl.c (start_decl_1): Refactor declarations.  Fixup some
	whitespace.
	(lookup_and_check_tag): Fixup some whitespace.

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

	* decl.c (duplicate_decls): Refactor some template & builtin
	handling.

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

	* cp-tree.h (struct cxx_int_tree_map): Delete.
	(struct cxx_int_tree_map_hasher): Delete.
	* cp-gimplify.c (cxx_int_tree_map_hasher::equal): Delete.
	(cxx_int_tree_map_hasher::hash): Delete.

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

	* class.c (finish_struct_1): Don't call clear_satisfaction_cache.
	* constexpr.c (clear_cv_and_fold_caches): Likewise.  Remove bool
	parameter.
	* constraint.cc (clear_satisfaction_cache): Remove definition.
	* cp-tree.h (clear_satisfaction_cache): Remove declaration.
	(clear_cv_and_fold_caches): Remove bool parameter.
	* typeck2.c (store_init_value): Remove argument to
	clear_cv_and_fold_caches.

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

	* parser.c (cp_parser_objc_at_property_declaration): Use any
	exisiting syntax error to suppress complaints about a missing
	closing parenthesis in parsing property attributes.

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

	* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_ALLOCATE>: Handle
	non-static members in methods.
	* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_ALLOCATE.

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

	DR 625
	PR c++/97479
	* parser.c (cp_parser_type_id_1): Reject using auto as
	a template-argument in C++20.

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

	PR c++/93107
	* pt.c (do_auto_deduction): Call resolve_nondeduced_context for
	the elements of a { } list.

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

	* typeck.c (do_warn_enum_conversions): Don't warn for SPACESHIP_EXPR.
	(cp_build_binary_op): Reject float <=> enum or enum <=> float.  Use
	CP_INTEGRAL_TYPE_P instead of INTEGRAL_OR_ENUMERATION_TYPE_P.

2020-10-29  Patrick Palka  <ppalka@redhat.com>

	* constraint.cc (get_normalized_constraints): Remove 'args'
	parameter.  Pass NULL_TREE as the initial template arguments to
	normalize_expression.
	(get_normalized_constraints_from_info): Remove 'args' parameter
	and adjust the call to get_normalized_constraints.
	(get_normalized_constraints_from_decl): Remove 'args' local
	variable and adjust call to get_normalized_constraints_from_info.
	(normalize_concept_definition): Remove 'args' local variable
	and adjust call to get_normalized_constraints.
	(normalize_constraint_expression): Remove the two-parameter
	overload.  Remove 'args' parameter from the three-parameter
	overload and update function comment accordingly.  Remove
	default argument from 'diag' parameter.  Adjust call to
	get_normalized_constraints.
	(finish_nested_requirement): Adjust call to
	normalize_constraint_expression.
	(strictly_subsumes): Remove 'args' parameter.  Adjust call to
	get_normalized_constraints_from_info.
	(weakly_subsumes): Likewise.
	* cp-tree.h (strictly_subsumes): Remove 'args' parameter.
	(weakly_subsumes): Likewise.
	* pt.c (process_partial_specialization): Adjust call to
	strictly_subsumes.
	(is_compatible_template_arg): Adjust call to weakly_subsumes.

2020-10-29  Patrick Palka  <ppalka@redhat.com>

	PR c++/97412
	* constraint.cc (normalize_concept_check): Don't call
	tsubst_template_args when 'args' is NULL.

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

	PR c++/97388
	* constexpr.c (cxx_eval_outermost_constant_expr): Revert to
	original expression if evaluation sets non_constant_p.

2020-10-29  Jakub Jelinek  <jakub@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/97388
	* constexpr.c (cxx_bind_parameters_in_call): Set non_constant_args
	if the parameter type has a non-trivial destructor.
	(cxx_eval_call_expression): Only unshare arguments if we're
	memoizing this evaluation.

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

	PR c++/95808
	* cp-tree.h (enum cp_tree_index): Add CPTI_HEAP_VEC_UNINIT_IDENTIFIER
	and CPTI_HEAP_VEC_IDENTIFIER.
	(heap_vec_uninit_identifier, heap_vec_identifier): Define.
	* decl.c (initialize_predefined_identifiers): Initialize those
	identifiers.
	* constexpr.c (cxx_eval_call_expression): Reject array allocations
	deallocated with non-array deallocation or non-array allocations
	deallocated with array deallocation.
	(non_const_var_error): Handle heap_vec_uninit_identifier and
	heap_vec_identifier too.
	(cxx_eval_constant_expression): Handle also heap_vec_uninit_identifier
	and in that case during initialization replace it with
	heap_vec_identifier.
	(find_heap_var_refs): Handle heap_vec_uninit_identifier and
	heap_vec_identifier too.

2020-10-29  Nathan Sidwell  <nathan@acm.org>

	* pt.c (push_template_decl): Do not give function-scope entities
	other than implicit typedefs a template header. Do not readd
	template info to a redeclared template.

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

	* decl.c (grokdeclarator): Offer a fix-it hint for the "unnecessary
	parentheses in declaration" warning.
	* parser.c (cp_parser_direct_declarator): When setting
	declarator->parenthesized, use a location range.

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

	PR c++/97573
	* call.c (build_conditional_expr_1): Warn about the deprecated
	enum/real type conversion in C++20.  Also warn about a non-enumerated
	and enumerated type in ?: when -Wenum-conversion is on.
	* typeck.c (do_warn_enum_conversions): New function.
	(cp_build_binary_op): Call it.

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

	PR c++/96675
	PR c++/96742
	* pt.c (tsubst_copy_and_build): Call value_dependent_expression_p or
	type_dependent_expression_p instead of type_dependent_expression_p_push.
	But only call value_dependent_expression_p for expressions that are
	potential_constant_expression.

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

	PR c++/94799
	* parser.c (cp_parser_class_name): Use parser->scope when
	setting typename_p.

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

	PR c++/86773
	* parser.c (cp_parser_fold_expression): Return error_mark_node
	if a left fold is preceded by an expression.

2020-10-28  Nathan Sidwell  <nathan@acm.org>

	* parser.c (cp_parser_omp_declare_reduction): Set
	DECL_LOCAL_DECL_P before push_template_decl.
	* pt.c (instantiate_body): Nested fns do not have template_info.

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

	PR c++/95132
	* decl2.c (mark_used): Move up the constraints_satisfied_p check
	so that we check constraints before calling maybe_instantiate_decl.

2020-10-28  Nathan Sidwell  <nathan@acm.org>

	* pt.c (push_template_decl): Refactor for some RAII.

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

	* parser.c (cp_parser_omp_clause_name): Handle allocate.
	(cp_parser_omp_clause_allocate): New function.
	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_ALLOCATE.
	(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
	OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK,
	OMP_TASK_CLAUSE_MASK, OMP_TASKGROUP_CLAUSE_MASK,
	OMP_DISTRIBUTE_CLAUSE_MASK, OMP_TEAMS_CLAUSE_MASK,
	OMP_TARGET_CLAUSE_MASK, OMP_TASKLOOP_CLAUSE_MASK): Add
	PRAGMA_OMP_CLAUSE_ALLOCATE.
	* semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_ALLOCATE.
	* pt.c (tsubst_omp_clauses): Likewise.

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

	* cp-tree.h (struct lang_type): Delete nested_udts field.
	(CLASSTYPE_NESTED_UTDS): Delete.
	* name-lookup.h (binding_table, binding_entry): Delete typedefs.
	(bt_foreach_proc): Likewise.
	(struct binding_entry_s): Delete.
	(SCOPE_DEFAULT_HT_SIZE, CLASS_SCOPE_HT_SIZE)
	(NAMESPACE_ORDINARY_HT_SIZE, NAMESPACE_STD_HT_SIZE)
	(GLOBAL_SCOPE_HT_SIZE): Delete.
	(binding_table_foreach, binding_table_find): Delete declarations.
	* name-lookup.c (ENTRY_INDEX): Delete.
	(free_binding_entry): Delete.
	(binding_entry_make, binding_entry_free): Delete.
	(struct binding_table_s): Delete.
	(binding_table_construct, binding_table_free): Delete.
	(binding_table_new, binding_table_expand): Delete.
	(binding_table_insert, binding_table_find): Delete.
	(binding_table_foreach): Delete.
	(maybe_process_template_type_declaration): Delete
	CLASSTYPE_NESTED_UTDS insertion.
	(do_pushtag): Likewise.
	* decl2.c (bt_reset_linkage_1): Fold into reset_type_linkage_1.
	(reset_type_linkage_2, bt_reset_linkage_2): Fold into
	reset_type_linkage.
	* pt.c (instantiate_class_template_1): Delete NESTED_UTDs comment.
	(bt_instantiate_type_proc): Delete.
	(do_type_instantiation): Instantiate implicit typedef fields.
	Delete NESTED_UTD walk.
	* search.c (lookup_field_r): Delete unreachable NESTED_UTD
	search.

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

	* parser.c (cp_parser_explicit_instantiation): Refactor some RAII.
	* pt.c (bt_instantiate_type_proc): DATA is the tree, pass type to
	do_type_instantiation.
	(do_type_instantiation): Require T to be a type.  Refactor for
	some RAII.

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

	* cp-tree.h (CPTK_IS_NOTHROW_ASSIGNABLE): New.
	(CPTK_IS_NOTHROW_CONSTRUCTIBLE): Likewise.
	(is_nothrow_xible): Likewise.
	* method.c (is_nothrow_xible): New.
	(is_trivially_xible): Tweak.
	* parser.c (cp_parser_primary_expression): Handle the new RID_*.
	(cp_parser_trait_expr): Likewise.
	* semantics.c (trait_expr_value): Handle the new RID_*.
	(finish_trait_expr): Likewise.

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

	PR c++/96241
	* constexpr.c (cxx_eval_array_reference): Set up ctx->ctor if we
	are initializing an aggregate.  Call free_constructor on the new
	CONSTRUCTOR if it isn't returned from cxx_eval_constant_expression.

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

	PR c++/91741
	* typeck.c (cp_build_binary_op): Implement -Wsizeof-array-div.

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

	PR c++/97328
	* constexpr.c (init_subob_ctx): Don't punt on RANGE_EXPR
	indexes, instead build a sub-aggregate initialization context
	with no subobject.

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

	PR c++/96575
	* constexpr.c (cxx_eval_constant_expression)
	<case EMPTY_CLASS_EXPR>: Lower it to a CONSTRUCTOR.
	(potential_constant_expression_1) <case COMPOUND_EXPR>: Remove
	now-redundant handling of COMPOUND_EXPR with EMPTY_CLASS_EXPR
	second operand.
	<case EMPTY_CLASS_EXPR>: Return true instead of false.

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

	PR c++/97511
	* decl.c (duplicate_decls): Return NULL_TREE if
	DECL_TEMPLATE_PARM_P differ.

2020-10-20  Nathan Sidwell  <nathan@acm.org>

	* name-lookup.c (push_local_extern_decl_alias): Reconstextualize
	alias' parm decls.  Drop any default args.

2020-10-19  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/97438
	* coroutines.cc (struct coroutine_info): Add a field to
	record that we emitted a promise type error.
	(coro_promise_type_found_p): Check for the case that the
	promise type contains both return_void and return_value.
	Emit an error if so, with information about the wrong
	type methods.

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

	PR c++/97460
	* pt.c (push_template_decl): Check DECL_LANG_SPECIFIC in friend
	case.

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

	PR c++/96258
	* parser.c (cp_parser_declaration): Make token2 point to EOF if
	token1 was EOF.

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

	PR c++/95844
	* decl.c (copy_fn_p): Return false for a function that is neither a
	constructor nor an assignment operator.
	(move_signature_fn_p): Likewise.

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

	PR c++/97406
	PR c++/85901
	* cxx-pretty-print.c (pp_cxx_type_specifier_seq): Handle OFFSET_TYPE.
	(cxx_pretty_printer::abstract_declarator): Fix the printing of ')'.
	(cxx_pretty_printer::direct_abstract_declarator): Handle OFFSET_TYPE.
	(cxx_pretty_printer::type_id): Likewise.  Print the abstract declarator
	for pointers-to-members.

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

	PR c++/97358
	* pt.c (check_for_bare_parameter_packs): Diagnose use of
	capture pack.

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

	* cp-tree.h (struct lang_decl_fn): Adjust context comment.
	(DECL_FRIEND_P): Replace with ...
	(DECL_UNIQUE_FRIEND_P): ... this.  Only for FUNCTION_DECLs.
	(DECL_FRIEND_CONTEXT): Adjust.
	* class.c (add_implicitly_declared_members): Detect friendly
	spaceship from context.
	* constraint.cc (remove_constraints): Use a checking assert.
	(maybe_substitute_reqs_for): Use DECL_UNIQUE_FRIEND_P.
	* decl.c (check_no_redeclaration_friend_default_args):
	DECL_UNIQUE_FRIEND_P is signficant, not hiddenness.
	(duplicate_decls): Adjust DECL_UNIQUE_FRIEND_P clearing.
	(redeclaration_error_message): Use DECL_UNIQUE_FRIEND_P.
	(start_preparsed_function): Correct in-class friend processing.
	Refactor some initializers.
	(grokmethod): Directly check friend decl-spec.
	* decl2.c (grokfield): Check DECL_UNIQUE_FRIEND_P.
	* friend.c (do_friend): Set DECL_UNIQUE_FRIEND_P first, remove
	extraneous conditions.  Don't re set it afterwards.
	* name-lookup.c (lookup_elaborated_type_1): Simplify revealing
	code.
	(do_pushtag): Likewise.
	* pt.c (optimize_specialization_lookup_p): Check
	DECL_UNIQUE_FRIEND_P.
	(push_template_decl): Likewise.  Drop unneeded friend setting.
	(type_dependent_expression_p): Check DECL_UNIQUE_FRIEND_P.

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

	* name-lookup.c (push_local_extern_decl_alias): Push into alias's
	namespace and use pushdecl.
	(do_pushdecl_with_scope): Clarify behaviour.

2020-10-12  Martin Sebor  <msebor@redhat.com>

	PR c++/97201
	* error.c (dump_type_suffix): Handle both the C and C++ forms of
	zero-length arrays.

2020-10-12  Martin Sebor  <msebor@redhat.com>

	PR c++/96511
	PR middle-end/96384
	* init.c (warn_placement_new_too_small): Call builtin_objsize instead
	of duplicating what it does.

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

	PR c++/96805
	PR c++/96199
	* pt.c (tsubst_aggr_type): Don't build a TYPENAME_TYPE when
	entering_scope.
	(tsubst_template_decl): Use tsubst_aggr_type.

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

	PR c++/97052
	* constraint.cc (build_type_constraint): Temporarily increment
	processing_template_decl before calling build_concept_check.
	* pt.c (make_constrained_placeholder_type): Likewise.

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

	PR c++/96229
	* parser.c (cp_parser_class_specifier_1): Move call to
	associate_classtype_constraints from here to ...
	(cp_parser_class_head): ... here.
	* pt.c (is_compatible_template_arg): Correct documentation to
	say "argument is _no_ more constrained than the parameter".

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

	PR c++/97010
	* pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
	tsubst_copy_and_build explicitly instead of using the RECUR macro.
	Handle a TEMPLATE_ID_EXPR with an IDENTIFIER_NODE as its operand.
	<case CALL_EXPR>: Perform ADL for a TEMPLATE_ID_EXPR with an
	IDENTIFIER_NODE as its operand.

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

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

2020-10-07  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (struct language_function): Delete extern_decl_map.
	(DECL_LOCAL_DECL_ALIAS): New.
	* name-lookup.h (is_local_extern): Delete.
	* name-lookup.c (set_local_extern_decl_linkage): Replace with ...
	(push_local_extern_decl): ... this new function.
	(do_pushdecl): Call new function after pushing new decl.  Unhide
	hidden non-functions.
	(is_local_extern): Delete.
	* decl.c (layout_var_decl): Do not allow VLA local externs.
	* decl2.c (mark_used): Also mark DECL_LOCAL_DECL_ALIAS. Drop old
	local-extern treatment.
	* parser.c (cp_parser_oacc_declare): Deal with local extern aliases.
	* pt.c (tsubst_expr): Adjust local extern instantiation.
	* cp-gimplify.c (cp_genericize_r): Remap DECL_LOCAL_DECLs.

2020-10-07  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (DECL_BUILTIN_P): Rename to ...
	(DECL_UNDECLARED_BUILTIN_P): ... here.
	* decl.c (duplicate_decls): Adjust.
	* name-lookup.c (anticipated_builtin_p): Adjust.
	(do_nonmember_using_decl): Likewise.

2020-10-07  Nathan Sidwell  <nathan@acm.org>

	* tree.c (build_cp_fntype_variant): Clear
	TYPE_DEPENDENT_P_VALID if necessary.

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

	PR c++/97297
	* parser.c (cp_parser_direct_declarator): When checking if a
	name is a function template declaration for the P0634R3 case,
	look in uninstantiated templates too.

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

	* cp-tree.h (NON_UNION_CLASS_TYPE_P): Fix typo in a comment.

2020-10-05  Richard Biener  <rguenther@suse.de>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/97197
	* error.c (dump_expr): Handle TARGET_MEM_REF.

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

	* name-lookup.c (maybe_add_fuzzy_decl): New.
	(maybe_add_fuzzy_binding): New.
	(consider_binding_level): Use intermediate sortable vector for
	namespace bindings.

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

	PR c++/97014
	* cxx-pretty-print.c (pp_cxx_template_argument_list): If the
	argument is template_parm_object_p, print its DECL_INITIAL.

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

	* cp-tree.h (lang_decl_base): anticipated_p is not used for
	anticipatedness.
	(DECL_ANTICIPATED): Delete.
	* decl.c (duplicate_decls): Delete DECL_ANTICIPATED_management,
	use was_hidden.
	(cxx_builtin_function): Drop DECL_ANTICIPATED setting.
	(xref_tag_1): Drop DECL_ANTICIPATED assert.
	* name-lookup.c (name_lookup::adl_class_only): Drop
	DECL_ANTICIPATED check.
	(name_lookup::search_adl): Always dedup.
	(anticipated_builtin_p): Reimplement.
	(do_pushdecl): Drop DECL_ANTICIPATED asserts & update.
	(lookup_elaborated_type_1): Drop DECL_ANTICIPATED update.
	(do_pushtag): Drop DECL_ANTICIPATED setting.
	* pt.c (push_template_decl): Likewise.
	(tsubst_friend_class): Likewise.

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

	* name-lookup.c (consider_decl): New, broken out of ...
	(consider_binding_level): ... here.  Iterate the hash table for
	namespace bindings.

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

	* cp-tree.h (base_ctor_omit_inherited_parms): Declare.
	* class.c (add_method): Refactor main loop, only pass fns to
	ctor_omit_inherited_parms.
	(build_cdtor_clones): Rename bool parms.
	(clone_cdtor): Call base_ctor_omit_inherited_parms.
	* method.c (base_ctor_omit_inherited_parms): New, broken out of
	...
	(ctor_omit_inherited_parms): ... here, call it with
	DECL_CLONED_FUNCTION.

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

	* cp-tree.h (cp_fname_init): Delete declaration.
	* decl.c (cp_fname_init): Merge into only caller ...
	(cp_make_fname): ... here & refactor.

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

	* call.c (build_operator_new_call): Set CALL_FROM_NEW_OR_DELETE_P.
	(build_op_delete_call): Likewise.
	* init.c (build_new_1, build_vec_delete_1, build_delete): Not here.
	(build_delete):

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

	* lambda.c (call_from_lambda_thunk_p): New.
	* cp-gimplify.c (cp_genericize_r): Use it.
	* pt.c (tsubst_copy_and_build): Use it.
	* typeck.c (check_return_expr): Use it.
	* cp-tree.h: Declare it.
	(CALL_FROM_NEW_OR_DELETE_P): Move to gcc/tree.h.

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

	* cp-tree.h (DECL_ANTICIPATED): Adjust comment.
	(DECL_HIDDEN_P, TYPE_HIDDEN_P): Delete.
	* tree.c (ovl_insert): Delete DECL_HIDDEN_P assert.
	(ovl_skip_hidden): Likewise.

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

	* name-lookup.c (pushdecl_top_level): Assert incoming context is
	null, add global_namespace context.
	(pushdecl_top_level_and_finish): Likewise.
	* pt.c (get_template_parm_object): Clear decl context before
	pushing.
	* semantics.c (finish_compound_literal): Likewise.

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

	* decl.c (lookup_and_check_tag): Refactor.

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

	PR c++/96994
	* call.c (build_over_call): If obj_arg is non-NULL, return INIT_EXPR
	setting obj_arg to call.

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

	PR c++/97195
	* constexpr.c (cxx_eval_call_expression): Don't VERIFY_CONSTANT the
	second argument.

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

	PR c++/90210
	* pt.c (do_class_deduction): Don't prune explicit deduction guides
	in copy-list-initialization.  In copy-list-initialization, if an
	explicit deduction guide was selected, give an error.

2020-09-30  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (struct lang_decl_fn): Remove hidden_friend_p.
	(DECL_HIDDEN_FRIEND_P): Delete.
	* call.c (add_function_candidate): Drop assert about anticipated
	decl.
	(build_new_op_1): Drop koenig lookup flagging for hidden friend.
	* decl.c (duplicate_decls): Drop HIDDEN_FRIEND_P updating.
	* name-lookup.c (do_pushdecl): Likewise.
	(set_decl_namespace): Discover hiddenness from OVL_HIDDEN_P.
	* pt.c (check_explicit_specialization): Record found_hidden
	explicitly.

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

	PR c++/94695
	* call.c (ref_conv_binds_directly_p): New function.
	* cp-tree.h (ref_conv_binds_directly_p): Declare.
	* parser.c (warn_for_range_copy): New function.
	(cp_convert_range_for): Call it.

2020-09-29  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (ovl_insert): Change final parm to hidden-or-using
	indicator.
	* name-lookup.h (HIDDEN_TYPE_BINDING_P): New.
	(struct cxx_binding): Add type_is_hidden flag.
	* tree.c (ovl_insert): Change using_p parm to using_or_hidden,
	adjust.
	(ovl_skip_hidden): Assert we never see a naked hidden decl.
	* decl.c (xref_tag_1): Delete unhiding friend from here (moved to
	lookup_elaborated_type_1).
	* name-lookup.c (STAT_TYPE_HIDDEN_P, STAT_DECL_HIDDEN_P): New.
	(name_lookup::search_namespace_only): Check new hidden markers.
	(cxx_binding_make): Clear HIDDEN_TYPE_BINDING_P.
	(update_binding): Update new hidden markers.
	(lookup_name_1): Check HIDDEN_TYPE_BINDING_P and simplify friend
	ignoring.
	(lookup_elaborated_type_1): Use new hidden markers.  Reveal the
	decl here.

2020-09-29  Nathan Sidwell  <nathan@acm.org>

	* name-lookup.c (create_local_binding): Do not clear
	INHERITED_VALUE_BINDING_P here.
	(name_lookup::process_binding): Move done hidden-decl triage to ...
	(name_lookup::search_namespace_only): ... here, its only caller.
	(cxx_binding_make): Clear flags here.
	(push_binding): Not here.
	(pop_local_binding): RAII.
	(update_binding): Refactor.
	(do_pushdecl): Assert we're never revealing a local binding.
	(do_pushdecl_with_scope): Directly call do_pushdecl.
	(get_class_binding): Do not clear LOCAL_BINDING_P here.
	* pt.c (push_template_decl): Set friend & anticipated before
	pushing.

2020-09-29  Nathan Sidwell  <nathan@acm.org>

	* name-lookup.c (update_binding): We never meet two implicit
	typedefs.
	(do_pushdecl): Adjust set_identifier_type_value_with_scope calls.
	(set_identifier_type_value_with_scope): Do not update binding in
	the namespace-case.  Assert it is already there.

2020-09-25  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (duplicate_decls): Replace 'is_friend' with 'hiding'
	and add 'was_hidden'.
	* name-lookup.h (pushdecl_namespace_level): Replace 'is_friend'
	with 'hiding'.
	(pushdecl): Likewise.
	(pushdecl_top_level): Drop is_friend parm.
	* decl.c (check_no_redeclaration_friend_default_args): Rename parm
	olddelc_hidden_p.
	(duplicate_decls): Replace 'is_friend' with 'hiding'
	and 'was_hidden'.  Do minimal adjustments in body.
	(cxx_builtin_function): Pass 'hiding' to pushdecl.
	* friend.c (do_friend): Pass 'hiding' to pushdecl.
	* name-lookup.c (supplement_binding_1): Drop defaulted arg to
	duplicate_decls.
	(update_binding): Replace 'is_friend' with 'hiding'.  Drop
	defaulted arg to duplicate_decls.
	(do_pushdecl): Replace 'is_friend' with 'hiding'.  Assert no
	surprise hidhing.  Adjust duplicate_decls calls to inform of old
	decl's hiddennes.
	(pushdecl): Replace 'is_friend' with 'hiding'.
	(set_identifier_type_value_with_scope): Adjust update_binding
	call.
	(do_pushdecl_with_scope): Replace 'is_friend' with 'hiding'.
	(pushdecl_outermost_localscope): Drop default arg to
	do_pushdecl_with_scope.
	(pushdecl_namespace_level): Replace 'is_friend' with 'hiding'.
	(pushdecl_top_level): Drop is_friend parm.
	* pt.c (register_specialization): Comment duplicate_decls call
	args.
	(push_template_decl): Commont pushdecl_namespace_level.
	(tsubst_friend_function, tsubst_friend_class): Likewise.

2020-09-25  Nathan Sidwell  <nathan@acm.org>

	* name-lookup.h (enum tag_scope): Replace with ...
	(enum class TAG_how): ... this.  Add HIDDEN_FRIEND value.
	(lookup_type_scope): Replace with ...
	(lookup_elaborated_type): ... this.
	(pushtag): Use TAG_how, not tag_scope.
	* cp-tree.h (xref_tag): Parameter is TAG_how, not tag_scope.
	* decl.c (lookup_and_check_tag): Likewise.  Adjust.
	(xref_tag_1, xref_tag): Likewise. adjust.
	(start_enum): Adjust lookup_and_check_tag call.
	* name-lookup.c (lookup_type_scope_1): Rename to ...
	(lookup_elaborated_type_1) ... here. Use TAG_how, not tag_scope.
	(lookup_type_scope): Rename to ...
	(lookup_elaborated_type): ... here.  Use TAG_how, not tag_scope.
	(do_pushtag): Use TAG_how, not tag_scope.  Adjust.
	(pushtag): Likewise.
	* parser.c (cp_parser_elaborated_type_specifier): Adjust.
	(cp_parser_class_head): Likewise.

2020-09-25  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (DECL_BUILTIN_P): New.
	* decl.c (duplicate_decls): Use it.  Do not treat omp-udr as a
	builtin.
	* name-lookup.c (anticipated_builtin): Use it.
	(set_decl_context_in_fn): Function-scope OMP UDRs have function context.
	(do_nonmember_using_decl): Use DECL_BUILTIN_P.
	* parser.c (cp_parser_omp_declare_reduction): Function-scope OMP
	UDRs have function context.  Assert we never find a valid duplicate.
	* pt.c (tsubst_expr): Function-scope OMP UDRs have function context.

2020-09-24  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (duplicate_decls): Default is_friend to false.
	(xref_tag): Default tag_scope & tpl_header_p to ts_current & false.
	(push_template_decl_real): Default is_friend to false.  Rename to
	...
	(push_template_decl): ... here.  Delete original decl.
	* name-lookup.h (pushdecl_namespace_level): Default is_friend to
	false.
	(pushtag): Default tag_scope to ts_current.
	* coroutines.cc (morph_fn_to_coro): Drop default args to xref_tag.
	* decl.c (start_decl): Drop default args to duplicate_decls.
	(start_enum): Drop default arg to pushtag & xref_tag.
	(start_preparsed_function): Pass DECL_FRIEND_P to
	push_template_decl.
	(grokmethod): Likewise.
	* friend.c (do_friend): Rename push_template_decl_real calls.
	* lambda.c (begin_lamnbda_type): Drop default args to xref_tag.
	(vla_capture_type): Likewise.
	* name-lookup.c (maybe_process_template_type_declaration): Rename
	push_template_decl_real call.
	(pushdecl_top_level_and_finish): Drop default arg to
	pushdecl_namespace_level.
	* pt.c (push_template_decl_real): Assert no surprising friend
	functions.  Rename to ...
	(push_template_decl): ... here.  Delete original function.
	(lookup_template_class_1): Drop default args from pushtag.
	(instantiate_class_template_1): Likewise.
	* ptree.c (debug_overload): Print hidden and using markers.
	* rtti.c (init_rtti_processing): Drop refault args from xref_tag.
	(build_dynamic_cast_1, tinfo_base_init): Likewise.
	* semantics.c (begin_class_definition): Drop default args to
	pushtag.

2020-09-24  Nathan Sidwell  <nathan@acm.org>

	PR c++/97186
	* pt.c (maybe_instantiate_noexcept): Local externs are never
	member fns.

2020-09-23  Nathan Sidwell  <nathan@acm.org>

	* name-lookup.h (typedef cxx_binding): Delete tdef.
	(typedef cp_binding_level): Likewise.
	(struct cxx_binding): Flags are bools.

2020-09-23  Nathan Sidwell  <nathan@acm.org>

	PR c++/97171
	* pt.c (tsubst_copy) [FUNCTION_DECL,VAR_DECL]: Retrieve local
	specialization for DECL_LOCAL_P decls.

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

	PR c++/95310
	* pt.c (corresponding_template_parameter): Define.
	(keep_template_parm): Use it to adjust the given template
	parameter to the corresponding in-scope one from ctx_parms.

2020-09-22  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (xref_tag_from_type): Don't declare.
	* decl.c (xref_tag_from_type): Delete.
	* pt.c (lookup_template_class_1): Erroneously located class
	definitions just give error_mark, don't try and inject it into the
	namespace.

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

	PR c++/97145
	* constexpr.c (cxx_eval_builtin_function_call): Return void_node for
	calls to __sanitize_ptr_{sub,cmp} builtins.

2020-09-22  Nathan Sidwell  <nathan@acm.org>

	* pt.c (instantiate_class_template_1): Do not repush and unhide
	injected friend.

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

	PR c++/90583
	DR 1722
	* lambda.c (maybe_add_lambda_conv_op): Mark the conversion function
	as noexcept.

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

	* pt.c (deduction_guides_for): Add a bool parameter.  Set it.
	(do_class_deduction): Warn when CTAD succeeds but the type doesn't
	have any explicit deduction guides.

2020-09-21  Nathan Sidwell  <nathan@acm.org>

	* decl.c (xref_tag_1): Use IDENTIFIER_LAMBDA_P to detect lambdas.
	* lambda.c (begin_lambda_type): Use ts_current to push the tag.
	* name-lookup.h (enum tag_scope): Drop ts_lambda.

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

	PR c++/97099
	* decl.c (redeclaration_error_message): Detect a redeclaration of
	deduction guides.

2020-09-19  Sandra Loosemore  <sandra@codesourcery.com>

	* cp-gimplify.c (enum bc_t, bc_label): Move to c-family.
	(begin_bc_block, finish_bc_block, get_bc_label): Likewise.
	(genericize_cp_loop): Likewise.
	(genericize_for_stmt, genericize_while_stmt): Likewise.
	(genericize_do_stmt, genericize_switch_stmt): Likewise.
	(genericize_continue_stmt, genericize_break_stmt): Likewise.
	(genericize_omp_for_stmt): Likewise.
	(cp_genericize_r): Call c_genericize_control_stmt instead of
	above functions directly.
	(cp_genericize): Call save_bc_state and restore_bc_state instead
	of manipulating bc_label directly.
	* cp-objcp-common.c (cxx_block_may_fallthru): Defer to
	c_block_may_fallthru instead of handling SWITCH_STMT here.
	(cp_common_init_ts): Move handling of loop and switch-related
	statements to c-family.
	* cp-tree.def (FOR_STMT, WHILE_STMT, DO_STMT): Move to c-family.
	(BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
	* cp-tree.h (LABEL_DECL_BREAK, LABEL_DECL_CONTINUE): Likewise.
	(WHILE_COND, WHILE_BODY): Likewise.
	(DO_COND, DO_BODY): Likewise.
	(FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY, FOR_SCOPE): Likewise.
	(SWITCH_STMT_COND, SWITCH_STMT_BODY): Likewise.
	(SWITCH_STMT_TYPE, SWITCH_STMT_SCOPE): Likewise.
	(SWITCH_STMT_ALL_CASES_P, SWITCH_STMT_NO_BREAK_P): Likewise.
	* cxx-pretty-print.c (cxx_pretty_printer::statement): Move code
	to handle structured loop and switch tree nodes to c-family.
	* dump.c (cp_dump_tree): Likewise.

2020-09-19  Patrick Palka  <ppalka@redhat.com>

	PR c++/96531
	PR c++/97103
	* constraint.cc (map_arguments): Call template_parm_to_arg
	in the self-mapping case.
	(finish_shorthand_constraint): No need to build a TREE_LIST
	before calling template_parm_to_arg.
	* pt.c (template_parm_to_arg): Rewrite to handle TEMPLATE_PARM_P
	nodes as well as DECL_TEMPLATE_PARM_P nodes, and to make the
	overlying TREE_LIST node optional.
	(keep_template_parm): Don't record a BOUND_TEMPLATE_TEMPLATE_PARM,
	instead record its corresponding TEMPLATE_TEMPLATE_PARM.
	(convert_generic_types_to_packs): Don't call
	template_parm_to_arg.

2020-09-19  Patrick Palka  <ppalka@redhat.com>

	PR c++/97051
	* constraint.cc (satisfy_atom): Pass true as the
	manifestly_const_eval argument to maybe_constant_value.

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

	PR bootstrap/97118
	* decl.c (complete_vars): Only call layout_var_decl if completing
	the type succeeded.

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

	* decl.c (complete_vars): Call layout_var_decl.

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

	PR c++/96409
	PR c++/96410
	* constraint.cc (tsubst_requires_expr): Use REQUIRES_EXPR_PARMS
	and REQUIRES_EXPR_REQS.  Use REQUIRES_EXPR_EXTRA_ARGS,
	add_extra_args and build_extra_args to defer substitution until
	we have all the template arguments.
	(finish_requires_expr): Adjust the call to build_min so that
	REQUIRES_EXPR_EXTRA_ARGS gets set to NULL_TREE.
	* cp-tree.def (REQUIRES_EXPR): Give it a third operand.
	* cp-tree.h (REQUIRES_EXPR_PARMS, REQUIRES_EXPR_REQS,
	REQUIRES_EXPR_EXTRA_ARGS): Define.
	(add_extra_args, build_extra_args): Declare.

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

	* cp-tree.h (cp_check_omp_declare_reduction): Return bool.
	* semantics.c (cp_check_omp_declare_reduction): Return true on for
	success.
	* pt.c (push_template_decl_real): OMP reductions do not get a
	template header.
	(tsubst_function_decl): Remove special casing for local decl omp
	reductions.
	(tsubst_expr): Call instantiate_body for a local omp reduction.
	(instantiate_body): Add nested_p parm, and deal with such
	instantiations.
	(instantiate_decl): Reject FUNCTION_SCOPE entities, adjust
	instantiate_body call.

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

	* pt.c (instantiate_body): Remove 'nested' var, simplify
	push_to_top logic.

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

	* pt.c (instantiate_body): New, broken out of ..
	(instantiate_decl): ... here.  Call it.

2020-09-15  Nathan Sidwell  <nathan@acm.org>

	* pt.c (push_template_decl_real): OMP reductions retain a template
	header.
	(tsubst_function_decl): Likewise.

2020-09-15  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/96668
	* cp-gimplify.c (cxx_omp_finish_clause): Add bool openacc arg.
	* cp-tree.h (cxx_omp_finish_clause): Likewise
	* semantics.c (handle_omp_for_class_iterator): Update call.

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

	* pt.c (push_template_decl_real): Use VAR_OR_FUNCTION_DECL_P.

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

	* pt.c (push_template_decl_real): Don't attach a template head to
	local externs.
	(tsubst_function_decl): Add support for headless local extern
	decls.
	(tsubst_decl): Add support for headless local extern decls.

2020-09-11  Nathan Sidwell  <nathan@acm.org>

	* decl.c (grokfndecl): Don't attach to local extern.

2020-09-11  Nathan Sidwell  <nathan@acm.org>

	* parser.c (cp_parser_objc_method_definition_list): Reimplement
	loop, make sure we pop scope.

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

	* cp-tree.h (LOOKUP_CONSTINIT): Remove.
	(LOOKUP_REWRITTEN): Adjust.
	* decl.c (duplicate_decls): Set DECL_DECLARED_CONSTINIT_P.
	(check_initializer): Use DECL_DECLARED_CONSTINIT_P instead of
	LOOKUP_CONSTINIT.
	(cp_finish_decl): Don't set DECL_DECLARED_CONSTINIT_P.  Use
	DECL_DECLARED_CONSTINIT_P instead of LOOKUP_CONSTINIT.
	(grokdeclarator): Set DECL_DECLARED_CONSTINIT_P.
	* decl2.c (grokfield): Don't handle LOOKUP_CONSTINIT.
	* parser.c (cp_parser_decomposition_declaration): Remove
	LOOKUP_CONSTINIT handling.
	(cp_parser_init_declarator): Likewise.
	* pt.c (tsubst_expr): Likewise.
	(instantiate_decl): Likewise.
	* typeck2.c (store_init_value): Use DECL_DECLARED_CONSTINIT_P instead
	of LOOKUP_CONSTINIT.

2020-09-10  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (TINFO_VAR_DECLARED_CONSTINIT): Replace with ...
	(DECL_DECLARED_CONSTINIT_P): ... this.
	* decl.c (start_decl): No need to retrofit_lang_decl for constinit
	flag.
	(cp_finish_decl): Use DECL_DECLARED_CONSTINIT_P.
	* pt.c (tsubst_decl): No need to handle constinit flag
	propagation.
	(tsubst_expr): Or here.

2020-09-10  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (DECL_LOCAL_FUNCTION_P): Rename to ...
	(DECL_LOCAL_DECL_P): ... here.  Accept both fns and vars.
	* decl.c (start_decl): Set DECL_LOCAL_DECL_P for local externs.
	(omp_declare_variant_finalize_one): Use DECL_LOCAL_DECL_P.
	(local_variable_p): Simplify.
	* name-lookup.c (set_decl_context_in_fn): Assert DECL_LOCAL_DECL_P
	is as expected.  Simplify.
	(do_pushdecl): Don't set decl_context_in_fn for friends.
	(is_local_extern): Simplify.
	* call.c (equal_functions): Use DECL_LOCAL_DECL_P.
	* parser.c (cp_parser_postfix_expression): Likewise.
	(cp_parser_omp_declare_reduction): Likewise.
	* pt.c (check_default_tmpl_args): Likewise.
	(tsubst_expr): Assert nested reduction function is local.
	(type_dependent_expression_p): Use DECL_LOCAL_DECL_P.
	* semantics.c (finish_call_expr): Likewise.

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

	PR c++/77841
	* decl.c (reshape_init): If we're initializing a char array from
	a string-literal that is enclosed in braces, unwrap it.
	* init.c (build_new_1): Don't handle string-initializers here.
	(build_new): Handle new-expression with paren-init when the
	array bound is known.  Always pass string constants to build_new_1
	enclosed in braces.  Don't handle string-initializers in any
	special way.

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

	PR c++/95164
	* decl.c (reshape_init_r): When initializing an aggregate member
	with an initializer from an initializer-list, also consider
	COMPOUND_LITERAL_P.

2020-09-09  Nathan Sidwell  <nathan@acm.org>

	* parser.c (cp_parser_omp_declare_reduction): Refactor to avoid
	code duplication.  Update DECL_TI_TEMPLATE's context.
	* pt.c (tsubst_expr): For OMP reduction function, set context to
	global_namespace before pushing.
	(tsubst_omp_udr): Assert current_function_decl, add comment about
	decl context.

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

	PR c++/96647
	* class.c (resolve_address_of_overloaded_function): Check
	constraints_satisfied_p and perform return-type deduction via
	maybe_instantiate_decl when considering non-template functions
	in the overload set.
	* cp-tree.h (maybe_instantiate_decl): Declare.
	* decl2.c (maybe_instantiate_decl): Remove static.

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

	* expr.c (mark_use): Use iloc_sentinel.

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

	PR c++/96901
	* constexpr.c (fundef_copies_table): Change type from
	hash_map<tree, tree> * to decl_tree_map *.

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

	PR c++/92812
	* cp-tree.h (do_aggregate_paren_init): Declare.
	* decl.c (do_aggregate_paren_init): New.
	(grok_reference_init): Use it.
	(check_initializer): Likewise.
	* init.c (perform_member_init): Handle initializing an array from
	a ()-list.  Use do_aggregate_paren_init.

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

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

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

	PR c++/77841
	* init.c (build_new_1): Call reshape_init.

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

	PR c++/96867
	* semantics.c (handle_omp_array_sections_1): Test
	DECL_ARRAY_PARAMETER_P only on PARM_DECLs.

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

	PR c++/93529
	* call.c (build_new_method_call_1): Use build_constructor_from_vec
	instead of build_tree_list_vec + build_constructor_from_list.
	* init.c (build_new_1): Handle new char[]{"foo"}.  Use
	build_constructor_from_vec instead of build_tree_list_vec +
	build_constructor_from_list.
	(build_new): Deduce the array size in new-expression if not
	present.  Handle ()-init.  Handle initializing an array from
	a string literal.
	* parser.c (cp_parser_new_type_id): Leave [] alone.
	(cp_parser_direct_new_declarator): Allow [].
	* pt.c (type_dependent_expression_p): In a NEW_EXPR, consider
	array types whose dimension has to be deduced type-dependent.

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

	* class.c (build_vtbl_initializer): Set exact argument of a vector
	growth function to true.
	* constraint.cc (get_mapped_args): Likewise.
	* decl.c (cp_maybe_mangle_decomp): Likewise.
	(cp_finish_decomp): Likewise.
	* parser.c (cp_parser_omp_for_loop): Likewise.
	* pt.c (canonical_type_parameter): Likewise.
	* rtti.c (get_pseudo_ti_init): Likewise.

2020-08-26  Nathan Sidwell  <nathan@acm.org>

	* decl.c (poplevel): A local-binding tree list holds the name in
	TREE_PURPOSE.
	* name-lookup.c (update_local_overload): Add id to TREE_PURPOSE.
	(lookup_name_1): Deal with local-binding error_mark_node marker.
	(op_unqualified_lookup): Return error_mark_node for 'nothing
	found'.  Retain global binding, check class binding here.
	(maybe_save_operator_binding): Reimplement to always cache a
	result.
	(push_operator_bindings): Deal with 'ignore' marker.

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

	PR c/96678
	* semantics.c (handle_omp_array_sections_1): Talk about
	array function parameter in the error message.

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

	PR c++/96721
	* cp-tree.h (build_trivial_dtor_call): Add bool argument defaulted
	to false.
	* call.c (build_trivial_dtor_call): Add NO_PTR_DEREF argument.  If
	instance is a pointer and NO_PTR_DEREF is true, clobber the pointer
	rather than what it points to.
	* semantics.c (finish_call_expr): Call build_trivial_dtor_call with
	true as NO_PTR_DEREF.

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

	PR c++/95428
	* optimize.c (populate_clone_array): Revert PR70462 change.
	(maybe_clone_body): Likewise.

2020-08-24  Nathan Sidwell  <nathan@acm.org>

	* ptree.c (debug_overload): New.

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

	DR 2369
	* cp-tree.h (push_tinst_level, push_tinst_level_loc): Declare.
	* constraint.cc (satisfy_declaration_constraints):
	Use add_outermost_template_args and push_tinst_level.
	* pt.c (add_outermost_template_args): Handle getting
	a TEMPLATE_DECL as the first argument.
	(push_tinst_level, push_tinst_level_loc): No longer static.
	(fn_type_unification): Check satisfaction before non-dependent
	conversions.

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

	* cp-tree.h (SET_TYPE_TEMPLTE_INFO): Do not deal with ALIAS templates.
	* pt.c (lookup_template_class_1): Special-case alias template
	template_info setting.

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

	PR c++/96199
	* pt.c (tsubst_aggr_type): Rewrite in C++17, too.
	(maybe_dependent_member_ref): Likewise.
	(build_deduction_guide): Re-substitute template parms.
	* cp-tree.h (struct push_nested_class_guard): New.
	* constraint.cc (get_normalized_constraints_from_decl): Use it.

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

	PR c++/96199
	* pt.c (maybe_dependent_member_ref): New.
	(tsubst_copy) [CONST_DECL]: Use it.
	[VAR_DECL]: Likewise.
	(tsubst_aggr_type): Handle nested type.

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

	* name-lookup.c (qualify_lookup): Drop lambda checking here.
	Reorder namespace & type checking.
	(lookup_name_1): Do hidden lambda checking here.

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

	* name-lookup.h (lookup_name_real, lookup_name_nonclass): Rename
	to ...
	(lookup_name): ... these new overloads.
	* name-lookup.c (identifier_type_value_1): Rename lookup_name_real
	call.
	(lookup_name_real_1): Rename to ...
	(lookup_name_1): ... here.
	(lookup_name_real): Rename to ...
	(lookup_name): ... here.  Rename lookup_name_real_1 call.
	(lookup_name_nonclass): Delete.
	* call.c (build_operator_new_call): Rename lookup_name_real call.
	(add_operator_candidates): Likewise.
	(build_op_delete_call): Rename lookup_name_nonclass call.
	* parser.c (cp_parser_lookup_name): Likewise.
	* pt.c (tsubst_friend_class, lookup_init_capture_pack): Likewise.
	(tsubst_expr): Likewise.
	* semantics.c (capture_decltype): Likewise.

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

	* cp-tree.h (LOOKUP_HIDDEN): Delete.
	(LOOKUP_PREFER_RVALUE): Adjust initializer.
	* name-lookup.h (enum class LOOK_want): Add HIDDEN_FRIEND and
	HIDDEN_LAMBDA flags.
	(lookup_name_real): Drop flags parm.
	(lookup_qualified_name): Drop find_hidden parm.
	* name-lookup.c (class name_lookup): Drop hidden field, adjust
	ctors.
	(name_lookup::add_overload): Check want for hiddenness.
	(name_lookup::process_binding): Likewise.
	(name_lookup::search_unqualified): Likewise.
	(identifier_type_value_1): Adjust lookup_name_real call.
	(set_decl_namespace): Adjust name_lookup ctor.
	(qualify_lookup): Drop flags parm, use want for hiddenness.
	(lookup_qualified_name): Drop find_hidden parm.
	(lookup_name_real_1): Drop flags parm, adjust qualify_lookup
	calls.
	(lookup_name_real): Drop flags parm.
	(lookup_name_nonclass, lookup_name): Adjust lookup_name_real
	calls.
	(lookup_type_scope_1): Adjust qualify_lookup calls.
	* call.c (build_operator_new_call): Adjust lookup_name_real call.
	(add_operator_candidates): Likewise.
	* coroutines.cc (morph_fn_to_coro): Adjust lookup_qualified_name
	call.
	* parser.c (cp_parser_lookup_name): Adjust lookup_name_real calls.
	* pt.c (check_explicit_specialization): Adjust
	lookup_qualified_name call.
	(deduction_guides_for): Likewise.
	(tsubst_friend_class): Adjust lookup_name_real call.
	(lookup_init_capture_pack): Likewise.
	(tsubst_expr): Likewise, don't look in namespaces.
	* semantics.c (capture_decltype): Adjust lookup_name_real.  Don't
	look in namespaces.

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

	PR c++/90254
	PR c++/93711
	* cp-tree.h (unsafe_return_slot_p): Declare.
	* call.c (is_base_field_ref): Rename to unsafe_return_slot_p.
	(build_over_call): Check unsafe_return_slot_p.
	(build_special_member_call): Likewise.
	* init.c (expand_default_init): Likewise.
	* typeck2.c (split_nonconstant_init_1): Likewise.

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

	* cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES)
	(LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY)
	(LOOKUP_QUALIFIERS_ONL): Delete.
	(LOOKUP_HIDDEN): Adjust.
	* name-lookup.h (enum class LOOK_want): New.
	(operator|, operator&): Overloads for it.
	(lookup_name_real): Replace prefer_type & namespaces_only with
	LOOK_want parm.
	(lookup_qualified_name): Replace prefer_type with LOOK_want.
	(lookup_name_prefer_type): Replace with ...
	(lookup_name): ... this.  New overload with LOOK_want parm.
	* name-lookup.c (struct name_lookup): Replace flags with want and
	hidden fields.  Adjust constructors.
	(name_lookyp::add_overload): Correct hidden stripping test.  Update
	for new LOOK_want type.
	(name_lookup::process_binding): Likewise.
	(name_lookup::search_unqualified): Use hidden flag.
	(identifier_type_value_1): Adjust lookup_name_real call.
	(set_decl_namespace): Adjust name_lookup ctor.
	(lookup_flags): Delete.
	(qualify_lookup): Add LOOK_want parm, adjust.
	(lookup_qualified_name): Replace prefer_type parm with LOOK_want.
	(lookup_name_real_1): Replace prefer_type and namespaces_only with
	LOOK_want parm.
	(lookup_name_real): Likewise.
	(lookup_name_nonclass, lookup_name): Adjust lookup_name_real call.
	(lookup_name_prefer_type): Rename to ...
	(lookup_name): ... here.  New overload with LOOK_want parm.
	(lookup_type_scope_1): Adjust qualify_lookup calls.
	* call.c (build_operator_new_call)
	(add_operator_candidates): Adjust lookup_name_real calls.
	* coroutines.cc (find_coro_traits_template_decl)
	(find_coro_handle_template_decl, morph_fn_to_coro): Adjust
	lookup_qualified_name calls.
	* cp-objcp-common.c (identifier_global_tag): Likewise.
	* decl.c (get_tuple_size, get_tuple_decomp_init): Likewise.
	(lookup_and_check_tag): Use lookup_name overload.
	* parser.c (cp_parser_userdef_numeric_literal): Adjust
	lookup_qualified_name call.
	(prefer_arg_type): Drop template_mem_access parm, return LOOK_want
	value.
	(cp_parser_lookup_name): Adjust lookup_member, lookup_name_real
	calls.
	* pt.c (check_explicit_specialization): Adjust lookup_qualified_name
	call.
	(tsubst_copy_and_build, tsubst_qualified_name): Likewise
	(deduction_guides_for): Likewise.
	(tsubst_friend_class): Adjust lookup_name_real call.
	(lookup_init_capture, tsubst_expr): Likewise.
	* rtti.c (emit_support_tinfos): Adjust lookup_qualified_name call.
	* semantics.c (omp_reduction_lookup): Likewise.
	(capture_decltype): Adjust lookup_name_real call.

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

	* name-lookup.h (enum class LOOK_where): New.
	(operator|, operator&): Overloads for it.
	(lookup_name_real): Replace NONCLASS & BLOCK_P parms with WHERE.
	* name-lookup.c (identifier_type_value_w): Adjust
	lookup_name_real call.
	(lookup_name_real_1): Replace NONCLASS and BLOCK_P parameters
	with WHERE bitmask. Don't search namespaces if not asked to.
	(lookup_name_real): Adjust lookup_name_real_1 call.
	(lookup_name_nonclass, lookup_name)
	(lookup_name_prefer_type): Likewise.
	* call.c (build_operator_new_call)
	(add_operator_candidates): Adjust lookup_name_real calls.
	* parser.c (cp_parser_lookup_name): Likewise.
	* pt.c (tsubst_friend_class, lookup_init_capture_pack)
	(tsubst_expr): Likewise.
	* semantics.c (capture_decltype): Likewise.

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

	PR c++/92812
	* typeck.c (build_static_cast_1): Implement P1975R0 by allowing
	static_cast to aggregate type.

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

	PR c++/96497
	* constexpr.c (cxx_eval_binary_expression): For SPACESHIP_EXPR, tail
	call cxx_eval_constant_expression after genericize_spaceship to avoid
	undesirable further VERIFY_CONSTANT.

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

	* pt.c (resolve_overloaded_unification): Drop functions with
	unsatisfied constraints.
	(resolve_nondeduced_context): Likewise.

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

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

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

	PR c++/96082
	* parser.c (cp_parser_elaborated_type_specifier): Allow
	'template' following ::.

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

	* parser.c (cp_parser_explicit_specialization): Refactor
	to avoid leak of num_template_parameter_lists value.

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

	PR c++/94024
	* init.c (sort_mem_initializers): Preserve TREE_TYPE of the
	member initializer list node.
	(emit_mem_initializers): Set input_location when performing each
	member initialization.
	* parser.c (cp_parser_mem_initializer): Attach the source
	location of this initializer to a dummy EMPTY_CLASS_EXPR
	within the TREE_TYPE of the list node.
	* pt.c (tsubst_initializer_list): Preserve TREE_TYPE of the
	member initializer list node.

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

	* cp-tree.h (after_nsdmi_defaulted_late_checks): Remove.

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

	DR 2032
	PR c++/96218
	* pt.c (check_default_tmpl_args): Also consider variable
	templates.

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

	PR c++/96182
	* decl.c (finish_function): In constexpr functions use for C++14 and
	later error instead of warning if no return statement is present and
	diagnose it regardless of warn_return_type.  Move the warn_return_type
	diagnostics earlier in the function.

2020-07-31  Martin Sebor  <msebor@redhat.com>

	PR c++/96003
	* class.c (build_base_path): Set no-warning bit on the synthesized
	conditional expression in static_cast.

2020-07-31  Richard Biener  <rguenther@suse.de>

	PR debug/96383
	* cp-objcp-common.h (LANG_HOOKS_FINALIZE_EARLY_DEBUG):
	Define to c_common_finalize_early_debug.

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

	PR c++/96197
	* constexpr.c (cxx_eval_constant_expression) <case CONST_DECL>:
	Pass false to decl_constant_value and decl_really_constant_value
	so that they don't unshare their result.
	* cp-tree.h (decl_constant_value): New declaration with an added
	bool parameter.
	(decl_really_constant_value): Add bool parameter defaulting to
	true to existing declaration.
	* init.c (constant_value_1): Add bool parameter which controls
	whether to unshare the initializer before returning.  Call
	unshare_expr at most once.
	(scalar_constant_value): Pass true to constant_value_1's new
	bool parameter.
	(decl_really_constant_value): Add bool parameter and forward it
	to constant_value_1.
	(decl_constant_value): Likewise, but instead define a new
	overload with an added bool parameter.

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

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

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

	PR c++/95486
	* pt.c (alias_ctad_tweaks): Call remove_constraints before
	calling set_constraints.

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

	PR c++/96106
	* pt.c (reduce_template_parm_level): Propagate DECL_VIRTUAL_P
	from the original TEMPLATE_PARM_DECL to the new lowered one.

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

	PR c++/96164
	* constraint.cc (constraints_satisfied_p): Return true if
	!flags_concepts.
	* pt.c (do_type_instantiation): Update a paragraph taken from
	[temp.explicit] to reflect the latest specification.  Don't
	instantiate a member with unsatisfied constraints.

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

	PR c++/91427
	* cp-tree.h (IMPLICIT_RVALUE_P): New.
	(enum cp_lvalue_kind_flags): Add clk_implicit_rval.
	(implicit_rvalue_p, set_implicit_rvalue_p): New.
	* call.c (reference_binding): Check clk_implicit_rval.
	(build_over_call): Adjust C++20 implicit move.
	* coroutines.cc (finish_co_return_stmt): Simplify implicit move.
	* except.c (build_throw): Adjust C++20 implicit move.
	* pt.c (tsubst_copy_and_build) [STATIC_CAST_EXPR]: Propagate
	IMPLICIT_RVALUE_P.
	* tree.c (lvalue_kind): Set clk_implicit_rval.
	* typeck.c (treat_lvalue_as_rvalue_p): Overhaul.
	(maybe_warn_pessimizing_move): Adjust.
	(check_return_expr): Adjust C++20 implicit move.

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

	PR c++/91212
	* call.c (build_over_call): Don't call a const ref
	overload for implicit move.

2020-07-28  Nathan Sidwell  <nathan@acm.org>

	* cp-gimplify.c (cp_genericize_r): Set IMPORTED_DECL's context.
	* cp-objcp-common.c (cp_pushdecl): Set decl's context.
	* decl.c (grokfndecl): Make DECL_CONTEXT setting clearer.

2020-07-28  Nathan Sidwell  <nathan@acm.org>

	* class.c (fixup_type_variants): Copy TYPE_SIZE and
	TYPE_SIZE_UINIT.
	(finish_struct): Call it.

2020-07-28  Nathan Sidwell  <nathan@acm.org>

	* ptree.c (cxx_print_decl): Better indentation.

2020-07-28  Jakub Jelinek  <jakub@redhat.com>
	    Mark Wielaard  <mark@klomp.org>

	PR c++/96328
	* parser.c (cp_lexer_safe_previous_token): Don't call
	cp_lexer_previous_token, instead inline it by hand and return NULL
	instead of failing assertion if all previous tokens until the first
	one are purged.
	(cp_parser_error_1): Optimize - only call cp_lexer_safe_previous_token
	if token->type is CPP_NAME.  Use cp_lexer_safe_previous_token instead
	of cp_lexer_previous_token for the missing_token_desc != RT_NONE
	case too.

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

	* cp-tree.h (enum cp_tree_index): Add CPTI_AS_BASE_IDENTIFIER.
	(as_base_identifier): Define.
	* decl.c (initialize_predifined_identifiers): Initialize as_base
	identifier.
	* class.c (layout_class_type): Name the as-base type.  Zap
	NSDMI its fields may have.

2020-07-22  Nathan Sidwell  <nathan@acm.org>

	* class.c (maybe_add_class_template_decl_list): Don't add CONST_DECLs.

2020-07-22  Nathan Sidwell  <nathan@acm.org>

	* typeck.c (structural_comptypes): [DECLTYPE_TYPE] break
	apart complex if.
	[UNDERLYING_TYPE]: Use an if.
	[TYPEOF_TYPE]: New.

2020-07-22  Nathan Sidwell  <nathan@acm.org>

	* decl.c (decls_match): Move variables into scopes
	they're needed in.
	(duplicate_decls): Use STRIP_TEMPLATE.
	(build_typename_type): Move var decls to their assignments.
	(begin_function_body): Likewise.
	* decl2.c (get_guard): Likewise.
	(mark_used): Use true for truthiness.
	* error.c (dump_aggr_type): Hold the decl in a var called
	'decl', not 'name'.

2020-07-22  Nathan Sidwell  <nathan@acm.org>

	* cp-tree.h (struct tree_lambda_expr): Shrink
	default_capture_mode & discriminator.

2020-07-22  Nathan Sidwell  <nathan@acm.org>

	* mangle.c (decl_is_template_id): Rename to ...
	(maybe_template_info): ... here.  Return the template info,
	rather than use a pointer.  Adjust all callers.
	(find_substitution): Use template_args_equal, rather than
	local check.

2020-07-22  Tobias Burnus  <tobias@codesourcery.com>

	* parser.c (cp_parser_omp_clause_hint): Require nonnegative hint.
	(cp_parser_omp_critical): Permit hint(0) clause without named critical.
	* pt.c (tsubst_expr): Re-check the latter for templates.

2020-07-21  Sunil K Pandey  <skpgkp2@gmail.com>

	PR target/95237
	* decl.c (cp_finish_decl): Call target hook
	lower_local_decl_alignment to lower local decl alignment.

2020-07-21  Nathan Sidwell  <nathan@acm.org>

	* parser.c (cp_lexer_consume_token): Drop PRAGMA_EOL assert.
	(cp_parser_skip_to_closing_parenthesis_1): Only pass start token
	to pragma skipper if recovering.
	(cp_parser_skip_to_pragma_eol): Only purge and change pragma
	state when recovering.

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

	* pt.c (type_dependent_expression_p): A pseudo-dtor can be
	dependent.
	* semantics.c (finish_call_expr): Use build_trivial_dtor_call for
	pseudo-destructor.
	(finish_pseudo_destructor_expr): Leave type NULL for dependent arg.

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

	* mangle.c (write_base_ref): New.
	(write_expression): Use it for base field COMPONENT_REFs.
	* pt.c (invalid_tparm_referent_p): Canonicalize the type
	of array offsets.  Allow subobjects.

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

	* pt.c (collect_ctor_idx_types): Add 'const' when deducing from
	a string constant.

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

	PR c++/79815
	* decl.c (grokdeclarator): Detect cv-qual decltype(auto).
	* pt.c (do_auto_deduction): Likewise.

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

	PR c++/95591
	PR c++/95599
	PR c++/95823
	PR c++/95824
	PR c++/95895
	* coroutines.cc (struct coro_ret_data): Delete.
	(coro_maybe_expand_co_return): Delete.
	(co_return_expander): Delete.
	(expand_co_returns): Delete.
	(co_await_find_in_subtree): Remove unused name.
	(build_actor_fn): Remove unused parm, remove handling
	for co_return expansion.
	(register_await_info): Demote duplicate info message to a
	warning.
	(coro_make_frame_entry): Move closer to use site.
	(struct susp_frame_data): Add fields for final suspend label
	and a flag to indicate await expressions with initializers.
	(captures_temporary): Delete.
	(register_awaits): Remove unused code, update comments.
	(find_any_await): New.
	(tmp_target_expr_p): New.
	(struct interesting): New.
	(find_interesting_subtree): New.
	(struct var_nest_node): New.
	(flatten_await_stmt): New.
	(handle_nested_conditionals): New.
	(process_conditional): New.
	(replace_statement_captures): Rename to...
	(maybe_promote_temps): ... this.
	(maybe_promote_captured_temps): Delete.
	(analyze_expression_awaits): Check for await expressions with
	initializers.  Simplify handling for truth-and/or-if.
	(expand_one_truth_if): Simplify (map cases that need expansion
	to COND_EXPR).
	(await_statement_walker): Handle CO_RETURN_EXPR. Simplify the
	handling for truth-and/or-if expressions.
	(register_local_var_uses): Ensure that we create names in the
	implementation namespace.
	(morph_fn_to_coro): Add final suspend label to suspend frame
	callback data and remove it from the build_actor_fn call.

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

	* call.c (convert_like): Remove macro and introduce a new
	wrapper instead.
	(convert_like_with_context): Likewise.
	(convert_like_real): Rename to convert_like.
	(convert_like_real_1): Rename to convert_like_internal.  Call
	convert_like instead of convert_like_real therein.
	(perform_direct_initialization_if_possible): Call convert_like
	instead of convert_like_real.

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

	* coroutines.cc: Correct some spelling errors
	in comments.

2020-07-15  Nathan Sidwell  <nathan@acm.org>

	* parser.c (cp_parser_declaration): Avoid copying tokens.
	(cp_parser_block_declaration): RAII token pointer.

2020-07-15  Nathan Sidwell  <nathan@acm.org>

	* parser.c (cp_parser_skip_to_closing_parenthesis_1): Deal with
	meeting a deferred pragma.
	(cp_parser_skip_to_end_of_statement): Likewise.
	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
	(cp_parser_skip_to_pragma_eol): We should never meet EOF.
	(cp_parser_omp_declare_simd): Likewise.
	(cp_parser_omp_declare_reduction, cp_parser_oacc_routine)
	(pragma_lex): Likewise.

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

	PR c++/95789
	PR c++/96104
	PR c++/96179
	* call.c (convert_like_real_1): Renamed from convert_like_real.
	(convert_like_real): New wrapper for convert_like_real_1.

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

	* parser.c (cp_lexer_alloc): Do not deal with PCH here.
	(cp_lexer_new_main): Deal with PCH here.  Store the tokens directly
	into the buffer.
	(cp_lexer_new_from_tokens): Assert last token isn't purged either.
	(cp_lexer_get_preprocessor_token): Change first arg to flags, adjust.
	(cp_parser_new): Pass the lexer in, don't create it here.
	(cp_parser_translation_unit): Initialize access checks here.
	(cp_parser_initial_pragma): First token is provided by caller,
	don't deal with PCH stopping here.  Adjust error message.
	(c_parse_file): Adjust, change error message to avoid C++20 module
	confusion.

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

	* ptree.c (cxx_print_type): Add TYPEOF_TYPE and BASES.

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

	* class.c (build_base_field_1): Cache CLASSTYPE_AS_BASE.
	(build_self_reference): Rename value -> decl.
	(dump_class_hierarchy_1): Cache CLASSTYPE_AS_BASE.

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

	PR c++/95820
	* decl.c (grokdeclarator) <case cdk_function>: Check also
	pointers/references/... to functions.

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

	* cp-tree.h: Correct some tree lang flag comments,
	reformat some structure definitions.  Note some structure
	sizes.  Clarify some comments.
	(yyungetc): Delete.  Not been a thing for some time.
	* class.c (copy_fndecl_with_name): Comment.
	(check_bases_and_members): Unnecessary {}.
	(layout_class_type): Comment.
	* cp-tree.def (UNBOUND_CLASS_TEMPLATE): Adjust comment.
	* decl.c:  Fix some formatting & whitespace issues.
	(function_requirements_equivalent_p): Note why
	substitutions are needed.
	* decl2.c (no_linkage_error): Note that heroics about
	'typedef struct { ... };' are no longer needed.
	* method.c: Whitespace.
	* name-lookup.c: Whitespace.
	(add_decl_to_level): Reformat a line.
	(print_binding_stack): Mark as DEBUG_FUNCTION.
	(has_using_namespace_std_directive_p): Delete comment.
	* pt.c: Whitespace
	* ptree.c: Whitespace.
	* rtti.c: Whitespace & comment.
	* tree.c: Comment.
	* typeck.c (structural_comptypes): Add comment.

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

	* Make-lang.in (c++.disclean): Likewise.

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

	PR c++/96077
	* parser.c (cp_parser_enum_specifier): Commit to tentative parse
	after we've seen an opening brace.

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

	* tree.c (structural_type_p): Allow unions.
	* mangle.c (write_expression): Express unions with a designator.

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

	* pt.c (convert_nontype_argument): Handle REAL_TYPE.
	(invalid_nontype_parm_type_p): Allow all structural types.
	* tree.c (structural_type_p): Use SCALAR_TYPE_P.

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

	PR c++/96105
	PR c++/96052
	PR c++/95976
	* class.c (check_field_decls): An array of empty classes is not an
	empty data member.
	(layout_empty_base_or_field): Handle explicit alignment.
	Fix union handling.

2020-07-09  Julian Brown  <julian@codesourcery.com>
	    Thomas Schwinge  <thomas@codesourcery.com>

	PR middle-end/95270
	* semantics.c (finish_omp_clauses): Likewise.

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

	PR c++/96132
	* constexpr.c (potential_constant_expression_1) <case PARM_DECL>:
	Restore dependent_type_p check that guarded the call to
	is_really_empty_class.

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

	PR c++/95497
	* constexpr.c (potential_constant_expression_1) <case PARM_DECL>:
	When processing_template_decl, check COMPLETE_TYPE_P before
	calling is_really_empty_class.  Don't check dependent_type_p.

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

	PR c++/96103
	* parser.c (cp_parser_decltype): Print error about using decltype(auto)
	in C++11.  Check that the token following "auto" is ")".

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

	PR c++/95303
	* cxx-pretty-print.c (pp_cxx_unqualified_id): Check
	PRIMARY_TEMPLATE_P before printing the innermost template
	arguments.

2020-07-07  Martin Sebor  <msebor@redhat.com>

	PR c++/96063
	* parser.c (class_decl_loc_t::diag_mismatched_tags): Print notes only
	if warning_at returns nonzero.

2020-07-06  Martin Sebor  <msebor@redhat.com>

	PR c++/95984
	* call.c (build_over_call): Check calls only when tf_warning is set.

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

	* decl.c (push_library_fn): Return the decl pushdecl_toplevel returns.
	* except.c (verify_library_fn): Replace with ...
	(declare_library_fn_1): ... this fn.  Always push the fn.
	(declare_library_fn): Call it.
	(build_throw): Call declare_library_fn_1.

2020-07-06  Jonathan Wakely  <jwakely@redhat.com>

	PR c++/96068
	* parser.c (cp_parser_toplevel_declaration): Only do pedwarn for
	empty-declaration in C++98.

2020-07-02  Jason Merrill  <jason@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* decl.c (grokfndecl): Allow consteval virtual.
	* search.c (check_final_overrider): Check consteval mismatch.
	* constexpr.c (cxx_eval_thunk_call): New.
	(cxx_eval_call_expression): Call it.
	* cvt.c (cp_get_fndecl_from_callee): Handle FDESC_EXPR.
	* decl2.c (mark_vtable_entries): Track vtables with consteval.
	(maybe_emit_vtables): Pass consteval_vtables through.
	(clear_consteval_vfns): Replace consteval with nullptr.
	(c_parse_final_cleanups): Call it.

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

	* class.c (copy_fndecl_with_name): Add additional predicate args, do
	not deduce them locally.
	(copy_operator_fn): Adjust copy_fndecl_with_name call.
	(build_clone): Add vtt and inherited predicate args.  Pass through
	to copy_fndecl_with_name call.
	(build_cdtor_clones): Likewise, pass through to build_clone as
	needed.
	(build_cdtor): Determine vtt and inherited here.
	* cp-tree.h (DECL_NEEDS_CTT_PARM_P): Delete.

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

	* cp-tree.h (copy_fndecl_with_name): Rename to ...
	(copy_operatorn_fn): ... this.  Change arg type.
	(clone_function_decl): Rename to ...
	(clone_cdtor): ... this.
	* class.c (copy_fndecl_with_name): Make static.
	(copy_operator_fn): New wrapper.
	(build_clones): Rename to ...
	(build_cdtor_clones): ... this.
	(clone_function_decl): Rename to ...
	(clone_cdtor): ... this.  Adjust build_clones calls.
	(clone_constructors_and_destructors): Adjust clone_function_decl
	calls.
	* method.c (implicitly_declare_fn): Adjust copy_fndecl_with_name
	call.
	(lazily_declare_fn): Adjust clone_function_decl call.
	* pt.c (tsubst_function_decl): Likewise.
	(instantiate_template_1): Likewise.

2020-06-30  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (morph_fn_to_coro): Remove trailing
	space in a diagnostic.

2020-06-30  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (expand_one_await_expression): Remove
	code dealing with initial suspend.
	(build_actor_fn): Remove code special-casing initial
	and final suspend. Handle the final suspend and marking
	of the coroutine as done.
	(coro_rewrite_function_body): New.
	(bind_expr_find_in_subtree): Remove.
	(coro_body_contains_bind_expr_p): Remove.
	(morph_fn_to_coro): Split the rewrite of the original
	function into coro_rewrite_function_body and call it.

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

	PR c++/94553
	* decl.c (duplicate_decls): Make sure a concept or a variable
	template is unique in its declarative region.

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

	PR c++/95568
	* pt.c (collect_ctor_idx_types): Use TREE_TYPE.

2020-06-28  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95711
	* coroutines.cc (register_local_var_uses): Skip past
	namespace decls.

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

	PR c++/95736
	* coroutines.cc (get_awaitable_var): New helper.
	(build_co_await): Check more carefully before
	copying an awaitable.
	(expand_one_await_expression): No initializer
	is required when the awaitable is not a temp.
	(register_awaits): Remove handling that is now
	completed when the await expression is built.

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

	* coroutines.cc (morph_fn_to_coro): Diagnose unavailable
	get_return_object_on_allocation_failure.

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

	PR c++/95519
	* coroutines.cc (struct coroutine_info):Add a field
	to hold computed p.return_void expressions.
	(coro_build_promise_expression): New.
	(get_coroutine_return_void_expr): New.
	(finish_co_yield_expr): Build the promise expression
	using coro_build_promise_expression.
	(finish_co_return_stmt): Likewise.
	(build_init_or_final_await): Likewise.
	(morph_fn_to_coro): Likewise, for several cases.

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

	* coroutines.cc (morph_fn_to_coro): Handle error
	returns in building g-r-o-o-a-f expressions.

2020-06-24  Nicholas Krause  <xerofoify@gmail.com>

	PR c++/95672
	* typeck2.c (cxx_incomplete_type_diagnostic): Add missing
	TYPE_EXPANSION_PACK check for diagnosing incomplete types in
	cxx_incomplete_type_diagnostic.

2020-06-24  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95518
	PR c++/95813
	* coroutines.cc (act_des_fn): Copy function
	attributes onto the outlined coroutine helpers.

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

	* call.c (build_over_call): Only call build_base_path once.

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

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

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

	PR c++/93976
	Implement C++20 P2082R1, Fixing CTAD for aggregates.
	* cp-tree.h (TPARMS_PRIMARY_TEMPLATE): Split out from...
	(DECL_PRIMARY_TEMPLATE): ...here.
	(builtin_guide_p): Declare.
	* decl.c (reshape_init_class): Handle bases of a template.
	(reshape_init_r): An array with dependent bound takes a single
	initializer.
	* pt.c (tsubst_default_argument): Shortcut {}.
	(unify_pack_expansion): Allow omitted arguments to trailing pack.
	(builtin_guide_p): New.
	(collect_ctor_idx_types): Give a trailing pack a {} default
	argument.  Handle arrays better.

2020-06-23  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95477
	* coroutines.cc (morph_fn_to_coro): Apply a cleanup to
	the get return object when the DTOR is non-trivial.

2020-06-20  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95505
	* coroutines.cc (morph_fn_to_coro): Update handling of
	get-return-object-on-allocation-fail and diagnose missing
	std::nothrow.

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

	* call.c (joust): Only compare constraints for non-template
	candidates with matching parameters.
	* pt.c (tsubst_pack_expansion): Fix getting a type parameter
	pack.
	(more_specialized_fn): Only compare constraints for candidates with
	matching parameters.

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

	* method.c (early_check_defaulted_comparison): Allow defaulting
	comparison outside class.  Complain if non-member operator isn't a
	friend.

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

	* method.c (early_check_defaulted_comparison): Check for &&.
	(build_comparison_op): Allow empty union.  Diagnose non-category
	type.
	(common_comparison_type): Remove handling for non-category type.

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

	PR c++/95735
	* pt.c (finish_template_variable): Return if
	coerce_innermost_template_parms return error_mark_node.

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

	PR c++/95728
	* pt.c (tsubst_copy_and_build) <case NEW_EXPR>: Return error_mark_node
	if placement is erroneous.

2020-06-17  Jonathan Wakely  <jwakely@redhat.com>

	PR c++/66159
	* parser.c (cp_parser_elaborated_type_specifier): Do not warn
	unless in a declaration.

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

	* cp-tree.h (copy_fndecl_with_name): Declare.
	* class.c (copy_fndecl_with_name): Split out from...
	(build_clone): ...here.
	(add_implicitly_declared_members): Add op== to TYPE_FIELDS.
	* method.c (implicitly_declare_fn): Use copy_fndecl_with_name.

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

	* call.c (build_new_op_1): Don't look for a CALL_EXPR when
	calling a consteval function.

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

	* decl2.c (grokfield): Pass SD_DEFAULTED and SD_DELETED.
	* decl.c (duplicate_decls): Reduce error for delete
	after earlier declaration to pedwarn.

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

	PR c++/95508
	* constexpr.c (maybe_fold_non_dependent_expr): New.
	* cp-tree.h (maybe_fold_non_dependent_expr): Declare.
	* typeck.c (cp_build_array_ref): Call maybe_fold_non_dependent_expr
	instead of maybe_constant_value.

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

	PR c++/95369
	* call.c (add_list_candidates): Return if a designated initializer
	is used with a non-aggregate.
	(implicit_conversion_error): Give an error for the case above.

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

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

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

	* semantics.c (handle_omp_for_class_iterator): Adjust
	c_omp_check_loop_iv_exprs caller.
	(finish_omp_for): Likewise.  Don't call fold_build_cleanup_point_expr
	before calling c_finish_omp_for and c_omp_check_loop_iv, move it
	after those calls.
	* pt.c (tsubst_omp_for_iterator): Handle non-rectangular loops.

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

	* parser.c (cp_parser_omp_clause_schedule): Reject modifier separated
	from kind by comma rather than colon.

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

	* pt.c (perform_instantiation_time_access_checks): No need to
	tsubst into decl.
	* semantics.c (enforce_access): Verify that decl is not
	dependent.

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

	PR c++/41437
	PR c++/47346
	* cp-tree.h (qualified_typedef_usage_s): Delete.
	(qualified_typedef_usage_t): Delete.
	(deferred_access_check): Move up in file.
	(tree_template_info::typedefs_needing_access_checking): Delete.
	(tree_template_info::deferred_access_checks): New field.
	(TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): Rename to ...
	(TI_DEFERRED_ACCESS_CHECKS): ... this, and adjust accordingly.
	* pt.c (perform_typedefs_access_check): Rename to ...
	(perform_instantiation_time_access_checks): ... this, and adjust
	accordingly.  Remove unnecessary tree tests.
	(instantiate_class_template_1): Adjust accordingly.
	(instantiate_decl): Likewise.
	* semantics.c (enforce_access): Likewise.

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

	PR c++/41437
	PR c++/47346
	* call.c (enforce_access): Move to semantics.c.
	* cp-tree.h (enforce_access): Delete.
	(get_types_needing_access_check): Delete.
	(add_typedef_to_current_template_for_access_check): Delete.
	* decl.c (make_typename_type): Adjust accordingly.  Use
	check_accessibility_of_qualified_id instead of directly using
	perform_or_defer_access_check.
	* parser.c (cp_parser_template_declaration_after_parameters):
	Don't push a dk_no_check access state when parsing a template.
	* pt.c (get_types_needing_access_check): Delete.
	(append_type_to_template_for_access_check_1): Delete.
	(perform_typedefs_access_check): Adjust.  If type_decl is a
	FIELD_DECL, also check its DECL_CONTEXT for dependence. Use
	tsubst_copy instead of tsubst to substitute into type_decl so
	that we substitute into the DECL_CONTEXT of a FIELD_DECL.
	(append_type_to_template_for_access_check): Delete.
	* search.c (accessible_p): Remove the processing_template_decl
	early exit.
	* semantics.c (enforce_access): Moved from call.c.  If we're
	parsing a template and the access check failed, add the check to
	TI_TYPEDEFS_NEEDING_ACCESS_CHECKING.
	(perform_or_defer_access_check): Adjust comment.
	(add_typedef_to_current_template_for_access_check): Delete.
	(check_accessibility_of_qualified_id):  Adjust accordingly.
	Exit early if the scope is dependent.

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

	PR c++/93467
	* constraint.cc (associate_classtype_constraints): If there is a
	discrepancy between the current template depth and the template
	depth of the original declaration, then adjust the template
	parameter depth within the current constraints appropriately.
	* pt.c (tsubst_friend_class): Substitute into and set the
	constraints on the injected declaration.

2020-06-11  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (instantiate_coro_traits): Pass a reference
	to lambda closure objects to traits instantiation.
	(morph_fn_to_coro): Likewise for promise parameter
	preview and allocator lookup.

2020-06-10  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95440
	* call.c (add_candidates): Use vec_safe_length() for
	testing the arguments list.
	(build_new_method_call_1): Use vec_safe_is_empty() when
	checking for an empty args list.

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

	PR c++/95562
	* parser.c (cp_parser_direct_declarator): Clear
	CP_PARSER_FLAGS_DELAY_NOEXCEPT if the declarator kind is not
	cdk_id.

2020-06-09  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95137
	* coroutines.cc (expand_one_await_expression): Build separate
	DTOR trees for the awaitable object on the destroy and resume
	paths.

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

	PR c++/95552
	* cp-gimplify.c (predeclare_vla): Only predeclare a VLA if it's
	wrapped in a pointer type.

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

	PR c++/95369
	* call.c (build_converted_constant_expr_internal): Allow
	list-initialization.

2020-06-05  Iain Sandoe  <iain@sandoe.co.uk>

	* cp-tree.def (CO_RETURN_EXPR): Correct the class
	to use tcc_statement.

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

	* error.c (dump_binary_op): Handle negative operand to
	POINTER_PLUS_EXPR.

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

	PR c++/93310
	* constexpr.c (cxx_eval_constant_expression) [OBJ_TYPE_REF]:
	Evaluate OBJ_TYPE_REF_EXPR.

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

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

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

	PR c++/95346
	* coroutines.cc (morph_fn_to_coro): Ensure that the get-
	return-object is constructed correctly; When it is not the
	final return value, pass it to the CTOR of the return type
	as an rvalue, per the standard comment.

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

	PR c++/82304
	PR c++/95307
	* constexpr.c (cxx_eval_constant_expression): Diagnose CONVERT_EXPR
	conversions from pointer types to arithmetic types here...
	(cxx_eval_outermost_constant_expr): ... instead of here.

2020-06-03  Mark Wielaard  <mark@klomp.org>

	* parser.c (cp_lexer_safe_previous_token): New function.
	(cp_parser_error_1): Add name_hint if the previous token is
	a string literal and next token is a CPP_NAME and we have a
	missing header suggestion for the name.

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

	* pt.c (process_partial_specialization): Pass the full set of
	generic template arguments to strictly_subsumes.

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

	PR c++/92103
	* pt.c (most_specialized_partial_spec): Reorganize the loop over
	DECL_TEMPLATE_SPECIALIZATIONS.  Check constraints_satisfied_p on
	the original template declaration, not on the tsubsted one.

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

	PR c++/95345
	* coroutines.cc (finish_co_await_expr): Revise to allow for
	parameter packs.
	(finish_co_yield_expr): Likewise.

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

	PR c++/95232
	* cp-tree.h (predeclare_vla): Declare.
	* cp-gimplify.c (predeclare_vla): Handle getting a decl.
	* pt.c (tsubst_expr) [DECL_EXPR]: Use it.

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

	* cp-gimplify.c (cxx_omp_predetermined_mapping): New.
	* cp-objcp-common.h (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Redfine.
	* cp-tree.h (cxx_omp_predetermined_mapping): Declare.

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

	PR c++/95193
	* pt.c (tsubst_decl): Relax assert.

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

	PR c++/95050
	* coroutines.cc (build_co_await): Wrap the co_await expression
	in a TARGET_EXPR, where needed.
	(finish_co_yield_expr): Likewise.

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

	PR c++/92633
	PR c++/92838
	* pt.c (tsubst_function_decl): Don't do set_constraints when
	regenerating a lambda.
	(tsubst_lambda_expr): Substitute into the lambda's constraints
	and do set_constraints here.

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

	PR c++/95466
	PR c++/95311
	PR c++/95221
	* class.c (build_vfn_ref): Revert 95311 change.
	* cp-ubsan.c (cp_ubsan_maybe_instrument_member_call): Build a
	COMPOUND_EXPR.

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

	PR c++/95350
	* coroutines.cc (struct param_info): Remove rv_ref field.
	(build_actor_fn): Remove specifial rvalue ref handling.
	(morph_fn_to_coro): Likewise.

2020-05-31  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95087
	* coroutines.cc (morph_fn_to_coro): If we see an
	early fatal error, drop the erroneous function body.

2020-05-31  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (build_co_await): Remove unused
	variable.
	(finish_co_await_expr): Likewise.
	(finish_co_yield_expr): Likewise; revise comment.

2020-05-30  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (morph_fn_to_coro): Revise initialization
	of the frame pointer to avoid an unused value.

2020-05-30  Patrick Palka  <ppalka@redhat.com>

	PR c++/95386
	* constraint.cc (satisfaction_value): Accept INTEGER_CST of any
	boolean type.

2020-05-29  Patrick Palka  <ppalka@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/95181
	* class.c (add_method): Let special member function templates
	coexist if they are not equivalently constrained, or in a class
	template.

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

	PR c++/95371
	* pt.c (process_template_parm): Set DECL_TEMPLATE_INFO
	on the DECL_TEMPLATE_RESULT.

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

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

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

	PR c++/95311
	PR c++/95221
	* class.c (build_vfn_ref): Don't fold the INDIRECT_REF.

2020-05-29  Patrick Palka  <ppalka@redhat.com>

	PR c++/92652
	PR c++/93698
	PR c++/94128
	* parser.c (cp_parser_requires_clause_expression): Temporarily
	increment processing_template_decl only if it is 0.
	(cp_parser_constraint_expression): Likewise.
	(cp_parser_requires_expression): Likewise.

2020-05-29  Patrick Palka  <ppalka@redhat.com>

	PR c++/95241
	* constexpr.c (get_or_insert_ctor_field): Add limited support
	for RANGE_EXPR index lookups.

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

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

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

	PR c++/94926
	* decl.c (cp_finish_decl): Revert r9-297 change.
	(check_static_variable_definition): Likewise.
	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
	* pt.c (instantiate_decl): Return early on type error.

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

	PR c++/95319
	* decl.c (reshape_init_array_1): Don't reuse in overload context.

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

	PR c++/95242
	* call.c (build_new_op_1): Suppress
	warn_zero_as_null_pointer_constant across comparison of <=> result
	to 0.

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

	PR c++/95222
	* decl.c (grokdeclarator): Don't shift attributes in TYPENAME
	context.

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

	PR c++/95263
	* pt.c (lookup_template_class_1): Restore alias template mutation.

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

	PR c++/95197
	* cp-gimplify.c: Include omp-general.h.
	(cp_genericize_r) <case OMP_DISTRIBUTE>: For class iteration
	variables in composite distribute parallel for, instantiate copy
	ctor of their types.

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

	PR c++/94038
	* constexpr.c (cxx_eval_constant_expression)
	<case TEMPLATE_ID_EXPR>: Don't evaluate the concept when
	constexpr evaluation is uid-sensitive.

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

	* cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Don't preevaluate
	the function address if the call used operator syntax.

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

	PR c++/95221
	* cp-ubsan.c (cp_ubsan_maybe_instrument_member_call): For a virtual
	call, instrument the OBJ_TYPE_REF.

	* decl.c (compute_array_index_type_loc): Diagnose expressions
	in a template that can't be constant.
	* parser.c (cp_parser_direct_declarator): Don't check
	non-constant array bounds here.

	* cp-tree.h (is_rvalue_constant_expression): Declare.
	* constexpr.c (is_rvalue_constant_expression): New.
	* parser.c (cp_parser_constant_expression): Use it.
	* decl.c (cp_finish_decl): Try to treat a constexpr initializer in a
	template as constant.

	* typeck.c (build_x_modify_expr): Handle error_mark_node arguments.

	* decl.c (grokparms): Return NULL_TREE if any parms were erroneous.

2020-05-21  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (finish_co_return_stmt): Revert change to use
	finish_expr_stmt.

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

	PR c++/94038
	* constexpr.c (constexpr_ctx::uid_sensitive): Remove field.
	(uid_sensitive_constexpr_evaluation_value): Define.
	(uid_sensitive_constexpr_evaluation_true_counter): Define.
	(uid_sensitive_constexpr_evaluation_p): Define.
	(uid_sensitive_constexpr_evaluation_sentinel): Define its
	constructor.
	(uid_sensitive_constexpr_evaluation_checker): Define its
	constructor and its evaluation_restricted_p method.
	(get_fundef_copy): Remove 'ctx' parameter.  Use u_s_c_e_p
	instead of constexpr_ctx::uid_sensitive.
	(cxx_eval_call_expression): Use u_s_c_e_p instead, and test it
	last.  Adjust call to get_fundef_copy.
	(instantiate_cx_fn_r): Test u_s_c_e_p so that we increment the
	counter if necessary.
	(cxx_eval_outermost_constant_expr): Remove 'uid_sensitive'
	parameter.  Adjust function body accordingly.
	(maybe_constant_value): Remove 'uid_sensitive' parameter and
	adjust function body accordingly.  Set up a
	uid_sensitive_constexpr_evaluation_checker, and use it to
	conditionally update the cv_cache.
	* cp-gimplify.c (cp_fold): Set up a
	uid_sensitive_constexpr_evaluation_checker, and use it to
	conditionally update the fold_cache.
	* cp-tree.h (maybe_constant_value): Update declaration.
	(struct uid_sensitive_constexpr_evaluation_sentinel): Define.
	(struct sensitive_constexpr_evaluation_checker): Define.
	* expr.c (fold_for_warn): Set up a
	uid_sensitive_constexpr_evaluation_sentinel before calling
	the folding subroutines.  Drop all but the first argument to
	maybe_constant_value.

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

	DR 2237
	* parser.c (cp_parser_unqualified_id): Reject simple-template-id as
	the declarator-id of a destructor.
	(cp_parser_constructor_declarator_p): Reject simple-template-id as
	the declarator-id of a constructor.

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

	DR 2289
	PR c++/94553
	* cp-tree.h (SD_DECOMPOSITION): New flag.
	* decl.c (duplicate_decls): Make sure a structured binding is unique
	in its declarative region.
	(start_decl): If INITIALIZED is SD_DECOMPOSITION, call
	fit_decomposition_lang_decl.
	(grokdeclarator): Compare INITIALIZED directly to SD_* flags.
	* parser.c (cp_parser_decomposition_declaration): Pass SD_DECOMPOSITION
	to start_decl.

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

	PR c++/95223
	* typeck.c (structural_comptypes): Don't perform
	context-dependent resolution of TYPENAME_TYPEs when
	comparing_specializations.

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

	* pt.c (lookup_template_class_1): Do not reinit template_info of an
	alias here.

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

	PR c++/94923
	* call.c ((maybe_warn_class_memaccess): Use is_byte_access_type.
	* cp-tree.h (is_dummy_object): Return bool.
	(is_byte_access_type): Declare new function.
	* tree.c (is_dummy_object): Return bool.
	(is_byte_access_type): Define new function.

2020-05-19  Patrick Palka  <ppalka@redhat.com>

	PR c++/87847
	* pt.c (init_template_processing): Enable sanitization for
	decl_specializations and type_specializations.

	PR c++/66439
	* pt.c (fn_type_unification): Pass 'fn' instead of NULL_TREE as
	the 'in_decl' parameter to coerce_template_parms.

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

	PR c++/94955
	* typeck.c (cp_build_binary_op): Use fold_for_warn instead of
	cp_fold_rvalue.

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

	PR c++/94937
	* cvt.c (cp_get_fndecl_from_callee): Return NULL_TREE if the function
	type is not INDIRECT_TYPE_P.
	* decl.c (omp_declare_variant_finalize_one): Call
	cp_get_callee_fndecl_nofold instead of looking for the function decl
	manually.

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

	PR c++/90915
	* parser.c (cp_parser_has_attribute_expression): Sorry on a
	type-dependent argument.

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

	DR 1512
	PR c++/87699
	* call.c (add_builtin_candidate) <case EQ_EXPR>: Create candidate
	operator functions when type is std::nullptr_t for ==/!=.
	* typeck.c (composite_pointer_type_r): Add a bool * parameter.  Use it
	to maybe add "const" to the pointer type.
	(composite_pointer_type): Update the call to composite_pointer_type_r.
	(cp_build_binary_op): Turn two warning_at into error_at.  Print the
	types.

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

	* call.c (build_over_call): Remove unnecessary
	cp_stabilize_reference.

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

	* call.c (add_builtin_candidate): Don't create a builtin overload
	candidate for ++ when type is bool in C++17.

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

	* cfns.h: Regenerated.

2020-05-17  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (morph_fn_to_coro): Initialize the gro variable.

2020-05-16  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (finish_co_return_stmt): Implement rules
	from [class.copy.elision] /3.

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

	PR c++/57943
	* semantics.c (finish_decltype_type): Call
	instantiate_non_dependent_expr_sfinae on the expression.

2020-05-15  Patrick Palka  <ppalka@redhat.com>

	Revert:

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

	PR c++/90996
	* typeck2.c (process_init_constructor_array): Propagate
	CONSTRUCTOR_PLACEHOLDER_BOUNDARY up from each element initializer to
	the array initializer.

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

	PR c++/93286 - ICE with __is_constructible and variadic template.
	* pt.c (tsubst_tree_list): New.
	(tsubst, tsubst_copy_and_build): Use it.
	* decl2.c (is_late_template_attribute): Handle error_mark_node args.

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

	* pt.c (template_args_equal): Fix thinkos in previous 'cleanup'.

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

	PR c++/93901
	* pt.c (maybe_instantiate_noexcept): Change clone handling.

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

	PR c++/78446
	* call.c (build_op_call): Pass complain to lookup_fnfields.
	(build_special_member_call): Likewise.
	* class.c (type_requires_array_cookie): Pass tf_warning_or_error
	to lookup_fnfields.
	* cp-tree.h (lookup_fnfields): Add tsubst_flags_t parameter.
	* except.c (build_throw): Pass tf_warning_or_error to
	lookup_fnfields.
	* init.c (build_new_1): Pass complain to lookup_fnfields.
	* method.c (locate_fn_flags): Likewise.
	* name-lookup.c (lookup_name_real_1): Pass tf_warning_or_error
	to lookup_fnfields.
	* pt.c (tsubst_baselink): Pass complain to lookup_fnfields.
	* search.c (lookup_fnfields): New 'complain' parameter.  Pass it
	to lookup_member.

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

	* parser.c (cp_parser_diagnose_invalid_typename): Mention
	std=c++20 not 2a, reformat dependent binfo inform loops.

	* pt.c (tsubst_template_decl): Reorder and commonize some control
	paths.

	* pt.c (tsubst_friend_function): Simplify control flow.

	* pt.c (lookup_template_class_1): Remove unnecessary else by
	simply grabbing TYPE_NAME earlier.

	* pt.c (push_template_decl_real): Adjust friend pushing logic.
 	Reinit template type.

	* pt.c (build_template_decl): Init DECL_TEMPLATE_RESULT &
	TREE_TYPE here ...
	(process_partial_specialization): ... not here ...
	(push_template_decl_real, add_inherited_template_parms)
	(build_deduction_guide): ... or here.

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

	* cp-gimplify.c (cp_genericize_r): Set cfun->has_omp_target.

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

	PR c++/79706
	* init.c (build_vec_delete_1): Just return error_mark_node if
	deallocate_expr is error_mark_node.
	(build_delete): Just return error_mark_node if do_delete is
	error_mark_node.

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

	PR c++/95020
	* constraint.cc (tsubst_requires_expr): Produce a new
	requires-expression when processing_template_decl, even if
	template arguments are not dependent.

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

	PR c++/95066
	* decl.c (duplicate_decls): Set DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P.

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

	* pt.c (template_args_equal): Reorder category checking for
	clarity.

	* pt.c (perform_typedefs_access_check): Cache expensively
	calculated object references.
	(check_auto_in_tmpl_args): Just assert we do not get unexpected
	nodes, rather than silently do nothing.
	(append_type_to_template_for_access): Likewise, cache expensie
	object reference.

	* pt.c (canonical_type_parameter): Simplify.

	Formatting fixups & some simplifications.
	* pt.c (spec_hash_table): New typedef.
	(decl_specializations, type_specializations): Use it.
	(retrieve_specialization): Likewise.
	(register_specialization): Remove unnecessary casts.
	(push_template_decl_real): Reformat.
	(instantiate_class_template_1): Use more RAII.
	(make_argument_pack): Simplify.
	(instantiate_template_1): Use gcc_checking_assert for expensive
	asserts.
	(instantiate_decl): Likewise.
	(resolve_typename_type): Reformat comment.
	* semantics.c (struct deferred_access): Remove unnecessary GTY on
	member.
	(begin_class_definition): Fix formatting.

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

	* call.c, class.c, constexpr.c, constraint.cc, decl.c, init.c,
	lambda.c, lex.c, method.c, name-lookup.c, parser.c, pt.c, tree.c,
	typeck2.c: Change cxx2a to cxx20.

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

	PR c++/95074
	* parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: When
	looking for a block-scope function declaration, look through the whole
	set, not just the first function in the overload set.

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

	PR c++/95063
	* pt.c (tsubst_decl): Deal with DECL_OMP_PRIVATIZED_MEMBER for
	a bit-field.

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

	Resolve C++20 NB comment CA104
	* pt.c (determine_specialization): Compare constraints for
	specialization of member template of class instantiation.

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

	PR c++/92583
	PR c++/92654
	* tree.c (cp_walk_subtrees): Stop at typedefs.
	Handle TYPENAME_TYPE here.
	* pt.c (find_parameter_packs_r): Not here.
	(for_each_template_parm_r): Clear *walk_subtrees.
	* decl2.c (min_vis_r): Look through typedefs.

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

	* call.c (implicit_conversion_error): Split out from...
	(perform_implicit_conversion_flags): ...here.
	(build_converted_constant_expr_internal): Use it.

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

	PR c++/90748
	* parser.c (inject_parm_decls): Set current_class_ptr here.
	(cp_parser_direct_declarator): And here.
	(cp_parser_late_return_type_opt): Not here.
	(cp_parser_noexcept_specification_opt): Nor here.
	(cp_parser_exception_specification_opt)
	(cp_parser_late_noexcept_specifier): Remove unneeded parameters.

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

	* decl.c (cxx_init_decl_processing): Call declare_weak for
	__cxa_pure_virtual.

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

	* pt.c (instantiate_class_template_1): Call tsubst_expr for
	STATIC_ASSERT member.
	* ptree.c (cxx_print_xnode): Handle STATIC_ASSERT.

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

	* pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Remove redundant
	walking of capture list.

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

	* cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Remove.
	* call.c (build_new_function_call): Don't set it.
	(build_new_method_call_1): Likewise.
	(build_over_call): Check cand->explicit_targs instead.

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

	* decl.c (compute_array_index_type_loc): Stabilize before building
	the MINUS_EXPR.

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

	* decl.c (grokdeclarator): Adjust deprecated_state here.
	(start_decl): Not here.

2020-05-08  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/95003
	* coroutines.cc (build_actor_fn): Ensure that bind scopes
	are marked as having side-effects where necessary.
	(replace_statement_captures): Likewise.
	(morph_fn_to_coro): Likewise.

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

	* NEWS: Delete, it is so stale.

	* parser.c (cp_lexer_set_source_position_from_token): EOF has a
	location too.

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

	PR c++/94817
	PR c++/94829
	* coroutines.cc (morph_fn_to_coro): Set unformed outline
	functions to error_mark_node.  For early error returns suppress
	warnings about missing ramp return values.  Fix reinstatement
	of the function body on pre-existing initial error.
	* decl.c (finish_function): Use the normal error path for fails
	in the ramp function, do not try to compile the helpers if the
	transform fails.

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

	PR c++/94590 - Detect long double -> double narrowing.
	* typeck2.c (check_narrowing): Detect long double -> double
	narrowing even when double and long double have the same
	precision.  Make it handle conversions to float too.

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

	PR c++/94255
	* parser.c (cp_parser_class_specifier_1): Check that the scope is
	nested inside current scope before pushing it.

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

	  P1957R2
	  * typeck2.c (check_narrowing): Consider T* to bool narrowing
	  in C++11 and up.

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

	* decl.c (grok_op_properties): Fix spelling of non-static.
	* typeck.c (build_class_member_access_expr): Likewise.

2020-05-07  Richard Biener  <rguenther@suse.de>

	PR middle-end/94703
	* optimize.c (update_cloned_parm): Copy DECL_NOT_GIMPLE_REG_P.

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

	PR c++/94938
	* pt.c (tsubst_copy_and_build): Call type_dependent_expression_p_push
	instead of uses_template_parms.  Move the warning_sentinels after the
	RECURs.

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

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

	PR c++/94907
	* method.c (defaulted_late_check): Don't call synthesize_method
	on constexpr sfk_comparison if it has been called on it already.

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

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

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

	* coroutines.cc: Remove references to n4849 throughout.

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

	CWG 2235
	* pt.c (more_specialized_fn): Do consider parms with no deducible
	template parameters.

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

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

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

	* coroutines.cc (transform_await_wrapper): Check that we have
	no unlowered co_yields.
	(captures_temporary): Likewise.
	(register_awaits): Likewise.

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

	PR c++/94807
	* coroutines.cc (morph_fn_to_coro): Just check for
	closure_identifier.
	* pt.c (tsubst_function_decl): Update lambda fn's this_ptr name.

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

	PR c++/94799
	* parser.c (cp_parser_postfix_dot_deref_expression): If we have
	a type-dependent object of class type, stash it to
	parser->context->object_type.  If the postfix expression doesn't have
	a type, use typeof.
	(cp_parser_class_name): Consider object scope too.
	(cp_parser_lookup_name): Remove code dealing with the case when
	object_type is unknown_type_node.

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

	PR c++/94038
	* cp-gimplify.c (cp_fold) <case CALL_EXPR>: Move some variable
	declarations closer to their uses.  Copy the CALL_EXPR only
	when one of its arguments has changed.
	<case TREE_VEC>: Instead of first collecting the folded
	arguments into a releasing_vec, just make a copy of the TREE_VEC
	as soon as folding changes one of its arguments.

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

	* coroutines.cc (morph_fn_to_coro): Mark the coro.gro variable
	as artificial and ignored.

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

	pt.c (process_template_parm): Don't walk the template list twice,
	remember the final node instead.
	(end_template_parm_list): Refactor.  Comment on why we do a pop
	and a push.

	PR c++/94827 -- don't save parms in nested requirement
	* constraint.cc (tsubst_nested_requirement): TYPE directly holds
	notmalized requirement.
	(finish_nested_requirement): Don't stash current tpl parms into
	the requirement.
	(diagnose_nested_requirement): TYPE directly holds notmalized
	requirement.

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

	PR c++/90880
	* cp-tree.h (check_accessibility_of_qualified_id): Add
	tsubst_flags_t parameter and change return type to bool.
	* parser.c (cp_parser_lookup_name): Pass tf_warning_to_error to
	check_accessibility_of_qualified_id.
	* pt.c (tsubst_qualified_id): Return error_mark_node if
	check_accessibility_of_qualified_id returns false.
	* semantics.c (check_accessibility_of_qualified_id): Add
	complain parameter.  Pass complain instead of
	tf_warning_or_error to perform_or_defer_access_check.  Return
	true unless perform_or_defer_access_check returns false.

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

	PR c++/94885
	* typeck2.c (process_init_constructor_record): Return PICFLAG_ERRONEOUS
	if an initializer element was erroneous.

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

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

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

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

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

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

2020-04-30  Jason Merrill  <jason@redhat.com>
	    Nathan Sidwell  <nathan@acm.org>

	PR c++/94827
	* constraint.cc (map_arguments): If ARGS is null, it's a
	self-mapping of parms.
	(finish_nested_requirement): Do not pass argified
	current_template_parms to normalization.
	(tsubst_nested_requirement): Don't assert no template parms.

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

	PR c++/94886
	* coroutines.cc (transform_local_var_uses): Defer walking
	the DECL_INITIALs of BIND_EXPR vars until all the frame
	allocations have been made.

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

	PR c++/94883
	* coroutines.cc (register_awaits): Update target
	expressions for awaitable and suspend handle
	initializers.

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

	PR c++/94879
	* coroutines.cc (build_co_await): Account for variables
	with DECL_VALUE_EXPRs.
	(captures_temporary): Likewise.
	(register_awaits): Likewise.

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

	PR c++/94830
	* pt.c (find_template_parameter_info::parm_list): New field.
	(keep_template_parm): Use the new field to build up the
	parameter list here instead of ...
	(find_template_parameters): ... here.  Return ftpi.parm_list.

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

	PR target/94707
	* class.c (build_base_field): Set DECL_FIELD_ABI_IGNORED on C++17 empty
	base artificial FIELD_DECLs.
	(layout_class_type): Set DECL_FIELD_ABI_IGNORED on empty class
	field_poverlapping_p FIELD_DECLs.

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

	PR c++/94819
	* constraint.cc (satisfy_declaration_constraints): Use saved_t
	instead of t as the key to decl_satisfied_cache.

	PR c++/94808
	* error.c (print_requires_expression_info): Print the dependent
	form of the parameter list with its template parameter mapping,
	rather than printing the substituted form.

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

	PR c++/94583
	* decl.c (use_eh_spec_block): Check nothrow type after
	DECL_DEFAULTED_FN.
	* pt.c (maybe_instantiate_noexcept): Call synthesize_method for
	DECL_MAYBE_DELETED fns here.
	* decl2.c (mark_used): Not here.
	* method.c (get_defaulted_eh_spec): Reject DECL_MAYBE_DELETED here.

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

	PR c++/94760
	* coroutines.cc (instantiate_coro_traits): Pass a reference to
	object type rather than a pointer type for 'this', for method
	coroutines.
	(struct param_info): Add a field to hold that the parm is a lambda
	closure pointer.
	(morph_fn_to_coro): Check for lambda closure pointers in the
	args.  Use a reference to *this when building the args list for the
	promise allocator lookup.

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

	PR c++/94759
	* coroutines.cc (coro_promise_type_found_p): Do not
	exclude non-classes here (this needs to be handled in the
	coroutine header).
	(morph_fn_to_coro):  Allow for the case where the coroutine
	returns void.

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

	PR c++/94701
	* coroutines.cc (struct local_var_info): Add fields for static
	variables and those with DECL_VALUE_EXPR redirection.
	(transform_local_var_uses): Skip past typedefs and static vars
	and then account for redirected variables.
	(register_local_var_uses): Likewise.

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

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

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

	PR c++/94772
	* constexpr.c (cxx_eval_call_expression): Don't set new_obj if we're
	evaluating the target constructor of a delegating constructor.
	(cxx_eval_store_expression): Don't set TREE_READONLY if the LHS of the
	INIT_EXPR is '*this'.

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

	PR c++/90320
	* call.c (struct conversion): Add copy_init_p.
	(standard_conversion): Set copy_init_p in ck_base and ck_rvalue
	if FLAGS demands LOOKUP_ONLYCONVERTING.
	(convert_like_real) <case ck_base>: If copy_init_p is set, or
	LOOKUP_ONLYCONVERTING into FLAGS.

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

	PR c++/94752
	* coroutines.cc (morph_fn_to_coro): Ensure that
	unnamed function params have a usable and distinct
	frame field name.

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

	PR c++/94583
	* decl.c (redeclaration_error_message): Reject defaulted comparison
	operator that has been previously declared.

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

	* parser.c (cp_parser_diagnose_invalid_type_name): Suggest enabling
	concepts if the invalid identifier is 'requires'.

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

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

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

	* coroutines.cc: Fix compilation error for release checking
	where we miss declaration of ‘coro_body_contains_bind_expr_p’.

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

	* tree.c (zero_init_expr_p): Use uses_template_parms instead of
	dependent_type_p.

	PR c++/94645
	* pt.c (template_class_depth): Walk into the DECL_FRIEND_CONTEXT of a
	friend declaration rather than into its CP_DECL_CONTEXT.

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

	PR c++/94288
	* coroutines.cc (await_statement_expander): Simplify cases.
	(struct susp_frame_data): Add fields for truth and/or if
	cases, rename one field.
	(analyze_expression_awaits): New.
	(expand_one_truth_if): New.
	(add_var_to_bind): New helper.
	(coro_build_add_if_not_cond_break): New helper.
	(await_statement_walker): Handle conditional expressions,
	handle expansion of truth-and/or-if cases.
	(bind_expr_find_in_subtree): New, checking-only.
	(coro_body_contains_bind_expr_p): New, checking-only.
	(morph_fn_to_coro): Ensure that we have a top level bind
	expression.

2020-04-22  Jonathan Wakely  <jwakely@redhat.com>

	PR translation/94698
	* class.c (check_field_decls): Change "define" to "declare" in
	-Weffc++ diagnostics.

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

	PR c++/94719
	PR c++/94549
	* constraint.cc (satisfy_declaration_constraints): If the inherited
	constructor points to an instantiation of a constructor template,
	remember and use its attached template arguments.

2020-04-22  Jonathan Wakely  <jwakely@redhat.com>

	PR translation/94698
	* class.c (check_field_decls): Change "override" to "define" in
	-Weffc++ diagnostics.

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

	PR c++/94682
	* coroutines.cc (struct param_info): Add a field to note that
	the param is 'this'.
	(morph_fn_to_coro): Convert this to a reference before using it
	in the promise parameter preview.

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

	PR c++/94546
	* pt.c (register_parameter_specializations): If the instantiation is
	still a parameter pack, don't wrap it in a NONTYPE_ARGUMENT_PACK.
	(tsubst_pack_expansion, tsubst_expr): Adjust.

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

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

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

	PR c++/67825
	* constraint.cc (diagnose_valid_expression): Check convert_to_void here
	as well as in tsubst_valid_expression_requirement.

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

	PR c++/94549
	* constraint.cc (satisfy_declaration_constraints): Don't strip the
	inherited constructor if it already has template information.

	PR c++/94597
	* pt.c (any_template_parm_r) <case IDENTIFIER_NODE>: New case.  If this
	is a conversion operator, visit its TREE_TYPE.

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

	* pt.c (tsubst_copy_and_build) [POINTER_PLUS_EXPR]: Check for
	error_mark_node.

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

	PR c++/94661
	* coroutines.cc (morph_fn_to_coro): Simplify return
	value computation.

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

	PR c++/94592
	* constexpr.c (cxx_eval_outermost_constant_expr): Return when T is
	a BRACE_ENCLOSED_INITIALIZER_P.
	(is_nondependent_constant_expression): Don't check
	BRACE_ENCLOSED_INITIALIZER_P.
	(is_nondependent_static_init_expression): Likewise.

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

	PR c++/94628
	* cp-tree.h (lss_policy::lss_nop): New enumerator.
	* pt.c (local_specialization_stack::local_specialization_stack): Handle
	an lss_nop policy.
	(local_specialization_stack::~local_specialization_stack): Likewise.
	(tsubst_pack_expansion): Use a local_specialization_stack instead of
	manually saving and restoring local_specializations.  Conditionally
	replace local_specializations sooner, before the handling of the
	unsubstituted_packs case.

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

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

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

	* coroutines.cc (captures_temporary): Don't assign the result of
	STRIP_NOPS to the same variable.

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

	PR c++/94454 - tpl-tpl-parms are not canonicalizable types
	* pt.c (canonical_type_parameter): Assert not a tpl-tpl-parm.
	(process_template_parm): tpl-tpl-parms are structural.
	(rewrite_template_parm): Propagate structuralness.

	PR c++/94454 - Expr pack expansion equality
	* tree.c (cp_tree_equal) [TEMPLATE_ID_EXPR, default]: Refactor.
	[EXPR_PACK_EXPANSION]: Add.

	PR c++/94454 Template Argument Hashing
	* pt.c (iterative_hash_template_arg): Strip nodes as
	template_args_equal does.
	[ARGUMENT_PACK_SELECT, TREE_VEC, CONSTRUCTOR]: Refactor.
	[node_class:TEMPLATE_TEMPLATE_PARM]: Hash by level & index.
	[node_class:default]: Refactor.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* coroutines.cc (co_await_expander): Simplify.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* coroutines.cc (co_await_expander): Fix indentation.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	PR c++/93477
	PR c++/91476
	* decl2.c (copy_linkage): Do copy DECL_ONE_ONLY and DECL_WEAK.

	PR c++/90546
	* call.c (build_user_type_conversion_1): Allow a template conversion
	returning an rvalue reference to bind directly to an lvalue.

	PR c++/90731
	* decl.c (grokdeclarator): Propagate eh spec from typedef.

2020-01-28  Martin Liska  <mliska@suse.cz>

	PR c++/92440
	* pt.c (redeclare_class_template): Group couple of
	errors and inform messages with auto_diagnostic_group.

2020-01-28  Martin Liska  <mliska@suse.cz>

	PR c++/92440
	* pt.c (redeclare_class_template): Use inform
	for the second location.

2020-01-27  Jason Merrill  <jason@redhat.com>

	PR c++/90966
	* pt.c (tsubst_copy) [STRING_CST]: Don't use fold_convert.

2020-01-27  Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/93443
	* coroutines.cc (morph_fn_to_coro): Check the ramp return
	value when it is constructed from the 'get return object'.

2020-01-27  Nathan Sidwell  <nathan@acm.org>

	PR c++/91826
	* name-lookup.c (is_ancestor): Allow CHILD to be a namespace alias.

2020-01-26  Jason Merrill  <jason@redhat.com>

	PR c++/90992
	* except.c (maybe_noexcept_warning): Check DECL_IN_SYSTEM_HEADER and
	temporarily enable -Wsystem-headers.  Change second warning to
	conditional inform.

	PR c++/90997
	* semantics.c (finish_call_expr): Don't call
	instantiate_non_dependent_expr before warn_for_memset.

2020-01-25  Marek Polacek  <polacek@redhat.com>

	PR c++/93414 - poor diagnostic for dynamic_cast in constexpr context.
	* constexpr.c (cxx_eval_dynamic_cast_fn): Add a reference
	dynamic_cast diagnostic.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/93400 - ICE with constrained friend.
	* constraint.cc (maybe_substitute_reqs_for): New.
	* decl.c (function_requirements_equivalent_p): Call it.
	* pt.c (tsubst_friend_function): Only substitute
	TEMPLATE_PARMS_CONSTRAINTS.
	(tsubst_template_parms): Copy constraints.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/93279 - ICE with lambda in member operator.
	* name-lookup.c (maybe_save_operator_binding): Don't remember
	class-scope bindings.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/93377 - ICE with member alias in constraint.
	* pt.c (any_template_parm_r): Look at template arguments for all
	aliases, not only alias templates.

2020-01-24  Marek Polacek  <polacek@redhat.com>

	PR c++/93299 - ICE in tsubst_copy with parenthesized expression.
	* pt.c (tsubst_copy): Handle a REF_PARENTHESIZED_P VIEW_CONVERT_EXPR.

2020-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/92852 - ICE with generic lambda and reference var.
	* constexpr.c (maybe_constant_value): Likewise.

2020-01-23  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/92804
	* parser.c (cp_parser_nested_name_specifier_opt): Properly
	diagnose concept-ids.

2020-01-23  Jason Merrill  <jason@redhat.com>

	PR c++/93331 - ICE with __builtin_strchr.
	* constexpr.c (cxx_eval_builtin_function_call): Use the original
	argument if we didn't manage to extract a STRING_CST.

	PR c++/93345 - ICE with defaulted dtor and template.
	PR c++/33799
	* decl.c (cxx_maybe_build_cleanup): Don't try to set
	throwing_cleanup in a template.

2020-01-22  Marek Polacek  <polacek@redhat.com>

	PR c++/92907 - noexcept does not consider "const" in member functions.
	* g++.dg/cpp0x/noexcept56.C: New test.

2020-01-22  Marek Polacek  <polacek@redhat.com>

	PR c++/93324 - ICE with -Wall on constexpr if.
	* semantics.c (is_std_constant_evaluated_p): Check fndecl.

2020-01-22  Patrick Palka  <ppalka@redhat.com>

	* constraint.cc (get_mapped_args): Avoid using auto_vec
	as a vector element.  Release the vectors inside the lists
	vector.
	* parser.c (cp_literal_operator_id): Free the buffer.

2020-01-22  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (finish_co_await_expr): Add error check on return
	value of build_co_await.
	(finish_co_yield_expr,): Ditto.

2020-01-22  Jun Ma  <JunMa@linux.alibaba.com>

	* coroutines.cc (lookup_awaitable_member): Lookup an awaitable member.
	(lookup_promise_method): Emit diagnostic when get NULL_TREE back only.
	(build_co_await): Use lookup_awaitable_member instead of lookup_member.

2020-01-21  Jason Merrill  <jason@redhat.com>

	PR c++/60855 - ICE with sizeof VLA capture.
	* lambda.c (is_lambda_ignored_entity): Don't look past VLA capture.

	PR c++/90732 - ICE with VLA capture and generic lambda.
	* pt.c (tsubst_lambda_expr): Repeat add_capture for VLAs.

2020-01-21  Iain Sandoe  <iain@sandoe.co.uk>
	    Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (coro_promise_type_found_p): Check for NULL return
	from complete_type_or_else.
	(register_param_uses): Likewise.
	(build_co_await): Do not try to use complete_type_or_else for void
	types, otherwise for incomplete types, check for NULL return from
	complete_type_or_else.

2020-01-21  Jason Merrill  <jason@redhat.com>

	PR c++/91476 - anon-namespace reference temp clash between TUs.
	* decl2.c (copy_linkage): Factor out of get_guard.
	* call.c (make_temporary_var_for_ref_to_temp): Use it.
	* decl.c (cp_finish_decomp): Use it.
	(cp_finish_decl): determine_visibility sooner.

2020-01-21  Bin Cheng  <bin.cheng@linux.alibaba.com>

	* coroutines.cc (finish_co_await_expr): Set return value flag.
	(finish_co_yield_expr, morph_fn_to_coro): Ditto.

2020-01-19  Jason Merrill  <jason@redhat.com>

	PR c++/33799 - destroy return value, take 2.
	* cp-tree.h (current_retval_sentinel): New macro.
	(struct language_function): Add throwing_cleanup bitfield.
	* decl.c (cxx_maybe_build_cleanup): Set it.
	* except.c (maybe_set_retval_sentinel)
	(maybe_splice_retval_cleanup): New functions.
	* parser.c (cp_parser_compound_statement): Call
	maybe_splice_retval_cleanup.
	* typeck.c (check_return_expr): Call maybe_set_retval_sentinel.

	* parser.c (cp_parser_lambda_body): Use cp_parser_function_body.

2020-01-18  Jakub Jelinek  <jakub@redhat.com>

	* coroutines.cc (get_fn_local_identifier): Fix NO_DOT_IN_LABEL
	but non-NO_DOLLAR_IN_LABEL case build.

2020-01-18  Iain Sandoe  <iain@sandoe.co.uk>

	* Make-lang.in: Add coroutines.o.
	* cp-tree.h (lang_decl-fn): coroutine_p, new bit.
	(DECL_COROUTINE_P): New.
	* lex.c (init_reswords): Enable keywords when the coroutine flag
	is set,
	* operators.def (co_await): New operator.
	* call.c (add_builtin_candidates): Handle CO_AWAIT_EXPR.
	(op_error): Likewise.
	(build_new_op_1): Likewise.
	(build_new_function_call): Validate coroutine builtin arguments.
	* constexpr.c (potential_constant_expression_1): Handle
	CO_AWAIT_EXPR, CO_YIELD_EXPR, CO_RETURN_EXPR.
	* coroutines.cc: New file.
	* cp-objcp-common.c (cp_common_init_ts): Add CO_AWAIT_EXPR,
	CO_YIELD_EXPR, CO_RETRN_EXPR as TS expressions.
	* cp-tree.def (CO_AWAIT_EXPR, CO_YIELD_EXPR, (CO_RETURN_EXPR): New.
	* cp-tree.h (coro_validate_builtin_call): New.
	* decl.c (emit_coro_helper): New.
	(finish_function): Handle the case when a function is found to
	be a coroutine, perform the outlining and emit the outlined
	functions. Set a bit to signal that this is a coroutine component.
	* parser.c (enum required_token): New enumeration RT_CO_YIELD.
	(cp_parser_unary_expression): Handle co_await.
	(cp_parser_assignment_expression): Handle co_yield.
	(cp_parser_statement): Handle RID_CO_RETURN.
	(cp_parser_jump_statement): Handle co_return.
	(cp_parser_operator): Handle co_await operator.
	(cp_parser_yield_expression): New.
	(cp_parser_required_error): Handle RT_CO_YIELD.
	* pt.c (tsubst_copy): Handle CO_AWAIT_EXPR.
	(tsubst_expr): Handle CO_AWAIT_EXPR, CO_YIELD_EXPR and
	CO_RETURN_EXPRs.
	* tree.c (cp_walk_subtrees): Likewise.

2020-01-17  Jason Merrill  <jason@redhat.com>

	PR c++/92531 - ICE with noexcept(lambda).
	* pt.c (uses_template_parms): Don't try to enumerate all the
	expression cases.

2020-01-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93228
	* parser.c (cp_parser_template_name): Look up deprecated attribute
	in DECL_TEMPLATE_RESULT or its type's attributes.

2020-01-16  Jason Merrill  <jason@redhat.com>

	PR c++/93286 - ICE with __is_constructible and variadic template.
	* pt.c (tsubst) [TREE_LIST]: Handle pack expansion.
	(tsubst_copy_and_build) [TRAIT_EXPR]: Always use tsubst for type2.

	PR c++/93280 - ICE with aggregate assignment and DMI.
	* init.c (get_nsdmi): Set TARGET_EXPR_DIRECT_INIT_P here.
	* typeck2.c (digest_nsdmi_init): Not here.

2020-01-15  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/91073
	* cp-tree.h (is_constrained_auto): New.
	* parser.c (cp_parser_maybe_commit_to_declaration): Correctly
	handle concept-check expressions; take a cp_decl_specifier_seq*
	instead of a bool.
	(cp_parser_condition): Update call.
	(cp_parser_simple_declaration): Likewise.
	(cp_parser_placeholder_type_specifier): Correctly handle
	concept-check expressions.

2020-01-15  Jason Merrill  <jason@redhat.com>

	Revert
	PR c++/33799 - destroy return value if local cleanup throws.
	* cp-tree.h (current_retval_sentinel): New macro.
	* decl.c (start_preparsed_function): Set up cleanup for retval.
	* typeck.c (check_return_expr): Set current_retval_sentinel.

	PR c++/93257 - consteval void function.
	* constexpr.c (verify_constant): Allow void_node.

	PR c++/92871 - bad code with xvalue and GNU ?: extension.
	* call.c (prevent_lifetime_extension): New.
	(build_conditional_expr_1): Use it.

2020-01-14  Nathan Sidwell  <nathan@acm.org>

	PR c++/90916
	* pt.c (retrieve_specialization): Use get_template_info, not open
	coding access.

	PR c++/90916
	* pt.c (retrieve_specialization): Get the TI from the decl or the
	classtype as appropriate.

2020-01-14  David Malcolm  <dmalcolm@redhat.com>

	* cp-gimplify.c (source_location_table_entry_hash::empty_zero_p):
	New static constant.
	* cp-tree.h (named_decl_hash::empty_zero_p): Likewise.
	(struct named_label_hash::empty_zero_p): Likewise.
	* decl2.c (mangled_decl_hash::empty_zero_p): Likewise.

2020-01-14  Jason Merrill  <jason@redhat.com>

	PR c++/92590 - wrong handling of inherited default ctor.
	* class.c (add_method): A constrained inherited ctor doesn't hide an
	implicit derived ctor.
	Revert:
	PR c++/92552 - ICE with inherited constrained default ctor.
	* pt.c (instantiate_class_template_1): Copy
	TYPE_HAS_USER_CONSTRUCTOR.
	PR c++/91930 - ICE with constrained inherited default ctor.
	* name-lookup.c (do_class_using_decl): Set TYPE_HAS_USER_CONSTRUCTOR
	for inherited constructor.
	PR c++/92594 - ICE with inherited trivial default ctor.
	* method.c (trivial_fn_p): Treat an inherited default constructor
	like a normal default constructor.

	PR c++/92594 - ICE with inherited trivial default ctor.
	* method.c (trivial_fn_p): Treat an inherited default constructor
	like a normal default constructor.

	PR c++/92009 - ICE with punning of typeid.
	* rtti.c (get_tinfo_desc): Call xref_basetypes.
	* constexpr.c (cxx_fold_indirect_ref): Don't strip
	REINTERPRET_CAST_P.

2020-01-13  Jason Merrill  <jason@redhat.com>

	PR c++/92746 - ICE with noexcept of function concept check.
	* except.c (check_noexcept_r): Handle concept-check.

	PR c++/92582 - ICE with member template as requirement.
	* pt.c (struct find_template_parameter_info): Add ctx_parms.
	(any_template_parm_r): Handle TEMPLATE_DECL.
	(find_template_parameters): Take parms instead of their depth.
	* constraint.cc (build_parameter_mapping): Pass them.

	PR c++/33799 - destroy return value if local cleanup throws.
	* cp-tree.h (current_retval_sentinel): New macro.
	* decl.c (start_preparsed_function): Set up cleanup for retval.
	* typeck.c (check_return_expr): Set current_retval_sentinel.

	PR c++/93238 - short right-shift with enum.
	* typeck.c (cp_build_binary_op): Use folded op1 for short_shift.

2020-01-10  Jason Merrill  <jason@redhat.com>

	* typeck.c (cp_build_binary_op): Restore short_shift code.

	PR c++/93143 - incorrect tree sharing with constexpr.
	* constexpr.c (cxx_eval_outermost_constant_expr): Don't assume
	CONSTRUCTORs are already unshared.

	PR c++/93173 - incorrect tree sharing.
	PR c++/93033
	* cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr): Use
	copy_if_shared after cp_genericize_tree.
	* typeck2.c (split_nonconstant_init): Don't unshare here.

2020-01-08  Jason Merrill  <jason@redhat.com>

	* cp-gimplify.c (cp_gimplify_expr) [TARGET_EXPR]: Check
	TARGET_EXPR_DIRECT_INIT_P.
	* constexpr.c (cxx_eval_constant_expression): Likewise.

2020-01-08  Jason Merrill  <jason@redhat.com>

	PR c++/91369 - constexpr destructor and member initializer.
	* constexpr.c (cxx_eval_store_expression): Look through TARGET_EXPR
	when not preevaluating.

2020-01-08  Jason Merrill  <jason@redhat.com>

	* constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE
	support.

2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* init.c (build_new): Add location_t parameter and use it throughout.
	(build_raw_new_expr): Likewise.
	* parser.c (cp_parser_new_expression): Pass the combined_loc.
	* pt.c (tsubst_copy_and_build): Adjust call.
	* cp-tree.h: Update declarations.

2020-01-07  Jason Merrill  <jason@redhat.com>

	PR c++/47877 - -fvisibility-inlines-hidden and member templates.
	* decl2.c (determine_visibility): -fvisibility-inlines-hidden beats
	explicit class visibility for a template.

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

	* mangle.c (mangle_type_attribute_p): New function, split out from...
	(write_CV_qualifiers_for_type): ...here.  Don't mangle attributes
	that contain a space.

2020-01-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/91369
	* constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count
	member, initialize it to zero in ctor.
	(cxx_eval_call_expression): Bump heap_dealloc_count when deleting
	a heap object.  Don't cache calls to functions which allocate some
	heap objects and don't deallocate them or deallocate some heap
	objects they didn't allocate.

2020-01-06  Jason Merrill  <jason@redhat.com>

	PR c++/92552 - ICE with inherited constrained default ctor.
	* pt.c (instantiate_class_template_1): Copy
	TYPE_HAS_USER_CONSTRUCTOR.
	* class.c (one_inherited_ctor): Don't set it here.

2020-01-06  Andrew Sutton  <asutton@lock3software.com>

	PR c++/92739 - parsing requires clause with attributes.
	* parser.c (cp_parser_constraint_requires_parens): Exclude
	attributes as postfix expressions.

2020-01-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93138
	* parser.c (cp_parser_check_class_key): Disable access checks for the
	simple name lookup.
	(cp_parser_maybe_warn_enum_key): Likewise.  Return early if
	!warn_redundant_tags.

2010-01-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/93046
	* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
	TARGET_EXPR if it has been gimplified already.

2020-01-03  Jason Merrill  <jason@redhat.com>

	PR c++/93033 - incorrect tree node sharing with array init.
	* typeck2.c (split_nonconstant_init): Unshare non-decl.
	* cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions.

2020-01-02  Jason Merrill  <jason@redhat.com>

	* pt.c (invalid_nontype_parm_type_p): Reject class placeholder in
	C++17.

2020-01-02  Jakub Jelinek  <jakub@redhat.com>

	PR c/90677
	* cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name
	has not been found, rather than error_mark_node.

2020-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

Copyright (C) 2020 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
