2021-01-04  Nathan Sidwell  <nathan@acm.org>

	Th, th, th, that's all folks!

	There are a couple of cleanups it might be worth retrying in stage
	1.
	gcc/cp/decl.c (fixup_anonymous_aggr): I don't think we set these
	bits prematurely anymore?
	gcc/gcc.c (process_command): We just seem to be doing the same @
	processing ass add_infile?

	Merge trunk a5469584f61

	Merge trunk 6288183377a

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

	Merge trunk e798f081925

	gcc/cp/
	* module.cc (has_definition): Check VAR_DECL's LANG_SPECIFIC.
	gcc/testsuite/
	* g++.dg/modules/gvar_[ab].C: New.

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

	Merge trunk 35b8d268746

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

	Merge trunk 433703843b3

	Merge trunk 0feb237657c

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

	gcc/
	* diagnostic-core.h (progname): Remove comment.

	Merge trunk 62c5ea52288
	preprocessor: Deferred macro support

	Named pipe support
	gcc/cp
	* mapper-client.cc (module_client::open_module): Allow named pipes.
	gcc/
	* doc/invoke.texi (C++ Module Mapper): Document.

	libcpp/
	* include/cpplib.h (struct cpp_macro): Rename imported field.
	(struct cpp_hashnode): Update deferred doc.
	* macro.c (_cpp_new_macro): Adjust.
	(cpp_get_deferred_macro, get_deferred_or_lazy_macro): Assert more.
	gcc/cp/
	* module.cc (module_state::read_define): Adjust.
	(module_state::install_macros): Likewise.

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

	Merge trunk 9324f7a25c7
	c++: Avoid considering some conversion ops

	gcc/cp/
	* decl2.c (c_parse_final_cleanups): Refactor.

	Merge trunk 1c6b86b50d4
	c++: module test harness

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

	Merge trunk e6e4b20de33
	c++: name lookup API for modules

	Merge trunk 4f1d8bd5096
	c++: modules & using-decls

	Merge trunk afc14c8d0a9
	c++: modularize spelling suggestions

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

	gcc/cp/
	* name-lookup.c (member_vec_dedup): Remove gratuitous chaining.
	(check_local_shadow): No need to check for clone.

	Merge trunk e4c3ec980fa
	c++: Module-specific error and tree dumping

	gcc/cp/
	* module.cc (maybe_attach_decl): Use modules_p.
	(module_preprocess_options): Likewise.
	* pt.c (lookup_template_class_1)
	(instantiate_template_specializations): Likewise.
	* parser.c (cp_lexer_new_main): Rename confusing variable.

	Merge trunk cf97b970fe5
	c++: Decl module-specific semantic processing

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

	Merge trunk 570c312c03e
	c++: Originating and instantiating module

	Merge trunk dded5f78ccb
	c++: template and clone fns for modules

	Merge trunk 0bd4fecbea3
	c++: Fix MODULE_VERSION breakage

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

	gcc/cp/
	* cp-tree.h (comparing_typenames): Replace with ...
	(map_context_from, map_context_to): ... this.
	* typeck.c (structural_comptypes): Adjust.
	* pt.c (comparing_typenames): Delete.
	(spec_hasher::equal): Adjust.
	* tree.c (cp_tree_equal): Check map_context_from & to for failed
	parameter context.
	* module.cc (map_context_from, map_context_to): Define.
	(check_mergeable_decl): Set & unset map_context vars.
	(trees_in::is_matching_decl): Likewise.
	(module_state::read_cluster): Set & unset
	comparing_specializations, not comparing_typenames.

	Merge trunk ffb268ffcf9
	c++: Adjust array type construction

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

	Merge trunk 5a26d4a204c
	c++: Revert dependent-array changes

	Merge trunk 97eaf8c92f9
	c++: Module API declarations

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

	Merge trunk 62fb1b9e0da
	c++: Fix array type dependency [PR 98107]

	c++tools/
	* configure.ac: Need ACX_NONCANONICAL_TARGET
	* configure: Rebuilt.

	c++tools/
	* Makefile.in (libexecdir): Fix typo.

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

	gcc/
	* doc/invoke.texi (C++ Modules): Add CMI section.

	gcc/cp/
	* 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.

	gcc/cp/
	* cp-tree.h (DECL_MODULE_PENDING_SPECIALIZATIONS_P)
	(DECL_MODULE_PENDING_MEMBERS_P): Use same module_pending_p field.
	(DECL_ATTACHED_DECLS_P): Rename to ...
	(DECL_MODULE_ATTACHEMENTS_P): ... this.  Use module_pending_p
	field.
	(struct lang_decl_base): Replace module_pending_specializations_p,
	module_pending_members_p, attached_decls_p fields with single
	module_pending_p field.
	* module.cc (trees_{in,out}::lang_decl_bools): Only stream
	module_pending_p for vars & fns.
	(trees_{in,out}::decl_value): Adjust DECL_MODULE_ATTACHMENTS_P
	changes.
	(trees_out::get_merge_kind): Likewise.
	(trees_in::key_mergeable, maybe_attach_decl): Likewise.
	* lex.c (cxx_dup_lang_specific_decl): Directly clear some module flags.

	Merge trunk 05f7a2afe8f
	C++ Module Binding Vector

	Merge trunk 41676a36a04
	C++ Module keywords

	gcc/cp/
	* name-lookup.h: Rename MODULE_VECTOR and associated structs &
	macros to BINDING_VECTOR.
	* cp-tree.h: Adjust.
	* cp-tree.def: Adjust.
	* decl.c: Adjust.
	* module.cc: Adjust.
	* name-lookup.c: Adjust.
	* ptree.c: Adjust.
	* decl.c: Adjust.

	gcc/cp/
	* cp-tree.h (struct tree_module_vec): Move to ...
	* name-lookup.h (struct tree_module_vec): ... here.

	gcc/cp/
	* lex.c (struct token_coro): Rename to ...
	(struct module_token_filter): ... here.  Adjust through out.

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

	libcody/
	Update from upstream, removing deprecated functions.

	Merge trunk 855bb43f6d0

	Merge trunk eae68c434f2
	testsuite: Adjust pruning

	Merge trunk 83a1beee276
	libstdc++: Add C++2a synchronization support

	gcc/cp/
	* module.cc (trees_{in,out}::decl_container): Stream template as
	well as container.  Do not strip (no nudity!)
	gcc/testsuite/
	* g++.dg/modules/noexcept-1{.h,_[ab].[HC]}: New.

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

	gcc/
	* doc/invoke.texi: Updates from review.

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

	Merge trunk 89d9c634dc5

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

	gcc/cp/
	* Make-lang.in: Don't depend VERSION on src dir.
	* module.cc: Note some potential issues.

	gcc/
	* doc/invoke.texi (-flang-include-translate-not): Document.
	gcc/cp/
	* module.cc (maybe_translate_include): Add not-translate noting.
	gcc/c-family/
	* c.opt (flang-include-translate-not): New.

	libcody/
	Update from upstream, INCLUDE_TRANSLATE response meaning change

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

	gcc/
	* doc/invoke.texi: Fixes.

	libcody/
	Update from upstream.

	gcc/
	* doc/invoke.texi: Update
	* doc/cppopts.texi: Update

	gcc/cp/
	* cp-tree.h (match_mergeable_specialization): Take a spec_entry.
	* pt.c (match_mergeable_specialization): Likewise.
	* module.cc (trees_in::decl_value): Adjust.
	(trees_{in,out}::key_mergeable): Adjust.
	(specialization_add): Adjust.

	gcc/
	* doc/invoke.texi: Update
	* doc/cppopts.texi: Update

	Merge trunk 5bba2215c23
	c++: Template hash access (

	Merge trunk bf425849f1d
	preprocessor: main-file cleanup

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

	gcc/cp/
	* cp-lang.c (LANG_HOOKS_PREPROCESS_UNDEF): Do not override here.
	* cp-tree.h (module_cpp_undef): Do not declare.
	* module.cc (module_cpp_undef): Delete.
	(handle_module_option): Store cpp_main_search code in flag_header_unit.
	(module_preprocess_options): Set main_search option here.
	Conditionally set preprocess_undef lang hook here.

	libcpp/
	* include/cpplib.h (enum cpp_main_search): Add CMS_header value.
	* internal.h (cpp_in_system_header): Rename to ...
	(_cpp_in_system_header): ... here.
	(cpp_in_primary_file): Rename to ...
	(_cpp_in_main_source_file): ... here.  Compare main_file equality
	and check main_search value.
	* lex.c (maybe_va_opt_error, _cpp_lex_direct): Adjust.
	* macro.c (_cpp_builtin_macro_text): Adjust.
	(replace_args): Likewise.
	* directives.c (do_include_next): Adjust.
	(do_pragma_once, do_pragma_system_header): Likewise.
	* files.c (struct _cpp_file): Delete main_file field.
	(pch_open): Check pfile->main_file equality.
	(make_cpp_file): Drop cpp_reader parm, don't set main_file.
	(_cpp_find_file): Adjust.
	(_cpp_stack_file): Check pfile->main_file equality.  Drop
	main_file clearing.
	(struct report_missing_guard_data): Add cpp_reader field.
	(report_missing_guard): Check pfile->main_file equality.
	(_cpp_report_missing_guards): Adjust.

	Merge trunk 92648faa1cb
	08-cpp-mkdeps.diff
	05-cpp-files.diff
	04a-cpp-lexer.diff
	32-aix-fixincl.diff

	Merge trunk d3ae802402b
	01-langhooks.diff
	02-cpp-line-maps.diff
	03-cpp-callbacks.diff
	19-global-trees.diff
	21a-int-cst.diff

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

	Adjust lang hooks
	gcc/c-family/
	* c-opts.c (c_common_init): Drop preprocess_undef
	gcc/cp/
	* cp-lang.c (LANG_HOOKS_PREPROCESS_DEFERRED_MACRO): Delete.
	* cp-tree.h (module_cpp_deferred_macro): Do not declare.
	* module.cc (module_cpp_deferred_macro): Delete.
	(module_preprocess_options): Set deferred macro and undef
	callbacks here.
	gcc/
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_UNDEF): Delete.
	* langhooks.h (struct lang_hooks): Delete
	preprocess_deferred_macro.

	Constrained partial variable templates
	gcc/cp/
	* module.cc (trees_{in,out}::key_mergeable): Variable templates
	can be partially specialized and constrained.
	(finish_module_processing): Point at module decl, so ICEs blame
	that.
	gcc/testsuite/
	* g++.dg/modules/var-tpl-concept-1{.h,_[ab].C}: New.

	Merge trunk 63496cbea58

	using enum support
	gcc/cp/
	* module.cc (trees_out::mark_class_def): Mark cloned enum consts
	gcc/testsuite/
	* g++.dd/modules/using-enum-1_[ab].[HC]: New.

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

	Merge trunk d50310408f5
	c++: Implement C++20 'using enum'.

	Merge trunk e3b3b59683c

	Fix libiberty linking
	* g++tools/Makefile.in (LIBIBERTY): New.

	Merge trunk 5fa821bba73

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

	Merge trunk 7f851c33411
	libstdc++: Fix __numeric_traits_integer<__int20> [PR 97798]

	Enum dedup ODR check fix
	gcc/cp/
	* tree.c (cp_tree_equal): Allow NON_LVALUE_EXPR &
	VIEW_CONVERT_EXPR with NULL types.
	gcc/testsuite/
	* g++.dg/modules/loc-wrapper-1{.h,_a.H,_b.C}: New.

	* Makefile.def: Fix g++ check implications.
	* Makefile.in: Rebuilt.
	gcc/
	* config.in: Rebuilt.
	* configure: Rebuilt.
	* configure.ac: Remove unneeded checks
	gcc/cp/

	Merge trunk 3c3beb1a813

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

	c++tools/
	* resolver.h (module_resolver): Update to new API.
	* resolver.cc (module_resolver): Likewise.

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

	Adjust c++tools
	* Makefile.def (c++tools): Depends on gcc
	* Makefile.in: Rebuilt
	c++tools/
	* mapper.h: Rename to ...
	* resolver.h: ... here.  Move mapper-client to
	gcc/cp/mapper-client.h
	* resolver.cc: Adjust.
	* configure.ac: Fix extraneous ]
	* configure: Rebuilt.
	gcc/cp/
	* mapper-client.h: New, split from c++tools/mapper.h.
	* mapper-client.cc: Adjust.
	* mapper-resolver.cc: Adjust.
	* module.cc: Adjust.

	c++tools/
	* mapper.h (class mapper_client): Add flag support.
	gcc/cp/
	* mapper-client: Likewise.
	* module.cc (maybe_translate_include): Likewise.
	(preprocessed_module): Likewise.

	libcody/
	Rebase on upstream -- $flag support.

	Create c++tools dir
	* Makefile.def: Add c++tools
	* Makefile.tpl: Likewise.
	* configure.ac: Likewise.
	* Makefile.in: Regenerated.
	* configure: Regenerated.
	c++tools/
	* Makefile.in: New.
	* configure.ac: New.
	* config.h.in: Generated
	* configure: Generated
	* mapper.h: Moved from gcc/cp.
	* resolver.cc: Moved from gcc/cp/mapper-resolver.cc
	* server.cc: Moved from gcc/cp/mapper-server.cc
	gcc/
	* configure.ac: Remove mapper-server-specific checks
	* config.in: Rebuilt.
	* configure: Rebuilt.
	gcc/cp/
	* Make-lang.in: Remove mapper-server.
	* mapper-client.cc: Adjusted.
	* mapper-resolver.cc: Moved to c++tools/resolver.cc, replaced with
	stub here.
	* mapper.h: Moved to c++tools, replaced with stub here.
	* module.cc: Adjust.
	gcc/testsuite/
	* g++.dg/modules/extern-tpl-1_b.C: Adjust invocation.
	* g++.dg/modules/inc-xlate-1_e.C: Likewise.
	* g++.dg/modules/legacy-2_b.H: Likewise.
	* g++.dg/modules/legacy-6_c.C: Likewise.
	* g++.dg/modules/legacy-6_d.C: Likewise.

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

	Merge trunk e38cd64ac6c
	c++: ADL refactor

	Address review comments
	libcpp/
	* lex.c (cpp_maybe_module_directive): Add asserts and comments
	about initial and final state.  Remove __builtin_expects.
	(_cpp_lex_token): Remove __builtin_expect.

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

	Merge trunk 4b5f564a5d9
	libcpp: Provide date routine

	gcc/
	* tree.c (cache_integer_cst): Document API.

	gcc/cp/
	* Make-lang.in: Drop git hash collection.
	gcc/
	* REVISION: New.

	gcc/cp/
	* parser.c (cp_parser_diagnose_invalid_type_name): Revert local
	changes.

	libcpp/
	* include/cpplib.h (enum CPP_time_kind): New.
	(cpp_get_date): Declare.
	* internal.h (struct cpp_reader): Replace source_date_epoch with
	time_stamp and time_stamp_kind.
	* init.c (cpp_create_reader): Initialize them.
	* macro.c (_cpp_builtin_macro_text): Use cpp_get_date.
	(cpp_get_date): Broken out from _cpp_builtin_macro_text and
	genericize.
	gcc/cp/
	* module.cc (module_state_write_readme): Use new libcpp API.

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

	gcc/cp/
	* module.cc (module_state::write_Readme): Add cpp_reader parm, use
	cb_get_source_date_epoch to see if the time is locked.

	gcc/cp/
	* module.cc (enum merge_kind): Minor remapping.
	(merge_kind_name): Adjust.

	gcc/cp/
	* module.cc (depset::fini_partial_redirect): Delete.
	(depset::hash::add_partial_redirect): Delete.
	(depset::hash::init_partial_redirect): Delete.
	(enum merge_kind): Delete MK_tmpl_partial_mask,
	MK_type_partial_spec.
	(trees_out::get_merge_kind): Adjust.
	(trees_{in,out}::key_mergeable): Delete tmpl_partial case.
	(depset::hash::make_dependency): Directly create the redirect here.
	(depset::hash::add_specializations): Do not detect partial
	specializations here.

	gcc/cp/
	* module.cc (enum depset::entity_kind): Add EK_PARTIAL,
	EK_DIRECT_HWM.
	(enum depset::disc_bits): Delete DB_PARTIAL_BIT.
	(depset::is_partial): Delete.
	(depset::fini_partial_redirect): Assert EK_PARTIAL.
	(depset::entity_kind_name): Add EK_PARTIAL.
	(trees_out::decl_node): Adjust redirect asserts.
	(trees_out::get_merge_kind): No partial template.
	(depset::hash::make_dependency): Partials create EK_PARTIAL.
	(depset::hash::add_partial_entities): Adjust,
	(depset::hash::add_specializations): Adjust.
	(depset::hash::add_mergeable): Adjust.
	(sort_cluster, module_state::write_cluster): Likewise.
	(module_state::write_{entities,pendings}): Adjust.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-5_a.C: Adjust scan.

	gcc/cp/
	* module.cc (depset::hash::add_partial_redirect): Break out
	helpers ...
	(depset::fini_partial_redirect): ... this and ...
	(depset::hash::init_partial_redirect): ... this.  Call them.
	(partial_specializations): New vector.
	(depset::hash::make_dependency): Deal with partial
	specializations.
	(depset::hash::add_partial_entities): New.
	(deset::hash::add_specializations): We may have added a partial.
	(module_state::write_cluster): Count partials.
	(module_state::write_pendings): Likewise.
	(module_state::write): Add partials.
	(set_defining_module): Append explicit specializations.
	gcc/testsuite/
	* g++.dg/modules/constrained-partial-1_[ab].C: New.

	gcc/cp/
	* mapper-client.cc (spawn_mapper_program): Use @ to indicate
	looking in install dir.
	gcc/
	* doc/invoke.texi (fmodule-mapper): Document behaviour.
	gcc/testsuite/
	* g++.dg/modules/extern-tpl-1_b.C: Adjust options.
	* g++.dg/modules/inc-xlate-1_e.C: Adjust options.
	* g++.dg/modules/legacy-2_b.H: Adjust options.
	* g++.dg/modules/legacy-6_[cdef].C: Adjust options.

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

	gcc/testsuite/
	* g++.dg/modules/builtin-3_[ab].C: Adjust for i686

	gcc/cp/
	* mapper-resolved.cc: define INCLUDE_ALGORITHM.

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

	Merge trunk a52bf016433
	c++: using-decl instantiation

	Cleanup unnecessary or stale changes.
	gcc/cp/
	* class.c (clone_cdtor): Fix erroneous comment.
	* decl.c (finish_enum_value_list): Revert local change.
	gcc/
	* doc/cppopts.texi (EE): Delete stale info.
	libcpp.
	* files.c (cpp_main_controlling_macro): Delete.
	* include/cpplibc.h (cpp_main_controlling_macro): Delete.
	* mkdeps.c: Rename bmi->cmi

	Merge trunk 444655b6f02
	c++: cp_tree_equal cleanups

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

	libcpp/
	* include/cpplib.h (cpp_enable_filename_token): Delete.
	* macro.c (cpp_enable_filename_token): Delete.

	Merge trunk b2a31e2c341

	gcc/cp/
	* module.cc (module_state::write_elf): Remove obsolete FIXME.

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

	Add DECL_ACCESS support
	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream using_decl decls.
	(trees_out::lang_decl_vals): Do not stream DECL_ACCESS that is
	actually an access alterer.
	(trees_in::read_class_def): Reconstruct DECL_ACCESS.
	gcc/testsuite/
	* g++.dg/modules/access-1_[abc].C: New.

	gcc/cp/
	* module.cc: Address more FIXMES.

	gcc/cp/
	* cp-tree.h (maybe_check_all_macros): Declare.
	* module.cc (slurping::release_macros): New.
	(slurping::~slurping): Use it.
	(module_state::maybe_completed_reading): Use it.
	(maybe_check_all_macros): New, broken out of ...
	(finish_module_processing): ... here.  DO NOT CALL.
	* parser.c (cp_lexer_new_main): Call it here.

	Cache Path Of Instantiation
	gcc/cp/
	* cp-tree.h (struct tinst_level): Add path and visible bitmaps.
	* module.cc (path_of_instantiation): New recursive helper broken
	out of ...
	(module_visible_instantiation): ... here.  Call it.
	* pt.c (push_tinst_level_loc): Nullify path and visible bitmaps.

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

	gcc/cp/
	* module.cc: Address a bunch of FIXMEs.

	Prague anon-enum keying by underlying type
	gcc/cp/
	* module.cc (trees_{in,out}::key_mergeable): Stream MK_enum
	underlying type decl.
	(check_mergeable_decl): The enum itself is on the ovl list.
	* name-lookup.c (init_global_partition): Copy the enum for the
	first member of an anonymous enum.
	gcc/testsuite/
	* g++.dg/modules/enum-8_[abcd].[CH]: New.

	gcc/cp/
	* module.cc (trees_out::get_merge_kind): Resolve FIXMEs.
	(trees_out::key_mergeable): Likewise.

	gcc/cp/
	* module.cc (trees_out::get_merge_kind): Only function-scope
	entities we meet are implicit TYPE_DECLs.

	Merge trunk 9703b8d98c1
	c++: Stop (most) function-scope entities having a template header

	Merge trunk bafcf452c79
	opts: Sanity check for param names.
	gcc/
	* params.opt: Fixup lazy-load parm name.
	gcc/testsuite/
	* g++.dg/modules/freeze-1_d.C: Adjust.
	* g++.dg/modules/nest-1_c.C: Adjust.

	Merge trunk 53dede0f04b
	CSE conversions within sincos [Alexandre Oliva]

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

	Merge trunk 4289e488ddd
	c++: Make OMP UDR DECL_LOCAL_DECL_P earlier

	Merge trunk 7d5f38e49e5
	c++: Refactor push_template_decl

	gcc/cp/
	* module.cc: More FIXME addressing.
	(trees_out::get_merge_kind): Assert function-scope entities are
	not unexpected.

	gcc/cp/
	* module.cc: More FIXME fixing.

	gcc/cp/
	* lang-specs.h: Fix -xc++-{,user-,system-}header.

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

	No special anon-namespace naming
	gcc/cp/
	* name-lookup.h (add_imported_namespace): Drop anon name parm.
	* name-lookup.c (anon_name): Delete.
	(make_namespace): Nothing special for anonymous namespace.
	(add_imported_namespace): Likewise.
	* module.cc (module_state::{read,write}_namespaces): Anon
	namepspace does not need naming.

	gcc/testsuite/
	* g++.dg/modules/xtreme-tr1{.h,_a.H,_b.C}: New.

	gcc/cp/
	* module.cc (trees_out::vec_chained_decls): Detect anonymous
	struct with typedef name.
	(trees_{in,out}::add_indirect): Assert TYPE_DECL is typedef or
	type's TYPE_NAME.
	(trees_{in,out}::{read,write}_class_def): Cope with anon-structs
	with typedef names.
	gcc/testsuite/
	* g++.dg/modules/tdef-8_[ab].C: New.

	gcc/cp/
	* module.cc (depset_cmp): Decide strcmp question.
	(module_state::write_prepare_maps): Document pruning question.

	gcc/cp/
	* module.cc (trees_{in,out}::{read,write}_class_def): Remove
	nested udt FIXMEs.  They are no longer a thing.

	Merge trunk 54380d42e6f
	c++: Kill nested_udts

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

	gcc/cp/
	* module.cc (trees_{in,out{::type_node): Stream attribs.

	gcc/cp/
	* module.cc (trees_out::type_node): Stream alignment.
	(trees_in::type_node): Alignment is a log.
	gcc/testsuite/
	* g++.dg/modules/align-type-1_[ab].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::tree_list): Address more Fixmes,
	either by obsoleting them, or coding around their confusion.

	libcody/
	Rebase on upstream, robustify enable-checking.

	gcc/cp/
	* module.cc (trees_{in,out}::tree_list): New streamers.
	(trees_{in,out}::{read,write}_class_def): Use them.

	gcc/cp/
	* module.cc: Remove or clarify more now-obsolete FIXMEs.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Document
	middle-endy/debugy BLOCK fields.  Document OPTIMIZATION_NODE &
	TARGET_OPTION_NODE issue.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): RESULT_DECL is like PARM_DECL.

	libcody/
	Rebase on upstream, fix enable-checking & bootstrap

	gcc/cp/
	* module.cc (trees_in::chained_decls): Chain should always be null.

	libcody/
	Rebase on upstream, collect new autoconf bits.

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

	gcc/cp/
	* module.cc: Address 3 now-irrelevant FIXMES.

	gcc/cp/
	* module.cc (enum merge_kind): Reorder.
	(merge_kind_name): Likewise.

	Merge trunk cd8b7d7b24c
	Link with the configured net lib on vxworks7

	Merge trunk e957b86ca26
	libstdc++: Rebase include/pstl to current upstream
	gcc/testsuite/
	PR 97549 workaround
	* g++.dg/modules/xtream-header{,-2}.h: Don't include <exception>.

	Merge trunk 310fe80babe
	Fortran: class.c - update vtable comment

	gcc/cp/
	* mapper-server.cc: Disable networking when not available.

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

	libcody/  9e71a7c Avoid fstatat when unavailable
	gcc/
	* configure.ac: Check for fstatat & O_CLOEXEC.
	* configure: Regenerated.
	* config.in: Regenerated.
	gcc/cp/
	* mapper-resolver.cc: Include config.h, system.h.  Cope with lack
	of fstatat.
	* module.cc: Workaround lack of O_CLOEXEC.

	Block-scope structures, like wow, why worked so far?
	gcc/cp/
	* module.cc (trees_{in,out}::decl_value): Stream local struct
	definitions.
	gcc/testsuite/
	* g++.dg/modules/local-struct-1_[ab].C: New.

	gcc/cp/
	* module.cc (trees_in::is_matching_decl): Add builtin data
	copying.
	(trees_in::read_function_def): Recontextualize parms.
	* decl.c (duplicate_decls): Refactor builtin copying.
	gcc/testsuite/
	* g++.dg/modules/builtin-7_[ab].[HC]: New.

	libcody/
	* fatal.cc: noexcept fix from Iain Sandoe.

	gcc/cp/
	* gcc/cp/decl.c (duplicate_decls_): Return error_mark_node for
	extern "C" collision.
	* gcc/cp/module.cc (check_mergeable_decl): Check extern "C"-ness.
	(trees_in::is_matching_decl): Check extern "C" builtin mismatch.
	Propagate flags on smashing a builtin.
	gcc/testsuite/
	* g++.dg/modules/builtin-6_[ab].[HC]: New.

	gcc/cp/
	* mapper-client.cc: Enable networking only when CODY_NETWORKING
	* mapper-server.cc: Likewise.
	libcody/
	Rebase b26a54f | Enable networking only on known-good systems

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

	* Makefile.def: Don't build libcody for build.  Do not install it
	either.
	* Makefile.in: Rebuilt.

	gcc/testsuite/
	* g++.dg/modules/builtin-3_[ab].C: Scans for darwin, thanks Iain

	AIX fixinclude
	fixincludes/
	* inclhack.def (aix_physadr_t): New.
	* fixincl.x: Regenerated.

	Vector bools
	gcc/cp/
	* module.cc (trees_{in,out}::type_node): Deal with non-standard bools.
	gcc/testsuite/
	* g++.dg/modules/bool-1{,_[abc]}.[CHh]: New.

	AIX test fix
	gcc/testsuite/
	* g++.dg/modules/literals-1_[ab].C: Add -Wno-psabi

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

	gcc/
	* Makefile.in (INCLUDES): Add $(CODYINC).

	gcc/cp/
	* Make-lang.in (GIT_INFO): Support stricter seds.

	Local-extern fix
	gcc/cp
	* name-lookup.c (push_local_extern_decl_alias): Fix default arg bug.

	Local-extern fix
	gcc/cp
	* name-lookup.c (push_local_extern_decl_alias): Recontextualize
	alias' parms, drop any default args.
	gcc/testsuite/
	* g++.dg/modules/local-extern-2.H: New.

	Libcody by value
	* Makefile.def: Add libcody as a component library.
	* Makefile.in: Change libcody from an external library to a
	component.
	* Makfile.tpl: Likewise.
	* configure.ac: Likewise.
	* configure: Regenerated.
	gcc/
	* Makefile.in: Likewise.
	* configure.ac: Likewise.
	* configure: Regenerated.

	* libcody/: Import by value.

	gcc/cp/
	* module.cc (elf_in::begin): Fix madvise on AIX.

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

	gcc/cp/
	* module.cc: Add testing for non-mmapped access.
	(elf_out::grow): Assert aligned at start.
	(elf_out::write): Align afterwards.

	gcc/testsuite/
	* g++.dg/modules/sym-subst-3_a.C: Some assemblers say .global.

	gcc/cp/
	* module.cc (module_state::write_macro_locs): Macro loc count is a
	count.
	(module_state::read_prepare_maps): Adjust.
	gcc/testsuite/
	* g++.dg/modules/macloc-2_[ab].[HC]: New.

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

	Merge trunk ccb4f20cbee

	gcc/cp/
	* name-lookup.c (do_nonmember_using_decl): Fix duplication case.

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

	gcc/cp/
	* name-lookup.h (enum WMB_Flags): New.
	(walk_module_binding): Adjust.
	* name-lookup.c (walk_module_binding): Replace callbacks, bool
	args by single flags arg.
	* module.cc (depset::hash::add_binding): Replace bool args by
	flags.

	gcc/cp/
	* module.cc (trees_out::core_bools): Adjust initialized var
	handling.
	(has_definition): Likewise.
	(trees_{in,out}::{read,write}_var_def): Likewise.
	(module_state::{read,write}_inits): Just stream the decls.
	gcc/testsuite/
	* g++.dg/modules/hdr-init-1_[abc].[HC]: New.

	gcc/cp/
	* module.cc (depset::hash::finalize_dependencies): Remove
	pre-p2003 kludge.

	p2003 internal linkage & header units
	gcc/cp/
	* name-lookup.c (get_fixed_binding_slot): Promote internal GM
	entities to global slot.
	* module.cc (has_definition): Add internal linkage fns/vars in GM.
	(depset::hash::make_dependency): Internal linkage in GM is ok.

	gcc/cp/
	* pt.c (lookup_template_class_1): Delete erroneous fixme.
	(tsubst_template_decl): Delete questioning fixme, problem, if any,
	is on trunk.
	(get_mergeable_specialization_flags): Optimize specialization scan.

	Merge trunk 068644a1497
	c++: DECL_FRIEND_P cleanup

	Merge trunk 06bec55e80d

	gcc/cp/
	* decl.c (duplicate_decls): Remove obsolete FIXME.
	* pt.c (push_template_decl): Remove about-to-be obsolete FIXME.

	gcc/cp/
	* decl.c (xref_tag_1): Refactor module handling. Push imported
	decl into TU's slot
	* name-lookup.c (lookup_elaborated_type_1): Fixme fixed.
	* module.cc (set_instantiating_module): Accept template_decls.
	gcc/testsuite/
	* g++.dg/modules/part-7_[abc].C: New.
	* g++.dg/modules/hdr-1_[abc].[HC]: New.

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

	libcpp/
	* lex.c (do_peek_module): Update plan for unicode.

	gcc/cp/
	* decl.c (grokmethod): Remove comment about -fmodule-implicit-inline.

	Block-scope externs disallowed
	gcc/cp/
	* decl.c (start_decl): Reject block-scope extern in module
	purview.
	gcc/testsuite/
	* g++.dg/modules/local-extern-1.C: New.

	Remove unused code
	gcc/cp/
	* friend.c (add_friend): Remove #if'd out code

	Cleanup name-lookup interface
	gcc/cp/
	* name-lookup.h (get_field_ident, lookup_field_ident): Don't
	declare.
	(mergeable_class_entities): Rename to ...
	(lookup_class_binding): ... here.
	* name-lookup.c (mergeable_class_entities): Rename to ...
	(lookup_class_binding): ... here.
	(get_field_ident, lookup_field_ident): Move to module.cc
	* module.cc (get_field_ident, lookup_field_ident): Moved here.
	Only deal with anon fields.
	(trees_{in,out}::tree_node): Adjust.
	(trees_in::key_mergeable): Adjust.

	Remove unneeded decls
	gcc/cp/
	* name-lookup.c (lookup_class_member, void set_class_bindings)
	(tree lookup_all_conversions): Delete unused decls.
	(insert_late_enum_def_bindings): Delete duplicate decl.

	Clean up mangling documentation
	gcc/cp/
	* mangle.c (write_module): Update grammar description.
	* module.cc (module_state::mangle): Clarify why partitions might
	be significant.

	Clean up some c-family pieces
	gcc/
	* langhooks.h (struct lang_hooks): Replace
	preprocess_translate_include with preprocess_options.
	* langhooks-def.h: Replace LANG_HOOKS_PREPROCESS_INCLUDE_TRANSLATE
	with LANG_HOOKS_PREPROCESS_OPTIONS.
	gcc/c-family/
	* c-cppbuiltins.c (c_cpp_builtins): Comment __cpp_modules.
	* c-opts.c (c_common_post_options): Replace include_translate hook
	with more general preprocess_options hook.
	gcc/cp/
	* cp-lang.c: Replace LANG_HOOKS_PREPROCESS_TRANSLATE_INCLUDE with
	LANG_HOOKS_PREPROCESS_OPTIONS.
	* cp-tree.h (module_translate_include): Don't declare.
	(module_preprocess_options): Declare.
	* module.cc (module_translate_include): Rename to ..
	(maybe_translate_include): ... here.  Make static.
	(module_preprocess_options): New.

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

	Merge trunk d1c566d72d9

	Undeclared builtin merging
	gcc/cp/
	* module.cc (trees_in::is_matching_decl): Merge into undeclared
	builtin.
	* name-lookup.cc (check_module_override): Rename is_friend parm.
	(do_pushdecl): Ignore hidden imports.
	gcc/testsuite/
	* g++.dg/modules/builtin-5_[ab].[HC]: New.

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

	Streamed classes always have a member vector.
	gcc/cp/
	* module.cc (trees_out::decl_value): Assert no pmfs.
	(trees_in::decl_value): Ensure existing duplicate class has member
	vector.
	(tree_out::write_class_def): Ensure there's a method vector.
	* name-lookup.c (set_class_bindings): Extra can be negative,
	meaning always.  Return the member vector.
	(mergeable_class_entities): Simplify.
	(lookup_field_ident): Simplify.

	gcc/cp/
	* module.cc (module_state::read_prepare_maps): Only inform of
	location shortage once.

	Fix -save-temps & header units
	gcc/cp/
	* module.cc (loc_spans::maybe_init): New.
	(loc_spans::init): Allow NULL map.
	(preprocess_module, preprocessed_module): Call maybe_init.
	gcc/libcpp/
	* internal.h (enum include_type): Rename IT_MAIN_INJECT to IT_PRE_MAIN.
	* init.c (cpp_read_main): Adjust _cpp_stack_file call.  Adjust
	first line marker if no preprocessed marker found.
	(read_original_filename): Peek characters in buffer, not token.
	(read_original_directory): Likewise.
	* files.c (_cpp_stack_file): Adjst.
	gcc/testsuite/
	* g++.dg/modules/preproc-2_[ab].[HC]: New.

	Merge trunk 4e62aca0e05
	c++: block-scope externs get an alias [PR95677,PR31775,PR95677]

	Merge trunk e089e43365f

	Merge trunk 255aa06d40d

	Merge trunk bf490f06360

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

	Pick 255aa06d40d (c++: Make spell corrections consistent)

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

	Merge trunk 679dbc9dcec
	c++: Kill DECL_ANTICIPATED

	Merge trunk 7ee1c0413e2
	c++: Hash table iteration for namespace-member spelling
	gcc/cp/
	* name-lookup.c (consider_binding): New, broken out of ...
	(consider_binding_level): ... here.  Use it, add MODULE_VECTOR
	support.

	Merge trunk 9340d1c97b8
	c++: cleanup ctor_omit_inherited_parms
	gcc/cp/
	* module.cc (trees_out::decl_value): Adjust for new ctor_omit API.

	Merge trunk 31584824665

	Merge trunk dfaa24c974b
	c++: Kill DECL_HIDDEN_P

	gcc/cp/
	* name-lookup.c (walk_module_binding): Update for new HIDDEN markers.

	Merge trunk c2978b34058

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

	Merge trunk c2978b34058

	Merge trunk 734eed68537
	c++: Kill DECL_HIDDEN_FRIEND_P

	Merge trunk 65167982efa

	Merge trunk 7cbfe0894de

	Merge trunk adcf8a11c77

	Merge trunk cc61827b55e

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

	Merge trunk 39a27bb01aa

	Merge trunk c74e6f7cfd7

	Apply trunk 7cbfe0894de
	c++: Hiddenness is a property of the symbol table

	Apply trunk adcf8a11c77
	c++: Name lookup simplifications

	Apply trunk cc61827b55e
	c++: Identifier type value should not update binding

	Apply trunk c74e6f7cfd7
	c++: Adjust pushdecl/duplicate_decls API

	gcc/cp/
	* tree.h (ovl_insert): Make usingness unsigned.
	* tree.c (ovl_insert): Make usingness unsigned, change semantics.
	* name-lookup.c (do_nonmember_using_decl): Adjust ovl_insert call.

	Merge trunk 00aaae03db2
	c++: Replace tag_scope with TAG_how

	Merge trunk 0d8f3f612d6

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

	Merge trunk d13c0ae859f

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

	Merge trunk cd6743e9c41

	gcc/cp/
	* module.cc (trees_out::get_merge_kind): Add asserts & FIXMEs.

	gcc/cp/
	* pt.c (primary_template_specialization_p): Use
	VAR_OR_FUNCTION_DECL_P.
	(push_template_decl_real): Likewise.
	* module.cc (trees_out::chained_decls): Use
	VAR_OR_FUNCTION_DECL_P.
	(trees_out::get_merge_kind, trees_in::is_matching_decl)
	(depset::hash::make_dependency, depset::hash::add_binding_entity)
	(specialization_add): Likewise.

	Merge trunk d106029c2aa

	Merge trunk 10f51543bb8
	libstdc++: Add compile-time checks to__glibcxx_assert [PR 71960]

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

	Concepts and local externs
	gcc/cp/
	* decl.c (grokfndecl): Don't attach to local extern.
	gcc/testsuite/
	* concepts/local-extern.C: New.

	Local extern fns do not get template header
	gcc/cp/
	* module.cc (trees_out::chained_decls): Also mark local fns for
	by-value walking.
	(trees_out::decl_node): Assert we don't meet a local var or fn.
	(trees_out::get_merge_kind): Local fns are also unique.
	* pt.c (push_template_decl_real): Local fns also lack a header.
	(tsubst_function_decl): Cope with local fns.
	(tsubst_decl): Adjust VAR_DECL tsubsting.
	gcc/testsuite/
	* g++.dg/modules/tpl-extern-{var,fn}-1_{a.H,b.C}: New.

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

	Local extern vars do not get template header
	gcc/cp/
	* cp-tree.h (TINFO_VAR_DECLARED_CONSTINIT): Replace with ...
	(DECL_DECLARED_CONSTINIT_P): ... here, decl_lang_flag 7.
	* decl.c (start_decl): Set DECL_DECLARED_CONSTINIT_P as necessary.
	(cp_finish_decl): Likewise.
	* pt.c (push_template_decl_real): Don't add a header for
	DECL_LOCAL_DECL_P VAR_DECLS.
	(tsubst_decl): Check for VAR_DECLS lacking template info are
	local.  No need to handle TINFO_VAR_DECLARED_CONSTINIT specially.
	(tsubst_expr): Likewise.
	(instantiate_decl): Likewise.

	DECL_LOCAL_DECL_P
	gcc/cp/
	* cp-tree.h (DECL_LOCAL_FUNCTION_P): Rename to ...
	(DECL_LOCAL_DECL_P): ... here.  Apply to VAR_DECLS too.
	* decl.c (start_decl): Set DECL_LOCAL_DECL_P as approriate.
	(start_decl_1): Reformat.
	(omp_declare_variant_finalize_one): Use DECL_LOCAL_DECL_P.
	(local_variable_p): Simplify.
	* module.cc (trees_out::chained_decls): Stream DECL_LOCAL_DECL_P
	by value.
	(trees_out::get_merge_kind): DECL_LOCAL_DECL_P decls are unique.
	* name-lookup.c (set_decl_context_in_fn): Assert DECL_LOCAL_DECL_P
	as expected, don't set it here.
	(do_pushdecl): Don't call it for friends or dependent types.
	(is_local_extern): Simplify.
	* parser.c (cp_parser_postfix_expression): Use DECL_LOCAL_DECL_P.
	(cp_parser_omp_declare_reduction): Set DECL_LOCAL_DECL_P.
	Refactor.
	* pt.c (check_default_tmpl_args): Use DECL_LOCAL_DECL_P.
	(tsubst_expr): Adjust omp reduction case.
	(tsubst_omp_udr): Add comments.
	(type_dependent_expression_p): Adjust.
	* call.c (equal_functions): Adjust.
	* semantics.c (finish_call_expr): Adjust.
	libcc1/
	* libcp1plugin.cc (plugin_build_call_expr): Use DECL_LOCAL_DECL_P.

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

	Change cxx_int_tree_map to cxx_decl_tree_map.
	gcc/cp/
	* cp-tree.h (struct cxx_int_tree_map): Rename to ...
	(struct cxx_decl_tree_map): ... here.
	* cp-gimplify.c (cxx_int_tree_map_hasher): Rename to ...
	(cxx_decl_tree_map_hasher): ... here.  Update member fns
	(cp_genericize_r): Adjust extern_decl_map lookup.
	* name-lookup.c (set_local_extern_decl_linkage): Adjust
	extern_decl_map insertion.

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

	FLAG DAY! Mapper reponse format change in LibCody
	gcc/cp/
	* mapper-client.cc (module_client::open_module_client): Use
	Client::PC_PATHNAME.
	* mapper-resolver.cc (module_resolver::ModuleRepoRequest): Use
	PathnameResponse.
	(module_resolver::cmi_response): Likewise.
	(module_resolver::IncludeTranslateRequest): Use BoolResponse and
	PathnameResponse.
	* module.cc (module_state::set_filename): Use Client::PC_PATHNAME.
	(module_translate_include): Use Client::PC_BOOL and
	Client::PC_PATHNAME.

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

	Merge trunk 8bc0f24d7a2.

	Instantiation after extern instantiation.
	gcc/cp/
	* module.cc (trees_in::read_class_def): Maybe set
	CLASSTYPE_INTERFACE.
	gcc/testsuite/
	* g++.dg/modules/extern-tpl-2_[abc].[CH]: New.

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

	libcpp/
	* files.c (_cpp_stack_file): Don't try and xlate include-next.

	Extern instantiations.
	gcc/cp/
	* module.cc (trees_{in,out}::core_bools): Drop duplicate comdat
	flag.
	(trees_in::is_matching_decl): Don't propagate not-really-extern
	here.
	(trees_{in,out}::{read,write}_function_def): Stream
	not-really-extern here.
	gcc/testsuite/
	* g++.dg/modules/extern-tpl-1_[abc].[CH]: New.

	Rename -fnote-include-translate to -flang-info-include-translate.
	gcc/cp/
	* (module_translate_include): Check if matches trailing part of
	header name.
	(handle_module_option): Adjust.
	gcc/c-family/
	* c.opt (-fnote-include-translate{,=}): Rename to ...
	(-flang-info-include-translate{,=}): ... here.
	(-fnote-include-translate=query): Delete.
	gcc/
	* doc/invoke.texi: Update documentation.

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

	gcc/cp/
	* lang-specs.h: c++headers always do directives-only preprocessing
	in modules mode.

	Deal with running out of locations.
	gcc/cp/
	* module.cc (module_state::read_prepare_maps): New.
	(module_state::write_{ordinary,macro}_maps): Adjust.
	(struct module_state_config): Record number of locations needed.
	(module_state::read_location): Deal with lack of locations.
	(module_state::{read,write}_config): Adjust.
	(module_state::read_initial): Adjust.

	gcc/cp/
	* mapper.h (module_resolver): Default to no xlation.
	* mapper-resolver.cc (module_resolver::read_tuple_file): Don't
	fail on zero-length files.

	Add control for default header translation rules.
	gcc/cp/
	* mapper-client.cc (module_client::open_module_client): Better
	error reporting.
	* mapper-resolver.cc (module_resolver::module_resolver): Specify
	default translate behavior.
	(module_resolver::IncludeTranslateRequest): Check it.
	* mapper-server.cc (flag_xlate): New.
	(process_args): Rename -f->-m add -t
	(main): Adjust.
	* mapper.h (module_resolver): Add default_xlate field.
	gcc/testsuite/
	* g++.dg/modules/inc-xlate-1_e.C: Adjust.
	* g++.dg/modules/legacy-2_b.H: Adjust.
	* g++.dg/modules/legacy-6.map: Adjust.
	* g++.dg/modules/legacy-6_[cd].C: Adjust.
	* g++.dg/modules/map-2.C: Adjust.

	gcc/cp/
	* name-lookup.c (get_fixed_binding_slot): Don't stat-hack a
	namespace.
	* module.cc (trees_in::assert_definition): Header units are
	module_purview, but ok.
	gcc/testsuite/
	* g++.dg/modules/ns-dup-1_[ab].C: New.

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

	Fix pushing imported namespaces.
	gcc/cp/
	* module.cc (depset::hash_add_namespace): Don't mark bindings
	special.
	(struct add_binding_data): Record finding a namespace.
	(depset::hash::add_binding_entity): Make namespaces idempotent.
	(depset::hash::add_namespace_entities): Clear met_namespace.
	(module_state::write): Zap partitions bitmap if empty.
	* name-lookup.c (push_namespace): Ensure namespace is in
	MODULE_SLOT_CURRENT.
	* ptree.c (cxx_print_xnode): Show more detail on MODULE_VECTOR.
	gcc/testsuite/
	* g++.dg/modules/ns-imp-1_[abc].C: New.
	* g++.dg/modules/ns-part-1_[abc].C: New.

	gcc/testsuite/
	* lib/prune.exp (prune_ices): Adjust regexp.

	Merge trunk cb3c3d63315.
	Whee, all up to date!

	Merge trunk f1612b8ae8a.
	c++: Check satisfaction before non-dep convs. [CWG2369]
	gcc/testsuite/
	* g++.dg/modules/concept-[13]_b.C: Adjust.

	Merge trunk e6e01618e83.

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

	Stream MEM_REFs, who knew?
	gcc/cp/
	* module.cc (trees_{in,out}::start): Permit MEM_REFs.
	(trees_{in,out}::core_bools): Likewise.
	gcc/testsuite/
	* g++.dg/modules/memref-1_[ab].C: New.

2020-08-27  Nathan Sidwell  <nathan@acm.org>
	    Jeff Chapman II  <jchapman@lock3software.com>

	Fix hash table breakage.
	gcc/cp/
	* name-lookup.c (push_namespace): Do not create slot on first
	lookup.
	gcc/testsuite/
	* g++.dg/modules/string-view1.C: New test.
	* g++.dg/modules/string-view2.C: Ditto.

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

	Merge trunk 708b3600d04.

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

	Merge trunk 17abcc77341.
	libstdc++: Replace operator>>(istream&, char*) [LWG 2499]

	Fix type lang specific changing.
	gcc/cp/
	* lex.c (copy_lang_type): Split allocation & assignment to be
	conditional-breakpoint friendly.
	* module.cc (trees_in::read_class_def): Update variants if we
	alter TYPE_LANG_SPECIFIC.
	* name-lookup.c (maybe_lazily_declare): Look at main variant's
	decl.
	gcc/testsuite/
	* g++.dg/modules/tdef-inst-1{.h,_[ab].C}: New.

	Fix int_cst caching
	gcc/
	* tree.c (cache_integer_cst): Fix pointer type indices.

	Cherry pick 794275711bd.
	gcc/cp/
	* name-lookup.c (op_unqualified_lookup): Don't check if matches
	global lookup.
	gcc/testsuite/
	* g++.dg/lookup/operator-[12].C: New.

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

	Operator function lookups in templates
	gcc/cp/
	* 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'.  Do other short circuiting here.
	(maybe_save_operator_binding): Reimplement to always cache a
	result.
	(push_operator_bindings): Deal with 'ignore' marker.
	gcc/testsuite/
	* g++.dg/modules/operator-1_[ab].C: New.

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

	Friend specialization overhaul part 1
	gcc/cp/
	* module.cc
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-[12]_a.C: Adjust scan.
	* g++.dg/modules/tpl-friend-merge-1*: New.

	Do not stream hidden_friend_p.
	gcc/cp/
	* module.cc (trees_{in,out}::lang_decl_bools): Do not stream
	anticipated_p or hidden_friend_p.
	* name-lookup.c (name_lookup::adl_class_fns): DECL_ANTICIPATED is
	not informative.

	Reimplement module binding extraction.
	gcc/cp/
	* module.cc (depset::clear_hidden_binding): New.
	(depset::hash::add_binding): Delete.
	(struct add_binding_data): New.
	(depset::hash::add_binding_entity): New.
	(writable_cmp): Delete.
	(depset::hash::add_namespace_entities): Reimplement.
	(module_state::write_cluster): Adjust for unscoped enums.
	* name-lookup.h (extract_module_binding): Replace with ...
	(walk_module_binding): ... this.
	* name-lookup.c (STAT_TYPE_HIDDEN): New.
	(extract_module_binding): Replace with ...
	(walk_module_binding): ... this.

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

	ODR-check enums!
	gcc/cp/
	* module.cc (trees_in::maybe_duplicate): New.
	(trees_in::read_enum_def): ODR check duplicate.
	gcc/testsuite/
	* g++.dg/modules/enum-bad-1_[ab].[HC]: New.

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

	Cherry pick 634046d1a81.
	gcc/cp/
	* name-lookup.c (qualify_lookup): Drop lambda checking here.
	Reorder namespace & type checking.
	(lookup_name_1): Do hidden lambda checking here.

	Fix -save-temps issue.
	libcpp/
	* lex.c (cpp_maybe_module_directive): Increment prevent_expansion
	if not expanding.

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

	gcc/
	* doc/invoke.texi (C++ Module Mapper): Update documentation.

	Fix disable checking build.
	gcc/cp
	* module.cc (note_def_cache_hasher): GTY needs this even when
	unused.
	(not_defs_table_t, note_defs): Likewise.
	gcc/
	* gcc.c (driver::maybe_print_and_exit): Warn about disable-checking.

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

	Cherry pick e97201385a9.
	gcc/cp/
	* 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.
	libcc1/
	* libcp1plugin.cc (plugin_build_dependent_expr): Rename
	lookup_name_real call.

	Cherry pick db1c2a89db0.
	gcc/cp/
	* 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.
	libcc1/
	* libcp1plugin.cc (plugin_build_dependent_exp): Adjust
	lookup_name_real call.

	Cherry pick c38f8785205.
	gcc/cp/
	* 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.
	libcc1/
	* libcp1plugin.cc (plugin_build_dependent_expr): Adjust
	lookup_name_real & lookup_qualified_name calls.

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

	Cherry pick 0c5f6bbfe2e
	gcc/cp/
	* 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.
	libcc1/
	* libcp1plugin.cc (plugin_build_dependent_expr): Likewise.

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

	Merge trunk d21252de6c8.

	Address 2 FIXMEs.
	gcc/cp/
	* name-lookup.c (finish_nonmember_using_decl): Here.
	(lookup_type_scope_1): Here.

	Global decls.
	gcc/cp/
	* name-lookup.c (get_fixed_binding_slot): Skip internal decls when
	creating vector.
	(record_mergeable_decl): Replace with ...
	(maybe_record_mergeable_decl): Skip internal decls.
	(do_pushdecl): Adjust.
	* decl.c (start_decl): Templated vars are not
	internal. (Incomplete fix of PR 96523)

	Shadowed type.
	gcc/cp/
	* name-lookup.c (check_module_override): No need to deal with
	shadowed type here.
	gcc/testsuite/
	* g++.dg/modules/shadowed-1_[ab].C: New.

	Simplify binding extraction.
	gcc/cp/
	* name-lookup.h (extract_module_binding): Drop NS arg.
	* name-lookup.c (extract_module_binding): Reimplement.
	* module.cc (depset::hash::add_namespace_entities): Adjust.

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

	Remove now-unneeded dedup bits.
	gcc/cp/
	* module.cc (module_state::read_cluster): Don't set dedup for
	partition or header unit.

	Determine deduplication via slot flags.
	gcc/cp/
	* module.cc (module_state::read_cluster): Disable dedup here.
	* name-lookup.cc (get_fixed_binding_slot): Set
	MODULE_BINDING_GLOBAL_P if necessary.
	(name_lookup::search_bitmap_only): Inspect MODULE_BINDING_$foo_P.
	(name_lookup::adl_namespace_fns): Likewise.
	(set_module_binding): Always stat hack if mod_glob.

	gcc/cp/
	* module.cc (module_state::read_cluster): Pay attention to hidden
	decls even in same module.
	* name-lookup.c (name_lookup:adl_namespace_fns): Drop unused parm.

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

	Note binding slot origin.
	gcc/cp/
	* cp-tree.h (MODULE_BINDING_{GLOBAL,PARTITION}_P): New.
	* module_cc (module_state::read_cluster): Adjust
	set_module_binding call.
	* name-lookup.c (set_module_binding): Replace inter_p with
	mod_glob parm.  Adjust and set origin.
	* name-lookup.h (set_module_binding): Adjust prototype.

	Note duplicates on symbol vector.
	gcc/cp/
	* cp-tree.h (MODULE_VECTOR_{GLOBAL,PARTITION}_DUPS_P): New.
	* name-lookup.h (mergeable_namespace_entities): Replace with ...
	(mergeable_namespace_slots): ... this.
	* module.cc (trees_in::key_mergeable): Set dups flag when alread
	existing.
	* name-lookup.c (mergeable_namespace_entities): Replace with ...
	(mergeable_namespace_slots): ... this.  Return the vector too.

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

	Fix alias templates.
	gcc/cp/
	* pt.c (lookup_template_class_1): Fix alias resetting of
	ti_template.
	gcc/testsuite/
	* g++.dg/template/pr95263.C: Re-enable.

	Merge trunk 1790d13dc8f.

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

	Revert local paranoid change.
	gcc/cp/
	* cp-tree.h (build_cdtor_clones, clone_cdtor): Drop via_using parm.
	* class.c (build_cdtor_clones): Drop via_using parm.
	(clone_cdtor): Likewise.
	(clone_constructors_and_destructors): Adjust.
	* module.cc (trees_in::decl_value): Adjust build_cdtor_clones parms.

	Add private module fragment parsing (only).
	gcc/cp/
	* parser.c (enum module_preamble): Replace with ...
	(enum module_parse): Update all uses.  Add PMF values.
	(cp_parser_module_declaration): Add private-module-fragment grammar.
	gcc/testsuite/
	* g++.dg/modules/pmp-[123]{,_[ab]}.C: New.

	Fix save-temps & header-units
	gcc/cp/
	* lang-specs.h (@c++-{,system-,user-}header): Directives-only
	preprocessing for saving temps with modules.

	Merge trunk d1773f58f3a.

	Add c++-user-header c++-system-header languages.
	gcc/cp/
	* lang-specs.h (@c++-header): Map -fmodules-ts to -fmodule-header,
	inhibit PCH.
	(@c++-user-header, @c++-system-header): New.
	gcc/
	* doc/invoke.texi (C++ Modules): Document.

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

	Preserve reserved locations.
	gcc/cp/
	* module.cc (enum loc_kind): Add LK_RESERVED.
	(module_state::{read,write}_location): Preserve reserved
	locations.
	(module_State::{read,write}_macro_maps): Default to
	UNKNOWN_LOCATION.
	gcc/testsuite/
	* g++.dg/modules/part-mac-1_[abc].[CH]: New.

	Fix location of imports of partitions.
	* module.cc (loc_spans::maybe_propagate): New.
	(module_state::read_{ordinary,macro}_maps): Use it.
	gcc/testsuite/
	* g++.dg/modules/part-hdr-1_[abc].[CH]: New.

	Fix import location reparenting.
	gcc/cp/
	* module.cc (preprocess_module): Reparent here, if we're already
	imported.
	gcc/testsuite/
	* g++.dg/modules/reparent-1_[abc].C: New.

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

	Unspellable module control-line tokens.
	libcpp/
	* internal.h (struct spec_nodes): Add M__IMPORT.
	* init.c (post_options): Adjust module token spelling.
	* lex.c (cpp_maybe_module_directive): Adjust.
	* macro.c (cpp_get_token_1): Reset to zero.
	gcc/c-family/
	* c-common.c (c_common_reswords): Adjust module token spelling.
	gcc/testsuite/
	* g++.dg/modules/dir-recovery.C: New.
	* g++.dg/modules/cpp-[25]_c.C: Adjust.
	* g++.dg/modules/dep-2.C: Adjust.
	* g++.dg/modules/dir-only-[234]{,_b}.C: Adjust.
	* g++.dg/modules/inc-xlate-1_b.H: Adjust.
	* g++.dg/modules/legacy-[36]_[bcd].[HC]: Adjust.

	Fix implicit fns from modules.
	gcc/cp/
	* cp-tree.h (build_cdtor_clones): Add parms.
	* class.c (build_cdtor_clones): Swallow clone_cdtor's member insertion.
	(clone_cdtor): Move member insertion to build_cdtor_clones.
	* module.cc (trees_in::decl_value): Insert clones, if there's
	already a member vec.
	gcc/testsuite/
	* g++.dg/modules/sv-1{.h,_[ab].C}: New.

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

	Merge trunk f3665bd1111.

	gcc/cp/
	* class.c (layout_class_type): Restore trunk for unnamed classes.
	* cp-tree.h (lang_tree_node): Retore trunk GTY.
	(cp_tree_node_structure): Restore trunk API.
	* decl.c (cp_tree_node_structure): Restore trunk API.
	* diagnostic.c (progname): Restore trunk comment.
	gcc/
	* doc/invoke.texi (Precompiled Headers): Restore trunk index
	capitalization.
	(C++ Modules): Adjust to match.

	Merge trunk 134051f16bd.

	libcpp/
	* directives.c (_cpp_do_file_change): Check we're moving to line
	zero of the same file.

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

	gcc/c-family/
	* c-ada-spec.c (decl_sloc): Revert to trunk.

	Merge trunk 6e1e0decc9e.

	Unbreak Ada
	gcc/
	* gcc.c (execute): Disable argv[0] munging.

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

	Sadly Ada still broken :(
	gcc/c-family/
	* c-ada-spec.c (decl_sloc): Actually return the field's loc.

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

	gcc/cp/
	* rtti.c (init_rtti_processing): Unbreak bootstrap.

	Merge trunk a926eeedf43.

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

	libcpp/
	* files.c (_cpp_stack_file): Remove FIXME.
	* include/cpplib.h (cpp_main_loc): Declare.
	* init.c (cpp_read_main_file): Set main loc.
	(cpp_main_loc): New.
	* internal.h (struct cpp_reader): Add main_loc.
	gcc/cp/
	* module.cc (main_source_loc): Delete.
	(module_translate_include): Use cpp_main_loc.
	(begin_header_unit, preprocess_module, preprocessed_module)
	(init_modules, finish_module_processing): Likewise.
	(fini_modules): Adjust.

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

	gcc/cp/
	* module.cc (module_may_redeclare): Deal with declaring a builtin
	in a header unit.
	* rtti.c (init_rtti_processing): The type is not exported.

	libcpp/
	* directives.c (do_include_common): Drop FIXME question.
	* lex.c (cpp_maybe_module_directive): C++ keywords are not a thing
	here.
	(cpp_directive_only_process): Add assert.

	libcpp/
	* include/cpplib.h (struct cpp_callbacks): Adjust
	translate_include's return type.
	* files.c (_cpp_stack_file): Push the buffer returned by the hook.
	* lex.c (_cpp_clean_line): Fix buffer overrun.
	gcc/
	* langhooks.h (struct lang_hooks): Change
	preprocess_translate_include's return type.
	gcc/cp/
	* cp-tree.h (module_translate_include): Change return type.
	* module.cc (module_translate_include): Return a buffer, don't
	push it.

	libcpp/
	* include/cpplib.h (enum cpp_main_search): New.
	(struct cpp_options): Adjust.
	* init.c (cpp_read_main_file): Adjust.
	* macro.c (cpp_get_token_1): Remove FIXME.
	gcc/cp/
	* module.cc (handle_module_option): Adjust.

	gcc/cp/
	* pt.c (tsubst_expr): Do not process using decls again.
	gcc/testsuite/
	* g++.dg/modules/using-6_a.C: Enable elided code.
	* g++.dg/modules/using-8_[ab].C: New.

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

	Merge trunk 765fbbf9bb3.

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

	Merge trunk 5f809982e8e.

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

	Delete now-unused new pieces.
	gcc/
	* toplev.h (original_argc, original_argv): Delete.
	* toplev.c (original_argc, original_argv): Delete.
	gcc/cp/
	* cp-tree.h (DECL_CHECK): Delete.
	gcc/c-family
	* c-pragma.h (C_LEX_STRING_IS_HEADER): Delete.

	gcc/cp/
	* module.cc (module_state::set_filename): New.
	(module_state::do_import): Drop fname arg.
	(module_state::read_imports): Set filename here.
	(module_state::write_locations): Drop duplicate FIXME.
	(module_state::read_macros): Drop out of date FIXME.
	(direct_import): Adjust.
	(module_translate): Set filename if we're told it.
	(preprocess_module): Copy if filename already known.
	(preprocessed_module, init_modules): Adjust.

	gcc/cp/
	* module.cc (module_state::read_cluster): Add FIXME about
	unnecessary deduping.
	* name-lookup.c (name_lookup::process_module_binding): Remove
	FIXME.
	(name_lookup::adl_namespace_fns): Likewise.
	(name_lookup::search_adl): Likewise.
	(do_push_nested_namespace): Likewise.

	gcc/testsuite/
	* lib/scanlang.exp (scan-lang-dump-not): Fix 3-arg case.
	* g++.dg/modules/builtin-3_a.C: Remove unnecessary bracing.

	Merge trunk a1faa8e2470.

	Fix polymorphic type info emission and key-function confusion
	gcc/cp/
	* module.cc (trees_out::core_bools): Calculate externalness from
	POV of importer.
	(trees_{in,out{::lang_decl_bools): Do not stream
	not_really_extern.
	(trees_in::read_{var,function}_def): Recalculate
	not_really_extern.
	(trees_in::read_class_def): The key_method might become non-key.
	gcc/testsuite/
	* g++.dg/modules/sym-subst-3_a.C: Adjust regexp.
	* g++.dg/modules/virt-1_[ab].C: Adjust.
	* g++.dg/modules/virt-2_[abc].C: New.

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

	gcc/cp/
	* modules.cc (trees_out::type_node [VECTOR_TYPE]): poly_int's
	to_constant already does the checking we need.

	gcc/testsuite/
	* g++.dg/modules/sym-subst-3_a.C: Adjust scan for other ABIs

	gcc/testuite/
	* g++.dg/modules/builtin-3_[ab].C: Add va_list scans for
	aarch64 and powerpc ABIs.

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

	gcc/testsuite/
	* g++.dg/modules/module.exp: Remove tcl 8.6ism

	Merge trunk 6bf2ff0d52a.

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

	Merge trunk ce0f842492c

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

	gcc/cp/
	* name-lookup.c (name_lookup::adl_namespace_fns): Last param is
	unused, and bootstrap complains :( [Nathan left it like that so
	he'd be reminded to remove it if it really turned out not needed]

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

	p1779 ABI isolation
	gcc/cp/
	* cp-tree.h (named_module_purview_p): New.
	* decl.c (grokmethod): Don't always implicitly inline.
	* module.cc (module_state_config::get_dialect): Add
	module_implicit_inline.
	gcc/
	* doc/invoke.texi (fmodule-implicit-inline): Document.
	gcc/c-family/
	* c.opt (-fmodule-implicit-inline): New.
	gcc/testsuite/
	* g++.dg/modules/imp-member-[12]_b.C: Add some inlines.
	* g++.dg/modules/vmort-1_a.C: Likewise.
	* g++.dg/modules/imp-inline-1_[ab].C: New.

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

	GMF entities are not findable by name
	gcc/cp/
	* modules.cc (enum depset::disc_bits): Remove DB_GLOBAL_BIT.
	(depset::is_global): Delete
	(depset::hash::make_dependency): Drop reachable GMF binding
	insertion.
	gcc/testsuite/
	* g++.dg/modules/builtin-[13]_[ab].C: Adjust scans.
	* g++.dg/modules/mod-sym-2.C: Adjust scans.

	Implement FR039 -- dependent ADL and friend fns
	gcc/cp/
	* name-lookup.c (name_lookup::adl_namespace): Instantiation path
	is not important here.
	(name_lookup::search_adl): Reimplement dependent adl for modules.
	gcc/testsuite/
	* g++.dg/modules/adl-[12]_b.C: export.
	* g++.dg/modules/adl-[45]_[abcd].C: New.

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

	gcc/cp/
	* class.c (copyfndecl_with_name): Drop inadvertent
	DECL_CLONED_FUNCTION setting.  Pass 0 for top_level to
	rest_of_decl_compiulation.

	gcc/cp/
	* class.c (copy_fndecl_with_name): Add tree code parm.  Adjust
	callers.

	libcc1/
	* libcp1plugin.cc (plugin_build_decl): Adjust.

	Unify copy_fndecl_with_name and clone_decls.
	gcc/cp/
	* class.c (DECL_NEEDS_VTT_PARM_P): Delete.
	(copy_fndecl_with_name): Add ctor booleans, use them.  Make static.
	(copy_operator_fn): New wrapper.
	(build_clone): Adjust to use copy_fndecl_with_name.
	(build_clones): Rename to ...
	(build_cdtor_clones): ... here.
	(clone_function_decl): Rename to ...
	(clone_cdtor): ... here.
	(clone_constructors_and_destructors): Adjust.
	* cp-tree.h (build_clones): Rename to build_cdtor_clones.
	(clone_function_decl): Rename to clone_cdtor.
	(copy_fndecl_with_name): Rename to copy_operator_fn.  Change arg
	type.
	* method.c (implicitly_declare_fn): Adjust.
	(lazily_declare_fn): Likewise.
	* module.c (trees_in::decl_value): Adjust.
	* pt.c (tsubst_function_Decl, instantiate_template_1): Adjust.

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

	Merge master 9a33c41fe42

	Merge master 44492e248cb
	c++: implicit operator== adjustments from P2002. [Jason Merrill]
	gcc/cp/
	* class.c (build_clone): Retain old version for the moment.
	(DECL_NEETS_VTT_PARM_P): Resurrect, before we kill it again.

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

	gcc/cp/
	* mapper-server.cc (process_server): We should Write when writing.
	(server): Fix off-by-one error.

	Merge master 68df8e8c343

	Merge master 502d63b6d61
	Lower VEC_COND_EXPR into internal functions. [Martin Liska]
	Apply d11c9841d54 Add missing check for gassign.  [Martin Liska]
	Apply 9435fb9668e Fix typo in tree-ssa-reassoc.c. [Martin Liska]

	Merge master 2021af0c23a

	Merge master 668ef28fbb4
	c++: Clean up previous change [PR41437] [Patrick Palka]
	gcc/cp/
	* module.cc (trees_{in,out}::code_vals [TEMPLATE_INFO]): Adjust
	access checking streaming.

	Merge master 92bed036098
	c++: Improve access checking inside templates [PR41437] [Patrick Palka]

	Merge master a97e49a89d1

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

	Merge master f2242ec0d3f
	Over the hump!

	Constrained partial specializations
	gcc/cp/
	* module.cc (depset::hash::add_partial_redirect): Add slot parm.
	(enum merge_kind): Add MK_partial.
	(merge_kind_name): Likewise.
	(trees_out::decl_node): A redirect may be for an EK_DECL.
	(trees_out::get_merge_kind): Determine MK_partial.
	(trees_{in,out}::key_mergeable): Deal with MK_partial.
	(depset::hash::make_dependency): Deal with discovering a partial
	specialization.
	* pt.c (maybe_new_partial_specialization): Add module bits to the
	new typedef.
	(tsubst_template_decl): Relax module import assert.
	(tsubst_template_decl): Refactor, add fixme to check.
	gcc/testsuite/
	* g++.dg/modules/nested-constr-1.h: New.
	* g++.dg/modules/nested-constr-1_a.H: New.
	* g++.dg/modules/nested-constr-1_b.C: New.
	* g++.dg/modules/nested-constr-2_a.C: New.
	* g++.dg/modules/nested-constr-2_b.C: New.
	* g++.dg/modules/nested-constr-2_c.C: New.
	* g++.dg/modules/tmpl-part-req-1.h: New.
	* g++.dg/modules/tmpl-part-req-1_a.H: New.
	* g++.dg/modules/tmpl-part-req-1_b.C: New.
	* g++.dg/modules/tmpl-part-req-2.h: New.
	* g++.dg/modules/tmpl-part-req-2_a.H: New.
	* g++.dg/modules/tmpl-part-req-2_b.C: New.

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

	Merge master b825a228907

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

	Merge master ac9face8d26
	PR c++/95263
	gcc/cp/
	* pt.c (lookup_template_class_1): Do not apply reversion
	gcc/testsuite/
	* g++.dg/template/pr95263.C: New (XFAIL)

	Merge master 6c8e16aea85

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

	Fixes for darwin
	gcc/cp/
	* mapper-server.cc: Reorder includes.
	(server): Block scope potentially empty if clause.
	* module.cc (get_mapper): Don't use C++14.
	gcc/testsuite/
	* g++.dg/modules/bad-mapper-3: Adjust error.

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

	Install V1 module protocol goop
	gcc/cp/
	* Make-lang.in: Remove mapper-server2 hack.
	* mapper-client.cc: Add additional mechanisms to get a server.
	* mapper-client.h: Delete.
	* mapper-resolver.cc: Fix file reading bugs
	* mapper-server.cc: Original deleted.
	* mapper-server2.cc: Renamed to mapper-server.cc.
	* mapper.h: Adjust.
	* module.cc: Adjust.
	gcc/testsuite/
	* g++.dg/modules/bad-mapper-1.C: Adjust expected errors.
	* g++.dg/modules/bad-mapper-2.C: Likewise.
	* g++.dg/modules/bad-mapper-3.C: Likewise.
	* g++.dg/modules/map-2.C: Likewise.

	Add libcody as an external library
	* libcody: Delete
	* Makefile.def: Revert.
	* configure.ac: Revert. Add --with-libcody.
	* Makefile.tpl: Add CODYLIB, CODYLIBINC, HOST_CODYLIB, HOST_CODYLIBINC.
	* Makefile.in: Rebuilt.
	* configure: Rebuilt.
	gcc/
	* Makefile.in: Revert.  Add CODYLIB, CODYLIBINC.
	* configure.ac: Add CODYLIB, CODYLIBINC.
	* configure: Rebuilt.
	gcc/cp
	* Make-lang.in: Revert.

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

	Add libcody with stub users
	* libcody: New.  Currently a symlink to cody repo.
	* Makefile.def: Add libcody.
	* configure.ac: Add libcody.
	* Makefile.in: Rebuilt.
	* configure: Rebuilt.
	gcc/
	* Makefile.in: Add libcody.
	gcc/cp/
	* Make-lang.in: Add libcody
	* mapper.h: New stub/
	* mapper-resolver.cc: New stub.
	* mapper-server2.cc: New stub.

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

	FR39 ...

	Merge master 149c8c7c27a

	Premerging Patrick's c++/95223 fix.
	gcc/cp/
	* cp-tree.h (comparing_typenames): Declare.
	(module_streaming): Delete.
	* modules.cc (module_streaming): Delete.
	(module_state::read_cluster): Increment comparing_typenames, not
	module_streaming.
	* pt.c (comparing_typenames): Define.
	(spec_hasher::equal): Increment it.
	* typeck.c (structural_comptypes): Check it here for typedefs.

	libcpp/
	* files.c, init.c, internal.h: Adjust file_find_kind names from trunk.

	libcpp/
	* line-map.c (linemap_add): Set range and column bits to zero.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Add comment.
	(c_finish_options): Call linemap_line_start to start line.

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

	libcpp/
	* include/cpplib.h (cpp_read_main): Document preamble arg.
	* internal.h (IT_MAIN_{ZERO,REAL}): Rename to ...
	(IT_MAIN_PREAMBLE, IT_MAIN): ... these.
	* files.c (_cpp_stack_file): Adjust.
	* init.c (cpp_read_main_file): Adjust.

	libcpp/
	* directives.c (_cpp_do_file_change): Optimize rewinding one line
	to line zero.
	gcc/c-family/
	* c-opts.c (c_finish_options): Set locations to zero.
	* c-ppoutput.c (cb_define): Always advance line number.

	libcpp/
	* files.c (cpp_push_include): Pass highest_line for loc.
	(cpp_push_default): Likewise.
	* line-map.c (linemap_add): Set range and column bits to what we
	used to figure start location.

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

	libcpp/
	* internal.h (enum _find_file_kind): New.
	(_cpp_find_file): Use it, not 3 bools.
	* files.c (_cpp_find_file): Use _find_file_kind enum, not bools.
	(_cpp_stack_include, cpp_find_header_unit, _cpp_fake_include)
	(_cpp_do_file_change, _cpp_compare_file_date): Adjust.
	* init.c (cpp_read_main): Adjust _cpp_find_file call.

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

	gcc/testsuite/
	* g++.dg/modules/sym-subst-3_a.C: Adjust scan asm for Darwin.
	* g++.dg/modules/init-2_b.C: Adjust scan-asms for Darwin.
	* g++.dg/modules/init-2_c.C: Likewise.

	gcc/cp/
	* mapper-client.cc: Move fallback typedef for sighandler_t
	from here ...
	* mapper-client.h: ... to here.

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

	Merge master ed63c387aa0

	gcc/cp/
	* name-lookup.c (add_imported_namespace): Clarify
	inline/non-inline error message.

	libcpp/
	* lex.c (do_peek_module): Permit non-ascii char sets.

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

	Enumerate load states.
	gcc/cp/
	* module.cc (enum module_loadedness): New.
	(module_state::load_state): Rename to ..
	(module_state::loadedness): ... this, change type.
	(module_state::read_{imports,preprocessor,language}): Adjust,
	(module_State::{load_section,do_mport}): Likewise,
	(direct_import, {import,declare,preprocess}_module): Likewise.

	Remove  {,purview_,partition_}direct_p flags.
	gcc/cp/
	* module.cc (module_state::{,purview_,partition_}_direct_p):
	Remove flags.
	(module_state::is{,purview_,partition_}direct_p}): Adjust.
	(module_state::{read,write}_imports): Remove direct flag handling.
	(module_state::write): Likewise.
	(direct_import, process_module): Likewise.

	Duplicate {,purview_,partition_}direct_p flags in an enum.
	gcc/cp/
	* module.cc (enum module_directness): New.
	(module_state): Add it.
	(module_state::is{,purview_,partition_}direct_p}): Consistency
	asserts.
	(module_state::{read,write}_imports): Adjust and add Consistency
	asserts.
	(module_state::write): Likewise.
	(direct_import, preprocess_module): Likewise.

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

	Stop GMF leakage from interface to implementation
	gcc/cp/
	* cp-tree.h (preprocess_module): Add in_purview param.
	* lex.c (token_coro::resume): Adjust.
	* module.cc (module_state::purview_direct_p): New flag.
	(module_state::{read,write}_imports): Pay attention to it for
	invisible imports.
	(begin_header_unit): Adjust preprocess_module call.
	(preprocess_module): Set purview_direct_p as appropriate.
	gcc/testsuite/
	* g++.dg/modules/gmf-2_[abcd].[CH]: New.

	Merge master f497e36ae56

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

	Implement P1874 Dynamic Initialization Order
	gcc/cp/
	* cp-tree.h (module_initializer_kind)
	(module_add_import_initializers): Declare.
	(mangle_module): Add include_partition parm.
	(init_module_processing): Rename to init_modules.
	(fini_modules): Declare.
	(mangle_identifier): Add prefix char.
	(mangle_module_global_init): Declare.
	* decl.c (cxx_init_decl_processing): Adjust for module init
	rename.
	* decl2.c (start_objects): Maybe mangle module initializer name.
	Add module initializers.
	(generate_ctor_or_dtor_function): Add module init support.
	(c_parse_final_cleanups): Likewise, adjust for module fini
	addition.
	* mangle.c (mangle_identifier): Add prefix char.
	(write_module): New, broken out of ...
	(maybe_write_module): ... here.  Call it.
	(mangle_module_global_init): New.
	* module.cc (module_state): Add call_init_p flag.
	(num_init_calls_needed): New global.
	(module_state::mangle): Add include_partition parm.
	(mangle_module): Likewise.
	(module_initializer_kind): New.
	(module_add_import_initializers): New.
	(init_module_processing): Rename to ...
	(init_modules): ... here.
	(finish_module_processing): Calculate call_init_p.
	(fini_modules): New, broken out of finish_module_processing.
	gcc/testsuite/
	* g++.dg/modules/init-[12]_[abc].C: New.

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

	Merge master 2a0225e4786.

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

	Merge master b224c3763e0.

	EOF has a location
	gcc/cp/
	* parser.c (cp_lexer_set_source_position_from_token): Don't
	special-case EOF.
	gcc/testsuite/
	* c-c++-common/raw-string-6.c: Adjust expected locations:
	* g++.dg/cpp0x/decltype63.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-64.C
	* g++.dg/cpp0x/pr68726.C: Likewise.
	* g++.dg/cpp0x/pr78341.C: Likewise.
	* g++.dg/cpp1y/pr65202.C: Likewise.
	* g++.dg/cpp1z/class-deduction44.C: Likewise.
	* g++.dg/diagnostic/unclosed-extern-c.C: Likewise.
	* g++.dg/diagnostic/unclosed-function.C: Likewise.
	* g++.dg/diagnostic/unclosed-namespace.C: Likewise.
	* g++.dg/diagnostic/unclosed-struct.C: Likewise.
	* g++.dg/ext/pr84598.C: Likewise.
	* g++.dg/other/switch4.C: Likewise.
	* g++.dg/parse/crash10.C: Likewise.
	* g++.dg/parse/crash18.C: Likewise.
	* g++.dg/parse/crash35.C: Likewise.
	* g++.dg/parse/crash59.C: Likewise.
	* g++.dg/parse/crash61.C: Likewise.
	* g++.dg/parse/crash67.C: Likewise.
	* g++.dg/parse/ctor3.C: Likewise.
	* g++.dg/parse/error14.C: Likewise.
	* g++.dg/parse/error5.C: Likewise.
	* g++.dg/parse/error56.C: Likewise.
	* g++.dg/parse/invalid1.C: Likewise.
	* g++.dg/parse/parameter-declaration-1.C: Likewise.
	* g++.dg/parse/parser-pr28152-2.C: Likewise.
	* g++.dg/parse/parser-pr28152.C: Likewise.
	* g++.dg/parse/pr68722.C: Likewise.
	* g++.dg/pr46852.C: Likewise.
	* g++.dg/pr46868.C: Likewise.
	* g++.dg/template/crash115.C: Likewise.
	* g++.dg/template/crash43.C: Likewise.
	* g++.dg/template/error-recovery1.C: Likewise.
	* g++.dg/template/error57.C: Likewise.
	* g++.old-deja/g++.other/crash31.C: Likewise.

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

	Merge master ab2952c77d0

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

	Just push the eh decls.
	gcc/cp/
	* except.c (declare_library_fn_1): Don't look at current binding.
	Just make the decl and push it.
	* name-lookup.h (get_global_module_decls): Delete decl.
	* name-lookup.c (get_global_module_decls): Delete defn.

	Fix eh specs
	gcc/testsuite/
	* g++.dg/eh/builtin{5,7,9,10,11}.C: Fix eh specs on __cxa fn decls.

	Fix libitm's decls
	libitm/
	* eh_cpp.cc (__cxa_allocate_exception, __cxa_free_exception)
	(__cxa_begin_catch, __cxa_tm_cleanup, __cxa_eh_globals): Fix
	exception specification.
	(_ITM_cxa_allocate_exception, _ITM_cxa_free_exception)
	(_ITM_cxa_begin_catch): Likewise.
	* libitm.h (_ITM_NOTHROW): New define.
	(_ITM_cxa_allocate_exception, _ITM_cxa_free_exception)
	(_ITM_cxa_begin_catch): Use it.
	* testsuite/lib/libitm.exp (libitm_init): Add
	-fdiagnostics-color=never.

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

	Simplify except fn helper pushing part 1
	gcc/cp/
	* decl.c (push_library_fn): Return the decl pushdecl_toplevel returns.
	* except.c (verify_library_fn): Replace with ...
	(declare_library_fn_1): ... this fn.
	(declare_library_fn): Call it.
	(build_throw): Call declare_library_fn_1.
	* name-lookup.h (get_global_module_decls): Declare.
	* name-lookup.c (get_namespace_binding): Return this TU's
	bindings.
	(get_global_module_decls): New.
	gcc/testsuite/
	* g++.dg/eh/builtin10.C: Adjust expected errors.
	* g++.dg/eh/builtin11.C: Likewise.
	* g++.dg/eh/builtin6.C: Likewise.
	* g++.dg/eh/builtin7.C: Likewise.
	* g++.dg/eh/builtin9.C: Likewise.
	* g++.dg/parse/crash55.C: Likewise.

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

	Fix macro expansion of header-unit names
	libcpp/
	* macro.c (cpp_get_token_1): Pay attention to arg parsing mode,
	and the existence of padding/comment tokens.
	gcc/testsuite/
	* g++.dg/modules/cpp-6_[abc].[CH]: New.

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

	Set TREE_USED on stream in.
	gcc/cp/
	* module.cc (trees_in::unused): New field.
	(trees_in::tree_node): Add defaulted off is_use arg, set TREE_USED
	on streamed in obect.  Adjust callers to set it.
	(trees_{in,out}::core_bools): Do not stream base.used_flag.
	(trees_{in,out}::core_vals): Reorder BINFO fields.  Increment
	unused around vtbl pieces.
	(trees_in::decl_value): Save and reset unused field.
	(trees_in::read_var_def): Increment unsused for vtbl initializers.
	gcc/testsuite/
	* g++.dg/modules/used-1_[abc].C: New.

	Tweak builtin fn hack
	gcc/cp/
	* name-lookup.c (get_namespace_binding): Strip singleton
	overloads.
	gcc/testsuite/
	* g++.dg/modules/libfn-1_[ab].C: New.

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

	Partition pending indirection fixes
	gcc/cp/
	* module.cc (trees_in::install_entity): Treat pending flags
	independently, adjust indirection installation.
	(pendset_lazy_load): Add specialization_p arg.  Use for
	indirection adjustment.
	(get_primary_module): Look at implementation unit's parent.
	(lazy_load_{specializations,members}): Adjust.
	gcc/testsuite/
	* g++.dg/modules/part-6_[abcde].C: New.

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

	Stream definitions after decls.
	gcc/cp
	* module.cc (module_state::write_cluster): Break out definition
	streaming to separate loop.
	gcc/testsuite/
	* g++.dg/modules/member-def-[12]_c.C: Adjust scans, oh for CHECK-DAG.

	Stream node types last
	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Move type streaming to
	end.
	gcc/testsuite/
	* g++.dg/modules/indirect-4_c.C: Adjust scan.

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

	Stream imports at start of cluster
	gcc/cp/
	* module.cc (trees_out::importedness): New checker.
	(depset::hash::add_dependency): Add imports.
	(depset::tarjan::connect): Skip imports.
	(module_state::{read,write}_cluster): Seed imports before the
	cluster itself.
	gcc/testsuite/
	* g++.dg/modules/class-3_[bd].C: Adjust scans.
	* g++.dg/modules/imp-member-[12]_[ce].C: Adjust scans.
	* g++.dg/modules/member-def-2_c.C: Adjust scans.
	* g++.dg/modules/vmort-2_c.C: Adjust scans.


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

	Don't stream DECL_ODR_USED or TREE_ASM_WRITTEN
	gcc/cp/
	* module.cc (trees_{in,out}::core_values): Don't stream
	base.asm_written_flag.
	(trees_{in,out}::lang_decl_bools): Don't stream u.base.odr_used.

	Remove DECL_MODULE_PARTITION_P, it is not needed.
	gcc/cp/
	* cp-tree.h (DECL_MODULE_PARTITION_P): Delete.
	(lang_decl_base): Remove module_partition_p bitfield.
	* decl.c (duplicate_decls): No need to check or reset it.
	* lex.c (cxx_dup_lang_specific): No need to reset it.
	* pt.c (build_template_decl): No need to check it.
	(tsubst_template_decl): Likewise, or reset it.
	* module.cc (trees_in::decl_value): No need to set it.
	(trees_out::decl_node): No need to check it.
	(depset::hash::make_dependency): Likewise, Adjust import marking
	code.
	(set_instantiating_module): No need to reset it.

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

	Merge master a28edad3da5c59f09565d3d42e20be1a924986c4

	gcc/cp/
	* cxx-mapper.cc: Rename to ...
	* mapper-server.cc: ... here.
	* Make-lang.in: Adjust.
	* module.cc (make_mapper): Adjust.
	gcc/testsuite/
	* g++.dg/modulex/inc-xlate-1_e.C: Adjust.
	* g++.dg/modulex/legacy-[26]_[bcdef].[CH]: Likewise.

	gcc/cp/
	* module.cc (mapper_{import_export,export_done}): Revert
	2020-04-13 change.

	gcc/cp/
	* mapper-client.{h,cc}: New, broken out of ...
	* module.cc: ... here.
	(maybe_remove_cmi_prefix): Delete.
	* Make-lang.in: Add mapper-client.

	gcc/cp/
	* module.cc (module_mapper::{get,make}): Replace with ...
	(get_mapper, make_mapper): ... these.
	(module_mapper:(kill,fini): Delete.
	(module_mapper::{import_export,export_done}): Replace with ...
	(mapper_import_export, mapper_export_done): ... these.

	gcc/cp/
	* module.cc (module_mapper::to): Drop unneeded field.

	gcc/cp/
	* module.cc (module_mapper::{open,close}): New methods, use them.

	gcc/cp/
	* module.cc (module_mapper): Break more stuff out of ctor.

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

	gcc/cp/
	* module.cc (module_mapper): Remove knowledge of module_state,
	update all callers.

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

	gcc/testsuite/
	* g++.dg/modules/hello-1_[ab].C: New.

	gcc/cp/
	* module.cc (trees_in::decl_value): Need to retrofit lang for
	inner.
	gcc/testsuite/
	* g++.dg/modules/gmf-1_[ab].C: New.

	gcc/testsuite/
	* g++.dg/modules/xtreme-header-[1-6]_c.C: New.

	gcc/cp/
	* module.cc (trees_in::key_mergeable): Avoid null deref.
	(direct_import): Create attachment table.
	gcc/testsuite/
	* g++.dg/modules/lambda-[23]_c.C: New.

	Merge master 50c7853216e8511971c55b51d7fe29173db4749b

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

	C++20 Ranges!
	gcc/testsuite/
	* g++.dg/modules/xtreme-header-2.h: Enable in c++20 mode.

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parm_value): Stream auto
	placeholder & constraints.
	gcc/testsuite/
	* g++.dg/modules/lambda-4{,_[ab]}.[hHC]: New.

	_FUN with recursive types (pun intended)
	gcc/cp/
	* module.cc (trees_out::key_mergeable): A lambda's static _FUN has
	a recursive return type.
	(trees_in::is_matching_decl): Likewise.
	gcc/testsuite/
	* g++.dg/modules/lambda-4{,_[ab]}.[hHC]: New.
	* g++.dg/modules/concept-6_b.C: Remove xfail.

	gcc/
	* print-tree.c (print_node): Explicitly show CALL_EXPR null arguments.

	gcc/cp/
	* module.cc (trees_out::key_mergeable): Instantiations can have
	requires.  Not just the template.
	gcc/testsuite/
	* g++.dg/modules/concept-6{,_[ab]}.[hHC]: New.

	gcc/cp/
	* tree.c (cp_tree_equal): [CALL_EXPR] Directly check number of
	arguments to a call.  Assert they exist.
	* typeck.c (structural_comptypes): [DECLTYPE_TYPE] Break apart if
	conditional.

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

	gcc/cp
	* module.cc (depset::hash::make_dependency): Imported namespaces
	from a partition don't have PARTITION_P set.
	(module_state::write): Likewise.
	gcc/testsuite/
	* g++.dg/modules/part-5_[abc].C: New.

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

	PR c++/94476
	gcc/cp/
	* class.c (layout_class_type): Zap NSDMI of as_base fields.
	gcc/testsuite/
	* g++.dg/modules/nsdmi-2.C: New.

	Merge master bcafd8748cf9eb83a9e71bf67c4e2a7c5c8f513c

	NSDMIs
	WARNING causes ICES in the STL header tests.  There's a trunk
	NSDMI parsing bug (pr94476)
	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Write FIELD_DECL initial
	value.
	gcc/testsuite/
	* g++.dg/modules/nsdmi-1_[ab].C: New.

	gcc/testsuite/
	* g++.dg/modules/xtreme-header-[123456]{,_[ab]}.[hHC]: New.

	gcc/
	* gcc.c (driver::maybe_print_and_exit): Shout about
	experimentalness.
	(driver::final_actions): Likewise.
	* diagnostic.c (diagnostic_action_after_output): Likewise.
	gcc/testsuite/
	* lib/prune.exp (prune_gcc_output): Prune the shouting.

	Template vars inited to lambdas
	gcc/cp/
	* module.cc (depset::hash::find_dependencies): Adjust dump
	predicate.
	gcc/testsuite/
	* g++.dg/modules/lambda-3{,_[ab]}.[hHC]: New.

	Resurrect topological key-order sort for clusters
	gcc/cp/
	* module.cc (depset::hash): Add chain, is_key_order.
	(trees_out::is_key_order): New.
	(trees_out::decl_value): Adjust for key-order walk.
	(trees_out::{get_merge_kind,key_mergeable}): Likewise.
	(depset::hash::add_dependency): Deal with key-order dependency.
	(depset::hash::add_mergeable): New.
	(depset::hash::find_dependencies): Adjust for key-order walk.
	(cluster_cmp): Delete.
	(sort_cluster): New.
	(module_state::write): Call sort_cluster, not qsort (cluster_cmp).
	gcc/testsuite/
	* g++.dg/modules/indirect-[234]_b.C: Adjust final scan.
	* g++.dg/modules/late-ret-3_a.H: Likewise.
	* g++.dg/modules/member-def-[12]_c.C: Likewise.
	* g++.dg/modules/tpl-alias-1_a.H: Likewise.
	* g++.dg/modules/tpl-friend-1_a.C: Likewise.
	* g++.dg/modules/tpl-spec-3_[ab].C: Likewise.
	* g++.dg/modules/using-7.C: Likewise.

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

	gcc/cp/
	* modules.cc (trees_out::decl_node): Treat namespaces like other
	decls.
	(module_state::write): When checking, insert non-imported
	namespace-decls into the entity map here.

	gcc/cp/
	* modules.cc (trees_out::decl_value): Public.
	(trees_out::decl_node): Do not expect by-value namespaces.
	(depset::hash::find_dependencies): Deal with namespaces here.

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

	gcc/testsuite/
	* g++.dg/modules/tpl-alias-1_[ab].[HC]: Fix unresolved tests.
	* g++.dg/modules/vtt-2_b.C: Likewise.

	Lambdas attached to namespace-scope non-template vars
	gcc/cp/
	* cp-tree.h (DECL_ATTACHED_DECLS_P): New.
	(struct lang_decl_base): Add attached_decls_p.
	(maybe_attach_decl): Declare.
	* lambda.c (record_lambda_scope): Call maybe_attach_decl.
	* lex.c (cxx_dup_lang_specific): Clear DECL_ATTACHED_DECLS_P.
	* module.c (uintset<T>::hash::create): New member function.
	(attachset, attached_tables): Declare.
	(enum merge_kind): Add MK_attached.  Adjust.
	(trees_{in,out}::lang_decl_bools): Stream attached_decls_p.
	(trees_{in,out}::decl_value): Stream attached decls.
	(trees_out::get_merge_kind): Determine if MK_attached.
	(trees_{in,out}::key_mergeable): Stream MK_attached.
	(depset::hash::make_dependency): You can get anonymous templatey
	things (lambdas).
	(maybe_attach_decl): New.
	(finish_module_processing): Delete attached_table.
	gcc/testsuite/
	* g++.dg/modules/lambda-2_[ab].[HC]: Remove xfail, add dump scans.

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

	gcc/cp/
	* cp-tree.h (module_streaming): Declare.
	* module.cc (module_streaming): Define.
	(cluster_cmp): Do not strip template off an alias instantiation.
	(module_state::read_cluster): Increment module_streaming around
	the loading.
	* typeck.c (structural_comptypes): Do not resolve typename types
	when module_streaming.

	gcc/cp/
	* pt.c (tsubst_lambda_expr): Set extra scope after creating the
	lambda struct.

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

	gcc/cp/
	* modules.cc (template<T> uintset): New template created from ...
	(pendset): ... this.  Use it.  Adjust all uses.

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

	Merge master 62ede14d30f5d083f1ab23bcab6e0e3c9c649006

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

	STL headers header-unity (except C++ 20 ranges)
	gcc/testsuite/
	* g++.dg/modules/xtreme-header-{,_[ab]}.[hHC]: New.

	Alias templates working (properly)
	gcc/cp/
	* modules.cc (enum depset::disc_bits): Add DB_ALIAS_TMPL_INST_BIT,
	Replace DB_BOTH_SPEC_BIT with DB_ALIAS_SPEC_BIT.
	(enum merge_kind): Replace MK_tmpl_both_mask with
	MK_tmpl_alias_mask.  Add MK_alias_spec.
	(merge_kind_name): Adjust.
	(trees_out::core_vals): DECL_TEMPLATE_RESULT might not be visited.
	(trees_{in,out}::decl_value): Cope with alias template
	instantiations.
	(trees_out::get_merge_kind): Add alias support.
	(trees_{in,out}::ket_mergeable): Add alias support.
	(check_mergeable_decl): Likewise.
	(trees_in::is_matching_decl): Drop inner parm, adjust.
	(depset::hash::make_dependency): Add alias suport.
	(depset::hash::add_specializations): Detect and mark aliases.
	gcc/testsuite/
	* g++.dg/modules/tpl-alias-1{,_[ab]}.[hHC]: New.

	gcc/cp/
	* module.cc (trees_{in,out}::decl_value): Instantiations are
	merged things too.

	gcc/cp/
	* module.cc (trees_{in,out}::install_entity): New, broken out of ...
	(trees_{in,out}::decl_value): ... here.  Call them.

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

	WARNING: This breaks lots of modules tests because an inconsistent
	invariant wrt alias templates is now consistently different.  This
	is intended.  gcc/cp/
	* cp-tree.h (SET_TYPE_TEMPLATE_INFO): Not for aliases.
	* pt.c (lookup_template_class_1): Type alias's template info
	should already be correct.
	(tsubst_template_decl): Don't reset TI_TEMPLATE of an alias.

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

	gcc/cp/
	* cp-tree.h (SET_TYPE_TEMPLATE_INFO): Only expand VAL once.
	* pt.c (perform_typedefs_access_check)
	(append_type_to_template_for_access_check): Move G_T_N_A_C call
	out of loop.
	(get_types_needing_access_check): Simplify.

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

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parms_fini): Determine
	contextness requirement from TPI.

	Merge master a3586eeb88414e77c7cccb69362b8d04562536b6.

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

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parms_fini): Flag whether
	tpl-tpl-parm context is non-null.

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

	gcc/cp/
	* module.cc (trees_in::decl_value): No need to install constraints
	for duplicate.
	(trees_in::is_matching_decl): Open code comparison, don't use
	decls_match.

	gcc/cp/
	* module.cc (trees_{in,out}::{read,write}_function_def): Potential
	cexprs have result == error_mark_node.

	gcc/cp/
	* module.cc (trees_in::decl_value): Template instantiations are
	never implicit member fns.
	(module_state_config::get_dialect): Check exceptions, rtti,
	inheriting ctors.
	gcc/testsuite/
	* g++.dg/modules/inh-tmpl-ctor-1{,_[ab]}.[hHC]: New.

	Merge master 3512dc0108afbed3bece2e9fa1719fb3ce1d73d9

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

	gcc/cp/
	* module.cc (trees_out::type_node): Do ptr-mem-fns after typedef
	detection.
	gcc/testsuite/
	* g++.dg/modules/pmf-2{,_[ab]}.[hHC]: New.

	gcc/cp/
	* module.cc (trees_out::key_mergeable): Do not perform
	requirements stubstutition.
	(check_mergeable_decl): Likewise.

	gcc/cp/
	* decl.c (decls_match): Use fndecl_declared_return_type for
	newdecl too.
	* module.cc (trees_out::key_mergeable): Use
	fndecl_declared_return_type.
	(check_mergeable_decl): Likewise.
	gcc/testsuite/
	* g++.dg/modules/auto-1{,_[ab]}.[hHC]: New.

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

	gcc/cp/
	* module.cc (trees_in::is_matching_decl): Propagate instantiated
	noexcept specifications.
	gcc/testsuite/
	* g++.dg/modules/except-3{,_[ab]}.[hHC]: New.

	gcc/cp/
	* module.cc (lazy_snum, recursive_lazy): New.
	(module_state::read_language): Set lazy_snum.
	(lazy_load_{binding,specializations}): Call recursive_lazy.

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

	gcc/cp/
	* module.cc (elf_in::defrost): Return bool.
	(module_state::from): May return NULL.
	(module_state::maybe_completed_reading): New, broken out of
	check_read.
	(pendset::lazy_load): Likewise.
	(module_state::write): Do not read partitions here.
	(module_state::read_initial): Do not create slurp or elf_in here.
	(module_state::load_{preprocessor,language}): Return bool, add
	outermost flag.  Adjust check_read calls.
	(module_state::load_section): Reimplement, check mc_slot, issue
	errors here.
	(module_state::check_read): Reimplement for use by config loaders.
	(module_state::do_import): Add outermost flag, alloc slurping
	here.  Adjust check_read call.
	(module_state::lazy_load): Thin wrapper on load_section.
	(module_state::lazy_load_binding): Check error emission here and
	diagnose.
	(module_state::lazy_load_specializations): Likewise.
	(direct_import, preprocess_module): Adjust.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-4_c.C: Adjust regexp matching

	gcc/cp/
	* doc/invoke.texi (C++ Modules): Clarify a couple of things.

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

	gcc/cp/
	* name-lookup.c (lookup_field_ident): Check TYPE_LANG_SPECIFIC
	before getting the member vector.
	gcc/testsuite/
	* g++.dg/modules/pmf-1{,_[ab]}.[hHC]: New.

	gcc/cp/
	* pt.c (template_args_equal): Slight refactor to clarify control
	flow.
	* tree.c (cp_tree_equal): Use comp_template_args for TREE_VEC.
	* typeck.c (structural_comptypes): Comment about exception specs.

	Ranges, you were right, have a biscuit!
	gcc/testsuite/
	* g++.dg/modules/odr-1{,_[ab]}.[hHC]: Moved to ..
	* g++.dg/modules/lambda-2{,_[ab]}.[hHC]: ... here.  Xfailed

	gcc/cp/
	* module.cc (trees_in::decl_value): Set and reset constraints on
	duplicate decl.
	(trees_in::is_matching_decl): Use decls_match to compare decls.
	gcc/testsuite/
	* g++.dg/modules/except-2{,_[ab]}.[hHC]: New.
	* g++.dg/modules/builtin-4_[ab].[HC]: New.

	gcc/cp/
	* mangle.c (find_substitution): Cleanup for c++/94027 fix.

	gcc/cp/
	* module.cc (module_state::read_config): Allow overriding the
	version check.
	gcc/c-family/
	* c.opt (fmodule-version-ignore): New undocumented option.

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

	Bad ranges, no biscuit!
	gcc/testsuite/
	* g++.dg/modules/odr-1{,_[ab]}.[hHC]: New.

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

	Reconstruct deferred exception spec types
	gcc/cp/
	* cp-tree.h (fixup_deferred_exception_variants): Declare.
	* tree.c (fixup_deferred_exception_variants): New.
	* parser.c (cp_parser_member_declaration): Comment about friends.
	(cp_parser_class_specifier_1): Call it, don't generate a new type.
	(cp_parser_noexcept_specification_opt): Reorder if conditional.
	gcc/testsuite/
	* g++.dg/modules/deferred-1{,_[ab]}.[hHC]: New.

	Merge master 3654d49d0ff651b2a78401bc2430428711e7d2eb

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

	Function-scope using directives
	gcc/cp/
	* cp-gimplify.c (cp_genericize_r): Set DECL_CONTEXT of
	IMPORTED_DECL.
	* module.cc (trees_{in.out}::core_vals): Stream IMPORTED_DECL's
	initial.
	(trees_out::decl_node): IMPORTED_DECLs are always by value.

	Namespace aliases
	gcc/cp/
	* name-lookup.c (do_namespace_alias): Set originating module.
	* module.cc (trees_out::tree_node_bools): Allow namespace aliases.
	(depset::hash::make_dependency): Likewise.
	(depset_hash::add_namespace_entities): Likewise.
	(set_instantiating_module): Likewise.
	gcc/testsuite/
	* g++.dg/modules/ns-alias-1_[abc].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::vec_chained_decls): New.
	(trees_{in,out}::{read,write}_class_def): Use for fields and vtables.
	gcc/testsuite/
	* g++.dg/modules/vtt-2{,_[ab]}.[hHC]: New.

	gcc/cp/
	* cp-tree.h (get_mergeable_specialization_flags)
	(add_mergeable_specialization): Declare.
	* module.cc (trees_{in,out}::key_mergeable): Stream specialization
	flags and add them as necessary.
	(enum ct_decl_flags): Delete.
	(module_state::{read,write}_cluster): No decl flags.
	(install_specialization): Delete.
	* pt.c (get_mergeable_specialization_flags): New.
	(add_mergeable_specialization): New.
	gcc/testsuite/
	* g++.dg/modules/partial-1{,_[ab]}.[hHC]: New.
	* g++.dg/modules/tpl-spec-5_b.C: Adjust scan.

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

	gcc/cp/
	* tree.c (set_array_type_canon): Add dependent parm.
	(build_cplus_array_type, cp_build_qualified_type_real)
	(strip_typedefs): Pass dependent_p on.
	gcc/testsuite/
	* g++.dg/modules/tpl-ary-1.h: Try constifying.

	gcc/cp/
	* cp-tree.h (cplus_build_array_type): Add known-dependent default arg.
	* tree.c (cplus_build_array_type): Only calculate dependent if
	unknown.  Set TYPE_DEPENDENT_P on dependent arys.
	* module.cc (trees_{in,out}::type_node): Serialize dependentness
	of array types.
	gcc/testsuite/
	* g++.dg/modules/tpl-ary-1{,_[ab]}.[hHC]: New.

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

	gcc/cp/
	* name-lookup.c (mergeable_class_entities): Check TYPE_LANG_SPECIFIC.

	gcc/cp/
	* module.cc (depset::hash::add_dependency): Only unscoped enum
	usings from the enum itself are mutual dependencies.
	(cluster_cmp): Cope with using decls for the same entity.
	gcc/testsuite/
	* g++.dg/modules/using-7.C: New.

	gcc/cp/
	* module.cc (trees_out::core_vals): Adjust typedef detection.
	(trees_{in,out}::decl_value): Likewise.
	gcc/testsuite/
	* g++.dg/modules/tdef-7{,_[ab]}.[hHC]: New.

	gcc/cp/
	* module.cc (trees__out::key_mergeable): NULL name more often.
	(enum merge_match): Delete.
	(check_mergeable_decl): Use merge_kind instead.
	(trees_in::key_mergeable): Adjust.
	gcc/testsuite/
	* g++.dg/modules/merge-6_b.C: Adjust scan.

	gcc/cp/
	* module.cc (struct merge_key): simplify.
	(trees_{in,out}::key_mergeable): Optimize merge_key streaming.

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

	gcc/cp/
	* module.cc (enum merge_kind): Add more discriminators.
	(merge_kind_name): Adjust.
	(trees_{in,out}::key_mergeable): Partition via new discriminators.
	(trees_in::decl_value): Remove bad formatting.
	(trees_out::get_merge_kind): Select new discriminators.
	(mergeable_namespace_entity, mergeable_class_member): Fold into
	reimplemented key_mergeable.
	gcc/testsuite/
	* g++.dg/modules/merge-[56]_b.C: Adjust scans.

	gcc/cp/
	* module.cc (struct merge_key): Remove index as tree hack ...
	(merge_key::{read,write}): ... here.
	(trees_{in,out}::key_mergeable): Adjust.

	gcc/cp/
	* module.cc (merge_key::read): Remove req qualifier hack.
	(check_mergeable_decl): Use merge_key, not explicit args.
	(mergeable_namespace_entity, mergeable_class_member): Likewise.
	(trees_in::key_mergeable): Adjust.

	gcc/cp/
	* module.cc (trees_{in,out}::decl_container): New.
	(trees_in::key_mergeable): Reimplement, swallowing the merging
	logic of ...
	(trees_in::decl_value): ... this.
	gcc/testsuite/
	* g++.dg/modules/builtin-[13]_a.C: Adjust scans.
	* g++.dg/modules/indirect-[234]_b.C: Likewise.
	* g++.dg/modules/inst-[23]_a.C: Likewise.

	gcc/cp/
	* module.cc (trees_{in,out}::fn_arg_types): Delete.
	(struct merge_key): New.
	(trees_out::key_mergeable): Use merge_key.
	(trees_out::key_mergeable): #ifdef out.
	(trees_in::decl_value): Adjust key handling.

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

	gcc/cp/
	* name-lookup.h (mergeable_namespace_entity)
	(mergeable_class_member): Don't declare.
	* name-lookup.c (check_mergeable_decl, mergeable_namespace_entity)
	(mergeable_class_member):  Move to ...
	* module.cc (check_mergeable_decl, mergeable_namespace_entity)
	(mergeable_class_member): ... here.

	gcc/cp/
	* decl2.c (c_parse_final_cleanups): Revert previous change.
	* name-lookup.h (mergeable_{namespace,class}_entities): Declare.
	(add_mergeable_namespace_entity): Declare.
	* name-lookup.c (member_vec_dedup): Link stat_hack chain.
	(check_module_override): Do not use check_mergeable_decl.
	(mergeable_{namespace,class}_entities): New.
	(add_mergeable): Rename to ...
	(add_mergeable_namespace_entitity): ... here.
	(mergeable_{namespace,class}_entity): Use new accessors.

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

	gcc/cp/
	* module.cc (struct note_def_cache_hasher): New type.
	(note_defs): Use it, set GTY((cache)).
	(trees_{in,out}::assert_definition): Adjust.
	(module_state::write, init_module_processing): Adjust note_defs
	construction.

	gcc/cp/
	* module.cc (c_parse_final_c_cleanups): Don't complain about
	unsynthesized defaulted members in a header unit, and pick a
	privileged clone to complain about when we do.
	gcc/testsuite/
	* g++.dg/modules/imp-member-3.H: New.

	gcc/cp/
	* module.cc (trees_(in,out)::fn_arg_types): Serialize ref
	parmness.
	(trees_out::key_mergeable): Adjust.
	* name-lookup.c (check_mergeable_decl): Check ref parmness.
	(mergeable_class_member): __as_base not found via name lookup.
	gcc/testsuite/
	* g++.dg/modules/merge-15{,_[ab]}.[hHC]: New.

	Merge master 9d2d283367a407c1ba9ecdb8590f9295828e25f8

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

	gcc/cp/
	* module.cc (trees_out::decl_value): FIELD_DECLS can have
	template_info.
	(member_owned_by_class): Likewise.
	gcc/testsuite/
	* g++.dg/modules/merge-14{,_[ab]}.[hHC]: New.

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

	gcc/cp/
	* decl.c (build_typename_type): Refactor.
	* module.cc (trees_out::decl_value): Class-scope using-decls are
	like fields.
	(trees_out::key_mergeable): Using-decls are like anonymous fields.
	(trees_{in,out}::{read,write}_class_def): Beware of
	typename_type's TYPE_DECL in the member vec.
	(trees_out::mark_class_def): Mark using-decls.
	(depset::hash::make_dependency): Assert not a class-scope
	using-decl.
	* name-lookup.c (mergeable_class_member): Using-decls can be
	indexed.
	({get,lookup}_field_ident): Using-decls are like fields.
	gcc/testsuite/
	* g++.dg/modules/indirect-2_c.C: Adjust scans.
	* g++.dg/modules/merge-13{,_[ab]}.[hHC]: New.

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

	gcc/testsuite/
	* g++.dg/modules/string-1_[ab].[CH]: Enable in c++20 mode.

	gcc/testsuite/
	* g++.dg/modules/merge-12{,_[ab]}.[hHC]: New.

	gcc/cp/
	* typeck.c (structural_comptypes): Deal with TYPE_ARGUMENT_PACK.
	gcc/testsuite/
	* g++.dg/concepts/pack-1.C: New.

	PR c++/93761
	gcc/cp/
	* module.cc (begin_header_unit): New, broken out of ...
	(module_begin_main_file): ... here.  Call it when not
	preprocessed.
	(init_module_processing): Call it when preprocessed.
	gcc/testsuite/
	* g++.dg/modules/preproc-1.C: New.

	gcc/testsuite/
	* g++.dg/modules/atom-decl-2.C: Use dg-prune.
	* g++.dg/modules/atom-pragma-3.C: Likewise.
	* g++.dg/modules/mod-decl-1.C: Likewise.
	* g++.dg/modules/mod-decl-3.C: Likewise.
	* g++.dg/modules/indirect-1_c.C: Remove dg-bogii.
	* g++.dg/modules/part-3_c.C: Likewise.

	Global module constraint merging
	gcc/cp/
	* module.cc (trees_out::decl_value): Always stream constraints.
	(trees_in::decl_value): Likewise, deal with requires in merge key.
	(trees_{in,out}::key_mergeable): Stream requires.
	* name-lookup.c (check_mergeable_decl): Add & check requires.
	(check_module_override): Get requires.
	(mergeable_namespace_entity): Add requires.
	(mergeable_class_member): Likewise.
	(make_namespace_finish): Adjust.
	* name-lookup.h (mergeable_namespace_entity): Add requires.
	(mergeable_class_member): Likewise.
	gcc/testsuite/
	* g++.dg/modules/concept-5{,_[ab]}.[hHC]: New.

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

	Implement US033
	gcc/cp/
	* module.cc (import_module): Check language-linkage depth.
	* parser.c (cp_parser_import_declaration): Check if direct
	language linkage.
	gcc/testsuite/
	* g++.dg/modules/inc-xlate-1_d.C: Delete.
	* g++.dg/modules/lang-1_[abc].[HC]: New.
	* g++.dg/modules/lang-2_[ab].C: New.

	Merge master 3841739c29a54c0141c3156cdd47891c258b2b88

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

	libcpp/
	* lex.c (cpp_directives_only): Commonize ' & " peeking, add
	cpp-number vs raw-string detection.
	gcc/testsuite/
	* c-c++-common/cpp/dir-only-7.c: Add test.

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

	libcpp/
	* lex.c (cp_directive_only_process): Deal with raw strings by
	backtracking.

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

	libcpp/
	* lex.c (cpp_directive_only_process): Cope with number
	punctuators.
	gcc/testsuite/
	* c-c++-common/cpp/dir-only-8.c: New.

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

	gcc/cp/
	* Make-lang.in (MODULE_REVISION): Add branch name.

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

	gcc/c-family/
	* c-opts.c (c_finish_options): Builtins & command-line starts at
	1.
	(cb_file_change): Alter detection of main file start.
	* c-ppoutput.c (print_line_1): Don't nadger line zero.
	gcc/testsuite/
	* g++.dg/modules/dir-only-3.C: Update line nos
	* g++.dg/modules/dir-only-4.C: New.

	gcc/c-family/
	* c-optsc (c_common_post_options): Set module_directives
	regardless of preprocessed state.
	gcc/cp/
	* parser.c (cp_parser_skip_to_pragma_eol): Don't explode on
	meeting actual EOF.
	gcc/testsuite/
	* g++.dg/modules/dir-only-3.C: New.

	Merge master a6ee556c7659877bb59b719f11ca2153e86ded59

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

	libcpp/
	lex.c (do_peek_prev): New.
	(cpp_directive_only_process): Peek backwards from 'R' to check it
	is a raw literal.
	gcc/testsuite/
	* c-c++-common/cpp/dir-only-7.c: Extend.

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

	libcpp/
	lex.c (_cpp_lex_direct): PRAGMA_EOL is never pre-padded.
	(cpp_directive_only_process): Emit line marker after module
	control-line.
	gcc/
	* langhooks.h (struct lang_hooks): Add PT_flags enum.
	gcc/c-family/
	* c-ppoutput.c (token_streamer): Add begin_pragma.
	(token_streamer::stream): Remove out-of-pragma EOL procesing.
	Ignore pragma_eol location.
	(scan_translation_unit): Pay attention to filter return flags.
	(directives_only_cb): Likewise.
	gcc/cp/
	* lex.c: Inlude langhooks.
	(coro::resume): Return pragma begin flag.
	gcc/testsuite/
	* g++.dg/modules/dir-only-2_b.c: Add broken line check.

	gcc/
	* langhooks (struct lang_hooks): preprocess_token takes and
	returns a uintptr_t.
	gcc/cp/
	* cp-tree.h (module_token_{pre,cdtor,lang}): Change cookie type.
	* lex.c  (module_token_{pre,cdtor,lang}): Change cookie type.
	* parser.c (cp_lexer_new): Likewise.
	gcc/c-family/
	* c-ppoutput.c (scan_translation_unit): Adjust lang hook use.
	(class do_streamer): Likewise.
	(scan_translation_unit_directives_only): Likewise.

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

	libcpp/
	* lex.c (cpp_directive_only_process): Relax raw string detection.

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

	libcpp/
	* lex.c (cpp_directive_only_process): Re-reimplement.

	libcpp/
	* lex.c (cpp_maybe_module_directive): Use 'module control-line'
	here ...
	gcc/cp/
	* parser.c (cp_parser_diagnose_invalid_type_name): ... here ...
	(cp_parser_import_declaration): ... and here.

	libcpp/
	* internal/cpplib.h (cpp_clear_if_stack): Don't declare.
	* directives.c (cpp_clear_if_stack): Delete.

	Merge master 82aee6dd61e2a5b4e4b124f896c8403169688f41

	-fdirectives-only (a bit buggy)
	gcc/c-family/
	* c-ppoutput.c (token_streamer::stream): Adust PRAGMA_EOL.
	(class_do_streamer): New.
	(directives_only_cb): Extend for token streaming.
	(scan_translation_unit_directives_only): Pay attention to
	preprocess lang_hook.
	(print_line_1): Ignore UNKNOWN_LOCATIONs.
	libcpp/
	* include/cpplib.h (cpp_directives_only): Add cpp_reader to
	callback.
	* lex.c (do_peek_{backslash,next,ident,module): New.
	(cpp_directive_only_preprocess): Add module peeking.
	gcc/testsuite/
	* g++.dg/modules/dir-only-2_[ab].[CH]: New.

	gcc/c-family/
	* c-ppoutput.c (class token_streamer): New class, swallow guts of
	...
	(scan_translation_unit): ... this.  Use it.

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

	libcpp/
	* include/cpplib.h (enum CPP_DO_task): New.
	(cpp_directive_only_process): Adjust prototype.
	* lex.c (cpp_directives_only_process): Take data pointer and
	generic callback, adjust.
	gcc/c-family/
	* c-ppoutput.c (print_lines_directives_only): Replace with ...
	(directives_only_cb): ... this new function.
	(scan_directive_only_preprocess): Adjust call.

	libcpp/
	* lex.c (cpp_directive_only_process): Simplify raw string lexing.

	libcpp/
	* lex.c (cpp_directive_only_process): Add raw string lexing.
	gcc/testsuite/
	* c-c++-common/cpp/dir-only-7.c: New.

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

	Merge master fa0c6e297b22d5883857d0db4a6a8be0967cb16f

	libcpp/
	* directives-only.c: Delete.
	* Makefile.in: Remove it.
	* include/cpplib.h (cpp_directives_only_process): Declare.
	* internal.h (struct _cpp_dir_only): Delete.
	(_cpp_preprocess_dir_only): Delete.
	* lex.c (cpp_directive_only_process): New implementation.
	gcc/c-family/
	* c-ppoutput.c (print_lines_directive_only): lines is unsigned.
	(scan_translation_unit_directives_only): Reimplement.
	gcc/testsuite/
	* gcc.dg/cpp: Move directives-only tests to ...
	* c-c++-common/cpp: ... here.

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

	gcc/cp/
	* parser.c (cp_parser_import_declaration): Be stricter about preamble.
	gcc/testsuite/
	g++.dg/modules/atom-decl-2.C: Adjust diagnostics.
	g++.dg/modules/atom-pragma-3.C: Likewise.
	g++.dg/modules/exp-xlate-1_b.C: Likewise.
	g++.dg/modules/inc-xlate-1_e.C: Likewise.
	g++.dg/modules/atom-preamble-2_f.C: New.

	gcc/cp/
	* module.cc (preprocess_module): Don't load header unit if not
	preprocessing.  Always close and reopen the line map spans.
	libcpp/
	* include/cpplib.h (cpp_get_options, cpp_get_callbacks)
	(cpp_get_deps): Mark as PURE.

	gcc/cp/
	* module.cc (module_state::do_import): Drop deps handling here.
	(preprocess_module): Mark interface.
	(preprocessed_module): Correct dependency generation.
	(finish_module_processing): Drop deps handling here.
	libcpp/
	* mkdeps.c (make_write): Note Make 4.3's &: targets

	gcc/cp/
	* module.cc (MODULE_UNKNOWN_PARTITION): Delete.
	(module_state::read_imports): Drop special partition detection.
	(module_state::read_partitions): Drop special partition setting.
	(module_translate_include): Use main_source_loc for mapper.
	({init,fini}_module_processing): Likewise.

	gcc/cp/
	* lex.c (module_token_cdtor): Call preprocessed_module on
	teardown here ...
	* parser.c (cp_lexer_new_main): ... not here.
	* module.cc (struct module_state): Drop from_loc.  Use loc in most
	places.
	(module_state::{maybe_create_loc,attach,is_detached): Delete.
	(module_state::is_rooted): New.  Use it in place of is_detached.
	(module_state::imported_from): New.
	(module_state::do_import): Create module loc here ...
	(direct_import): ... not here ...
	(preprocess_module): ... or here.
	(import_module): Reparent here.
	(module_cpp_undef): Check flag_header_unit.
	(module_begin_main_file): Do not declare_module here ...
	(preprocessed_module): ... do it here.

	gcc/cp/
	* module.cc (module_state::direct_import): Delete.
	(module_state::do_import): Only ever do initial read.
	(direct_import): New non-member fn.
	({import,declare}_module): Call it.
	(preprocess_module): Call do_import.

	gcc/cp/
	* module.cc (struct module_state): Cleanly separate module kind
	flags from module use flags.

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

	gcc/cp/
	* module.cc (struct module_state): Drop primary_p &
	from_partition_p.  Map uses to module_p and partition_direct_p.

	gcc/cp/
	* module.cc (struct module_state): Add load_state, not flags.
	Remove imported_p, lazy_{preprocessor,language}_p.
	(module_state::read_{imports,preprocessor,language}): Adjust.
	(module_state::{check_read,{do,direct}_import}): Adjust.
	({declare,preprocess}_module): Adjust.

	gcc/cp/
	* cp-tree.h (module_normal_import_p): Delete.
	* module.cc (struct module_state): Rationalize flags.
	(module_normal_import_p): Delete.
	(module_state::direct_import): Don't save and restore line state
	here.
	(import_module): Just for language.
	(preprocess_module): Save line state here.
	* parser.c (cp_parser_import_declaration): Adjust.
	(cp_parser_declaration_seq_opt): Drop superflous pragma parsing.

	gcc/cp/
	* parser.c (cp_parser_import_declaration): Diagnose include
	translation in purview.  Emit not about module-directive control lines.
	gcc/testsuite/
	* g++.dg/modules/inc-xlate-1_e.C: New.

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

	libcpp/
	* internal.h (struct spec_nodes): Transpose n_modules array.
	* init.c (post_options): Adjust n_modules array access.
	* lex.c (cpp_maybe_module_directive): Remove supurfluous state and
	laziness.
	gcc/
	* module.cc (module_translate_include): Add __translated attribute.
	* parser.c (cp_parser_translation_unit): Move translated
	diagnostic to ...
	(cp_parser_import_declaration): ... here.  Still disabled.
	(cp_parser_module_export): Check for following module directive.
	gcc/testsuite/
	* g++.dg/modules/exp-xlate-1_b.C: Remove xfail, adjust errors.
	* g++.dg/modules/inc-xlate-1_b.H: Adjust final scans.
	* g++.dg/modules/legacy-[35]_[bcd].[CH]: Adjust final scans.

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

	libcpp/
	* include/cpplib.h (NODE_MODULE): New.
	(struct cpp_hashnode): Reserve another flag bit.
	* internal.h (struct spec_nodes): Replace separate module spec
	nodes by array.
	(_cpp_setup_module_directive): Delete.
	* init (post_options): Adjust module node initialization.
	* directives.c (_cpp_setup_module_directive): Delete, move into ...
	* lex.c (cpp_maybe_module_directive): ... here.  New, absorb
	peeking from ...
	(_cpp_lex_token): ... here.  Call it.

	Merge master b92709388b9aee52db3cd7c227818e0ecccda2e5

	gcc/cp/
	* parser.c (cp_parser_skip_to_end_of_statement): Adjust pragma
	skipping.
	(cp_parser_skip_to_end_of_block_or_statement): Likewise.

	Fix PRAGMA_EOL location
	libcpp/
	* lex.c (_cpp_lex_direct): Return CPP_PRAGMA_EOL at end of line.
	gcc/cp/
	* lex.c (token_coro::resume): No need to handle in-pragma EOF.
	* parser.c (cp_parser_skip_to_pragma_eol): Likewise.
	(cp_parser_omp_declare_simd, cp_parser_omp_declare_reduction)
	(cp_parser_oacc_routine, cp_parser_initial_pragma, pragma_lex): Likewise.
	gcc/c-family/
	* c-ppoutput.c (scan_translation_unit): Ignore CPP_PRAGMA_EOL in
	not a pragma.
	gcc/testsuite/
	* c-c++-common/cpp/pragma-eof.c: New.

	Implement p1857, part 3
	gcc/cp/
	* cp-tree.h (module_preprocess, import_module_pre): Replace with ...
	(preprocess_module): ... this.
	(import_module_lang): Replace with ...
	(import_module): ... this.
	(preprocessed_module): Declare.
	(process_deferred_imports): Delete.
	* lex.c (struct token_coro): Report via preprocess_module.
	(module_token_pre): Call preprocessed_module on teardown.
	* module.cc (module_state::module_p): New flag.
	(main_source_loc): New.
	(pending_imports): Delete.
	(module_state::direct_import): Do not get filename here.
	(import_module_lang): Replace with ...
	(import_module): Drop attach logic.
	(declare_module): Adjust.
	(module_preprocess, import_module_pre): Replace with ...
	(preprocess_module): ... this.  Do attach logic here.
	(preprocessed_module): New.  Do deps and module server name comms.
	(process_deferred_imports): Delete.
	* parser.c (cp_lexer_new_main): Call preprocessed_module when
	done.
	(cp_parser_translation_unit): Drop deferred imports logic.
	(cp_parser_import_declaration): Adjust.
	gcc/testsuite/
	* g++.dg/modules/atom-preamble-2_d.C: Remove xfail.
	* g++.dg/modules/bad-mapper-1.C: Adjust diagnostic loc.
	* g++.dg/modules/bad-mapper-2.C: Likewise.
	* g++.dg/modules/bad-mapper-3.C: Likewise.
	* g++.dg/modules/map-2.C: Likewise.

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

	Implement p1857, part 2
	libcpp/
	* include/line-map.h (linemap_module_reparent): Declare.
	* line-map.c (linemap_module_reparent): New.
	gcc/cp/
	* cp-lang.c (LANG_HOOKS_PREPROCESS_TOKEN): Adjust.
	* cp-tree.h (module_preprocess_token): Rename to ...
	(module_token_pre): ... here.
	(module_token_{cdtor,lang}): Declare.
	(module_map_header): Delete.
	(module_preprocess): Adjust parameters.
	(import_module): Delete, replace with ...
	(import_modile_{pre,lang}): ... these.
	(declare_module): Return void.
	* lex.c (struct token_coro): New, broken out of ...
	(module_preprocess_token): ... here.  Replace with ...
	(module_token_{pre,lang,cdtor}): ... these.
	* module.cc (module_state::read_location): Deal with early-read
	partition locations.
	(module_state::direct_import): Always preserve line map.  Take
	for_cpp arg.
	(import_module): Break into ...
	(import_module_{pre,lang}): ... these.  Disable pending imports.
	(declare_module): Adjust.
	(module_map_header): Delete.
	(module_preprocess): Do not change module array.  Return primary
	module.
	* parser.c (cp_lexer_tokenize): Delete.
	(cp_lexer_new_main): New, resurrected from trunk.  Tokenize the
	whole buffer.  Call the token coro.
	(cp_parser_skip_to_closing_parenthesis_1): Deal with falling into
	a module pseudo-pragma.
	(cp_parser_skip_to_end_of_{,block_or_}statement): Likewise.
	(cp_parser_translation_unit): Drop the incremental tokenization.
	(cp_parser_module_name): Drop KIND parameter.
	(cp_parser_module_directive_end): New.
	(cp_parser_{import,module}_declaration): Adjust.
	(cp_parser_declaration): Deal with (badly placed) import or module
	declarations.
	(cp_parser_toplevel_declaration): Restore PRAGMA parsing.
	(c_parse_file): PCHness handled in cp_lexer_new_main, use it.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-2.C: Adjust expected error
	* g++.dg/modules/atom-pragma-3.C: Likewise.
	* g++.dg/modules/exp-xlate-1_b.C: Likewise.
	* g++.dg/modules/mod-decl-1.C: Likewise.
	* g++.dg/modules/p0713-2.C: Likewise.
	* g++.dg/modules/p0713-3.C: Likewise.
	* g++.dg/modules/atom-preamble-2_d.C: Temporary XFAIL
	* g++.dg/modules/unnamed-1_b.C: Adjust output scan

	gcc/cp/
	* parser.c (cp_lexer_alloc): Remove pch finalizing.
	(cp_parser_skip_to_closing_parenthesis_1): Deal with falling into
	a CPP_PRAGMA.
	(cp_parser_skip_to_end_of_{,block_or_}statement): Likewise.
	(cp_parser_skip_to_pragma_eol): Don't consume CPP_EOF.
	(cp_parser_new): Take a lexer, don't create it here.
	(cp_parser_declaration): Just point at peeked tokens, don't copy.
	(cp_parser_block_declaration): Likewise.
	(cp_parser_initial_pragma): Don't get the first token.
	(c_parse_file): Do it here, and finalize pch.

	libcpp/
	* lex.c (_cpp_lex_direct): Set location of PRAGMA_EOL.
	gcc/testsuite/
	* g++.dg/modules/exp-xlate-1_b.C: Add xfailed bogus-error.
	* g++.dg/modules/cpp-2_c.C: Adjust output scan.
	* g++.dg/modules/cpp-5_c.C: Likewise.
	* g++.dg/modules/legacy-3_b.H: Likewise.
	* g++.dg/modules/legacy-3_c.H: Likewise.
	* g++.dg/modules/legacy-6_c.C: Likewise.
	* g++.dg/modules/legacy-6_d.C: likewise.

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

	gcc/
	* langhooks.h (preprocess_token): Take a const cpp_token pointer.
	gcc/c-family/
	* (c-ppoutput.c (scan_translation_unit): Preprocess lang hook
	doesn't alter the token.

	gcc/cp/
	* cp-tree.h (module_preprocess_token): Take const cpp_token
	pointer.
	* lex.c (module_preprocess_token): Take const cpp_token.

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

	Merge master a1f6eff20e3bb32c5051e77093ee28faec2abca0

	gcc/c-family/
	* c-common.h (enum rid): Remove non-underbarred module RIDs.
	* c-common.c (c_common_reswords): Remove non-underbarred module keywords.
	gcc/cp/
	* lex.c (init_reswords): Module keywords are keywords.
	* parser.c (cp_lexer_tokenize): Look for keywords.
	(cp_parser_translation_unit): Likewise.
	gcc/testsuite/
	* g++.dg/modules/exp-xlate-1_b.C: Remove bogus xfail.

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

	libcpp/
	* expr.c (parse_defined): Fixup for modules.
	(parse_has_include): Remove controlling macro nonsense.

	Implement p1857, part 1
	libcpp/
	* internal.h (struct lexer_state): Add directive_file_token field.
	(struct spec_nodes): Add module directive nodes.
	(_cpp_setup_module_directive): Declare.
	* include/cpplib.h (struct cpp_options): Add module_directives field.
	* directives.c (_cpp_setup_module_directive): New.
	* init.c (post_options): Provess module_directives option.
	* lex.c (_cpp_lex_token): Add module directive handling.
	* macro.c (cpp_get_token_1): Add directive_file_token handling.
	gcc/cp/
	* lex.c (module_preprocess_token): Reimplement.
	* parser.c (cp_lexer_tokenize): Module lines end in
	CPP_PRAGMA_EOL.
	(cp_lexer_not_macro): Delete.
	(cp_parser_module_directive_end): New.
	(cp_parser_diagnose_invalid_typename): Adjust.
	(cp_parser_translation_unit): Adjust.
	(cp_parser_{module,import}_declaration): Adjust.
	gcc/c-family/
	* c-common.h (enum rid): Add RID__MODULE and co.
	* c-common.c (c_common_reswords): Add __module and co.
	* c-lex.c (c_lex_with_flags): Adjust CPP_HEADER_NAME handling.
	* c-opts.c (c_common_post_options): Set module_directives option.
	gcc/testsuite/
	* g++.dg/modules/anon-2_b.C: Adjust error/scans.
	* g++.dg/modules/atom-preamble-1.C: Likewise.
	* g++.dg/modules/atom-preamble-3.C: Likewise.
	* g++.dg/modules/cpp-2_c.C: Likewise.
	* g++.dg/modules/cpp-5_b.C: Likewise.
	* g++.dg/modules/cpp-5_c.C: Likewise.
	* g++.dg/modules/dep-2.C: Likewise.
	* g++.dg/modules/keyword-1_b.C: Likewise.
	* g++.dg/modules/legacy-3_b.H: Likewise.
	* g++.dg/modules/legacy-3_c.H: Likewise.
	* g++.dg/modules/legacy-6_c.C: Likewise.
	* g++.dg/modules/legacy-6_d.C: Likewise.
	* g++.dg/modules/mod-decl-0-2a.C: Likewise.
	* g++.dg/modules/mod-decl-0.C: Likewise.
	* g++.dg/modules/mod-decl-1.C: Likewise.
	* g++.dg/modules/mod-decl-3.C: Likewise.
	* g++.dg/modules/token-1.C: Likewise.
	* g++.dg/modules/token-2_b.C: Likewise.
	* g++.dg/modules/token-3.C: Likewise.
	* g++.dg/modules/token-4.C: Likewise.
	* g++.dg/modules/exp-xlate-1_b.C: XFAIL
	* g++.dg/modules/inc-xlate-1_d.C: XFAIL

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

	gcc/cp/
	* modules.cc (slurping::remap_module): Return unsigned, use zero
	for error case.
	(trees_in::tree_node): Adjust.
	(module_state::read_{namespace,pendings}): Likewise.
	(module_state::read_{preprocessor,language}): Likewise.

	gcc/cp/
	* modules.cc (struct module_state): Add
	lazy_{preprocessor,language}_p fields.
	(module_state::read): Delete, move into do_import.
	(module_state::read_preprocessor): Be idempotent. Read direct
	imports here.  Set header bitmap bits.
	(module_state::read_language): Likwise, set import/export bits.
	(module_state::check_read): Adjust file closing condition.
	(module_state::set_import): Do not deal with header bitmaps here.
	(module_state::do_import): Do the initial read (only) here.
	(module_state::direct_import): Do the preprocessor and language
	reading here.

	gcc/cp/
	* modules.cc (slurping::remap_module): Encode import directness in
	remap array.
	(module_state::read_imports): Adjust.
	(module_state::read_initial): Likewise.

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

	Merge master 3a43459715e239fb8043bf64b830aaf1a9802180.
	Coroutines committed.

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

	Merge master bf09d886a4be1031f7003073115af6cbc5575353.

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

	gcc/cp/
	* module.cc (module_state::write_macros): Always write a set of
	defs.
	(module_state::read_macros): Adjust.
	(module_state::read): Only read preprocessor for header unit.
	(module_state::read_preprocessor): Assert am header.

	gcc/cp/
	* module.cc (module_state::{read,write}_counts): New.  Broken out
	of ...
	(module_state::{read,write}_config): ... here.
	(enum module_state_counts): New.
	(module_state::write_cluster): Take lwm,hwm pair.
	(module_state::read_{bindings,entities,inits}): Adjust.
	(module_state::write): Write counts.
	(module_state::read_{preprocessor,language}): Read counts.

	gcc/cp/
	* module.cc (slurping::slurping): Set current to ~0u.
	(module_state::read_{initial,preprocessor,language}): New, broken
	out of ...
	(module_state::read): ... here.  Call them.

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

	Merge master.
	gcc/cp/
	* module.cc (depset::traits): Add empty_zero_p.

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

	gcc/cp/
	* Make-lang.in (MODULE_REVISION): SVN's dead, man.

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

	Merge trunk r280131.
	Bye bye SVN, I'm sure the farm upstate will be fine.

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

	Merge trunk r279868.

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

	Header unit deduplication milestone
	gcc/testsuite/
	* g++.dg/modules/string-1_{a.H,b.C}: New.

	gcc/cp/
	* module.cc (trees_in::decl_value): Disambiguate entity_ary slots
	from entuty_hash slots.
	(trees_out::get_merge_kind): Check of
	uninstantiated_template_friend even when there's a depset.

	gcc/cp/
	* module.cc (trees_in::tree_value): Return existing.
	gcc/testsuite/
	* g++.dg/modules/merge-11{.h,_a.H,_b.C}: New.

	gcc/cp/
	* module.cc (trees_out::get_merge_kind): Detect bitfield storage
	unit.
	(trees_out::key_mergeable): Deal with anonymous bitfields.
	* name-lookup.c (mergeable_class_member): Likewise.
	gcc/testsuite/
	* g++.dg/modules/merge-10{.h,_a.H,_b.C}: New.

	gcc/
	* tree.h (DECL_ALIGN_RAW): New, use it in accessors.
	(DCL_WARN_IF_NOT_ALIGN): Likewise.
	gcc/cp/
	* cp-tree.h (CPTI_CONST_TYPE_INFO_TYPE,CPTI_TYPE_INFO_PTR_TYPE):
	Move to after module hwm.
	* module.cc (trees_out::write_class_def): Don't write empty thunk
	lists.
	(trees_in::read_class_def): Merge fields from a duplicate.
	gcc/testsuite/
	* g++.dg/modules/tinfo-2_{a.h,b.C}: New.
	* g++.dg/modules/member-def-1_c.C: Adjust scan.
	* g++.dg/modules/merge-9.h: Add another builtin.

	gcc/cp/
	* module.cc (module_state::read_cluster): Set cfun->returns_struct
	approprately.

	gcc/cp/
	* module.cc (import_entity_module): Cope with exported entities.

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

	gcc/cp/
	* cp-tree.h (CPTI_ALIGN_TYPE): Not a global tree.
	gcc/testsuite/
	* g++.dg/modules/merge-9{.h,_a.H,_b.C}: New.

	gcc/cp/
	* module.cc (nodel_decl_hash): Rename to ...
	(duplicate_hash): ... here.  Allow binfos.
	(trees_{in,out}::binfo_mergeable): New.
	(trees_{in,out}::tree_node): Use it for tt_binfo.
	(trees_{in,out}::tree_value): Use to dedup binfos.
	gcc/testsuite/
	* g++.dg/modules/merge-8{.h,_a.H,_b.C}: New.

	gcc/cp/
	* module.cc (trees_{in,out}::tree_binfo): Delete.
	(trees_{in,out}::tree_node): Use binfo chain to find binfo.

	Merge trunk r279811.
	Update all the years!

	Merge trunk r279809.
	That's 2019 done.

	Merge trunk r279556.
	gcc/
	* diagnostic-core.h (progname): Resolve conflict.

	Merge trunk r279555.

	Merge trunk r279473.

	Apply trunk r279473.
	gcc/cp/
	* constexpr.cc (check_constexpr_fundef): Clear non-potential
	result before registering.

	Merge trunk r279472.

2019-12-19  Nathan Sidwell  <nathan@acm.org>

	Typeof merging
	gcc/cp/
	* ptree.c (cxx_print_type): Print TYPEOF_TYPE & BASES types.
	* typeck.c (structural_comptypes): Add TYPEOF_TYPE.
	gcc/testsuite/
	* g++.dg/modules/merge-7{.h,_a.H,_b.C}: New.

	Anonymous templates are a thing.
	gcc/cp/
	* module.cc (trees_out::key_mergeable): Deal with anon templatey
	members.
	* name-lookup.c (mergeable_class_member): Likewise.
	gcc/testsuite/
	* g++.dg/modules/merge-6{.h,_a.H,_b.C}: New.

	gcc/cp/
	* module.cc (trees_in::decl_value): Fix enum-context merging.
	gcc/testsuite/
	* g++.dg/modules/merge-5{.h,_a.H,_b.C}: New.

	gcc/cp/
	* module.cc (trees_out::key_mergeable): Fix indentation.

	gcc/cp/
	* name-lookup.c (mergeable_class_member): Get to class template
	correctly.
	gcc/testsuite/
	* g++.dg/modules/merge-4{.h,_a.H,_b.C}: New.

	gcc/cp/
	* module.cc (trees_in::install_implicit_member): Fix parm type thinko.
	gcc/testsuite/
	* g++.dg/modules/imp-member-1_a.C: Fix scan.
	* g++.dg/modules/imp-member-2_[abc].C: New.

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

	Installation of implicit member fns.
	gcc/cp/
	* module.cc (trees_in::install_implicit_member): New.
	(trees_in::decl_value): Implicit member functions may be dups.
	Call install_implicit_member.
	gcc/testsuite/
	* g++.dg/modules/imp-member-1_[abcde].C: New.

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

	Out-of-class member function definitions
	gcc/cp/
	* decl.c (begin_function_body): RAII.
	* lex.c (cxx_dup_lang_specific): Clear IMPORT_P and PARTITION_P.
	* module.cc (module_state::is_matching_decl): Add inner parm.
	Propagate inline & externalness.
	(module_state::write): Read all partition entities.
	* parser.c (cp_parser_function_definition_after_decl): Set
	defining module as appropriate.
	gcc/testsuite/
	* g++.dg/modules/member-def-2_[abcd].C: New.

	Out-of-class member class definitions
	gcc/cp/
	* cp-tree.h (DECL_MODULE_PENDING_MEMBERS_P): New.
	(lang_decl_base): Add module_pending_members_p.
	(lazy_load_members): Declare.
	* module.cc (depset::entity_kind): Add EK_INNER_DECL.
	(depset::disc_bits): Add DB_IS_MEMBER_BIT.
	(depset::is_member): New.
	(module_state::write_cluster): Take ref to module_state_config.
	Adjust.
	(module_state::{read,write}_specializations): Rename to ...
	(module_stte::{read,write}_pendings): Generalize to pending
	members.
	(trees_in::decl_val): Deal with pending members.
	(depset::hash::make_dependency): Adjust for EK_INNER_DECL.
	(depset::hash::add_class_entities): Add them.
	(struct module_state_config): Rename num_specializations ->
	num_pendings.  Adjust throughout.
	(module_state::read_entities): Shift snum another bit.
	(module_sttate::lazy_load): Likewise.
	(lazy_load_members): New.
	* name-lookup.c (maybe_lazily_declare): Load pending members.
	gcc/testsuite/
	* g++.dg/modules/member-def-1_[abcd].C: New.

	gcc/cp/
	* cp-tree.h (set_defining_module): New.
	* decl.c (xref_tag_1): Check can redeclare, set instantiating
	module.
	(start_enum): Likewise.
	* module.c: Update doc preamble.
	(module_may_redeclare): Get to the template.
	(set_defining_module): New, broken out of ...
	(set_instantiating_module): ... here.  DO NOT CALL IT.
	* rtti.c (init_rtti_processing): "type_info" has exportedness.
	* semantics.c (begin_class_definition): Check can redeclare.  Set
	defining & instantiating.
	gcc/testsuite/
	* g++.dg/modules/friend-5_[ab].C: New.
	* g++.dg/modules/tdef-4_[bc].C: Add comments.

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

	Merge trunk r279384.

	gcc/cp/
	* module.cc: Rename specset to pendset.  Document.

	Pending specializations keyed by ident
	gcc/cp/
	* cp-tree.h (DECL_TEMPLATE_LAZY_SPECIALIZATIONS_P): Delete.
	(MODULE_VECTOR_LAZY_SPEC_P): Delete.
	(MODULE_VECTOR_PENDING_{SPECIALIZATIONS,IS_HEADER,IS_PARTITION}_P): New.
	(DECL_MODULE_PENDINGSPECIALIZATIONS_P): New.
	(lang_decl_base): Add module_specializations_p.
	(lazy_specializations_p): Declare.
	* name-lookup.h (note_pending_specializations): No return value.
	(load_pending_specializations): Declare.
	(note_loaded_specializations): Delete.
	* module.cc (specset): Key is entity ident.  Adjust throughout.
	(trees_in::decl_value): Deal with pending specializations.
	(specset::lazy_load): Deal with indirections.
	(module_state::{read,write}_specializations): Reimplement.
	(lazy_specializations_p): New.
	(lazy_load_specializations): Reimplement.
	* name-lookup.c (mark_pending_on_{decl,binding}): Delete.
	(set_module_binding): Drop lazy specialization tagging here.
	(note_pending_specializations): Reimplement.
	(load_pending_specializations): New.
	(note_loaded_specializations): Delete.
	* pt.c (lookup_template_class_1): Reimplement lazy specialization
	loading.
	(instantiate_template_1): Likewise.
	gcc/testsuite/
	* g++.dg/modules/inst-4_[ab].C: Adjust scans.
	* g++.dg/modules/tpl-spec-[12345]_[abcd].C: Likewise.

	gcc/cp/
	* cp-tree.h (DECL_MODULE_ENTITY_P): New.
	(lang_decl_bas): Add module_entity_p flag.
	* module.cc (trees_in::decl_value): Insert according to
	DECL_MODULE_ENTITY_P.
	* lex.c (cxx_dup_lang_specific): Clear DECL_MODULE_ENTITY_P.

2019-12-12  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (class specset): Make ns an mc_slot.
	(specset::hash::add): Adjust.
	(specset::hash::lookup): Rename to ...
	(specset::hash::extract): ... here.  Adjust.
	(specset::lazy_load): New.
	(module_state::read_entities): Adjust lazy setting.
	(module_state::read_specializations): Adjust hash table adding.
	(lazy_load_binding): Reorder dump stacking.
	(lazy_load_specializations): Likewise, call specset::lazy_load.

	gcc/cp/
	* cp-tree.h (DECL_MODULE_PARTITION_P): Update doc.
	* module.cc (trees_in::decl_value): Only set
	DECL_MODULE_PARTITION_P when primary interface.

	gcc/cp/
	* decl.c (lookup_and_check_tag): Refactor.

	gcc/cp/
	* module.cc (import_entity_index): Use different fail value.
	(dumper::impl::nested_name): Don't explode on bad import indices.
	(module_state::write): Adjust.
	gcc/testsuite/
	* g++.dg/modules/part-4_[abc].C: New.

2019-12-06  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (maybe_strip_cmi_prefix): Simplify.

	gcc/cp/
	* module.cc (trees_out::key_mergeable): Remove unreachable code.

	gcc/cp/
	* module.cc (enum tree_tag): Delete tt_friend_template.
	(trees_out::decl_node): Uninstantiated template friends are not
	special.
	(trees_in::tree_node): Delete tt_friend_template handling.
	(trees_{in,out}::{read,write}_class_def): No need to stream
	template friends specially.
	(trees_out::mark_class_def): No need to mark class_def members.
	(depset::hash::make_dependency): Do not confuse uninstantiated
	template friends with scope members.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-2_a.C: Adjust scan.

	gcc/cp/
	* module.cc (trees_out::mark_class_def): No need to mark friend
	specializations.

	gcc/cp/
	* decl.c (duplicate_decls): Just zap the template's module info.
	* pt.c (build_template_decl): No need to copy false module info.
	(tsubst_tenplate_decl): Just zap the template's module info.

	gcc/cp/
	* module.cc (trees_out::decl_{node,value}): Remove cluster biasing.
	(depset::hash::make_dependency): Likewise.
	(module_state::write_{cluster,{namespace{,s}}): Likewise.
	(module_state::write_{entities,specializations}): Likewise.
	(module_state::write): Likewise.

	(gcc/cp/
	* module.cc (trees_out::decl_value): No need to look for dep again.

	gcc/cp/
	* module.cc (trees_out::decl_node): Get entity index & origin from
	the depset.
	(depset::hash::make_dependency): Stash the importing index &
	origin in the depset.
	(module_state::write_namespace): Get index & origin from the depset.

	Structured bindings, c++2a libstdc++ is back working
	gcc/cp/
	* module.cc (trees_{in,out}::lang_decl_{bools,vals}): Handle
	lds_decomp.
	gcc/testsuite/
	* g++.dg/modules/decomp-1_[ab].C: New.

	Merge trunk r279023.
	libstdc++ c++2a is now using structured bindings, and those don't
	work :(

2019-12-05  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::hash::add_namespace_context): New.
	(trees_out::decl_node): Use it for namespace.
	(depset::hash::make_dependency): Likewise for discovered GMF.
	(depset::hash::add_binding): Use it.
	(depset::tarjan::connect): Make sure we don't wander into imports.
	(depset::hash::connect): Don't add imports to the graph.
	(module_state::write_namespace{,s}): Never meet global namespace.
	(module_state::write_entries): Handle namespace entries
	separately.
	(module_state::write): Reorganize cluster traversals.

	gcc/cp/
	* module.cc (depset::hash::add_dependency): Do not depend on
	imports.
	(depset::tarjen::connect): Assert more.
	(depset::hash::connect): Add less.
	(module_state::write): Fewer cases.
	gcc/testsuite/
	* g++.dg/modules/vmort-2_b.C: Invert scan test.

	gcc/cp/
	* module.cc (depset::{make,add}_dependency): Drop is_import parm,
	update all callers.
	(will_be_import): Delete.
	(trees_out::decl_node): Determine will be import locally.
	(depset::make_dependency): Likewise.

	gcc/cp/
	* cp-tree.h (DECL_MODULE_PARTITION_P): New.
	(lang_decl_base): Add module_partition_p.
	* decl.c (duplicate_decls): Adjust.
	* pt.c (build_template_decl, tsubst_template_decl): Adjust.
	* module.cc (will_be_import): Assert consistency.
	(trees_in::decl_value): Set module_partition_p.
	(depset::hash::make_dependency): Assert consistency.
	(set_instantiating_module): Clear it.

	One Beellion Modules!
	gcc/cp/
	* cp-tree.h (lang_decl_base): Replace module_origin field with
	module_import_p flag.
	* modules.cc (MODULE_UNKNOWN{,_PARTITION}): Adjust.
	(MODULE_LIMIT): Delete.
	(module_state): Make mod & remap unsigneds.
	(module_state::read): No need to check module overflow.

	gcc/cp/
	* module.cc (macro_import::slot) Adjust encoding to use fewer
	bits.
	(macro_import::append): Add defness parm.
	(macro_import::exported): Always make definition.
	(maybe_add_macro): Adjust.
	(module_state::{write,install}_macros): Likewise.
	(module_state::deferred_macro): Likewise.

	Module index no longer on the decl itself.
	gcc/cp/
	* cp-tree.h (DECL_MODULE_ORIGIN): Delete.
	(DECL_MODULE_IMPORT_P): New.
	(get_importing_module): Declare.
	* decl.c (duplicate_decls): Replace DECL_MODULE_ORIGIN with
	DECL_MODULE_IMPORT_P.
	* decl2.c (no_linkage_error): Likewise.
	* module.cc
	(will_be_import):Move later, use import_entity_{index,module}.
	(import_entity_index): Add null_ok parm.
	(dumper::impl::nested_name): Use import_entity_{index,module}.
	(trees_in::decl_value): Set DECL_MODULE_IMPORT_P.
	(trees_out::decl_node): Use will_be_import.
	(depset::hash::make_dependency): Check import_p flag.
	(depset::hash::add_specializations): Delete assert.
	(module_state::{read,write}_namespaces): Check DECL_MODULE_IMPORT_P.
	(module_state::write_specializations): Likewise.
	(get_originating_module): Use get_importing_module.
	(get_importing_module): New.
	(module_may_redeclare): Lookup the module index.
	(set_instantiating_module): Clear DECL_MODULE_IMPORT_P.
	(finish_module_processing): Leep the entity_map.
	* name-lookup.c (name_lookup::search_adl): Use
	get_importing_module.
	(add_imported_namespace): Set DECL_MODULE_IMPORT_P.
	* pt.c (build_template_decl): Copy DECL_MODULE_IMPORT_P, not
	ORIGIN.
	(tsubst_template_decl): Likewise.
	* ptree.c (cxx_print_decl): Use get_importing_module.

	gcc/cp/
	* name-lookup.h (add_imported_namespace): Origin is unsigned.
	* name-lookup.c (add_imported_namespace): Origin is unsigned and
	non-zero.  Elide unreachable code.

	gcc/cp/
	* cp-tree.h (get_instantiating_module_decl): Delete.
	(get_instantiating_module): Delete.
	* module.cc (depset::hash::add_specialization): Remove assert.
	(get_instantiating_module_decl): Delete.
	(get_instantiating_module): Delete.

	gcc/cp/
	* module.cc (trees_in::{enum ,get_}{dup,ord}ness): Delete.
	(trees_in::{odr,is}_duplicate): New.
	(trees_in::read_{function,var,class,enum}_def): Adjust.
	(module_state::read_cluster): Adjust.

	gcc/cp/
	* decl.c (duplicate_decls): Pass the old decl to
	module_may_redeclare.
	* module.cc (module_may_redeclare): Expect the decl, not its
	owner.

	gcc/cp/
	* module.cc (trees_out::decl_node): Move is_import test into
	non-streaming block.  Check the decl, not the instantiator.

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

	Elrond is dead, long live Elrond!

	gcc/cp/
	* module.cc (trees_out::decl_node): Refactor, removing duplicate
	code blocks.

	Delete unreachable code
	gcc/cp/
	* module.cc (enum tree_tag): Delete tt_named,
	tt_implicit_template.
	(trees_out::decl_node): Remove #if'd out code.
	(trees_in::tree_node): Remove tt_named, tt_implicit_template
	handling.
	(trees_out::key_mergeable): Remove unreachable anon-type case.
	(trees_out::{write,mark}_class_def)  Removed #if'd out code.
	(trees_in::read_class_def): Likewise.
	* name-lookup.c (get_binding_or_decl): Delete.
	(lookup_by_type, lookup_ident, get_lookup_ident): Delete.
	* name-lookup.h (lookup_by_type, lookup_ident, get_lookup_ident):
	Don't declare.

	Class members by index.
	gcc/cp/
	* decl.c (duplicate_decls): Repropagate module origin & purview.
	* friend.c (add_friend): Potential code, so I don't forget it.
	* module.cc (depset): Delete DB_MERGEABLE_BIT.
	(find_enum_member): New.
	(trees_out::decl_value): Separate different mergeable matching
	cases.  Add new ones.
	(trees_out::decl_node): Stream class members by index.  Adjust
	identifier streaming.
	(trees_in::decl_node): Deal with conv_op_identifier.  Use
	find_enum_member.
	(trees_out::get_merge_kind): Add DECL parm, deal with via_ctx and
	local_friends.
	(trees_out::key_mergeable): Swap parms, deal with new kinds.
	(trees_in::key_mergeable): Deal with new kinds.
	(trees_{in,out}::{read,write}_class_def): Don't stream member
	definitions.
	(trees_out::mark_class_def): Don't mark members.
	(depset::hash::make_dependency): Don't mark as mergeable.
	(cluster_cmp): Compare by stripped UID.
	(get_{instantiating,originating}_module_decl): Deal with fields,
	usings and local friends.
	* name-lookup.c (enum merge_match): New.
	(check_mergeable_decl): Add match kind parm.
	(match_mergeable_decl): Rename to ...
	(mergeable_namespace_entity): ... here.  Deal with namespace scope
	entities.
	(mergeable_class_member): New.
	(make_namespace_finish): Adjust.
	* name-lookup.h (match_mergeable_decl): Rename to ...
	(mergeable_namespace_entity): ... here.
	(mergeable_class_member): Declare.
	gcc/testsuite/
	* g++.dg/modules/friend-1_a.C: Adjust scans.
	* g++.dg/modules/indirect-[1234]_[bc].C: Likewise.
	* g++.dg/modules/inst-3_a.C: Likewise.
	* g++.dg/modules/tpl-friend-[12]_a.C: Likewise.
	* g++.dg/modules/tpl-spec-[45]_a.C: Likewise.
	* g++.dg/modules/vmort-2_a.C: Likewise.
	* g++.dg/modules/internal-1.C: Add xfailed dg-bogus
	* g++.dg/modules/thunk-1_a.C: Avoid implicit member problem.

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

	gcc/cp/
	* module.cc (dumper::impl::nested_name): Add 'template '
	disambiguator.
	(trees_out::add_indirect_tpl_parms): Check if streaming before
	dumping.
	gcc/testsuite/
	* g++.dg/modules/indirect-[234]_[bc].C: Adjust scans.
	* g++.dg/modules/inst-3_b.C: Likewise.
	* g++.dg/modules/late-ret-[23]_[ac].[HC]: Likewise.
	* g++.dg/modules/tpl-friend-[12]_a.C: Likewise.
	* g++.dg/modules/tpl-spec-[1245]_[abcd].C: Likewise.

2019-11-27  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (will_be_import): New.
	(depset::hash::make_dependency): Add is_import parm, rather than
	calculate. Update all callers.
	(depset::hash::add_dependency): Likewise.

	gcc/cp/
	* module.cc (trees_out::decl_node): Untangle namespace-scope
	emission from class-scope.
	(trees_in::tree_node): Fix tt_entity ident signedness.
	(depset::hash::make_dependency): Check is_import before checking
	GMF reachability.

	gcc/cp/
	* module.cc (trees_out::decl_node): Refactor function scope
	& specialization emission.

	gcc/cp/
	* module.cc (trees_out::decl_node): Deal with function scope
	before instantiations.

2019-11-26  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_out::decl_node): Tag and add indirects for
	uninstantiated template friend.
	(trees_in::tree_node): Likewise.

	gcc/cp/
	* module.cc (trees_out::decl_node): Remove a scope.

	gcc/cp/
	* module.cc (depset): Delete EK_UNNAMED, EK_MAYBE_SPEC.
	(trees_out::decl_node): Use EK_DECL for those.
	(depset::hash::make_dependency): Likewise.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-[12]_a.C: Adjust scans.
	* g++.dg/modules/tpl-spec-5_a.C: Likewise.
	* g++.dg/modules/vmort-2_a.C: Likewise.

	gcc/cp/
	* module.cc (trees_out::decl_node): Assert more.

	gcc/cp/
	* module.cc (module_state::check_read): Simplify to print once per
	import.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream _EXPR operands in
	forward order.
	(trees_out::decl_node): Move NULL DECL_CONTEXT handling to ...
	(trees_out::tree_node): ... here.

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

	gcc/cp/
	* module.cc (struct unnamed_entity): Delete.

	gcc/cp/
	* name-lookup.h (get_imported_namespace): Don't delare.
	* name-lookup.c (get_imported_namespace): Delete.

	Namespaces are in the entity_ary
	gcc/cp/
	* module.cc (trees_out::decl_node): Namespace may be imported.
	(depset::hash::make_dependency): Permit imported namespaces.
	(module_state::{read,write}_namespace): New.
	(module_state::{read,write}_namespaces): Adjust.
	(module_state::{read,write]_bindings): Adjust.
	(module_state::write): Don't count imported namespaces.
	* name-lookup.c (add_imported_namespace): Mark namespace as
	imported, if we made it.
	gcc/testsuite/
	* g++.dg/modules/indirect-[1234]_[bc].C: Adjust scans.
	* g++.dg/modules/namespace-2_a.C: Likewise.

	gcc/cp/
	* module.cc (tree_tag): Delete tt_namespace.
	(trees_in::tree_node): Delete tt_namespace handling.
	(module_state::{read,write}_namespaces): Adjust.
	(module_state::write_entities): Delete TABLE parm.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Write namespaces as tt_entity.
	(module_state::write_namespaces): Adjust.
	(module_state::read_namespaces): Likewise, don't return a
	namespace vector.
	(module_state::{read,write}_bindings): Adjust.
	(module_state::{read,write}_entities): Allow namespaces.
	(module_state::{read,write}): Adjust.
	gcc/testsuite/
	* g++.dg/modules/indirect-[1234]_c.C: Adjust scans.

	gcc/cp/
	* module.cc (module_state::write_namespaces): Delete TABLE arg,
	look at the dep[0]
	(module_state::read_namespaces): Add num_spaces parm.  Use it to
	count iterations.
	(module_State::write_bindings): Drop TABLE arg, look at dep[0].
	(struct module_state_config): Add num_namespaces field, stream it.
	(module_state::{read,write}): Don't count global namespace. adjust
	namespace streaming calls.

	gcc/cp/
	* module.cc (trees_out::decl_node): Add namespace dependency here.
	(depset::hash::add_dependency): And here.
	(space_cmp): Delete.
	(module_state::write): No need to sort namespaces anymore.

	gcc/cp/
	* module.cc (depset::hash::make_dependency): Add context
	dependency when discovering a new GMF binding.
	(depset::hash::add_binding): Likewise when discoving a non-empty binding.
	(depset::hash::finalize_dependencies): Leave binding's namespace
	dependency untouched.
	(module_state::write_cluster): Assert binding's namespace in in
	slot zero.  Adjust binding scan.

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

	gcc/cp/
	* cxx-mapper.cc (DOT_REPLACE, COLON_REPLACE): New.
	(module2bmi): Use them.
	gcc/testsuite/
	* g++.dg/modues/modules.exp (dg-module-cmi): Update default mapping.

2019-11-22  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::EK_FOR_BINDING): New.
	(depset::hash::make_dependency): Don't look at current.  Adjust.
	(depset::hash::add_dependency): Current is always live.
	(depset::hash::add_binding): Don't set current.  Directly depend
	the binding.
	(depset::hash::add_namespace_entities): Use make_dependency.
	(depset::hash::add_specializations): Likewise.

	gcc/cp/
	* module.cc (depset::hash::find_entity): Rename to ...
	(depset::hash::find_dependency): ... here.  Update callers.
	(depset::hash::add_dependency): Break apart to ...
	(depset::hash::make_dependency): ... this, and ...
	(depset::hash::add_dependency): ... this, adder.
	(depset::hash::add_dependency): Do both.

	gcc/cp/
	* module.cc (depset::DB_PSEUDO_SPEC_BIT): Delete.
	(depset::is_pseudo_spec): Delete.
	(depset::add_dependency): Don't set it.

	gcc/cp/
	* module.cc (trees_out::decl_node): We should not meet imported
	internal namespaces.
	(module_state::{read,write}): Stream entities before namespaces.
	* name-lookup.c (add_imported_namespace): Module number must not
	be negative.

	gcc/cp/
	* module.cc (trees_in::lang_decl_bools): Don't set module_origin
	here.
	(trees_out::decl_value): Stream out entity index.  Install into
	entity_map.
	(trees_in::decl_value): Stream in entity index.  Install into
	entity ary, and map (if new)
	(module_state::write_cluster): Do not install into map here.
	(module_state::read_cluster): ... or here. And not ary either.
	gcc/testsuite/
	* g++.dg/modules/builtin-[13]_b.C: Adjust scans.
	* g++.dg/modules/indirect-[123]_[bc].C: Likewise.
	* g++.dg/modules/inst-[1234]_b.C: Likewise.
	* g++.dg/modules/late-ret-[23]_c.C: Likewise.
	* g++.dg/modules/part-3_[cd].C: Likewise.
	* g++.dg/modules/tdef-6_b.C: Likewise.

	gcc/cp/
	* cp-tree.h (DECL_MODULE_IMPORT_P): #ifdef out, not yet ready
	* module.cc (dumper::impl::nested_name): Don't use it.
	(module_state::read_cluster): Likewise.

	gcc/cp/
	* module.cc (trees_out::decl_value): Ensure we stay in the
	section.
	(trees_out::mark_class_def): Do not mark non-friends on
	CLASSTYPE_DECL_LIST.

2019-11-21  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (lookup_enum_member): Delete.
	(get_binding_or_decl): Add missing return.

	gcc/cp/
	* name-lookup.c (get_binding_or_decl): Only class contexts.
	* module.cc (trees_out::decl_node): Possible fixme.

	gcc/cp/
	* module.cc (depset::hash): Add sections member.
	(module_state::write_cluster): Use it.
	(module_state::write): Set it.

	gcc/cp/
	* module.cc (trees_out::decl_node): Don't strip_template checking
	instantiation consistency.
	(depset::hash::add_{dependency,specializations}): Likewise.
	(get_originating_module_decl): Cope with template friends.  Get to
	the template_decl.
	(get_instantiating_module_decl): Cope with template friends.  Keep
	the template_decl.
	gcc/testsuite/
	* g++.dg/modules/pl-spec-[1245]_[abcd].C: Adjust scans.

	gcc/cp/
	* name-lookup.c (check_local_shadow): Bail out for clones.

	gcc/cp/
	* module.cc (dumper::impl:nested_name): Obnly show module on imports.
	gcc/testsuite/
	* g++dg/modules: Anjust many scans.

2019-11-20  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (tree_tag): Rename tt_enum_int, add tt_enum_decl.
	(trees_out::tree_decl): Write enum consts as tt_enum_decl, not
	tt_data_member.
	(trees_in::tree_node): Add tt_enum_decl handling, adjust
	tt_data_member handling.

	gcc/cp/
	* module.cc (module_state::lazy_load): Add diags arg, make index
	unsigned.
	(lazy_load_specializations): Use lazy_load.

	gcc/cp/
	* module.cc (module_state:write_cluster): Minor cleanups
	gcc/testsuite/
	* g++.dg/modules/indirect-2_b.C: Adjust scans.
	* g++.dg/modules/inst-3_a.C: Likewise.
	* g++.dg/modules/stdio-1_a.H: Likewise.

	gcc/cp/
	* module.cc (depset:entity_kind): Reorder.
	(depset::DB_REFS_UNNAMED_BIT): Delete. Remove accessor & setter.
	(cluster_cmp): Order by entity_kind.
	(module_state::write_cluster): A single write pass is sufficient.
	gcc/testsuite/
	* g++.dg/modules/indirect-3_b.C: Adjust cluster order scan.
	* g++.dg/modules/late-ret-[23]_a.H: Likewise.

	gcc/cp/
	* (class depset): Drop entity_num field.  Adjust all users to use
	cluster.
	(module_state::write_cluster): Merge counting and marking loops.

	Expelliarmus!
	gcc/cp/
	* module.cc (module_state): Delete unnamed_{lwm,num}.
	(enum ct_decl_flags): Delete cdf_is_voldemort.
	(module_state::write_cluster): Don't set cluster number.  Drop
	voldemort handling.
	(module_state::read_cluster): Drop voldemort handling.
	(module_state::write_specializations): Drop cluster consistency
	check.
	gcc/testsuite/
	* g++.dg/modules/indirect-2_b.C: Adjust scans.
	* g++.dg/modules/inst-[23]_a.C: Likewise.

	Remove more unnamed remnants.
	gcc/cp/
	* module.cc (module_state::write_cluster): Count specializations.
	(module_state::{read,write}_unnamed): Rename to ...
	(module_state::{read,write}_specializations): ... here. Drop
	section numbers.  Adjust calls.
	(struct module_state_config): Rename num_unnamed to
	num_specializations, adjust all uses.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-[12345]_[ab].C: Adjust scans.

	Remove unnamed ary etc.
	gcc/cp/
	* module.cc (unnamed_ary, unnamed_map_t, unnamed_map): Delete.
	(module_state::read_cluster): Do not insert into unnamed_ary or
	map.
	(module_state::read_unnamed): Do not extend unnamed_ary.
	(module_state::read): Do not set unnamed_lwm.
	(module_for_unnamed): Delete.
	({init,finish}_module_processing): Do not create/destroy unnamed
	ary & map.
	gcc/testsuite/
	* g++.dg/modules/indirect-[23]_c.C: Adjust scans.
	* g++.dg/modules/inst-[124]_b.C: Likewise.
	* g++.dg/modules/late-ret-2_c.C: Likewise.

	gcc/cp/
	* module.cc (module_state::{read,write}_unnamed): Specializations
	store entity index.
	(lazy_load_specializations): Use the entity index.

	No more horcruxes.
	gcc/cp/
	* module.cc (trees_out::decl_node): Specializations are tt_entity.
	(enum cluster_tag): Delete ct_horcrux.
	(module_state::write_cluster): No need to create horcruxes.
	(module_state::read_cluster): No need to resurrect horcruxes.
	gcc/testsuite/
	* g++.dg/modules/indirect-[24]_b.C: Adjust scans.
	* g++.dg/modules/inst-[123]_[ab].C: Likewise.
	* g++.dg/modules/late-ret-2_c.C: Likewise.
	* g++.dg/modules/tpl-friend-5_b.C: Likewise.

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

	gcc/cp/
	* module.cc (trees_out::decl_node): Process unnamed decls directly
	here.
	(depset::hash::add_dependency): EK_UNNAMED doesn't reference
	unnamed (really).
	(module_state::write_cluster): Do not preseed horcruxes for
	EK_UNNAMED.  Add unnamed and specializations into the entity_map.
	gcc/testsuite/
	* g++.dg/modules/vmort-2_[abc].C: Adjust scans

	gcc/cp/
	* module.cc (enum tree_tag): Kill tt_anon.  No longer emitted.
	(import_entity_index): Do not assert imported.
	(trees_out::decl_node): Always get the import_entity_index for
	tt_entity.
	(trees_in::tree_node): Drop tt_anon.
	(module_state::write_cluster): Add the EK_DECLs to the entity_map.

	gcc/cp/
	* cp-tree.h (lazy_load_binding): Drop final parm.
	* module.cc (module_state::lazy_load): Drop ns, id & outermost
	parms.
	(trees_in::tree_node, module_state::read_cluster): Adjust
	lazy_load calls.
	(module_state::read): Inhibit GC here.
	(lazy_load_binding): Deal with binding dumps here.
	(lazy_load_specializations): Use lazy_load_binding.
	* name-lookup.c: Adjust lazy_load_binding calls.
	(get_binding_or_decl): No namespace handling here.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-5_b.C: Adjust scans
	* g++.dg/modules/vmort-2_c.C: Likewise.

	Entities are numbered (part 1)
	gcc/cp/
	* cp-tree.h (DECL_MODULE_IMPORT_P): New.
	* module.cc (depset::entity_kind): Add EK_ENTITIES.
	(depset::entity_num): New (temporary) field.
	(enum tree_tag): Add tt_entity.
	(module_state): Add entity_lwm & entity_num fields.
	(module_state::lazy_load): Add index, use it.
	(module_state::{read,write}_entities): New.
	(module_state::{read,write}_cluster): Number the entities.
	(entity_map_t, entity_map, entity_ary) New.
	(import_entity_index, import_entity_module): New.
	(trees_out::decl_node): Write tt_entity for namespace decls.
	(trees_in::tree_node): Add tt_entity handling.
	(struct module_state_config): Add num_entities field.
	(module_state::{read,write}_config): Stream it.
	(module_state::{read,write}: Adjust.
	({init,fini}_module_processing): Deal with entity map and ary.
	* name-lookup.c (get_binding_or_decl): Mark NAMESPACE unreachable.
	gcc/testsuite/
	* g++.dg/modules/{builtin,indirect}-1_b.C: Adjust scans.
	* g++.dg/modules/indirect-[1234]_c.C: Likewise.
	* g++.dg/modules/tpl-friend-5_b.C: Likewise.
	* g++.dg/modules/unnamed-1_b.C: Likewise.

2019-11-14  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (check_mergeable_specialization): Take spec_entry arg.
	* module.cc (trees_out::decl_node): Allow CONCEPT_DECL.
	(trees_out::key_mergeable): Use check_mergeable_specialization).
	(specialization_add): Adjust check_mergeable_specialization call.
	* pt.c (register_specialization): Remove casts.
	(check_mergeable_specialization): Take spec_entry arg.
	(match_mergeable_specialization): Add the specialization early.
	gcc/testsuite/
	* g++.dg/modules/concept-4.H: New.

	gcc/cp/
	* cp-tree.h (lang_decl_base): Note 8-bits.
	* error.c (dump_module_suffix): Bail on no DECL_CONTEXT.
	* module.cc (trees_{in,out}::lang_decl_bools): Update for new
	fields.
	(has_definition): Deal with CONCEPT_DECL.
	(trees_out::{mark,write}_definition): Concepts are like vars.
	(trees_in::read_definition): Likewise.
	({get,set}_originating_module{,_decl}): Deal with CONCEPT_DECL.
	* pt.c (finish_concept_definition): Set orginating module.
	gcc/testsuite/
	* g++.dg/modules/concept-3_[ab].C: New.

	Merge trunk r278228.

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

	gcc/cp/
	* rtti.c ({push,pop}_abi_namespace): Save and restore module
	state.
	(build_dynamic_cast_1, tinfo_base_init): Adjust.

	gcc/cp/
	* module.cc (depset::hash::find_dependencies): Reach unreached
	specializations.

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

	gcc/cp/
	* module.cc (module_state::read_cluster): Hack around cfun.

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

	gcc/cp/
	* module.cc (trees_out): Clean up dead code, update instrumentation.
	(class_members): New global.
	(depset::hash::add_writables): Rename to ...
	(depset::hash::add_namespace_entities): ... this.
	(depset::hash::add_class_entities): New, incomplete.
	(module_state::write): Add class entities.
	(set_instantiating_module): Record on the class_member list if
	necessary.

	gcc/cp/
	* module.cc (trees_out::core_vals): Audit VAR_DECL, removing fixme.

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

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream more block fields.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream template info's
	typedefs needing access checks.

	gcc/cp/
	* module.cc (depset): Correct documentation.
	(walk_kind_name): Delete unused.
	(trees_out::get_container): Lookup for redirect.

	gcc/cp/
	* module.cc (node_template_info): Type cannot be NULL.

	gcc/cp/
	* module.cc (trees_out::{fn_parms_ini,tpl_header}): Privatize,
	resolving fixme.
	(trees_out::core_vals): Resolve TEMPLATE_DECL &
	TEMPLATE_PARM_INDEX fixmes.
	(trees_out::tpl_parm_value): Resolve template template parm fixme.

	Merge trunk r277514.

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

	gcc/cp/
	* module.cc (trees_out::type_node): Move typedef printing after
	variant printing.
	(trees_in::tree_node): Simplity tt_typedef_type.

	gcc/cp/
	* module.cc (trees_out::core_vals): Check if template parm has a
	canonical type before processing it.
	(trees_in::tpl_parm_value): Likewise.

	gcc/cp/
	* module.cc (enum tree_tag): Delete tt_typename_decl.
	(trees_out::decl_node): Do not handle TYPENAME_TYPE here ...
	(trees_out::type_node): ... handle them here instead.
	(trees_in::tree_node): Delete tt_typename_decl, handle
	TYPENAME_TYPE as a derived_type.

	gcc/cp/
	* module.cc (trees_out::decl_node): Fixup anonymous case.

	Remove mergeable sorting code.
	gcc/cp/
	* module.cc (depset::hash): Delete for_mergeable,
	is_for_mergeable.
	(depset::hash::add_mergeable{,_horcrux}): Delete.
	(trees_out::get_merge_kind): Remove for_mergeable indirection.
	(trees_out::key_mergeable): Likewise.
	(depset::hash::add_dependency): Remove mergeable handling.
	(depset::hash::find_dependencies): Likewise.  Remove #if'd out code.
	(sort_mergeables): Delete.
	(module_state::write_cluster): Remove #if'd out code.

2019-10-24  Nathan Sidwell  <nathan@acm.org>

	Turn off mergeable ordering.
	gcc/cp/
	* module.cc (depset::hash::find_dependencies): No need to add
	specialization keys here.
	(module_state::erite_cluster): Or sort mergeables here.
	gcc/testsuite/
	* g++.dg/modules/indirect-[234]_b.C: Adjust scans.
	* g++.dg/modules/inst-[23]_a.C: Likewise.
	* g++.dg/modules/late-ret-[23_a.H: Likewise.
	* g++.dg/modules/tpl-friend-1_a.C: Likewise.

	Types always keyed by TYPE_NAME.  Use TYPE_NAME not TYPE_STUB_DECL.
	gcc/cp/
	* module.cc (enum merge_kind): Drop MK_linkage.
	(trees_out::core_vals): Fix DECL_TEMPLATE_PARM_P thinko.
	TYPE_DECLS for linkage are not regular typedefs.
	(trees_{in,out}::add_indirects): Always add a TYPE_DECL's type.
	(trees_{in,out}::decl_value): Write the stub_decl if it's
	different.
	(trees_out::{type,decl}_node): Cleanup some type_decl handling.
	(trees_out::get_merge_kind): Drop MK_linkage.
	(trees_{in,out}::key_mergeable): Likewise.
	(trees_out::{has,write,mark}_definition): Adjust.
	(trees_in::read_definition): Likewise.
	gcc/testsuite/
	* g++.dg/modules/class-3_[bd].C: Adjust scans.
	* g++.dg/modules/tdef-6_b..C: Adjust scans.

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parm_value): No need to stream
	bound ttp's TI here.
	(trees_out::get_merge_kind): Refactor anon type determination.

	Merge trunk r277416.

2019-10-23  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (enum ct_decl_flags): Add cdf_is_defn.
	(module_state::{read,write}_cluster): Don't stream definitions
	separately.

	gcc/cp/
	* module.cc (get_clone_target): Assert more.
	(trees_in::back_ref): Check the tree's not insane.
	(trees_in::tree_node): Check the clone target is ok.
	(module_state::lazy_load): Inhibit GC.

	gcc/
	* dumpfile.c (dump_begin): Move decls for RAII.

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parm_value): Don't stream tpi
	here.
	(trees_{in,out}::tree_value): Strip now-unreachable code.

	gcc/cp/
	* module.cc (enum tree_tag): Add tt_tpl_parm.
	(trees_{in,out}::tpl_parm_value): New.
	(trees_out::add_indirect_tpl_parms): Simpilfy.
	(trees_out::tree_value): No template parms here.
	(trees_{in,out}::tree_node): Deal with call tpl_parm_value.

	gcc/cp/
	* pt.c (reduce_template_parm_level): Attach TPI to the type or
	decl.
	(convert_generic_types_to_packs): Pass new type to
	reduce_template_parm_level.

2019-10-22  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parms{,_fini}): Drop outer parms,
	add tpl_levels.
	(trees_{in,out}::tpl_header): Likewise.
	(trees_{in,out}::add_indirect_tpl_parms): New.
	(trees_{in,out}::add_indirects): Call them.
	(trees_{in,out}:decl_value): Adjust tpl_header streaming.
	(trees_{in,out}:tree_value): Adjust tpl_header streaming.
	(depset::hadh::find_dependencies): Likewise.
	(module_name): Don't look for current TU's parent.

2019-10-21  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_in::back_ref): New, broken out of ...
	(trees_in::tree_node): ... here.  Call it multiple times.

	gcc/cp/
	* module.cc (trees_{in,out}::add_indirects): New, broken out of ...
	(trees_out::decl_node, trees_in::tree_node): ... here.  Call them.
	(module_state::{read,write}_cluster): Call them instead of
	duplicate code.
	gcc/testsuite/
	* g++.dg/modules/by-name-1.C: Adjust scans.
	* g++.dg/modules/class-3_[bd].C: Likewise.
	* g++.dg/modules/vmort-2_c.C: Likewise.

	gcc/cp/
	* module.cc (trees_{in,out}::key_mergeable): Do not stream tpl
	header of fn parms here.
	(tree_{in,out}::decl_value): Stream them here ...
	(depset:hash::find_dependencies): ... and here.

2019-10-18  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r277167.

	gcc/cp/
	* module.cc (trees_out::decl_value): Excise template_parm
	handling.
	(trees_{in,out}::tree_value): Excise non-template-parm
	tmpl/type/fn/var handling here.

	gcc/cp/
	* module.cc (dumper::impl::nested_name): Check template_parm_p
	directly.
	(trees_out::core_vals): Check DECL_TEMPLATE_PARM_P.
	(trees_out::decl_value): Never get a DECL_TEMPLATE_PARM_P.
	(trees_in::decl_value): Likewise.
	(trees_out::decl_node): Send DECL_TEMPLATE_PARM_P to tree_value.
	(trees_out::type_node): Simplify name detection.
	(trees_out::tree_value): Allow DECL_TEMPLATE_PARM_P, but no other
	tmpls/type/var/fns.
	* tree.c (bind_template_template_parm): Set DECL_TEMPLATE_PARM_P.1

	gcc/cp/
	* module.cc (dumper::impl::nested_name): Detect template parms.
	(trees_{in,out}::core_vals): Don't write context of template
	parms.  Don't clobber template's type.

	gcc/cp/
	* module.cc (trees_{in,out}::start): Stream code if permitted.
	Adjust callers.

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

	gcc/cp/
	* module.cc (trees_out::tpl_parms): Assert a lot.
	(depset::hash::find_dependencies, module_state::write_cluster):
	Mark mergeable sort-specific points.

	gcc/cp/
	* module.cc (trees_out::decl_value): Stream thunks too.
	(trees_out::decl_node): Forward all potentially mergeable decls to
	decl_value.
	(trees_out::tree_value): Make sure we don't get any potentially
	mergeable decls.
	(trees_{in,out}::tree_value): Stream template parms
	via tpl_parms.
	(trees_{in,out}::tpl_parms): The vector can be 0 length.
	(trees_out::mark_declaration): Don't mark the template parms.

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parms): Cope with non-shared
	parms.
	(trees_{in,out}::tpl_parms_fini): Likewise, stream vec type.

	gcc/cp/
	* cp-objcp-common.c (cp_pushdecl): Set DECL_CONTEXT.
	gcc/testsuite/
	* g++.dg/modules/builtin-3_[ab].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::decl_value): Refactor some ifs.

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

	gcc/cp/
	* decl.c (cp_make_fname_decl): Set context to global namespace,
	outside functions.
	(builtin_function_1): Merge into ...
	(cxx_builtin_function): ... here.  Nadger the decl before maybe
	copying it.  Set the context.
	(cxx_builtin_function_ext_scope): Push to top level, then call
	cxx_builtin_function.

	gcc/cp/
	* rtti.c (get_tinfo_desc): Set DECL_CONTEXT.
	gcc/testsuite/
	* g++.dg/modules/tinfo-1.C: New.

	gcc/cp/
	* module.cc (enum tree_tag): Add tt_parm.
	(trees_out::decl_node): Emit tt_parm for parms.
	(trees_in::tree_node): Add tt_parm.
	(trees_out::write_function_def): Simply tag constexpr parms &
	result.
	(trees_in::read_function_def): Clone the originating fn's parms &
	result.
	(module_state::read): Add GC points, when lazy.

2019-10-15  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_out::core_vals): Don't assert template
	arguments visited.
	(trees_{in,out}::tpl_parms): Stream TMPL_DEPTH.
	(trees_{in,out}::tpl_parms_fini): New.
	(trees_{in,out}::decl_value): Don't stream template parms, use
	tpl_parms_fini.

	gcc/cp/
	* module.cc (trees_out::get_container): New, broken out of ...
	(trees_out::key_mergeable): ... here.  Add container parm.
	(trees_in::key_mergeable): Container is already set.
	(trees_{in,out}::decl_value): Stream container here.
	(dpset::hash::find_dependencies): Adjust mergeable walk.
	gcc/testsuite/
	* g++.dg/modules/builtin-1_a.C: Adjust scan.

	Merge trunk r277002.

	Revert TYPE_LAMBDA_P, it's unnecessary churn.
	gcc/cp/
	* cp-tree.h (LAMBDA_TYPE_P): Subsume TYPE_LAMBDA_P.
	(TYPE_LAMBDA_P): Delete.  Update all uses.

	gcc/cp/
	* module.cc (merge_kind): Add MK_local_friend.
	(trees_{in,out}::tpl_parms): New.
	(trees_{in,out}::tpl_header): Adjust parm streaming
	(trees_{in,out}::key_mergeable): Find containing template.

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

	Merge trunk r276888.
	Pull in c++20 concepts.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Don't stream function
	parms here.
	(trees_out::decl_value): Stream has_defn.
	(trees_in::decl_value): Stream has_defn, adjust fn_parms_fini.
	(trees_in::tree_value): Likewise.
	(trees_{in,out}::fn_parms_init): Stream entire parms.
	(trees::fn_parms_fini): Do nothing.
	(trees_in::fn_parms_fini): Add has_defn, adjust.

	gcc/cp/
	* module.cc (enum walk_kind): Remove WK_merge.
	(enum trees_out::tags): Remove tag_merging.
	(trees_out::mark_merged): Delete.
	(trees_out::{insert,ref_node}): Adjust.
	(trees_out::decl_value): Insert by value immediately.

	gcc/cp/
	* optimize.c (maybe_clone_body): Allow aliasing with modules.

	gcc/cp/
	* module.cc (enum depset::entity_kind): Remove EK_CLONE.
	(depset::add_clone): Delete.
	(enum merge_kind): Remove MK_clone.
	(depset::entity_kind_name): Adjust.
	(trees_in::decl_value): No merging for clones.
	(trees_out::decl_node): Remove clone dependency.
	(trees_out::get_merge_kind): No clone merging.
	(trees_{in,out}::key_mergeable): Likewise.
	(module_state::write_cluster): Never see a clone.

	Reconstruct clones on stream in
	gcc/cp/
	* module.cc (trees_out::{decl,tree}_value): Write clone info.
	(trees_in::{decl,tree}_value): Reconstruct clone.
	(trees_out::decl_node): Do not depend on clones.
	(module_state::read_cluster): Clone bodies.

2019-10-10  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (DECL_NEEDS_VTT_PARM_P): Delete.
	(build_clones): Declare.
	(ctor_omit_inherited_parms): Add exact_name default parm.
	* class.c (build_clone): Add need_vtt & omit_inherited parms, do
	not calculate here.
	(build_clones): New function.  Add need_vtt &
	omit_inherited_parms.  Broken out of ...
	(clone_function_decl): Call build_clones.  Add to method vec here.
	* method.c (ctor_omit_inherited_parms): Add exact_name parm.
	Detect any ctor or specific base ctor as specified.

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

	gcc/cp/
	* class.c (maybe_add_class_template_decl_list): Don't check
	template-id-expr friends.
	* module.cc (friend_from_decl_list): Don't stray into primary
	templates.
	(trees_out::{write,mark}_class_def): Adjust local friend
	detection.
	(trees_in::read_class_def): Likewise.

	gcc/cp/
	* cp-tree.h (DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P): New.
	* module.cc (trees_{in,out}::core_vals): Stream local template
	friend's DECL_CHAIN.
	(trees_out::decl_node): Use DECL_UNINSTANITATED_TEMPLATE_FRIEND_P.
	(trees_out::{read,write,mark}_class_def): Adjust local template
	friend streaming.
	* pt.c (push_template_decl_real): Set
	DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P.
	(tsubst_friend_function): Clear D_U_T_F_P.

	gcc/cp/
	* pt.c (push_template_decl_real): Always set DECL_CHAIN for
	non-pushed friends.

2019-10-08  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_out::decl_value): Check streaming before dump.
	(module_name): Protect from not modules.

	gcc/cp/
	* module.cc (enum merge_kind): Rename non->unique.
	(trees_out::key_mergeable): Add decl parm.  Return MK_unique for
	non-dep decls.
	(trees_{out,out}::decl_value): Adjust.

	gcc/cp/
	* module.cc (struct nodel_decl_hash): New.
	(duplicate_hash_map): New.
	(trees_in::duplicates): New.
	(trees_in::mergeables): Delete.
	(trees_in::{,~}trees_in): Adjust.
	(trees_in::{find,register,unmatched}_duplicate): New.
	(trees_in::{reserve,register,unmcted}_mergeable): Delete.
	(enum trees_in::dupness): Delete DUP_unique.
	(trees_in::decl_value): Adjust duplicate registration.
	(trees_in::get_dupness): Adjust.
	(module_state::{read,write}_cluster): Don't stream mergeable count.

	gcc/cp/
	* module.cc (enum walk_kind): Rename body->value,
	mergeable->merge.  Delete clone, merging.
	(trees_in::decl_value): Drop walk_kind parm, read merge kind
	early.
	(trees_in::key_mergeable): Add merge_kind parm, return bool.
	(trees_out::mark_node): Rename to ...
	(trees_out::mark_by_value): ... here.
	(trees_out::get_merge_kind): New, broken out of ...
	(trees_out::key_mergeable): ... here.  Add merge_kind parm.
	(trees_out::decl_value): Replace walk_kind parm with depset.
	Adjust.
	gcc/testsuite/
	* g++.dg/modules/scc-1.C: Adjust scan.
	* g++.dg/modules/builtin-1_a.C: Adjust scan.

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

	gcc/cp/
	* module.cc (enum trees_out::tags): Delete tag_mergeable,
	tag_cloned.
	(trees_out::mark_mergeable): Delete.
	(trees_out::{insert,ref_node}): Adjust.
	(trees_out::decl_node): Look at depset to determine mergeability.
	(trees_out::key_mergeable): Adjust.
	(trees_in::register_mergeable): Always reserve space.
	(module_state::write_cluster): Don't mark mergeable here.

	gcc/cp/
	* module.cc (trees_in::get_odrness): Check if overrun.
	(trees_in::read_class_def): Add overrun protection.
	* name-lookup.c (name_search::search_adl): Tweak.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream
	decl_non_common.result for using decls.
	(trees_out::decl_node): USING_DECLS are done by value.
	* name-lookup.c (finish_nonmember_using_decl): Set DECL_CONTEXT.
	gcc/testsuite/
	* g++.dg/modules/using-6_[ab].C: New.

	gcc/cp/
	* module.cc (enum tree_tag): Add tt_decl.
	(trees_{in,out}::decl_value): Broken out of ...
	(trees_{in,out}::tree_value): ... here.  Deal with non mergeble
	cases only.
	(trees_in::tree_node): Add tt_decl.
	(trees_out::decl_node): Call decl_value.

	gcc/cp/
	* module.cc (trees_out::decl_node): Refactor some instantiation
	discovery.

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

	Merge trunk r276597.

	gcc/cp/
	* module.c (trees_out:decl_node): More switchification and code
	movement.

	gcc/cp/
	* module.c (trees_out:decl_node): Switchify, and move some checks
	before template detection.

	gcc/cp/
	* module.cc (trees_in::tree_value): Rework merge_kind switching.
	(trees_{in,out}::key_mergeable): Likewise.

	gcc/cp/
	* module.cc (enum merge_kind): Reorder.

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

	gcc/cp/
	* module.cc (trees_out::decl_node): Merge and reorder tinfo
	streaming.
	(trees_in::tree_node): Merge tinfo streaming.

	gcc/cp/
	* module.cc (depset::hash::add_dependency): Separate EK_REDIRECT
	handling from EK_MAYBE_SPEC.
	(get_instantiating_module_decl): Reorder checks, remove fixme.

	gcc/cp/
	* module.cc (trees_out::decl_node): Check DECL_LANG_SPECIFIC.
	(depset::hash::add_dependency): Likewise.
	(get_originating_module_decl): Return global_namespace for null.
	(get_originating_module): Correctly handle lack of
	DECL_LANG_SPECIFIC.
	(set_instantiating_module): Lazily allocate lang specific.
	(set_originating_module): Call set_instantiating_module.
	* pt.c (build_template_decl, tsubst_template_decl): Check
	DECL_LANG_SPECIFIC.
	* rtti.c (tinfo_base_init): Likewise.

	gcc/cp/
	* module.cc (elf_in::{defrost,begin}): Advise random seeking.

	gcc/cp/
	* module.cc (depset::hash::add_dependency): Drop is_import arg,
	update callers.  Calculate it here.

	gcc/cp/
	* cp-tree.h (MODULE_SLOT_*): Move to ...
	* name-lookup.c (MODULE_SLOT_*): ... here.
	* module.cc (depset::hash::add_dependency): More asserts.
	* pt.c (build_template_decl, tsubst_template_decl): Always
	propagate from result.

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

	gcc/cp/
	* module.cc (trees_out::tree_ctx): Delete, forward all callers to
	tree_node.
	(trees_out::tree_namespace): Delete, move into tree_decl.
	(trees_out::tree_decl): Rename to ...
	(trees_out::decl_node): ... this.  Update caller.

	gcc/cp/
	* module.cc (trees_out::tree_type): Rename to ...
	(trees_out::type_node): Drop walk_kind arg, return void.  Update
	callers.

	gcc/cp/
	* module.cc (trees_out::tree_ctx): Drop need_contents parm.
	Update callers.
	(trees_out::tree_{type,decl}: Likewise.

	gcc/cp/
	* module.cc (trees_out::tree_ctx): Drop inner_decl parm.  Update
	callers.
	(trees_out::tree_namespace): Likewise.

	gcc/cp/
	* cp-tree.h (MK_*): Document better.

	gcc/cp/
	* cp-tree.h (MODULE_CURRENT, MODULE_IMPORT_BASE): Delete.
	* module.cc: Replace with zero/one
	* name-lookup.c: Likewise.
	* decl2.c (no_linkage_error): Likewise.
	* ptree.c (cxx_print_decl): Likewise.

	Don't equivocate GMF with module
	gcc/cp/
	* cp-tree.h (MODULE_NONE, MODULE_PURVIEW): Delete.
	(MODULE_CURRENT): New.
	(MODULE_IMPORT_BASE): Reduce.
	(DECL_MODULE_OWNER): Rename to ...
	(DECL_MODULE_ORIGIN): ... this.
	(DECL_MODULE_PURVIEW_P): New.
	(MODULE_BITS): Reduce.
	(lang_decl_base::module_purview_p): New bit.
	(module_may_redeclare): Take decl.
	* module.cc (MODULE_UNKNOWN_PARTITION): New.
	(MODULE_LIMIT): Adjust.
	(slurping::remap_module): Return int.
	(trees_in::assert_definition): Adjust.
	(dumper::impl::nested_name): Adjust.
	(trees_{in,out}::lang_decl_bits): Stream module_purview_p.
	(trees_out::tree_{namespace,decl,value}): Adjust.
	(trees_in::tree_node): Adjust.
	(depset::hash::add_{dependency,binding,specializations}): Adjust.
	(module_state::check_not_purview): Adjust.
	(module_state::read_{imports,partitions}): Adjust.
	(module_state::write_{cluster,namespaces,unnamed}): Adjust.
	(module_state::read_unnamed): Adjust.
	(module_state::{write,read}): Adjust.
	(module_visible_instantiation_path): Adjust.
	(get_originating_module): Return int.
	(get_instantiating_module): Adjust.
	(module_may_redeclare): Reimplement.
	(set_{instantating,originating}_module): Adjust.
	(module_state::{do,direct}_import): Adjust.
	(declare_module, module_preprocess, process_deferred_imports): Adjust.
	({init,finish}_module_processing): Adjust.
	* name-lookup.c (get_fixed_binding_slot): Adjust.
	(name_lookup::{search_namespace_only,adl_namespace_fns,search_adl):
	Adjust.
	(check_module_override, extract_module_binding): Adjust.
	(note_pending_specializations): Adjust.
	(get_imported_namespaxe, finish_nonmember_using_decl)
	(lookup_type_scope_1): Adjust.
	(add_imported_namespace): Take int.
	* name-lookup.h ({add,get}_imported_namespace): Module is int.
	* class.c (build_self_ref): Set instantiating module.
	* decl.c (duplicate_decls): Adjust.
	* decl2.c (no_linkage_error): Adjust.
	* mangle.c (maybe_write_module): Adjust.
	* pt.c (build_template_decl): Propagate purview flag.
	(tsubst_template_decl): Likewise.
	(tsubst_decl): Set instantiating_module as necessary.
	* ptree.c (cxx_print_decl): Adjust, print purview flag.
	* rtti.c (tinfo_base_init): Clear purview flag.
	gcc/testsuite/
	* g++.dg/modules/*: Update lang dump scans.

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

	gcc/cp/
	* cp-tree.h (set_originating_module): Add friend_p.
	* decl.c (grokdeclarator): Set it.
	* module.cc (get_originating_module): Always look through template
	info.
	(set_originating_module): Add friend_p.  Assert.
	(set_instantiating_module): Assert.

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

	gcc/cp/
	* cp-tree.h (set_module_owner): Delete.
	* decl.c (duplicate_decls): Propagate module owner.  Set module
	export for builtins, no need to set owner.
	* module.cc (set_module_owner): Delete.
	gcc/testsuite/
	* g++.dg/modules/isalnum.H: New.

2019-09-27  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r276201.

	gcc/cp/
	* decl.c (fixup_anonymous_aggr): Partially revert recent change.
	(grokfndecl): Call set_originating_module before determining
	specialization.
	(grokdeclarator): Likewise.

	gcc/cp/
	* cp-tree.h (set_{originating,instantiating}_module): Declare.
	* class.c (layout_class_type): Use set_instantiating_module.
	* pt.c (lookup_template_class_1): Likewise.
	(tsubst_function_decl, instantiate_template_1): Likewise.
	(tsubst_friend): Not here.
	* decl.c (grokfndecl): Use set_originating_module.
	(grokvardecl,grokdeclarator): Likewise.
	* name-lookup.c (do_pushtag): Likewise.
	* friend.c (do_friend): Not here.
	* module.cc (set_implicit_module_origin): Rename to ...
	(set_instantiating_module): ... here.
	(set_originating_module): New.
	gcc/testsuite/
	* g++.dg/modules/friend-3.C: New.
	* g++.dg/modules/friend-4_[ab].C: New.

	gcc/cp/
	* cp-tree.h (get_module_owner): Delete.
	(get_instantiating_module_decl, get_instantiating_module): Declare.
	* module.cc (get_instantiating_module_decl)
	(get_instantiating_module): New.
	(dumper::impl::nested_name, trees_out::tree_node)
	(trees_out::tree_decl, depset::hash::add_specializations)
	(set_module_owner): Use them.
	(get_module_owner): Delete.

	gcc/cp/
	* cp-tree.h (get_declared_module_origin): Delete.
	(get_originating_module, get_originating_module_decl): Declare.
	* module.cc (get_originating_module_decl): New.
	(get_originating_module): New.
	(module_state::write_cluster, module_visible_instantiation_path): Use
	get_originating_module.
	* module.cc (module_state::write_unnamed)
	(lazy_load_specializations): Use get_originating_module_decl.
	* error.c (dump_module_suffix): Use get_originating_module.
	* mangle.c (maybe_write_module): Likewise.
	* name-lookup.c (init_global_partition): Use
	get_originating_module.
	(name_lookup::search_adl): Use get_originating_module_decl.
	* pt.c (lookup_template_class_1): Propagate DECL_MODULE_EXPORT_P.

2019-09-26  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (DECL_MODULE_OWNER): Restrict to
	var/fn/type/template/namespace.
	(MAYBE_DECL_MODULE_EXPORT_P): Delete.
	({set,get}_{declared,implicit}_module_origin): Declare.
	(module_name): Delete and adjust.
	* modules.cc: Adjust throughout for loss of
	MAYBE_DECL_MODULE_EXPORT_P.  Use get_module_owner more.
	(fixup_unscoped_enum_owner): Delete.
	* class.c (layout_class_type): Use set_implicit_module_origin.
	* decl.c (duplicate_decls): Use get_module_owner.
	(finish_enum_value_list): Set DECL_MODULE_EXPORT_P directly.
	* decl2.c (no_linkage_error): Use DECL_MODULE_OWNER.
	* error.c (dump_module_suffix): Reimplement.
	* mangle.c (maybe_write_module): Adjust.
	* name-lookup.c (init_global_partition): Adjust.
	(name_lookup::search_adl): Owner always has module.
	(do_pushdecl): Adjust namespace exporting.
	(do_nonmember_using_decl): Adjust exporting check.
	* pt.c (build_template_decl): Only propagate module info when
	needed.
	(lookup_template_class_1): Use set_implicit_module_origin.
	(tsubst_friend_function): Propagate to outer template.
	(tsubst_function_decl): Use set_implicit_module_origin.
	(tsubst_template_decl): Simplify tsubst if cascade.  Propagate
	inner module info.
	(instantiate_template_1): Use set_module_owner.
	* ptree.c (cxx_print_decl): Protect module info display.
	gcc/testsuite/
	* g++.dg/modules/friend-1_a.C: Adjust scans.
	* g++.dg/modules/indirect-[13]_[bc].C: Likewise.
	* g++.dg/modules/indirect-4_b.C: Likewise.
	* g++.dg/modules/late-ret-3_a.H: Likewise.
	* g++.dg/modules/scc-1.C: Likewise.
	* g++.dg/modules/vmort-2_[abc].C: Likewise.

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

	gcc/cp/
	* modules.cc (enum merge_kind): Rearrange.
	(merge_kind_name): Adjust.
	gcc/testsuite/
	* g++.dg/modules/inst_-[234]-[ab].C: Adjust scans.
	* g++.dg/modules/indirect-[234]_b.C: Likewise.

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

	gcc/cp/
	* modules.cc (trees_out::tree_decl): RESULT and LABEL decls
	written by value.  Assert only expected things remain by name.

	gcc/cp/
	* modules.cc (enum tree_tag): Add tt_data_member.
	(trees_out::tree_decl): Use it for consts and fields.
	(trees_in::tree_node): Read it.
	(set_implicit_module_owner): Delete.
	* name-lookup.c (get_field_ident, lookup_field_ident): New.
	* name-lookup.h (get_field_ident, lookup_field_ident): Declare.
	* cp-tree.h (set_implicit_module_owner): Delete.
	gcc/testsuite/
	* g++.dg/modules/class-3_[bd].C: Adjust scans.
	* g++.dg/modules/indirect-1_c.C: Likewise.

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

	gcc/cp/
	* module.cc (depset): Add DB_BOTH_SPEC_BIT.
	(specialization_add): Accept template aliases for !decl_p.
	(depset::hash::add_specializations): Notice duplicate
	specialization paths.

2019-09-20  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* decl.c (fixup_anonymous_aggr): Clear LAZY flags, no need to
	strip out fns.
	* module.cc (module_state::lazy_load): Distinguish out of order
	from failure to set slot.
	* name-lookup.c (get_binding_or_decl): Fixme :(
	gcc/testsuite/
	* g++.dg/modules/anon-2{,_[ab]}.[hHC]: New.

2019-09-19  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (enum merge_kind): Add MK_{decl,type}_tmpl_spec,
	MK_type_partual_spec.
	(tree_in::tree_value): Process them.
	(trees_{in,out}::key_mergeable): Stream them.
	* pt.c (match_mergeable_specialization): Only store if spec !=
	NULL.
	gcc/testsuite/
	* g++.dg/modules/tpl-tpl-merge-[12]{,_[ab].[hHC]: New.

	gcc/cp/
	* module.cc (slurping::slurping): Init current to mostpos - 1.
	(module_state::read): Increment slurp->current when done.

	gcc/cp/
	* module.cc (trees_in::tree_node): Check overrun more.

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

	gcc/cp/
	* module.cc (trees_in::is_matching_decl): Copy
	DECL_TEMPLATE_INSTANTIATED.
	gcc/testsuite/
	* g++.dg/modules/inst-5_[ab].[CH]: New.

	gcc/cp/
	* module.cc (trees_in::mergeables): Vec of intptr_t.
	(trees_in::register_mergeable): Return index.
	(trees_in::unmatched_mergeable): New.
	(trees_in::get_dupness): Drop last parm.  Return DUP_bad as
	necessary.  Adjust callers.
	(trees_in::tree_value): Call unmatched_mergeable as necessary.

	gcc/cp/
	* module.cc (trees_in): Delete skip_defns & handling.  Add
	any_deduping field.
	(trees_in::register_mergeable): Outline.
	(trees_in::{enum dupness,get_dupness}): New.
	(trees_in::{enum odrness,get_odrness}): New.
	(trees_in::lookup_mergeable): Delete.
	(trees_in::is_existing_mergeable): Delete, use get_dupness.
	(trees_in::is_skippable_defn): Delete, ise get_odrness.
	(trees_in::assert_definition): Adjust.
	(trees_in::read_{function,class,var,enum}_def): Adjust.
	(topmost_decl): Delete.
	gcc/testsuite/
	* g++.dg/modules/part-3_c.C: Adjust scans.
	* g++.dg/modules/tdef-6_b.C: Adjust scans.

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

	gcc/cp/
	* module.cc (trees_in::is_skippable_defns): Defns always complete
	incomplete.
	gcc/testsuite/
	* g++.dg/modules/merge-3_[ab].[CH]: New.

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

	gcc/cp/
	* module.cc (depset::DB_TYPE_SPEC_BIT): New.
	(depset::is_type_spec): New.
	(enum merge_kind): Replace MK_spec with MK_decl_spec, MK_type_spec.
	(merge_kind_name): Update.
	(trees_in::tree_value): Partition MK_spec handling.
	(trees_{in,out}::key_mergeable): Likewise.
	(depset::hash::add_specialization): Set DB_TYPE_SPEC_BIT.
	gcc/testsuite/
	* g++.dg/modules/indirect-[234]_b.C: Update lang dump scans.
	* g++.dg/modules/inst-[234]_[ab].C: Update lang dump scans.

	gcc/cp/
	* module.cc (spec_tuple): Delete type.
	(specialization_add): Adjust data type.
	(depset::hash::add_specializations): Drop PARTITIONS parm. Adjust.
	(module_state::write): Adjust.

	gcc/cp/
	* cp-tree.h (check_mergeable_specialization): Declare.
	(match_mergeable_specialization): Add DECL_P parm, drop INSERT_P parm.
	* module.cc (trees_in::tree_value): Adjust
	match_mergeable_spcialization calls.
	(specialization_add): Use check_mergeable_specializatio.
	* pt.c (check_mergeable_specialization): New.
	(match_mergeable_specialization): Always insert, reorder parms.

	gcc/cp/
	* module.cc (enum merge_kind): Add MK_linkage.
	(merge_kind_name): ... and here.
	(trees_in::tree_value): Add it.
	(trees_{in,out}::key_mergeable): Use it.
	* name-lookup.c (match_mergeable_decl): Don't add anon-enum.
	gcc/testsuite/
	* g++.dg/modules/builtin-1_a.C: Adjust scan.
	* g++.dg/modules/indirect-[234]_b.C: Likewise.
	* g++.dg/modules/inst-[23]_a.C: Likewise.
	* g++.dg/modules/tdef-6_[ab].[HC]: New.

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

	gcc/cp/
	* module.cc (trees_in::chained_decls): No need to deal with clones here.
	(trees_{in::read,out::write}_class_def): Don't chain
	fields until we know we're the definition.

	Merge trunk r275727.

2019-09-13  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (get_namespace_binding): Fish out global binding,
	if it's a vector.
	gcc/testsuite/
	* g++.dg/modules/binding-2.H: New.

	gcc/cp/
	* cp-tree.h (MODULE_VECTOR_LAZY_SPEC_P): Use TREE_THIS_VOLATILE.
	gcc/testsuite/
	* g++.dg/modules/binding-1_[abc].[HC]: New.

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

	gcc/cp/
	* cp-tree.def (UNBOUND_CLASS_TEMPLATE): Correct docs.
	* cp-tree.h (make_unbound_class_template_raw): Declare.
	* decl.c (make_unbound_class_template_raw): New, break out of ...
	(make_unbound_class_template): ... this, call it.
	* module.cc (trees_out::tree_type): Handle UNBOUND_CLASS_TEMPLATE.
	(trees_in::tree_node): Likewise.
	gcc/testsuite/
	* g++.dg/modules/tpl-tpl-parm-1_[ab].[HC]: New.

	gcc/cp/
	* module.cc (trees_out::core_vals): Never write template_decl's
	type ...
	(trees_in::tree_value): .. resurrect it here instead.

	gcc/cp/
	* module.cc: Sort many switch stmts.

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

	Merge trunk r275641.

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

	Merge trunk r275518

	gcc/cp/
	* module.cc (enum depset::disc_bits): Delete DB_REACHED_ONCE_BIT.
	(depset::is_reached_once, depset::clear_mergeable): Delete
	(trees_in::tree_value): Set template typedef type.
	(depset::hash::add_dependency): No reached once stuff.
	(sort_mergeables): Just live with tight clusters.
	gcc/testsuite/
	* g++.dg/modules/late-ret-2_a.H: Adjust scans.
	* g++.dg/modules/late-ret-3_[abc].[CH]: New.

2019-09-06  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (enum depset::disc_bits): Add DB_REACHED_ONCE_BIT.
	(depset::is_reached_once, depset::clear_mergeable): New.
	(depset::hash::add_dependency): Set and clear DB_REACHED_ONCE_BIT.
	(sort_mergeables): Deal with internal entities.
	(module_state::read_cluster): A voldemort might have been merged.
	gcc/testsuite/
	* g++.dg/modules/late-ret-2_[abc].[HC]: New.

	Merge trunk r275458.

2019-09-05  Nathan Sidwell  <nathan@acm.org>

	gcc/testsuite/
	* g++.dg/modules/concept-2_[ab].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream constraint_info.
	(trees_{in,out}::tree_value): Stream constrain node.
	{trees_{in,out}::tpl_header): Stream parm(s) constraints.
	* pt.c (set_constraints): Don't do spurious lookup.
	gcc/testsuite/
	* g++.dg/modules/concept-1_[ab].C: New.

	gcc/cp/
	* module.cc (module_state::write_location): Check streaming here.
	Adjust many callers.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Move some node handling
	into the new switch.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Reorder part 7.
	* decl.c (cp_tree_node_structure): Alphabetize.
	gcc/
	* tree.c (tree_node_structure_for_code): Likewise.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Reorder part 6.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Reorder part 5.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Reorder part 4.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Reorder part 3.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Reorder part 2.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Reorder part 1.

	gcc/cp/
	* module.cc (trees_out::tree_type): There are no indescribable types.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Redo enum underlying type
	streaming.

	Merge trunk r275404.

2019-08-30  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_out::tree_type): Stream ptrmemfuncs at the
	appropriate point.

	gcc/cp/
	* module.cc (trees_in::finish{,_type}): Delete. Move into
	trees_in::tree_value, removing type remapping etc,
	(trees_out::start): Check not streaming an unexpected type.
	(trees_{in,out}::core_vals): Pointers are not streamed.
	(trees_in::tree_value): Move remnants of finish{,_type} here &
	simplify handling.

	gcc/cp/
	* module.cc (trees_out::tree_type): Write non-standard integer
	types here.
	(trees_in::tree_node): Read them here.
	(trees_out::tree_value): We never see a naked type.
	gcc/testsuite/
	* g++.dg/modules/bfield-2_[ab].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::start): Refactor switch.
	(trees_{in,out}::core_vals): Remove first switch.

	gcc/cp/
	* module.cc (enum streamed_extensions): New.
	(module_state::extensions): New.
	(module_state::write_readme): Adjust.
	(trees_{in,out}::start): Note or check openmp extension.
	(module_state::{read,write}_config): Adjust.
	gcc/testsuite/
	* g++.dg/modules/omp-1_c.C: New.
	* g++.dg/modules/omp-2_[ab].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::start): Deal with OMP_CLAUSE.
	(trees_{in,out}::core_vals): Likewise.
	gcc/testsuite/
	* g++.dg/modules/omp-1_[ab].C: New.

	gcc/cp/
	* module.cc (friend_from_decl_list): Reimplement.
	(trees_out::tree_decl): When streaming a local template friend
	reference, make sure we find one.

	gcc/cp/
	* module.cc (enum tree_tag): Drop tt_mergeable, tt_clone.
	(trees_out::tree_value): Emit tt_node & kind separately.
	(trees_in::tree_node): Read tt_node kind explicitly.

2019-08-29  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_out::tree_decl): VTTs are just vtables.
	gcc/testsuite/
	* g++.dg/modules/vtt-1_[abc].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): We never see
	TS_CP_ARGUMENT_PACK_SELECT nodes.

	Merge trunk r275034.

2019-08-28  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (struct location_map_info): New.
	(module_state::prepare_locations): Rename to ...
	(module_state::prepare_maps): ... here.  Return a
	location_map_info.
	(module_state::{read,write}_locations): Split to ...
	(module_state::{read,write}_{ordinary,macro}_maps): ... here. Adjust.
	(module_state::{read,write}): Split location map streaming.
	gcc/testsuite/
	* g++.dg/modules/macro-7_[abc].C: New.

	Merge trunk r274992.

2019-08-27  Nathan Sidwell  <nathan@acm.org>

	gcc/c-family/
	* c.opt (fnote-include-translate): Renamed from finclude-translate.
	gcc/
	* doc/invok.texi: Update.
	gcc/cp/
	* module.cc (module_translate_include): Tweak.

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

	gcc/cp/
	* module.cc (note_includes): Renamed from inform_includes.
	(module_translate_include): Emit note, not warning.
	(init_module_processing, handle_module_option): Adjust.
	gcc/c-family
	* c.opt (finclude-translate): Renamed from -Winclude-translate.
	gcc/
	* doc/invoke.texi (finclude-translate): Document.

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

	gcc/cp/
	* module.cc (trees_in::finish): Don't clear PENDING_TEMPLATE here.
	Set IDENTIFIER_VIRTUAL_P if t is a vfunc.
	(trees_out::core_bools): Write PENDING_TEMPLATE as false.
	gcc/testsuite/
	* g++.dg/modules/virt-1_[ab].C: New.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Vtables are distinguished by
	DECL_VIRTUAL_P.

2019-08-23  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r274867.

	gcc/cp/
	* module.cc (trees_out::core_bools): Don't propagate asm_written
	for types.
	(trees_{in,out}::lang_type_bools): Don't stream debug_requested.
	(trees_in::read_{enum,class}_def): Register for debug.
	(finish_module_processing): Don't write module when syntax only.
	gcc/testsuite/
	* g++.dg/modules/debug-1_[ab].C: New.

2019-08-22  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::hash::add_dependency): We should never find a
	redirect.
	(depset::hash::add_redirect): Rename to ...
	(depset::hash::add_partial_redirect): ... here. Mark the redirect
	as unreachable.

	gcc/cp/
	* module.cc (MOD_SNAME_PFX): Resurrect initial dot.
	(elf_out::strtab_write): Elide global namespace.

2019-08-21  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_in::assert_definition): Relax already-present
	assert.

	gcc/cp/
	* module.cc (finish_module_processing): Protect against null
	filename.

	gcc/cp/
	* module.cc (elf_in::release): Reset size too.
	(enum ct_bind_flags): Correct cbf_wrapped value.
	(module_state::read_cluster): Usings may be unwrapped.

	gcc/c-family/
	* c.opt (Winclude-translate*): New family of options.
	gcc/cp/
	* module.cc (inform_includes): New var.
	(module_translate_include): Inform of translations.
	(init_module_processing): Canonicalize inform list.
	(handle_module_option): Process inform options.

	gcc/cp/
	* module.cc (set_cmi_repo): NULL means default init.
	(module_mapper::module_mapper): Default init repo.
	(module_mapper::translate_include): Add LEN parm, create STRING.
	(canonicalize_header_name): Correctly prepend './'.
	gcc/testsuite/
	* g++.dg/modules/ben-1.map: Add $root.
	* g++.dg/modules/gc-2.map: Add $root.
	* g++.dg/modules/map-1.map: Add $root.
	* g++.dg/modules/map-1_b.map: Add $root.

2019-08-20  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (module_state::module_state): Header must be
	.-relative if not absolute.
	(get_module): Validate module name more.
	gcc/testsuite/
	* g++.dg/modules/map-2.{C,map}: New.

	Merge trunk r274747.

	Merge trunk r273943 (Jason's TEMPLATE_INFO changes).

	Merge trunk r273906 (Martin's function_decl.decl_type changes).

2019-08-19  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r273771.

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

	gcc/cp/
	* name-lookup.c (get_cxx_dialect_name): Make extern.
	* name-lookup.h (get_cxx_dialect_name): Declare.
	* module.cc (module_state_config::get_opts): Just determine C++
	dialect.
	gcc/testsuite/
	* g++.dg/modules/flag-1_[ab].C: Adjust.

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

	gcc/cp/
	* module.cc (module_state::deferred_macro): Emit warning if at end
	of TU.
	(finish_module_processing): Adjust.
	gcc/
	* doc/invoke.texi (fforce-module-macros): Replace documentation
	with ...
	(Winvalid-imported-macros): ... this.
	gcc/c-family/
	* c.opt (fforce-module-macros): Replace with ...
	(Winvalid-imported-macros): ... this.
	gcc/testsuite/
	* g++.dg/modules/macro-4_[abcdeg].C: Update.
	* g++.dg/modules/macro-5_c.C: Update.

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

	gcc/cp/
	* module.cc (node_template_info): Enums may be function-local.
	gcc/testsuite/
	* g++.dg/modules/enum-7.C: New.

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

	gcc/
	* doc/invoke.texi (C++ Modules): Update.

2019-07-24  Nathan Sidwell  <nathan@acm.org>

	Default to gcm.cache directory.
	gcc/cp/
	* cxx-mapper.c (flag_root): Change default.
	(module2bmi): Headers have same suffix.
	(client::action): Prefix root dir to look for bmi.
	gcc/
	* doc/invoke.texi (C++ Module Mapper): Update docs.
	gcc/testsuite/
	* g++.dg/modules/dep-1_[ab].C: Update scans.
	* g++.dg/modules/dep-2.C: Update scans.
	* g++.dg/modules/modules.exp (DEFAULT_REPO): New.
	(dg-module-cmi): Adjust.

	Drop import alias detection, via controlling macros.
	gcc/cp/
	* module.cc (bytes_in::no_more): Delete.
	(module_state::{read,write}_config): Drop controlling macro.
	(module_state::write_readme): Likewise.
	(module_state::read): Drop alias return.
	(module_state::slurp): Delete.  Replace all uses with field
	access.
	(module_state::resolve_alias): Delete.
	(module_state::is_alias): Delete.
	(module_state::read_imports): Drop alias detection.
	gcc/testsuite/
	* g++.dg/modules/alias-[12]_b.C: Drop controlling macro scans.
	* g++.dg/modules/macro-2_c.H: Likewise.
	* g++.dg/modules/macro-3_[abc].[CH]: Likewise.
	* g++.dg/modules/stdio-1_a.H: Likewise.
	* g++.dg/modules/alias-3_*: Delete.
	* g++.dg/modules/sys/alias-3_a.H: Delete.

	Merge trunk r273764.

	gcc/testsuite/
	* g++.dg/modules/alias-2_a.H: Add dg-module-header.
	* g++.dg/modules/alias-3_a.H: Likewise.
	* g++.dg/modules/mod-decl-0-2a.C: std=c++2a.
	* g++.dg/modules/mod-decl-0.C: std=c++17.
	* g++.dg/modules/modules.exp: Add dg-module-header, iterate over
	different c++ stds.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Cope with using decls in the
	binding list.
	gcc/testsuite/
	* g++.dg/modules/enum-6_[ab].[HC]: New.

	gcc/cp/
	* module.cc (enum merge_kind): Add MK_enum.
	(trees_out::tree_decl): Deal with anon enums.
	(trees_in::tree_value): Adjust for MK_enum.
	(trees_{in,out}::tree_node): Adjust tt_enum_int streaming.
	(trees_{in,out}::key_mergeable): Add MK_enum key.
	(depset::hash::add_dependency): Enum values are like using decls.
	(depset::hash::add_binding): Likewise.
	(depset_cmp): Reorder for new requirements.
	(enum ct_bind_flags): Add cbf_wrapped.
	(sort_mergeables): Presume sorted by depset_cmp.
	(module_state::{read,write}_cluster): Adjust.
	* name-lookup.c (check_mergeable_decl): Deal with anon-enum
	proxies.
	gcc/testsuite/
	* g++.dg/modules/enum-1_a.C: Adjust scan.

2019-07-23  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset): Rename MARKED to SPECIAL, update all users.

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

	gcc/cp/
	* parser.c (cp_parser_class_specifier_1): Fixup a template's type
	with a late exception specifier.
	gcc/testsuite/
	* g++.dg/modules/except-1.C: New.

2019-07-22  Boris Kolpackov <boris@codesynthesis.com>

	gcc/cp/
	* Make-lang.in (MODULE_REVISION): Add git rev, if it's git.

2019-07-16  Nathan Sidwell  <nathan@acm.org>r

	gcc/cp/
	* module.cc (module_state::read_{bindings,namespaces}): Use plain
	vec
	(module_state::read): Adjust.
	(module_state::write_macros): Use plain vec.
	(module_state::deferred_macro): Use plain vec.

	gcc/cp/
	* module.cc (depset::hash::add_writables): Use plain vec.
	(typedef spec_tuple): Use plain vec.
	(depset::hash::add_speciailizations): Correctly init vec.
	(module_state::{read,write}_namespaces): Use plain vec.
	(module_state::{read,write}): Adjust.

	Fix it better.
	gcc/cp/
	* mangle.c (mangle_module_substitution): Offset overflow.
	gcc/testsuite/
	* g++.dg/modules/sym-subst-3_[ab].C: Fix
	* g++.dg/modules/sym-subst-[456].C: New.

	Fix module backref subst.
	gcc/cp/
	* cp-tree.h (mangle_substitution): Rename to ...
	(mangle_module_substitution): ... here.  Drop genecity.
	* mangle.c: Likewise.  Fix mangling.
	* module.cc (module_state::mangle): Adjust.
	gcc/testsuite/
	* g++.dg/modules/sym-subst-1.C: Adjust scan.
	* g++.dg/modules/sym-subst-2_[ab].C: Adjust scan.
	* g++.dg/modules/sym-subst-3_[ab].C: New.

2019-07-09  Nathan Sidwell  <nathan@acm.org>

	gcc/c-family/
	* c-opts.c (c_common_handle_option): Remove {user,system}_search.
	* c.opt ({user,system}-search): Delete.
	(fmodule-header): Undeprecate.
	gcc/cp/
	* module.cc (module_state_config::get_opts): Drop
	OPT_fmodule_header_.
	(handle_module_option): Handle fmodule-header=.
	gcc/
	* gcc.c (cpp_unique_options): Drop {user,system}-search.

2019-07-08  Nathan Sidwell  <nathan@acm.org>

	gcc/c-family/
	* c-common.c (try_to_locate_new_include): Use strcmp and ignore
	zero-line maps.
	gcc/cp/
	* module.cc (finish_module_processing): Inhibit module stats if
	not moduling.

2019-07-07  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r273185.

	libcpp/
	* files.c (cpp_find_failed): Replace with ...
	(cpp_found_name): ... this.
	(_cpp_stack_file): Check main_search option.
	* include/cpplib.h (cpp_options): Add main_search.
	* internal.h (cpp_find_failed): Replace with ...
	(cpp_found_name): ... this.
	* init.c (cpp_read_main_file): Examine main_search option.
	gcc/c-family/
	* c-opts.c (c_common_handle_options): Add OPT_{user,system}_search.
	* c.opt (user-search, system-search): New.
	gcc/
	* gcc.c (cpp_unique_options): Add {user,system}-search.

	gcc/
	* module.cc (module_state::write_cluster): Return cluster size.
	(avalable_clusters, loaded_clusters): New static vars.
	(module_state::{read,write}): Adjust.
	(finish_module_processing): Dump more stats.
	gcc/testsuite/
	* g++.dg/module/part-3_c.C: Adjust scan.

	gcc/
	* timevar.def (TV_MODULE_{IMPORT,EXPORT,MAPPER}): Define.
	gcc/cp/
	* module.cc: Include timvar.h.  Sprinkle timevar accounting throughout.

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

	Merge trunk r273146.

	Victory!
	gcc/cp/
	* decl2.c (c_parse_final_cleanups): Don't do static init things
	for a header module.
	* module.cc (trees_in::start): Drop unused second parm.
	(module_state::{read,write}_inits): New.
	(trees_out::core_bools): Restrict static->extern hack.
	(module_state::{read,write}_config): Note inits.
	(module_state::{read,write}): Stream inits.
	gcc/testsuite/
	* g++.dg/modules/iostream-1_b.C: Remove ioinit workaround.

	gcc/testsuite/
	* g++.dg/modules/iostream-1_[ab].[HC]: New.

	gcc/cp/
	* module.cc (module_state_config::get_opts): Drop -g* switches.

	gcc/cp/
	* cp-tree.h (get_tinfo_decl_direct): Declare.
	* module.cc (trees_out::tree_decl): Stream more tinfo_var info.
	(trees_in::tree_value): Use get_tinfo_decl_direct for tinfo vars.
	* rtti.c (get_tinfo_decl_direct): Break out of ...
	(get_tinfo_decl): ... here.  Call it.

2019-07-04  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (module_state::read_cluster): finalize_function may
	not GC.

	gcc/cp/
	* module.cc (enum cluster_tag): Add ct_defn.
	(enum ct_decl_flags): Rmove cdf_has_definition.
	(module_state::{read,write}_cluster): Stream definitions after
	declarations..

	gcc/cp/
	* module.cc (trees_{in,out}::key_mergeable): Always stream context.
	gcc/testsuite/
	* g++.dg/modules/merge-1_[ab].[HC]: New.

	gcc/cp/
	* module.cc (trees_out::key_mergeable): Return merge kind.
	(trees_out::tree_value): Note key writing.
	(trees_in::tree_value): Adjust key dump.
	gcc/testsuite/
`	* g++.dg/modules/builtin-1_b.C: Adjust scans.
	* g++.dg/modules/inst-[1234]_b.C: Likewise.
	* g++.dg/modules/part-3_[cd].C: Likewise.

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

	gcc/cp/
	* module.cc (trees_out::tree_type): Add TYPEOF_TYPE, UNDERLYING_TYPE.
	(trees_in::tree_node): Likewise.

	gcc/cp/
	* module.cc (struct unnamed_entity): GTY it.
	(unnamed_map): Not a GTY object.

	gcc/cp/
	* module.cc (trees_{in,out}::fn_parms): Rename to ...
	(trees_{in,out}::fn_arg_types): ... this.
	(trees_{in,out}::fn_parms_{init,fini}): New.
	(trees_{in,out}::tree_value): Call fn_parms_fini.
	(trees_{in,out}::key_mergeable): Call fn_parms_init.
	gcc/testsuite/
	* g++.dg/modules/late-ret-1.H: New.
	* g++.dg/modules/scc-1.C: Adjust scan.

	gcc/cp/
	* module.cc (trees_out::tree_type): Add DECLTYPE_TYPE.
	(trees_in::tree_node): Likewise.

2019-07-02  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_in::core_vals): Protect binfo base reading.
	(module_state::{read,write}_cluster): Insert types for horcrucifexes.
	gcc/testsuite/
	* g++.dg/modules/horcrux-1_[ab].C: New.

	gcc/testsuite/
	Rename bmi->cmi everywhere.

	gcc/cp/
	* cp-tree.h (module_has_cmi_p): Renamed.
	* name-lookup.c (do_nonmember_using_decl): Adjust.
	* module.cc (cmi_*): Renamed.  Adjust all users.

	gcc/cp/
	* module.cc (trees_out::fn_parms): Don't use canonical type any
	more.
	gcc/testsuite/
	* g++.dg/modules/merge-1_[ab].C: New.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Write types for typedefs.
	(trees_in::tree_node): Adjust.
	gcc/testsuite/
	* g++.dg/modules/tdef-5_[ab].C: New.

	gcc/cp/
	* module.cc (trees_out::tree_type): Add pack types.
	(trees_{in,out}::tree_value): Tweak type streaming flags
	(trees_in::tree_node): Add pack types.

	gcc/cp/
	* module.cc (trees_out::tree_type): Detect bound template template
	parm.
	(trees_{in,out}::tree_value): Stream type on any TYPE_DECL that
	its TYPE_STUB_DECL.

	gcc/cp/
	* module.cc (trees_out::tree_type): Add COMPLEX and VECTOR types.
	(trees_in::tree_node): ... and here.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Deal with tinfo vars and
	vtables here ...
	(trees_out::tree_node): ... not here.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Deal with tinfo type_decls
	here.
	(trees_out::tree_type): Dectect tinfo types here ...
	(trees_out::tree_node): ... not here.
	(trees_in::tree_node): Add tinfo type too.

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

	gcc/cp/
	* module.cc (trees_out::tree_decl): Fix dump typo.
	(trees_in::tree_value): Likewise.
	(module_state::read_cluster): Show end.

	gcc/cp/
	* module.cc (module_state::write): Don't stream env.

	gcc/cp/
	* module.cc (trees_in:::read_function_def): Push the template for
	post processing.
	(module_state::read_cluster): Deal with abstract post processing.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-7_[ab].C: New.

	gcc/cp/
	* module.cc (depset::hash::add_binding): Return added flag.  Deal
	with orphaned using decls.
	(depset::hash::add_writables): Return added flag.
	gcc/testsuite/
	* g++.dg/modules/using-5_[ab].C: New.

	Clones
	gcc/cp/
	* module.cc (enum tree_tag): Add tt_clone_ref.
	(get_clone_target): Replace get_clone_orig.
	(FOR_EVERY_CLONE): New.
	(trees_out::mark_mergeable): Add tag parm.  Adjust.
	(trees_in::chained_decls): Cope with already-linked clones.
	(trees_out::tree_decl): Support clone walking.
	(trees_{in,out}::tree_value): Likewise.
	(trees_in::tree_node): Support tt_clone_ref.
	(trees_{in,out}::key_mergeable): Key clones.
	(trees_out::{mark,write}_definition): No clones here.
	(trees_in::read_definition): Likewise.
	(depset::hash::add_clone): Reimplement.
	(module_state::write_cluster): Deal with clones.
	gcc/testsuite/
	* g++.dg/modules/clone-1_[ab].C: New.
	* g++.dg/modules/friend-1_a.C: Adjust scan.
	* g++.dg/modules/indirect-[1234]_[bc].C: Likewise.
	* g++.dg/modules/inst-3_a.C: Likewise.

2019-06-27  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::entity_kind): Add EK_CLONE.
	(depset::hash::add_clone): New.
	(enum walk_kind): Move to global scope.
	(enum merge_kind): New.
	(trees_{in,out}::tree_value): Use new enums.
	(trees_{in,out}::tree_mergeable): Likewise.
	(get_clone): New.
	(member_owned_by_class): Clones are never owned.
	(trees_out::mark_declaration): Walk clones.
	(trees_in::read_definition): Likewise.
	(trees_out::write_definition): Likewise.
	gcc/testsuite/
	* g++.dg/modules/builtin-1_b.C: Adjust dump scans.
	* g++.dg/modules/inst-1_b.C: Adjust dump scans.
	* g++.dg/modules/part-3_[cd].C: Adjust dump scans.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream abstract_origin.

	gcc/cp/
	* class.c (build_clone): Neaten and assert.
	* cp-tree.h (lang_decl_u5.cloned_function): Fix comment.
	* name-lookup.c (get_lookup_ident): Don't fall off end of overload.

	Add -Mno-modules.
	gcc/c-family/
	* c-opts.c (c_common_init_options): Default module deps on.
	(c_common_handle_option): Handle M{no-}modules.
	* c.opt (Mmodules, Mno-modules): New options.
	gcc/
	* doc/cppopts.texi (Mno-modules): Document it.
	* doc/invoke.texi: Likewise.
	* gcc.c (cpp_unique_options): Add it.
	gcc/testsuite/
	* g++.dg/modules/dep-3.C: New.
	libcpp/
	* include/cpplib.h (struct cpp_options): Add dep.modules.
	* include/mkdeps.h: Include cpplib.h
	(deps_write): Take a cpp_reader.
	* init.c (cpp_finish): Adjust deps_write call.
	* mkdeps.c: Include internal.h
	(make_write): Adjust.  Conditionally inhibit module output.
	(deps_write): Adjust.

2019-06-26  Nathan Sidwell  <nathan@acm.org>

	Don't elide primary from partition names.
	gcc/cp/
	* cp-tree.h (module_name): Drop maybe_primary parm.
	* modules (module_state::get_flatname): Just get the flatname.
	(get_primary): New.
	(get_module): Expect fully qualified name.  Drop parent arg.
	Adjust callers.
	(module_stae:set_flatname): Create fully qualified name.
	(module_state::read_{imports,partitions}): Check partitions have
	expected primary.
	(module_state::{read,write}_config): Adjust.
	(module_state::do_import, module_preprocess)
	(finish_module_procesing): Adjust deps_add_module calls.
	* name-lookup.c (make_namespace): Adjust anon namespace name
	creation.
	* ptree.c (cxx_print_decl): Adjust module_name call.
	gcc/testsuite/
	* g++.dg/modules/part-2_d.c: Adjust regexp.
	* g++.dg/modules/part-3_c.c: Adjust scans.
	libcpp/
	* include/mkdeps.h (deps_add_module): Drop primary arg.
	* mkdeps.c (deps_add_module): Drop primary arg.

	Merge trunk r272714.

	gcc/cp/
	* decl.c (duplicate_decls): Non-modules are ok for builtins.
	gcc/testsuite/
	* g++.dg/modules/builtin-2.C: New.

	gcc/cp/
	* module.cc (depset::hash::add_mergeable_horcrux): Add redirect as
	necessary.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-7.C: New.

	gcc/cp/
	* module.cc (depset::hash::add_redirect): New.
	(depset::hash::add_specialization): Use it.
	(depset::hash::add_mergeable): Use it.
	(depset::hash::add_dependency): Never add a redirect here.

	gcc/cp/
	* module.cc (finish_module_processing): Adjust failed to write error.
	gcc/testsuite/
	* g++.dg/modules/internal-1.C: Adjust.

	gcc/cp/
	* module.cc (depset::entity_kind): Add EK_REDIRECT.
	(tree_out::tree_decl): Cope with redirects.
	(depset::hash::add_dependency): Likewise.
	(depset::hash::add_specialization): Add redirect for partials.
	(depset::hash::add_mergeable): Likewise.
	(module_state::write_cluster): Assert no redirects here.
	(module_state::write): Check redirects here.
	gcc/testsuite/
	* g++.dg/modules/global-3_a.C: Disable.
	* g++.dg/modules/tpl-spec-6_[ab].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::note_definition): Rename to ...
	 (trees_{in,out}::assert_definition): ... here.  Update callers.

	gcc/cp/
	* cp-tree.h (match_mergeable_specialization): Add insert parm.
	* pt.c (match_mergeable_specialization): Add insert parm.
	* module.cc (depset::entity_kind): Add EK_MAYBE_SPEC.
	(depset::disc_bits): Delete DB_FRIEND_BIT, ADD DB_PSEUDO_SPEC_BIT.
	(depset::is_friend): Delete.
	(depset::is_pseudo_spec): Add.
	(trees_out::tree_decl): Some specializations are findable by name.
	(trees_in::tree_value): Mergeables have an explicit kind.
	(trees_in::tree_node): Protect more.
	(trees_{in,out{::key_mergeable): Explicitly encode key kind.
	(depset::hash::add_dependency): Support EK_MAYBE_SPEC.
	(specialization_add): Add some consistency checking.
	(depset::hash::add_specialization): Specialization might be an
	import.
	(depset::hash::add_mergeable_horcrux): New.
	(sort_mergeables): Add horcrux deps.
	(module_state::write_cluster): Don't mark cdf_is_friend.
	gcc/testsuite/
	* g++.dg/modules/indirect-3_[ab].C: Reenable. Adjust scans.

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

	gcc/cp/
	* module.cc (module_state:note_cmi_name): New.
	(module_state::read_config): Use it.
	(module_state::check_read): Likewise.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-3.C: Adjust diags.
	* g++.dg/modules/atom-preamble-3.C: Likewise.
	* g++.dg/modules/bad-mapper-1.C: Likewise.
	* g++.dg/modules/bad-mapper-3.C: Likewise.
	* g++.dg/modules/circ-1_c.C: Likewise.
	* g++.dg/modules/flag-1_b.C: Likewise.
	* g++.dg/modules/import-2.C: Likewise.
	* g++.dg/modules/mod-stamp-1_d.C: Likewise.
	* g++.dg/modules/p0713-3.C: Likewise.

2019-06-24  Nathan Sidwell  <nathan@acm.org>

	Revert late specialization insertion.
	gcc/cp
	* module.cc (depset): Delete DB_OOT_SPEC_BIT.
	(depset::~depset): Remove deletion.
	(trees_out::key_mergeable): Assert specialization is marked.
	(depset::hash::add_dependency): Assert no late specializations.
	gcc/testsuite
	* g++.dg/modules/modules.exp: Expand dg-module-do capabilities.
	* g++.dg/modules/indirect-3_a.C: Disable.

2019-06-23  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r272583.

2019-06-21  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* modules.cc (depset): Add DB_OOT_SPEC_BIT.
	(depset::~depset): Free the spec entry if we own it.
	(trees_{in,out}::note_definition): Check template result isn't
	there.
	(depset::hash::add_dependency): Correctly insert discovered
	non-member template instantiations.

	gcc/cp/
	* modules.cc (note_defs): New checking hash table.
	(trees_{in,out}::note_definition): New checkers
	(trees_in::read_{function,class,var,enum}_def): Add maybe_template
	arg, use it.  Note definitions.
	(member_owned_by_class): New, extracted from ...
	(trees_out::mark_class_member): ... here.  Call it.
	(trees_out::write_class_def): Only write the owned definitions.
	(trees_out::write_definition): Note definition.
	(trees_in::read_definition): Pass maybe_template to readers.
	(module_state::write): Reset note_defs hash.
	(init_module_processing): Init it.
	(finish_module_processing): Delete it.

	gcc/cp/
	* modules.cc (dumper::operator ()): Print indentation level.
	gcc/testsuite/
	* g++.dg/modules/scc-1.C: Adjust dump scan.

	gcc/cp/
	* modules.cc (node_template_info): Enums are awkwarder.
	gcc/testsuite/
	* g++.dg/modules/enum-4_[ab].C: New.

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

	Bitfields.
	gcc/cp/
	* module.cc (tree_out::mark_class_def): Mark bitfield's
	representative field.
	gcc/testsuite/
	* g++.dg/modules/bfield-1_[ab].C: New.

	Thunks.
	gcc/cp/
	* module.cc (enum tree_tag): Add tt_thunk.
	(trees_out::tree_decl): Emit it.
	(trees_out::tree_value): Assert we don't accidentally meet a
	thunk.
	(trees_in::tree_node): Read it.
	(trees_out::{mark,write}_class_def): Emit thunks by value.
	(trees_in::read_class_def): Install thunks.
	gcc/testsuite/
	* g++.dg/modules/thunk-1_[ab].C: New.

	gcc/cp/
	* parser.c (cp_lexer_tokenize): Skip pragmas.
	* lex.c (module_preprocess_token): Likewise.
	gcc/testsuite/
	* g++.dg/modules/pragma-1_[ab].[HC]: New.
	* g++.dg/modules/tname-spec-1_b.C: Move include earlier.

	Deconstruct types.
	gcc/cp/
	* module.cc (enum tree_tag): Add tt_typename_decl,
	tt_derived_type, tt_variant_type.
	(trees_out::tree_decl): Stream typename types.
	(trees_out::tree_type): Emit tt_{derived,variant}_type records.
	(trees_in::tree_node): Add tt_typename_decl, tt_derived_type,
	tt_variant_type handling.
	gcc/testsuite/
	* g++.dg/modules/class-3_b.C: Adjust dump scan.
	* g++.dg/modules/tname-spec-1_[ab].[HC]: New.
	* g++.dg/modules/typename-1_[ab].C: New.

2019-06-19  Nathan Sidwell  <nathan@acm.org>

	Stream mergeables inline.
	gcc/cp/
	* module.cc (depset): Add DB_MERGEABLE_BIT.
	(depset::is_mergeable): New.
	(depset::hash::set_for_mergeable): Delete.
	(trees_{in,out}::tree_mergeable): Delete.
	(tress_{in,out}::key_mergeable): New.
	(trees_out::tags): New enum.
	(trees_out::mark_{mergeable,merged}): New.
	(trees_out::reserve_mergeable,unset_for_mergeable): Delete.
	(trees_out::{insert,ref_node}): Adjust.
	(trees_out::core_vals): Don't stream tpl-tpl-parm contexts.
	(trees_out::tree_decl): tpl-tpl-parms not found by name.
	(trees_{in,out}::tree_value): Stream merging info inline.
	(trees_{in,out}::tpl_header): Take template, not parms.
	(trees_out::mark_declaration): Mark the template parms.
	(depset::hash::find_dependencies): Adjust mergeable walk.
	(depset::hash::add_mergeable): Adjust.
	(module_state::sort_mergeables): Replace with ...
	(sort_mergeables): ... this.
	(enum cluster_tag): Delete ct_mergeable.
	(module_state::write_cluster): Determine mergable ordering
	earlier.  Don't write a mergeable table.
	(module_state::read_cluster): No mergeables to deal with here.
	(module_state::write): Move cluster member dumping to write_cluster.
	* name-lookup.h (match_mergeable_decl): Drop tpl_args parm.
	* name-lookup.c (check_mergeable_decl): Likewise.  Update callers.
	gcc/testsuite/
	* g++.dg/modules/builtin-1_a.C: Adjust dump scans.
	* g++.dg/modules/friend-1_a.C: Likewise.
	* g++.dg/modules/indirect-[234]_[bc].C: Likewise.
	* g++.dg/modules/inst-[23]_[ab].C: Likewise.
	* g++.dg/modules/part-3_[cd].C: Likewise.
	* g++.dg/modules/scc-1.C: Likewise.
	* g++.dg/modules/tpl-friend-[12]_a.C: Likewise.
	* g++.dg/modules/tpl-spec-[12345]_[ab].C: Likewise.
	* g++.dg/modules/vmort-2_b.C: Likewise.

2019-06-18  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r272419.

	gcc/cp/
	* module.cc (specialization_cmp): Deal with more equivalencies.
	(depset_cmp): New, cloned and adjusted from cluster_cmp.
	(depset::hash::connect): Use it.

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

	gcc/cp/
	* module.cc (trees_out::fn_parms): Stream canonical type.
	(depset::hash::add_dependency): Adjust static inline check.
	gcc/testsuite/
	* g++.dg/modules/mutual-friend.ii: New.

2019-06-14  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::hash::add_dependency): Don't register
	internal entities when in a header module.
	(depset::hash::add_binding): Add internal entities in header modules.
	gcc/testsuite/
	* g++.dg/modules/stat-tpl-1_a.H: New.

	gcc/cp/
	* module.cc (depset::hash::add_dependency): Inhibit internal
	linkage setting on functions.
	(cluster_cmp): We can meet matching using decls.

	gcc/cp/
	* module.cc (depset::hash::add_dependency): Unnamed elaborated
	types have no linkage.
	gcc/testsuite/
	* g++.dg/modules/enum-5_[ab].[HC]: New.

	gcc/cp/
	* module.cc (module_state::{read,write}_cluster): Check stat hack
	is for implicit typedefs.

	gcc/cp/
	* module.cc (trees_out::tree_type): Simplify if-tree.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream original_type of type of
	typedefs, not their type.
	(trees_out::tree_type): Stream type_name of typedefs.
	(trees_out::tree_value): Insert the type of a typedef.
	(trees_in::tree_value): Reconstruct the type of a typedef.
	gcc/testsuite/
	* g++.dg/modules/tdef-4_[abc].C: New.
	* g++.dg/modules/class-3_b.C: Adjust scan.

	gcc/cp/
	* module.cc (binding_cmp): There can be an implicit and
	non-implicit type_decl.
	* name-lookup.c (check_mergeable_decl): Check implicitness of
	type_decl.

2019-06-13  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::hash::add_specializations): Partial
	instantiations need their template.
	gcc/testsuite/
	* g++.dg/modules/tpl-tpl-mem-1_[ab].C: New.

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

	Update Revision number

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

	Merge trunk r272149.

2019-06-10  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (module_state::read_location): Don't map
	UNKNOWN_LOCATION to loc.
	(module_state::read_locations): Don't rely on that.
	gcc/testsuite/
	* g++.dg/modules/predef-2{.h,_[ab].C}: New.

	gcc/cp/
	* module.cc (loc_spans::init): Correct macro range ordering.
	(module_state::write_locations): Fix more off-by-ones.
	gcc/testsuite/
	* g++.dg/modules/predef-1.[hC]: New.

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

	gcc/cp/
	* module.cc (module_state::write_env): New.
	(module_state::write): Call it.

	gcc/cp/
	* Make-lang.in (REVISION_c): Don't test it.
	* module.cc (module_state::write_locations): Fix off-by-one thinko.

	gcc/cp/
	* module.cc (loc_spans::init): Add lmaps parm, separate main from
	forced header locs.
	(loc_spans::SPAN_FIRST): New, use it for first span.
	(loc_spans::SPAN_MAIN): Just after the first span.
	gcc/testsuite/
	* g++.dg/modules/macro-5_[abc].[CH]: Adjust.

	gcc/cp/
	* module.cc (dumper::MACRO): New flag.
	(module_state::{write,install}_macros): Use it.
	(module_state::{undef,deferred}_macro): Likewise.
	gcc/
	* doc.invoke (-fdump-lang): Document.
	gcc/testsuite/
	* g++.dg/modules/macro-[35]_[abc].[CH]: Update.

	gcc/cp/
	* module.cc (bytes_out::print_time): New.
	(module_state::write_readme): Dump some environmental data.

2019-06-06  Nathan Sidwell  <nathan@acm.org>

	Update Revision number

2019-06-06  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* Make-lang.in (MODULE_REVISION): Read from Changelog.modules.

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

	gcc/cp/
	* module.cc (dumper::MAPPER): New flag. Use it on mapper things.
	(dumper::push): Only do blank line when starting a new module
	nest.

	gcc/cp/
	* module.cc (trees_out::tree_type): We can meet ttps here.
	(trees_{in,out}::tree_mergeable): Stream skeleton before locating info.
	gcc/testsuite/
	* g++.dg/modules/ttp-3_[ab].C: New.
	* g++.dg/modules/builtin-1_[ab].C: Adjust module scan.
	* g++.dg/modules/indirect-[234]_b.C: Likewise.
	* g++.dg/modules/inst-[1234]_[ab].C: Likewise.

	gcc/cp/
	* module.cc (trees_out::core_vals): Template type parms are their
	own canonical.
	(trees_in::finish_type): Never subst a canonical type parm for the type.
	gcc/testsuite/
	* g++.dg/modules/ttp-2_[ab].C: New.

	gcc/cp/
	* module.cc (global_tree_arys): Add c_global_trees.
	gcc/c-family/
	* c-common.h (enum c_tree_index): Add CTI_MODULE_HWM, move voltale
	entries below it.

	Merge trunk r271953.

	gcc/
	* tree-core.h (enum tree_index): Add TI_MODULE_HWM.
	gcc/cp/
	* cp-tree.h (enum cp_tree_index): Add CPTI_MODULE_HWM, move
	volatile CPTI's below it.
	(CPTI_STD_IDENTIFIER, std_identifier): Delete.
	(DECL_NAMESPACE_STD): Simplify.
	* decl.c (initialize_predefined_identifiers): Drop std_identifier.
	(cxx_init_decl_processing): Adjust std_node creation. Use push/pop
	nested namespace for std.
	(cxx_builtin_function, cxx_builtin_function_ext_scope): Use
	push/pop nested namespace for std.
	* except.c (init_exception_processing): Likewise.
	* rtti (init_rtti_processing): Likewise.
	* module.cc (global_tree_arys): Restrict C & C++ trees.
	* name-lookup.c (push_namespace): Set location if it was a
	builtin.
	gcc/testsuite/
	* g++.dg/modules/std-1_[ab].C: New.

2019-06-04  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* class.c (maybe_add_class_template_decl): Mark (some) local
	templates.
	* module.cc (friend_from_decl_list): Some friends are overloads.
	(trees_{in,out}::core_vals): Stream TREE_VEC CHAIN.
	(trees_out::mark_class_def): Directly mark friend decls.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-6_[ab].C: New.

	gcc/testsuite/
	* g++.dg/modules/tpl-friend-5_[ab].C: New.

	gcc/cp/
	* name-lookup.c (lookup_type_scope_1): Look in imported slots too.
	gcc/testsuite/
	* g++.dg/modules/class-8_[ab].C: New.

	gcc/cp/
	* name-lookup.c (lookup_type_scope_1): Reimplement, handle local
	and namespace scopes separately.

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

	gcc/cp/
	* module.cc (friend_from_decl_list): New.
	(trees_out::{tree_decl,{write,mark}_class_def}): Use it.
	(trees_in::{tree_node,read_class_def}): Likewise.

	Template friends of templates.
	gcc/testsuite/
	* g++.dg/modules/tpl-tpl-friend-1_[ab].C: New.

	Non-template friends of templates.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-4_[ab].C: New.

	Non-template friends of templates.
	gcc/cp/
	* module.cc (has_definition): Use DECL_SAVED_TREE.
	(trees_{in,out}::{read,write}_class_def): Stream definitions of
	local friends.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-3_[ab].C: New.

	Merge trunk r271874.

	Non-template friends of templates.
	gcc/cp/
	* module.cc (depset::disc_bits): Add DB_FRIEND.
	(depset::is_friend): New.
	(enum tree_tag): Add tt_friend_template.
	(trees_out): Add section field, init it.
	(trees_out::tree_decl): Deal with template friends.  Assert lazy
	ordering.
	(trees_in::tree_node): Add tt_friend_template support.
	(trees_{in,out}::{read,write,mark}_class_def):  Deal with friend
	templates.
	(depset::hash::add_dependency): Notice friend templates.
	(depset::hash::add_specializations): Add non-specializations.
	(depset::hash::find_dependencies): Specializations depend on their
	template & args.
	(enum ct_decl_flags): Add cdf_is_friend.
	(module_state::write_cluster): Set it.
	(module_state::write): Add specializations before bindings.
	Expand cluster dump.
	* pt.c (push_template_decl_real): Friend template's DECL_CHAIN
	points at the befriending class.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-2_[ab].C: New.
	* g++.dg/modules/tpl-friend-1_a.C: Adjust scans.

2019-05-31  Nathan Sidwell  <nathan@acm.org>

	Non-template friends of templates.
	gcc/cp/
	* module.cc (trees_{in,out}::{read,write}_class_def): Stream
	friend lists and decl lists specially.
	(trees_out::mark_class_def): Mark local friend decls.
	(depset::hash::add_specializations): Don't add non-specializations
	that are in the table.
	* pt.c (push_template_decl_real): Mark non-pushed friend templates.
	gcc/testsuite/
	* g++.dg/modules/tpl-friend-1_[ab].C: New.

2019-05-29  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* decl.c (duplicate_decls): Remove duplicate assert.
	* pt.c (build_template_decl): Set RESULT & TYPE of the template
	here ...
	(process_partial_specialization): ... not here ...
	(add_inherited_template_parms): ... nor here ...
	(push_template_decl_Real): ... nor here.  Refactor.
	gcc/
	* doc/invoke.texi (C++ Modules): Document atomicity.
	gcc/fortran/
	* cpp.c (gfc_cpp_add_dep, gfc_cpp_add_target, gfc_cpp_init):
	Rename mrules to mkdeps.

	gcc/cp/
	* module.cc (maybe_add_bmi_prefix): Replace FORCE with LEN_P.
	Set it.
	(create_dirs): Input is guarantueed unique.
	(module_state::check_read): Show full BMI filename in errors.
	(finish_module_processing): Likewise. Rename output atomically.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-3.C: Adjust diagnostics.
	* g++.dg/modules/atom-preamble-3.C: Likewise.
	* g++.dg/modules/bad-mapper-[13].C: Likewise.
	* g++.dg/modules/circ-1_c.C: Likewise.
	* g++.dg/modules/flag-1_b.C: Likewise.
	* g++.dg/modules/import-2.C: Likewise.
	* g++.dg/modules/internal-1.C: Likewise.
	* g++.dg/modules/mod-stamp-1_d.C: Likewise.
	* g++.dg/modules/p0713-3.C: Likewise.

2019-05-28  Nathan Sidwell  <nathan@acm.org>

	* decl.c (duplicate_decls): Assert a template newdecl has no
	specializations.

	Revert inadvertent commits.
	gcc/cp/
	* pt.c (push_template_decl_real): Here.
	* decl.c (duplicate_decls): Here.

	Merge trunk r271702.

2019-05-23  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (loc_spans): Make spans a vec.
	(module_state::{read,write}_locations): Use vec.

	gcc/cp/
	* module.cc (trees_in): Replace auto_vec with vec.

	Template template parms, and a bunch of other stuff
	gcc/cp/
	* cp-tree.h (DECL_TEMPLATE_INFO): Augment docs.
	* module.cc (depset::clear_flag_bit): New.
	(depset::is_unreached): Replace is_implicit_specialization.
	(depset::is_marked): Replace is_first_dep_repurposed.
	(dumper::impl::nested_name): Template args may be NULL.
	(trees_{in,out}::core_vals): Template decl result & args streamed
	with decl.
	(trees_out::tree_decl): TTPs by value.
	(trees_{in,out}::tree_value): Reorder body streaming, stream more
	template bits.
	(trees_out::tree_mergeable): Redo specialization tagging.
	(trees_out::mark_class_def): Only mark decls on decl list.
	(trees_out::mark_declaration): Simplify.
	(depset::hash::add_dependency): Deal with reaching unreached.
	(specialization_add): Grab all instantiations from this TU.
	(depset::hash::add_specialiazations): Determing is_unreached.
	(depset::hash::find_dependencies): Iterate until no more unreached
	reached.
	(module_state::write_unnamed): Adjust.
	* pt.c (tsubst_function_decl): Set DECL_MODULE_OWNER.
	gcc/testsuite/
	* g++.dg/modules/ttp-1_[ab].C: New.
	* g++.dg/modules/indirect-[234]_[bc].C: Adjust scans.
	* g++.dg/modules/inst-[24]_ab.C: Likewise.

	gcc/cp/
	* module.cc (dumper::impl::nested_name): Cope with TTPs.
	(depset:hash::connect): Return the vec.
	(depset::tarjan): Create and return the vec.
	(module_state::write_{bindings,unnamed}): SCCS are in a vec.
	(module_state::write): Likewise.

2019-05-22  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::hash::hash): Create worklist.
	(depset::tarjan::tarjan): Create stack.
	(depset::depset): Create deps.

	Stream binfos properly (again).
	gcc/cp/
	* module.cc (trees_out::mark_node): Binfos may be marked.
	(trees_{in,out}::start): Binfos may be streamed.
	(trees_{in,out}::core_vals): Likewise.
	(trees_{in,out}::tree_node): Reachable binfos may always be
	inserted.
	(trees_{in,out}::{read,write}_binfos): Delete.
	(trees_out::mark_class_def): Mark the binfo heirarchy.
	(trees_{in,out}::{read,write}_class_def): Stream binfos here.

2019-05-21  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_out::mark_declaration): Add do_defn parm, mark
	definition if set.  Adjust callers.
	(trees_out::mark_definition): Merge into mark_declaration.

	Merge trunk r271478.

	Merge trunk r271467.

2019-05-20  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r271420.

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

	Merge trunk r271338.

	gcc/cp/
	* module.cc (trees_out::mark_class_member): Add do_defn parm.
	Mark the definition.
	(trees_out::mark_class_def): Adjust.
	(depset::hash::find_dependencies, module_state::write_cluster):
	Use mark_declaration.

	gcc/cp/
	* module.cc (trees_out::mark_node): Drop OUTERMOST parm.  Don't
	consider templateness.
	(trees_out::mark_declaration): New.
	(trees_out::mark_class_member): New.
	(trees_out::mark_class_def): Use mark_class_member.
	(depset::hash::find_dependencies): Adjust.
	(module_state::write_cluster): Likewise.

	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parms): Rename to ...
	(trees_{in,out}::tpl_headr): ... here.  Stream the whole parms.
	(trees_out::tree_type): Assert no surprising
	TEMPLATE_TEMPLATE_PARM.
	(trees_{in,out}::tree_value): Stream template template parms.

2019-05-16  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (dumper::operator ()): Add null check.
	(trees_out::mark_node): Permit fixed nodes.
	(trees_out::tree_decl, trees_in::tree_node): More anon.
	* name-lookup.c (mark_pending_on_decl): Fix field marking thinko.
	(lookup_by_ident): Lookup anon.
	(get_lookup_ident): Likewise.
	gcc/testsuite/
	* g++.dg/modules/anon-1_[abc].C: New.

2019-05-15  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::DB_HIDDEN_BIT): New, add accessors.
	(depset::hash::add_binding): Set hidden binding bit.
	(binding_cmp): Adjust hidden.
	(enum ct_bind_flags): New.
	(module_state::{read,write}_cluster): Reimplement binding flag
	streaming.
	* name-lookup.c (name_lookup::adl_namespace_fns): Skip hidden.
	gcc/testsuite/
	* g++.dg/modules/friend-2_[ab].C: New.

2019-05-14  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (trees_in::tree_value): New, broken out of ...
	(trees_in::tree_node): ... here.  Call it.
	(trees_{in,out}::lang_type_vals): Don't stream befriending classes.
	gcc/testsuite/
	* g++.dg/modules/friend-1_[abc].C: New.

	Cleanup merging, friend streaming.
	gcc/cp/
	* module.cc (trees_{in,out}::tree_mergeable): Reimplement.
	(trees_out::tree_value): Significant adjustment.
	(trees_in::tree_node): Likewise.
	(trees_{in,out}::tree_node_specific): Move into ...
	(trees_{in,out}::tree_node_bools): ... here.
	(trees_out::mark_mergeable): Delete.
	(trees_{in,out}::insert): Adjust.
	(trees_{in,out}::lang_vals): New, broken out of ...
	(trees_node_vals): ... here.  Call them.
	(trees_out::ref_node): Process mergeable cases.
	(trees_{in,out}::tpl_parms): Adjust.
	(trees_{in,out}::{read,write}_class_def): Stream and connect
	friend lists.
	(binding_cmp): Order hidden decls.
	(module_state::write_cluster): Adjust mergeable streaming.
	(module_State::read_cluster): Hide hidden overloads.
	* name-lookup.c (extract_module_binding): Don't skip hidden.
	gcc/testsuite/
	* g++.dg/modules/builtin-1_a.C: Adjust scans.
	* g++.dg/modules/class-3_b.C: Likewise.
	* g++.dg/modules/indirect-[24]_[bc].C: Likewise.
	* g++.dg/modules/inst-[123]_[bcd].C: Likewise.

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

	gcc/cp/
	* decl.c (duplicate_decls): Don't check moduleness on friend decl.
	* pt.c (tsubst_friend_function): Set module ownership.

	gcc/cp/
	* module.cc (trees_{in,out}::{read,write}_function_def): Serialize
	FRIEND_CONTEXT.
	(trees_{in,out}::{read,write}_class_def): Reattach befriending classes.

	gcc/cp/
	* decl.c (duplicate_decls): Check and adjust anticipated builtin
	decls.
	* friend.c (do_friend): Set module ownership.
	* module.cc (trees_{in,out}::lang_decl_vals): Conditionally stream
	context and befriending classes.
	* name-lookup.c (init_global_partition): Header unit uses global
	slot.
	* parser.c (cp_parser_template_declaration): Conditionalize export
	warning.

	Partial specializations!
	gcc/cp/
	* module.cc (trees_out::tree_mergeable): Correct finding of
	general template.
	(trees_in::tree_mergeable): Recover a merged partial
	specialization.
	(depset::hash::add_specializations): Deal with partial
	specializations.
	(enum ct_decl_flags): New.
	(module_state::write_cluster): Set specialization flags.
	(module_state::read_cluster): Install specializations.
	(install_specialization): New.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-5_[ab].C: New.

2019-05-09  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc
	gcc/testsuite/
	* g++.dg/modules/indirect-[234]_[bc].C: Adjust module dump scans.
	* g++.dg/modules/inst-[1234]_[ab].C: Likewise.
	* g++.dg/modules/vmort-2_c.C: Likewise.

	Atomically mark template's DECL_TEMPLATE_RESULT, IMPLICIT_TYPEDEF's type
	gcc/cp/
	* module.cc (enum tree_tag): Replace
	tt_{primary,secondary}_type with tt_typedef.
	(trees_out::mark_node): Mark the template_decl.
	(trees_out::maybe_insert_typeof): Delete.
	(trees_out::tree_decl): Stream the template_decl, name implicit
	templates. Always mark result & type.
	(trees_out::tree_type): Simplify implicit_typedef streaming.
	(trees_out::tree_value): Assert correct ordering.
	(trees_in::tree_node): Adjust tt switch.  Insert result & type.
	(module_state::{read,write}_cluster): Always add voldemort's type.
	gcc/testsuite/
	* g++.dg/modules/class-3_[bd].C: Adjust module dump scans.
	* g++.dg/modules/indirect-[234]_[bc].C: Likewise.
	* g++.dg/modules/inst-[234]_[ab].C: Likewise.
	* g++.dg/modules/stdio-1_a.H: Likewise.
	* g++.dg/modules/using-4_a.C: Likewise.

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

	gcc/testsuite/
	* g++.dg/template/pr39425.C: Adjust errors.
	* g++.old-deja/g++.pt/spec20.C: Adjust errors.

	Merge trunk r270943.

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

	libcpp/
	* include/mkdeps.h: Rename struct mrules to struct mkdeps.
	* mkdeps.c: Likewise.
	* include/cpplib.h (cpp_get_deps): Rename return type..
	* directives.c (cpp_get_deps): Likewise.
	* internal.h (struct cpp_reader): Rename deps field type.
	gcc/cp/
	* cp-tree.h (module_preprocess): Adjust first arg type.
	* module.cc: Rename mrules to mkdeps.
	* lex.c (module_preprocess_token): Rename mrules->mkdeps.
	gcc/c-family/
	* c-opts.c (handle_defered_opts): Rename struct deps to struc mkdeps.

	gcc/cp/
	* module.cc (enum tree_tag): Delete tt_builtin.
	(trees_out::tree_decl): Builtins are merely GMF entities.
	(tree_in::tree_node): Delete tt_builtin handling.
	* name-lookup.c (init_global_partition): New.
	(get_fixed_binding_slot): Populate global & partition slots.
	gcc/testsuite/
	* g++.dg/modules/builtin-1_[ab].C: Adjust scans.
	* g++.dg/modules/by-name-1.C: Likewise.

	gcc/cp/
	* cp-tree.h (global_purview_p): New.
	(module_header_p): Rename to ...
	(header_module_p): ... this.
	(named_module_p): New.  Replace ...
	(module_not_header_p): ... this.
	(module_global_p): ... delete.
	* module.cc (trees_out::tree_mergeable, module_state::write)
	(module_cpp_undef, finish_module_processing): Adjust.
	* name-lookup.c (get_fixed_binding_slot, record_mergeable_decl)
	(check_module_override, make_namespace): Adjust.
	* parser.c (cp_parser_translation_unit, cp_parser_module_name): Adjust.

2019-05-02  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (spec_entry): Moved from pt.c.
	(walk_specializations): Declare.
	(get_specializations_for_module): Delete.
	* module.cc (depset):  Add DB_FIRST_BIT.
	(depset::{is,set}_first_dep_repurposed): New.
	(depset::{,tarjan::}connect): Drop for_mergeable parm, use
	is_first_dep_repurposed instead.
	(spec_tuple): New.
	(specialization_add): New.
	(specialization_cmp): Adjust.
	(depset::hash::add_specializations): Reimplement.
	(depset::hash::add_mergable): Set set_first_dep_repurposed.
	(module_state::sort_mergeables): Adjust.
	(module_state::write): Likewise.
	* pt.c (spec_entry): Move to cp-tree.h
	(get_specializations, get_specializations_for_module): Replace
	with ...
	(walk_specializations): ... this.
	gcc/testsuite/
	* g++.dg/modules/inst-1_b.C: Adjust scans.

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

	gcc/cp/
	* module.cc (depset): Add DB_PARTIAL_BIT,
	is_partial_specialization, set_implicit_specialization.
	(depset::hash::add_dependency): Drop is_implicit parm.  Return the
	depset.
	(trees_out::tree_decl): Set the implicit bit myself.
	(depset::hash::add_specializations): Preliminary tweak.

	gcc/cp/
	* pt.c (get_specializations): Adjust type template checking.
	(get_specializations_for_module): Get the type specializations
	too.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-4_[ab].C: New.

	gcc/cp/
	* module.cc (set_module_owner): Deal with specializations.
	* name-lookup.c (mark_pending_on_decl): Walk class members.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-3_[ab].C: New.

	gcc/cp/
	* parser.c (cp_parser_explicit_specialization): Correctl unwind state.
	* decl.c (grokfndecl): Set module ownership after specializationness
	is known.

	libcpp/
	* macro.c (_cpp_new_macro): memset before initing.

	gcc/cp/
	* module.cc (module_state::write_bindings): Iterate over sccs
	array, not hash table.
	(module_state::write): Adjust.

	libcpp/
	* macro.c (_cpp_new_macro): Initialize imported field.

	Merge trunk r270765.

2019-04-30  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (module_normal_import_p): Declare.
	* module.cc (module_normal_import_p): New.
	* name-lookup.c (note_pending_specializations): Note already
	loaded normal imports.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-2_d.C: New

	gcc/testsuite/
	* tpl-spec-2_[abc].C: New.

	Namespace-scope function specializations.
	gcc/cp/
	* cp-tree.h (MODULE_VECTOR_LAZY_{PARTITION,GLOBAL}_SPEC_P):
	Delete.
	* module.cc (struct specset): New.
	(module_for_unnamed): New.
	(lazy_load_specializations): New.
	(module_state::{read,write}_unnamed): Register the
	specializations.
	({init,finish}_module_processing): Adjust.
	* name-lookup.c (mark_pending_on_decl, mark_pending_on_binding):
	New.
	(set_module_binding): If pending, mark the new decls.
	(note_pending_specializations, note_loaded_specializations): New
	* name-lookup.h (note_pending_specializations)
	(note_loaded_specializations): Declare.
	gcc/testsuite/
	* g++.dg/modules/tpl-spec-1_[ab].C: New.

2019-04-29  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (MODULE_VECTOR_LAZY_SPEC_P)
	(MODULE_VECTOR_LAZY_GLOBAL_SPEC_P)
	(MODULE_VECTOR_LAZY_PARTITION_SPEC_P): New.
	* module.cc (struct unnamed_entity): New.
	(unnamed_ary): Array of unnamed_entity.
	(module_state::write_cluster): Return void.
	(module_state::{read,write}_unnamed): Deal with specializations.
	(module_State::{read,write}_specializations): Delete.
	(module_state::read_cluster): Adjust.
	(module_state_config): Drop specialization count.
	(module_state::{read,write}_config): Adjust.
	(module_state::{read,write}): Drop specialization streaming.

	Merge trunk r270644. (GCC 10)

	gcc/cp/
	* modules.cc (depset::hash::add_depednency): More STRIP_TEMPLATE.

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

	gcc/cp/
	* cp-tree.h (get_specializations_for_module): Declare.
	* module.cc (depset): Add DB_IMPLICIT_BIT,
	is_implicit_specialization.
	(depset::hash::add_dependency): Add is_implicit arg.  Allow NULL
	current.  Set is_imolicit_specialization.
	(module_state::write_specializations): Implement.
	(trees_out::tree_decl): Stream specializations.
	(specialization_cmp): New.
	(depset::hash::add_specializations): New.
	(module_state::write_cluster): Count specializations.
	(module_state::write): Add and stream specializations.
	* pt.c (spec_hash_table): New typedef.  Use it.
	(get_specializations): New.
	(get_specializations_for_module): New.

2019-04-24  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (DECL_TEMPLATE_LAZY_SPECIALIZATIONS_P): New.
	(lazy_load_specializations): Declare.
	* module.cc (module_state::{read,write}_specializations): New.
	(module_state::write_cluster) Return template count.
	(module_state_config): Add num_specializations.
	(module_state::{read,write}_config): Stream it.
	(module_state::{read,write}): Stream spcializizations.
	(lazy_load_specializations): New.
	* pt.c (lookup_template_class_1, instantiate_template_1): Lazy
	load specializations.

	Merge trunk r270543.

	Instantiations now streamed.
	gcc/cp/
	* module.cc (tree_tag): Delete tt_inst.
	(trees_out::tree_decl): All instantiations are depended.  Never
	tt_inst.
	(trees_in::tree_node): Delete tt_inst handling.
	(trees_in::tree_mergeable): Deal with type specializations.
	* pt.c (lookup_template_class_1): Set instatiation owner to
	current TU.
	(match_mergable): Accept type.
	gcc/testsuite/
	* g++.dg/modules/indirect-[234]_[bc].C: Adjust scans.
	* g++.dg/modules/inst-[34]_[bc].C: New.

2019-04-23  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (module_name): New overload.
	* module.cc (dumper::impl::nested_name): Adjust module dump.
	(module_name): New.
	* error.c (dump_module_suffix): Dump for namespace-scope decl.
	(dump_aggr_type): Dump module suffix.
	gcc/testsuite/
	* g++.dg/modules/adhoc-1_b.C: Adjust regexps.
	* g++.dg/modules/err-1_[cd].C: Likewise.
	* g++.dg/modules/macloc-1_[cd].C: Likewise
	* g++.dg/modules/by-name-1.C: Adjust scans.
	* g++.dg/modules/class-3_[bd].C: Likewise.
	* g++.dg/modules/enum-1_a.C: Likewise.
	* g++.dg/modules/global-[23]_a.C: Likewise.
	* g++.dg/modules/indirect-[1234]_[bc].C: Likewise.
	* g++.dg/modules/inst-[12]_[ab].C: Likewise.
	* g++.dg/modules/part-3_c.C: Likewise.
	* g++.dg/modules/scc-1.C: Likewise.
	* g++.dg/modules/stdio-1_a.H: Likewise.
	* g++.dg/modules/using-4_a.C: Likewise.
	* g++.dg/modules/vmort-2_[abc].C: Likewise.

	gcc/cp/
	* module.cc (trees_{in,out}::tree_mergeable): Stream more for
	specializations.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Don't stream template
	instantiations.
	(trees_{in,out}::tree_mergeable): Refactor.
	(module_state::prepare_locations): Fix dumper.

	gcc/cp/
	* Make-lang.in: Wedge revision number into REVISISON_s.

	Function instantiation merging
	gcc/cp/
	* cp-tree.h (get_module_owner): Add tpl_owner parm.
	(match_mergeable_specialization): New.
	* mangle.c (maybe_write_module): Look through template
	instantiations.
	* method.c (implicitly_declare_fn): Do not set owner here.
	* module.cc (trees_out::tree_decl): Namespace-scope function
	instantiations are merged.
	(trees_in::tree_node): Likewise.
	(trees_{in,out}::tree_mergeable): Allow instantiation merging.
	(depset::hash::add_dependency): Specializations are unnameable.
	(module_state::write_cluster): Seed specializations too.
	(module_state::read_define): Fix size_t/unsigned mismatch.
	(module_visible_instantiation_path): Use TYPE_STUB_DECL.
	(get_module_owner): Add inst_owner_p arg.  Look through
	instantiation, or don't.
	* pt.c (instantiate_template_1): Set module owner here.
	(instantiate_decl): ... not here.
	(match_mergeable_decl): New.
	gcc/testsuite/
	* lib/scanlang.exp (scan-lang-dump-times): New. Cut-paste fu!
	* g++.dg/modules/inst-[12]_[ab].C: New.
	* g++.dg/modules/adl-1_c.C: Comment.
	* g++.dg/modules/indirect[234]_[bc].C: Adjust.

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

	gcc/cp/
	* Make-lang.in (MODULE_REVISION): New.
	* module.cc (dumper::impl::nested_name): Print module number.
	(module_state::write_readme): Write revision.
	gcc/testsuite/
	* g++.dg/modules/by-name-1.C: Adjust scans.
	* g++.dg/modules/class-3_[bd].C: Likewise.
	* g++.dg/modules/enum-1_a.C: Likewise.
	* g++.dg/modules/global-[23]_a.C: Likewise.
	* g++.dg/modules/indirect-[1234]_[bc].C: Likewise.
	* g++.dg/modules/part-3_c.C: Likewise.
	* g++.dg/modules/scc-1.C: Likewise.
	* g++.dg/modules/stdio-1_a.H: Likewise.
	* g++.dg/modules/using-4_a.C: Likewise.
	* g++.dg/modules/vmort-2_[abc].C: Likewise.

	gcc/cp/
	* module.cc (dumper::impl::nested_name): Remove namespace owner
	fiddling.
	* name-lookup.c (make_namespace): Don't set owner.  Adjust callers.

	Ownership only on namespace-scope.
	gcc/cp/
	* module.cc (dumper::impl::nested_name): Show decl's ownership.
	(trees_out::tree_decl): Remove unnecessary unnameable code.
	(depset::hash::add_dependency): Add is_import parm.
	(module_state::write_clister): Get owner decl of unnamed.
	(get_module_owner): Always look at the namespace-scope entity.
	(set_module_owner): Only set namespace-scope entity.
	(set_implicit_module_owner): Likewise.
	gcc/testsuite/
	* g++.dg/modules/by-name-1.C: Adjust scans.
	* g++.dg/modules/class-3_[bd].C: Likewise.
	* g++.dg/modules/enum-1_a.C: Likewise.
	* g++.dg/modules/global-[23]_a.C: Likewise.
	* g++.dg/modules/indirect-[1234]_[bc].C: Likewise.
	* g++.dg/modules/part-3_c.C: Likewise.
	* g++.dg/modules/scc-1.C: Likewise.
	* g++.dg/modules/stdio-1_a.H: Likewise.
	* g++.dg/modules/using-4_a.C: Likewise.
	* g++.dg/modules/vmort-2_[abc].C: Likewise.

2019-04-11  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* mangle.c (decl_is_template_id): Rename to ...
	(maybe_template_info): ... here.  Simplify API.
	(mangle_return_type, write_encoding, write_name)
	(write_nested_name, write_prefix, write_template_prefix)
	(write_unqualified_name): Update all callers.

	gcc/cp/
	* module.cc (module_for_{ordinary,macro}_loc): New.
	(module_state::{read,write}_location): Deal with imported locations.

	gcc/cp/
	* module.cc (depset::entity_kind_name): Tweak.
	(trees_{in,out}::tree_mergeable): Frob context.
	* name-lookup.h (match_mergeable_decl): Pass context explicitly.
	* name-lookup.c (match_mergeable_decl): Pass context explicitly.
	gcc/testsuite/
	* g++.dg/modules/global-[23]_a.C: Adjust scans.
	* g++.dg/modules/stdio-1_a.H: Likewise.

	gcc/cp/
	* module.cc (loc_kind): New.
	(module_state::{read,write}_location): Use tagging, compress macro
	& adhoc better.

	gcc/cp/
	* module.cc (loc_spans): Main span is all but reserved.
	(slurping): Drop pre_early_ok.
	(loc_spans::init): Don't push command line and forced header
	spans.
	(loc_spans::macro): Fix comparison thinko.
	(module_state::read_location): No such thing as early.
	(module_state::prepare_locations): Drop command line and forced
	header handling.
	(maybe_add_macro): Ignore lazy macros.
	(canonicalize_header_name): Return the buffer.
	gcc/testsuite/
	* g++.dg/modules/macro-5_c.C: Adjust regexp.

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

	gcc/cp/
	* module.cc (module_preprocess): Module partitions always produce
	a BMI.
	gcc/testsuite/
	* g++.dg/modules/dep-2.C: New.

	gcc/cp/
	* module.cc (module_state::write_cluster): Remove unnecessary
	check & FIXME.

	gcc/cp/
	* module.cc (trees_out::depending_p): Delete.
	(trees_out::tree_decl): Refactor asserts.
	(module_state::write_cluster): Refactor initial scan.

	libcpp/
	* mkdeps.c (deps_add_module): Swap primary & module args.  Too
	confusing.
	gcc/cp/
	* module.cc (module_state::do_import, module_preprocess)
	(finish_module_processing): Adjust.

2019-04-09  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (slurping): Move {ordinary,macro}_locs to ..
	(module_state): ... here.
	(module_state::read_location): Adjust.
	(module_state::read_locations): Adjust, recorded locations are for
	current TU.

	gcc/cp/
	* module.cc (get_module): Add parent option, use it.
	(module_state::read_{imports,partitions}): Adjust.
	(finish_module_processing): Show full module name on error.
	gcc/testsuite/
	* g++.dg/modules/ben-1{_[ab].C,.map}: New.
	* g++.dg/modules/alias-1_f.C: Use [srcdir].
	* g++.dg/modules/gc-2_a.C: Likewise.
	* g++.dg/modules/inc-xlate-1_d.C: Likewise.
	* g++.dg/modules/legacy-6_[cdef].C: Likewise.
	* g++.dg/modules/map-1_[ab].C: Likewise.

	gcc/cp/
	* module.cc (depset::is_imported_entity): New.
	(module_for_unnamed): Delete.
	(depset::hash::add_dependency): Note imported dependencies.
	(module_state::{read,write}_cluster): Deal with imported unnamed.
	(module_state::write): Skip imported dependencies.
	gcc/testsuite/
	* g++.dg/modules/vmort-2_[abc].C: New.

	libcpp/
	* mkdeps (munge): Quote ':'.
	(deps_add_module): Correct partion/module order.
	(make_write): Add .c++m suffix to module name.
	gcc/testsuite/
	* g++.dg/modules/dep-1_[ab].C: New.

	libcpp/
	* mkdeps (mkrules::~mkrules): Use free appropriately.

	gcc/
	* doc/invoke.texi (C++ Module Mapper): Fix markup.

	gcc/cp/
	* cp-tree.h (language_function): Remove x_auto_return_pattern.
	(current_function_auto_return_pattern): Delete.
	(FNDECL_USED_AUTO): Correct documentation.
	* decl.c (save_function_data): Delete.
	(fndecl_declared_return_type): Don't look at language_function.
	(start_preparsed_function): Replace
	current_function_auto_return_pattern with
	DECL_SAVED_AUTO_RETURN_TYPE.
	(finish_function): Likewise.
	* mangle.c (write_unqualified_name): Likewise.
	* parser.c (cp_parser_jump_statement): Likewise.
	* typeck.c (check_return_expr): Likewise.

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

	gcc/cp/
	* module.cc (unnamed_ary, unnamed_map_t, unnamed_map): New.
	(struct slurping): Delete unnamed, alloc_unnamed, & deletion of
	same.
	(struct moduls_state): Add unnamed_lwm, unnamed_num.
	(module_for_unnamed): New.
	(dumper::impl::nested_name): More informative unnamedness.
	(module_state::read_cluster): Use the unnamed_ary.
	(module_state::read_unnamed): Populate unnamed_ary.
	({init,finish}_module_processing): Adjust.
	gcc/testsuite/
	* g++.dg/modules/indirect-4_[bc].C: Adjust scans.

	gcc/cp
	* cp-tree.h (struc mc_slot): Move to ...
	* name-lookup.h: ... here.
	* module.c (depset::hash::{add_mergeable,connect}): Use depsets
	not decls.
	(depset::tarjan::connect): Add for_mergeables parm.
	(tree_node::{mark,tree}_mergeable): Likewise.
	(module_state::sort_mergeables): Likewise,
	(module_state::{read,write}_bindings): Return/expect number of
	bindings.
	(module_state::write_macros): Return number of macros.
	(module_state::write_cluster): Adjust.
	(module_state::{read,write}_config): Adjust.
	(module_state::{read,write}): Adjust.

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

	gcc/cp/
	* module.cc (dumper): Add CLUSTER.
	(module_state::write): Dump cluster information.

	gcc/cp/
	* module.cc (node_template_info): Move earlier, protect from
	partial read in.
	(dumper::impl::nested_name): Dump template args.
	gcc/testsuite/
	* g++.dg/modules/indirect-[234]_[abc].C: Adjust scans.

	gcc/cp/
	* module.cc (module_state::write_cluster): Refactor.

	gcc/cp/
	* module.cc (cluster_tag): Remove ct_defn.
	(module_state::{read,write}_cluster): Definitions marked via flag.

	gcc/cp/
	* module.cc (depset::hash): Rename mergeables flag to mergeable_dep.

2019-04-02  Nathan Sidwell  <nathan@acm.org>

	Allow mapper protocol of file descriptors.
	gcc/
	* doc/invoke.texi (C++ Module Mapper): Document <> form.
	gcc/cp/
	* module.cc (module_mapper::module_mapper): Parse <> option.

	Write bmi /after/ deferred instantiations.
	gcc/cp/
	* cp-tree.h (finish_module_processing): Add cpp arg.
	(finish_module_parse): Delete.
	* name-lookup.h (lookup_by_type): Declare.
	* decl2.c (c_parse_final_cleanups): Adjust.
	* module.c (tree_tag): Add tt_builtin.
	(trees_out::tree_decl): Use tt_builtin for builtins.
	(trees_in::tree_node): Likewise.
	(finish_module_parse): Move processing into ...
	(finish_module_processing): ... here.
	* name-lookup.c (lookup_by_type): New.
	gcc/testsuite/
	* g++.dg/modules/builtin-1_[ab].C: New.

	gcc/cp/
	* module.cc (depset): Add EK_UNNAMED. Delete DB_IS_UNNAMED_BIT,
	is_unnamed accessor.
	(depset::hash::add_dependency): Add entity_kind arg, simplify
	logic.  Update callers.
	gcc/testsuite/
	* g++.dg/modules/using-4_a.C: Adjust scan.

2019-04-02  Ben Boeckel  <ben.boeckel@kitware.com>
	    Nathan Sidwell  <nathan@acm.org>

	libcpp/
	* mkdeps.c (mrules): Rename is_legacy to is_header_init, adjust uses.
	(deps_add_module): Correctly duplicate and use strings.

2019-04-02  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (depset::add_dependency): Drop maybe_using arg.
	Adjust callers.
	(dumper::operator()): Overloads have a name.
	(has_definition): Adjust.

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

	gcc/cp/
	* module.cc (depset): Move flags into discriminator field.  Adjust uses.

	gcc/cp/
	* module.cc (depset): Replace key wih entity/discriminator tuple.
	Add entity_kind and disc_bits enums.  Adjust hashing &
	construction routines.

	gcc/cp/
	* module.cc (depset): Entity keying uses unique entity.  Set
	entity kind later.
	(depset::hash): Adjust hashing.
	(depset::hash::add_dependency): Set kind after insertion.
	(depset::hash::add_mergeable): Adjust.
	gcc/
	* doc/invoke.texi: Fix module mapper thinko.

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

	gcc/cp/
	* cp-tree.h (saved_scope): Remove this_module field.
	(current_module): Delete.
	(module_import_bitmap): Rename to ...
	(get_import_bitmap): ... here.  Lose arg.
	* module.cc (module_import_bitmap): Rename to ...
	(get_import_bitmap): ... here.  Lose arg.
	* name-lookup.c (name_lookup::search_namespace_only): Adjust.
	(check_module_override, finish_nonmember_using_decl): Likewise.
	(do_push_to_top_level): Drop this_module field init.

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

	gcc/cp/
	* pt.c: Comment some structures.

	gcc/
	* doc/invoke.texi (C++ Modules): Update.

	Merge trunk r269975.

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

	Header unit compilations retrofit includeness.
	gcc/cp/
	* cxx-mapper.c (module2bmi): Don't use PCH suffix.
	* module.cc (module_header_macro, controlling_node): Delete.
	(module_state::write_macros): Rely on cpp to determine controlling
	macro.
	(module_state::{write,read}): Likewise.
	(module_begin_main_file): Retrofit as a header.
	(finish_module_parse): Delete header_macro stuff.
	libcpp/
	* files.c (_cpp_stack_file): Set main_file.
	(_cpp_find_header_unit): Close the file.
	(cpp_retrofit_as_include): New.
	(cpp_main_controlling_macro): New.
	* include/cpplib.h (cpp_retrofit_as_include): Declare.
	(cpp_main_controlling_macro): Declare.
	* internal.h (struct cpp_buffer): Add main_file flag.
	(cpp_in_primary_file): Use it.
	gcc/testsuite/
	* g++.dg/modules/{,sys/}inext-1.H: New.
	* g++.dg/modules/macro-[23]_[abc].[CH]: Adjust.
	* g++.dg/modules/modules.exp (dg-module-bmi): Adjust.
	* g++.dg/modules/stdio-1_a.H: Asjust.

	Expunge header name quoting in mapper
	gcc/cp/
	* cxx-mapper.cc (IS_HEADER_NAME): New.
	(module2bmi): Adjust.
	* module.cc (module_mapper::imex_query): Drop quotes.
	(module_mapper::translate_include): Likewise.
	gcc/testsuite/
	* g++.dg/modules/modules.exp (dg-module-bmi): Adjust mapping.

	Header unit names lack quotes
	gcc/c-family/
	* c.opt (fmodule-header): Set a var.
	* cp-tree.h (module_map_header): Pass string as ptr/len tuple.
	* lex.c (module_map_header): Move to module.cc.
	(module_process_token): Remove gratuitous representation frobbing.
	* module.cc (module_state::module_state): Assert no quotes.
	(module_header_name): Delete.
	(get_module): Detect header via pathism.
	(module_mapper::imex_query): Add quotes.
	(module_mapper::translate_include): Drop reader parms, don't push
	buffer here.
	(canonicalize_header_name): New, from lex.c.
	(module_map_header): Wrapper for canonicalize_header_name.
	(module_translate_include): Do buffer pushing here.  Canonicalize
	name.
	(set_module_header_name): Delete.
	(module_begin_main_file): Simplify header name setting.
	(handle_module_option): Adjust header name flag setting.
	* parser.c (cp_lexer_tokenize): Adjust header name mapping.
	libcpp/
	* lex.c (cpp_output_token): Add quotes back onto CPP_HEADER_NAME.
	gcc/testsuite/
	* g++.dg/modules/alias-3_[bc].C: Adjust.
	* g++.dg/modules/leg-merge-4_c.C: Adjust.
	* g++.dg/modules/macro-[2456]_[bcde].C: Adjust.
	* g++.dg/modules/stdio-1_b.C: : Adjust.
	* g++.dg/modules/sys: Add.

	Header unit names are strings
	gcc/cp/
	* lex.c (module_map_header): Build string_cst.
	(module_preprocess_token): Adjust.
	* module.cc (module_state::module_state): Header names are
	strings.
	(module_name_hash): New.
	(module_state_hash::{hash,equal}): Adjust.
	(dumper::impl::nested_name): Fix string_cst.
	(get_module): Tweak.
	(module_state::set_flatname): Tweak.
	(module_begin_main_file): Build string.

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

	gcc/c-family/
	* c-opts.c (c_common_post_options): Invert sense of
	cpp_read_main_file arg.
	* parser.c (cp_parser_translation_unit): Reject include
	translation in module purview.
	libcpp/
	* files.c (_cpp_stack_file): Take include type parm.  Drop line
	parm. Do line-table adjusting here ...
	(_cpp_stack_include): ... not here.
	* include/cpplib.h (cpp_read_main_file): Invert final parm.
	* init.c (cpp_read_main_file): Adjust.
	* internal.h (include_type): Add more enumerations, and document.
	(_cpp_stack_file): Adjust prototype.
	gcc/testsuite/
	* g++.dg/modules/alias-2_[ab].[CH]: New.
	* g++.dg/modules/exp-xlate-1_[ab].[CH]: New.
	* g++.dg/modules/legacy-3_c.H: Robustify testing.

	Header units disambiguated by originating header path
	libcpp/
	gcc/
	* doc/invoke.texi (-fmodule-header): Adjust.
	* langhooks.h (struct lang_hooks): Adjust preprocess hook.
	gcc/cp/
	* cp-tree.h (module_preprocess_token): Adjust.
	(module_map_header): Declare.
	(module_translate_include): Adjust.
	* cxx-mapper.cc (module2bmi): Header units map to relative path.
	(client::action): Look for header bmi.
	* lex.c (module_map_header): New.
	(module_preprocess_token): Remap header unit names.
	* module.cc (create_dirs): Fix.
	(module_mapper::translate_include): Adjust.
	(module_translate_include): Likewise.
	(finish_module_parse): Fix directory creation.
	(handle_module_option): Remove fmodule-header=FOO handling.
	* parser.c (cp_lexer_tokenize): Remap header unit names.
	gcc/c-family/
	* c-lex.c (c_lex_with_flags): Build a string for header names.
	* c-ppoutput.c (scan_translation_unit): Allow preprocess hook to
	nadger token.
	* c.opt (fmodule-header=): Deprecate.
	libcpp/
	* directives.c (do_include_common): Move include translation to ...
	* files.c (_cpp_file): Add header_unit field.
	(should_stack_file): Break into ...
	(is_known_idempotent_file): ... this, and ...
	(has_unique_contents): ... this.
	(_cpp_stack_file): ... do include translation.
	(cpp_find_header_unit): New.
	* include/cpplib.h (cpp_callbacks): Adjust translate_include hook.
	(cpp_find_header_unit): Declare.
	gcc/testsuite/
	* g++.dg/modules/: Many changes.

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

	libcpp/
	* files.c (struct _cpp_file): Make bools bitfields, add
	header_unit flag.
	(_cpp_find_file): Don't write for (; !fake;) to mean if (!fake)
	for (;;).
	(_cpp_stack_file): Refactor.

	Merge trunk r269839.

	gcc/
	* gcc.c (execute): Use . not (.).
	* params.def (PARAM_LAZY_MODULES): Add trailing .
	gcc/testsuite/
	* lib/prune.exp (prune_gcc_output): Adjust collect regexp.

	gcc/
	* gcc.c (execute): Frob argv[0] to show spawning from driver.
	(process_command): Don't check input file exists here.

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

	gcc/cp/
	* module.cc (trees_out::mark_class_def): Skip friends in decl_list.

	gcc/cp/
	* module.cc (module_state::read_namespaces): Module-linkage
	namespaces are visible in the module itself.
	* name-lookup.h (add_imported_namespace): Rename parm.
	* name-lookup.c (add_imported_namespace): Export_p becomes visible_p.
	gcc/testsuite/
	* g++.dg/modules/enum-3_[ab].C: New.

	Enum members of templates part 2.
	gcc/cp/
	* module.cc (trees_out::tree_node): Any enum can be tt_enum_int.
	(trees_out::mark_enum_def): Only mark integer_cst inits.
	gcc/testsuite/
	* g++.dg/modues/enum-2_[ab].C: Add.

	Enum members of templates part 1.
	gcc/cp/
	* class.c (maybe_add_class_template_decl): No need to add
	CONST_DECLs.
	* pt.c (instantiate_class_template_1): CONST_DECLs are not on the
	template decl list no more.
	* module.cc (node_template_info): Cope with enum members of
	templates.
	(trees_in::insert): Allow null when failing.
	(trees_{in,out}::core_vals): Uninstantiated enums have no
	underlying type.
	(trees_out::tree_decl): Enums can be members too.
	(trees_out::write_class_def): Only announce when streaming.
	(trees_out::mark_class_def): Don't mark const_decl fields.
	(trees_out::mark_enum_def): Always mark the enum here.
	gcc/testsuite.
	* g++.dg/modules/enum-2_[ab].C: New.

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

	gcc/cp/
	* module.cc (depset::hash::find_dependencies): It might be a fixed
	tree.
	gcc/testsuite/
	* g++.dg/modules/stdns_[ab].C: New.

	Using decls part 3.
	gcc/cp/
	* cp-tree.h (ovl_iterator::exporting_p): Simplify.
	* name-lookup.c (do_nonmember_using_decl): Upgrade export in place.
	gcc/testsuite/
	* g++.dg/modules/using-4_[ab].C: New.

	gcc/testsuite/
	* g++.dg/modules/using-3.C: New.

	Using decls part 2.
	gcc/cp/
	* cp-tree.h (OVL_EXPORT_P): New.
	(ovl_iterator::exporting_p): New.
	(ovl_insert): Change using_p arg type.
	* tree.c (ovl_insert): USINGNESS parm conveys exporting too.
	* name-lookup.c (do_nonmember_using_decl): Deal with exports.
	* module.cc (binding_cmp): Sort usings too.
	(module_state::{read,write}_cluster): Using decls too.
	gcc/testsuite/
	* g++.dg/modules/using-2_[abc].C: New.

	gcc/cp/
	* name-lookup.c (do_nonmember_using_decl): Cleanups.
	(finish_nonmember_using_decl): Likewise.

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

	Using decls part 1.
	gcc/cp/
	* name-lookup.c (do_nonmember_using_decl): Unnest if.
	(finish_nonmember_using_decl): Deal with module vector.
	gcc/testsuite/
	* g++.dg/modules/global-3_[ab].C: New.

	gcc/cp/
	* module.cc (module_state::{read,write}_locations): Cope with
	trailing empty expansions.

	gcc/cp/
	* module.cc (module_state::{read,write}_locations): Macro maps can
	have embedded zeroes.

	gcc/cp/
	* name-lookup.c (do_nonmember_using_decl): Add install & fn_scope
	args.
	(finish_nonmember_using_decl): Adjust, prep for modules.
	gcc/testsuite/
	* g++.dg/lookup/using53.C: Restore & extend DR36 errors.

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

	gcc/cp/
	* name-lookup.c (do_nonmember_using_decl): Have lookup passed in.
	(validate_nonmember_using_decl): Delete.  Absorb
	into ...
	(finish_nonmember_using_decl): ... here.  Do lookup once.
	lookup_enum_member): New.  Broken out of ...
	(get_binding_or_decl): ... here.  Call it.
	(finish_nonmember_using_decl): Drop LOOKUP parm. Do lookup here.
	gcc/testsuite/
	* g++.dg/cpp0x/using-enum-2.C: Adjust diagnostics.
	* g++.dg/cpp0x/using-enum-3.C: Likewise.
	* g++.dg/lookup/hidden-class9.C: Likewise.
	* g++.dg/lookup/hidden-temp-class11.C: Likewise.
	libstdc++-v3/
	* testsuite/18_support/byte/global_neg.cc: Adjust diagnostics.
	* testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc: Likewise.
	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
	* testsuite/27_io/headers/cstdio/functions_neg.cc: Likewise.
	* testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Likewise.
	* testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: Likewise.

	gcc/cp/
	* name-lookup.h	(finish_nonmember_using_decl): Drop LOOKUP parm.
	* name-lookup.c (lookup_enum_member): New.  Broken out of ...
	(get_binding_or_decl): ... here.  Call it.
	(finish_nonmember_using_decl): Drop LOOKUP parm. Do lookup here.
	* parser.c (cp_parser_using_declaration): Adjust.
	* pt.c (tsubst_expr): Likewise.
	gcc/testsuite/
	* g++.dg/lookup/hidden-class9.C: Adjust diagnostics.
	* g++.dg/lookup/hidden-temp-class11.C: Likewise.
	libcc1/
	* libcp1plugin.cc (plugin_add_using_decl): Adjust
	finish_nonmember_using_decl call.
	libstdc++-v3/
	* testsuite/18_support/byte/global_neg.cc: Adjust diagnostics.
	* testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc: Likewise.
	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
	* testsuite/27_io/headers/cstdio/functions_neg.cc: Likewise.
	* testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Likewise.
	* testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: Likewise.

	Merge using directive fields & fns.
	gcc/cp/
	* cp-tree.h (lang_decl_ns): Drop usings field.
	(DECL_NAMESPACE_USING): Delete.
	* name-lookup.h (finish_using_directive): Declare.
	(finish_namespace_using_directive)
	(finish_local_using_directive): Delete.
	* name-lookup.c (name_lookup::search_usings)
	(name_lookup::queue_namespace): Adjust.
	(has_using_namespace_std_directive_p): No need to search
	namespaces separately.
	(finish_using_directive): New.  Merged from ...
	(finish_namespace_using_directive, finish_local_using_directive): ...
	here.  Delete.
	(push_namespace): Adjust.
	* parser.c (cp_parser_using_directive): Call finish_using_directive.
	* pt.c (tsubst_expr): Likewise,
	libcc1/
	* libcp1plugin.cc (plugin_add_using_namespace): Call
	finish_using_directive.

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

	Merge finish using decl fns
	gcc/cp/
	* name-lookup.c (finish_nonmember_using_decl): New, merged from ...
	(finish_namespace_using_decl, finish_local_using_decl): ... here.
	Delete.
	* name-lookup.h (finish_nonmember_using_decl): Declare
	(finish_namespace_using_decl, finish_local_using_decl): Delete.
	* parser.c (cp_parser_using_declaration): Adjust.
	* pt.c (tsubst_expr): Likewise.
	libcc1/
	* libcp1plugin.cc (plugin_add_using_decl): Likewise.

	Drop cp_binding_level::usings
	gcc/cp/
	* name-lookup.h (cp_binding_level): Remove usings field.
	* name-lookup.c (push_using_decl, push_using_decl_1): Delete.
	(validate_nonmember_using_decl): Make using decl here.

	gcc/cp/
	* name-lookup.c (validate_nonmember_using_decl): Drop DR 36 case.
	gcc/testsuite/
	* g++.dg/lookup/using53.C: Permit DR 36 case.

	Merge trunk r269682.

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

	Start doing something with using decls
	gcc/cp/
	* cp-tree.h (ovl_iterator): Add get_using accessor.
	* module.cc (depset::is_using): New.
	(depset::hash::add_dependency): Add maybe_using parm.  Use it.
	(depset::hash::add_binding): Deal with using decls.
	(depset::hash::find_dependencies): Likewise.
	(cluster_cmp): Likewise.
	(module_state::{read,write}_cluster): Likewise.
	gcc/testsuite/
	* g++.dg/modules/using-1_[abc].C: New.

	stdio.h can be a legacy unit!
	gcc/testsuite/
	* g++.dg/modules/stdio-1_[ab].[CH]: New.
	* g++.dg/modules/global-2_[ab].C: New.

	typedef struct {} foo; part 2
	gcc/cp/
	* module.cc (tt_anon_decl): New.
	(trees_out::tree_decl): Deal with anonymous decls.
	(trees_out::tree_type): Use TYPE_STUB_DECL.
	(trees_in::tree_node): Deal with tt_anon_decl.
	* name-lookup.c (get_lookup_ident): Assert not anonymous.
	gcc/testsuite/
	* g++.dg/modules/tdef-3_[ab].C: Extend.
	* g++.dg/modules/tdef-3_c.C: New.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Refactor named decl streaming.
	(trees_in::tree_node): Remove as_base special casing.
	* name-lookup.c (lookup_by_ident, get_lookup_ident): Handle
	as_base here.

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

	gcc/cp/
	* module.cc (trees_out::tree_node): Refactor.
	(module_state::write_cluster): Prefer non-anonymous name.

	typedef struct {} foo; part 1
	gcc/cp/
	* module.cc (trees_out::tree_value): Cope with name-for-linkage.
	(trees_out::write_class_def): Likewise.
	(depset::hash::add_dependency): Likewise.
	gcc/testsuite/
	* g++.dg/modules/tdef-3_[ab].C: New.

	gcc/cp/
	* decl.c (fndecl_declared_return_type): Remove BMI FIXME.
	* module.cc (trees_{in,out}::lang_decl_vals): Stream
	saved_auto_return_type.

	gcc/cp/
	* tree.c (ovl_splice): Delete.

	Kill DECL_SAVED_FUNCTION_DATA part 1
	gcc/cp/
	* cp-tree.h (lang_decl_fn): Replace saved_language_function with
	saved_auto_return type.
	(DECL_SAVED_FUNCTION_DATA): Delete.
	(DECL_SAVED_AUTO_RETURN_TYPE): New.
	* decl.c (duplicate_decls, start_preparsed_function): Adjust.
	(save_function_data): Only save auto return type.
	(finish_function): Drop DECL_SAVED_FUNCTION_DATA member zapping.
	(fndecl_declared_return_type): Adjust.
	* method.c (make_thunk, make_alias_for): Adjust.

	gcc/cp/
	* module.cc (writable_cmp): New.
	(depset::hash::add_writables): Sort the hash before inserting.

	gcc/cp/
	* decl.c (fndecl_declared_return_type): Extend BMI hack.
	* module.cc (tt_anon_id, tt_lambda_id): New.
	(trees_{in,out}::tree_node): Stream them.
	gcc/
	* tree.c (make_anon_name): Drop format #.

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

	Anon entities never placed in symbol tables.
	gcc/cp/
	* module.cc (depset::hash::add_binding): Assert not anonymous.
	* name-lookup.c (pop_local_binding): Popping anonymous is a NOP.
	(do_pushdecl): Pushing anonymous doesn't push to symbol table.
	gcc/testsuite/
	* g++.dg/other/pr28114.C: Adjust errors.

	gcc/
	* tree.h (make_anon_name): Drop optional parm.
	* tree.c (make_anon_name): Drop 'extra' parm.
	gcc/cp/
	* cp-tree.h (TYPE_LAMBDA_P): New, require a type.
	(LAMBDA_TYPE_P): Refactor.
	(TYPE_ANON_P): New.
	(TYPE_UNNAMED_P): Use it, reject lambdas.
	* class.c (add_implicitly_declared_members): Replace LAMDBA_TYPE_P
	with TYPE_LAMBDA_P.
	(finalize_literal_type_property, explain_non_literal_class)
	(check_bases_and_members, finish_struct)
	(current_nonlambda_class_type, maybe_note_name_used_in_class): Likewise.
	* constexpr.c (check_constexpr_bind_expr_vars): Likewise.
	* decl.c (cp_finith_decomp, grokdeclarator): Likewise.
	* lambda.c (begin_lambda_type): Don't clear IDENTIFIER_ANON_P.
	(lambda_function): Replace LAMBDA_TYPE_P with TYPE_LAMBDA_P.
	(current_lambda_expr, resolvable_dummy_lambda)
	(nonlambda_method_basetype): Likewise.
	* mangle.c (decl_mandling_context, write_unqualified_name): Likewise.
	(write_local_name): Simplify anon check.
	* method.c (synthesized_method_walk): Replace LAMBDA_TYPE_P with
	TYPE_LAMBDA_P.
	(maybe_explain_explicit_delete): Likewise.
	* parser.c (cp_parser_simple_type_specifier)
	(cp_parser_parameter_declaration_clause)
	(cp_parser_parameter_declaration)
	(synthesize_immplicit_template_parm): Likewise.
	* pt.c (template_class_depth, check_for_bare_parameter_packes)
	(push_templated_decl_real, lookup_template_class_1)
	(instantiate_class_template_1, tsubst_expr)
	(tsubst_copy_and_build): Likewise.
	* semantics.c (finish_this_expr, finish_member_declaration): Likewise.
	* error.c (dump_aggr_type): Check for lambda before anonymous.
	* cp-lang.c (cxx_dwarf_name): Treat all anonymous names anonymously.

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

	gcc/cp/
	* name-lookup.h (extract_module_binding): Return binding, not name.
	* name-lookup.c (extract_module_binding): Return binding, not name.
	* module.cc (depset::set_binding_name): New.
	(depset::hash::add_binding): Drop name parm, check anon names
	here.
	(depset::hash::add_writables): Adjust extract_module_binding use.

	gcc/cp/
	* cp-tree.h (ovl_sort): Delete.
	* name-lookup.h (extract_module_binding): Drop type_r parm.
	* module.cc (depset::hash::add_binding): Drop type parm.
	(depset::hash::add_writables): Adjust extract_module_binding API.
	* name-lookup.c (extract_module_binding): Return name, valye by
	reference.  Don't sort.
	* tree.c (ovl_sort): Delete.

	Base lambda names off anonymous names.
	gcc/cp/
	* cp-tree.h (IDENTIFIER_LAMBDA_P): New.
	(LAMBDA_TyPE_P): Key off name.
	(TYPE_UNNAMED_P): Simplify.
	(LAMBDANAME_PREFIX, LAMBDANAME_FORMAT): Delete.
	(make_lambda_name): Delete.
	* lambda.c (begin_lambda_type): Use make_anon_name.
	* name-lookup.c (lambda_cnt, make_lambda_name): Delete.

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

	Commonize anonymous name generation.
	gcc/
	* tree.h (IDENTIFIER_ANON_P): New.
	(anon_aggrname_p, anon_aggrname_format): Delete.
	(make_anon_name): Declare.
	* tree.c (anon_aggrname_p, anon_aggrname_format): Delete.
	(make_anon_name): New.
	* lto-streamer-out.c (DFS::DFS_write_tree_body): Use IDENTIFIER_ANON_P.
	(hash_tree): Likewise.
	* tree-streamer-out.c (write_ts_decl_minimal_tree_pointers): Likewise.
	gcc/cp/
	* cp-tree.h (TYPE_UNNAMED_P): Use IDENTIFIER_ANON_P.
	(make_anon_name): Delete.
	* class.c (find_flexarrays): Use IDENTIFIER_ANON_P.
	* cp-lang.c (cxx_dwarf_name): Likewise.
	* decl.c (name_unnamed_type, xref_tag_1): Likewise.
	* error.c (dump_aggr_type): Likewise.
	* name-lookup.c (anon_cnt, make_anon_name): Delete.
	(consider_binding_level): Use IDENTIFIER_ANON_P.
	* pt.c (push_template_decl_real): Likewise.
	gcc/d/
	* types.cc (fixup_anonymous_offset): Use IDENTIFIER_ANON_P.
	(layout_aggregate_members): Use make_anon_name.

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

	Refactor all the things!
	gcc/cp/
	* module.cc: Tighten up access.

	Refactor.
	gcc/cp/
	* module.cc (module_state): Reorder member fn definitions.

	Refactor.
	gcc/cp/
	* module.cc (module_state::is_matching_decl): Moved to ...
	(trees_in::is_matching_decl): ... here.
	(trees_{in,out}::{mark,write,read}_*): Move earlier.

	Refactor.
	gcc/cp/
	* module.cc (module_state::read_definition): Moved to ...
	(trees_in::read_definition): ... here.
	(module_state::is_skippable_defn): Move to ...
	(trees_in::is_skippable_defn): ... here.
	(module_state::read_{function,var,class,enum}_def): Move to ...
	(trees_in::read_{function,var,class,enum}_def): ... here.
	(module_state::read_binfos): Move to ...
	(trees_in::read_binfos): ... here.

	Refactor.
	gcc/cp/
	* module.cc (module_state::{write,mark}_definition): Move to ...
	(trees_out::{write,mark}_definition): ... here.
	(module_state::{write,mark}_{function,var,class,enum}_def): Move to ...
	(trees_out::{write,mark}_{function,var,class,enum}_def): ... here.
	(module_state::write_binfos): Move to ...
	(trees_out::write_binfos): ... here.
	(depset::hash::find_dependencies): Drop module_state parm.

	Refactor.
	gcc/cp/
	* module.cc (module_state::{add_writables,find_dependencies}): Move
	to ...
	(depset::hash::{add_writables,find_dependencies}): ... here.
	(depset::hash::get_work): Delete.

	GMF pruning, Part 2
	gcc/cp/
	* module.cc (depset::hash): Rename flags fields.
	(trees_out::tree_decl): Self references by dependency binding.
	(depset::hash::add_dependency): Fix thinko.
	(binding_cmp): New.
	(depset::hash::finalize_dependencies): New.
	(module_state::write): Adjust.
	* name-lookup.c (extract_module_binding): The FIXMEs have become
	irrelevant.
	(get_binding_or_decl): Only imports for namespaces.
	gcc/testsuite/
	* g++.dg/modules/internal-1.C: Prune output.
	* g++.dg/modules/mod-sym-2.C: Check GMF not discarded.

	gcc/cp/
	* module.cc (trees_out::trees_out): Add depset::hash parm.
	(trees_out::depending_p): Invert streaming_p.
	(module_state::write_cluster): Add depset::hash parm, adjust.
	(trees_out::begin): Single ctor for both uses.
	(trees_out::end): Don't clear dep_hash.
	(module_state::find_dependencies): Adjust.
	(module_state::write): Adjust.

	Linkage promotion ban
	GMF pruning, Part 1
	gcc/cp/
	* module.cc (depset::is_internal): New field.
	(depset::hash): Add gmfs, & internals fields.
	(depset::hash::add_dependency): Deal with gmf & internal.
	(depset::hash::add_binding): Ignore GMF & internals here.
	(module_state::write): Errors for referenced internals.
	* name-lookup.c (get_binding_or_decl): Get globals.
	gcc/testsuite/
	* g++.dg/modules/internal-1.C: New.
	* g++.dg/modules/namespace-[34]_[abc].C: Adjust.

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

	gcc/cp/
	* module.cc (depset::hash::add_binding): Ignore internal-linkage
	entities.
	(module_state::add_writables): Don't walk anonymous namespaces.
	gcc/testsuite/
	* g++.dg/modules/unnamed-1_a.C: Adjust scan.
	* g++.dg/modules/unnamed-2.C: Adjust scan.

	gcc/cp/
	* module.cc (depset::add_dependency): Drop kind arg, return void.
	(depset::hash::add_binding): Set current during addition.
	(module_state::add_writables): Tweak.

	gcc/cp/
	* module.cc (depset): Add refs_internal field.  Replace decl_key
	and defn_key with entity_key. Remove is_decl, add is_namespace.
	Replace get_decl with get_entity.

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

	Merge trunk r269375.

	GMF content locations
	gcc/cp/
	* parser.h (cp_token): Remove C compatibility macros. Add
	main_source_p field.
	* parser.c (cp_lexer_get_preprocessor_token): Set main_source_p
	field.
	(cp_lexer_before_phase_4): Rename to ...
	(cp_lexer_not_macro): ... here.  Drop main-file check.
	(cp_parser_translation_unit): Emit main-file errors.
	(cp_parser_{module,import}_declaration): Adjust.
	gcc/testsuite/
	* g++.dg/modules/global-1_a.C: Adjust.
	* g++.dg/modules/mod-decl-3.C: Adjust.
	* g++.dg/modules/mod-decl-5_b.C: Adjust.
	* g++.dg/modules/mod-exp-1_b.C: Adjust.
	* g++.dg/modules/mod-sym-2.C: Adjust.
	* g++.dg/modules/namespace-2_a.C: Adjust.
	* g++.dg/modules/static-1_a.C: Adjust.
	* g++.dg/modules/token-1.C: Adjust.
	* g++.dg/modules/token-2_b.C: Adjust.
	* g++.dg/modules/token-3.C: Adjust.
	* g++.dg/modules/token-4.C: Adjust.
	* g++.dg/modules/token-5.C: New.

	New # semantics for popping to "" name.
	libcpp/
	* directives.c (do_linemarker): Popping to "" name means fill in
	the name.
	gcc/testsuite/
	* c-c++-common/cpp/line-1.c: New.

	Cleanups.
	libcpp/
	* include/cpplib.h (struct cpp_hashnode): Drop C compatibility
	macros.  Correct bit calculation.
	* include/line-map.h: Formatting.
	* line-map.c (get_pure_location): Formatting.

	gcc/cp/
	* module.cc (declare_module): Deal with de-GMFing here, get name
	of implicit header module.
	* parser.c (enum module_preamble): New enum.
	(cp_parser_translation_unit):  Use it.
	(cp_parser_{module,import}_declaration): Use it.
	gcc/testsuite/
	* g++.dg/modules/p0713-3.C: Adjust diags.

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

	Merge trunk r269321.

	Merge trunk r269078 (metadata update).

	Apply trunk r269078.
	gcc/cp/
	* module.cc (module_state::{read,write}_function_def): Adjust.

	gcc/cp/
	* cp-tree.h (struct constexpr_fundef): Moved from constexpr.c.
	(register_constexpr_fundef): Adjust.
	(find_constexpr_fundef): Replace with ...
	(retrieve_constexpr_fundef): ... this.
	* constexpr.c (struct constexpr_fundef): Moved to cp-tree.h
	(constexpr_fundef_hasher): Constify.
	(retrieve_constexpr_fundef): Make extern.
	(find_constexpr_fundef): Delete.
	(check_constexpr_fundef): Adjust.
	(register_constexpr_fundef): Adjust API.
	* module.cc (module_state::{read,write}_function_def): Adjust.

	Merge trunk r269077.

	gcc/cp/
	* parser.c (cp_lexer_set_source_position_from_token): Revert.

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

	module & import-semi lexing rules
	gcc/cp/
	* parser.c (cp_lexer_tokenize): Fix EOF push.
	(cp_lexer_before_phase_4): New.
	(cp_lexer_set_source_position_from_token): Simplify.
	(cp_parser_{module,import}_declaration): Check phase-4 requirements.
	gcc/testsuite/
	* g++.dg/modules/class-2_a.C: Do not #include
	* g++.dg/modules/token-[123]*.C: New.

	Remove eof_token
	gcc/cp/
	* parser.h (cp_token): Add tree_check_p, adjust GTY tagging.
	(cp_lexer): Add saved_type, saved_keyword fields.
	* parser.c (eof_token): Delete.
	(cp_lexer_new_from_tokens): Overwrite EOF here.
	(cp_lexer_destroy): Restore overwritten token here.
	(cp_lexer_token_position, cp_lexer_previous_token_position): Simplify.
	(cp_lexer_tokenize): Likewise.
	(cp_lexer_peek_nth_token, cp_lexer_consume_token): Likewise.
	(cp_lexer_purge_token, cp_lexer_purge_tokens_after): Likewise.
	(cp_parser_nested_name_specifier, cp_parser_decltype)
	(cp_parser_template_id): Set tree_check_p.

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

	__import in extern "C"
	gcc/cp/
	* parser.c (cp_lexer_tokenize): Add extern_c_depth arg, tokenize
	through extern "C".
	(cp_parser_translation_unit): Handle top-level extern "C".
	(cp_parser_module_name): Force header unit.
	(cp_parser_{module,import}_declaration): Adjust.
	gcc/testsuite/
	* g++.dg/modules/inc-xlate-1_[cd].C: New.

	gcc/cp/
	* cp-tree.h (import_module): Return bool.
	* module.cc (import_module): Return is_header flag.
	* parser.c (cp_parser_tokenize): Rename to ...
	(cp_lexer_tokenize): ... this.  Reimplement.
	(cp_parser_import_declaration): Return is_header flag.
	(cp_parser_translation_unit): Adjust lexer tokenization interaction.

2019-02-26  Nathan Sidwell  <nathan@acm.org>

	Flag_modules is strictly boolean.
	gcc/c-family/
	* c.opt (fmodules-ts): Allow negation.
	gcc/cp/
	* decl.c (duplicate_decls): Use modules_p.
	* lex.c (module_preprocess_token): Use modules_p.
	* parser.c (cp_parser_diagnose_invalid_type)
	(cp_parser_translation_unit, cp_parser_tokenize): Likewise.
	* module.cc (module_begin_main_file): Likewise.
	(handle_module_option): Adjust.
	gcc/
	* doc/invoke.texi (fmodules-ts): Adjust.

	Preprocess __import.
	gcc/cp/
	* cp-tree.h (import_module): Add extern C flag.
	* lex.c (module_preprocess_token): Allow __import in extern-c
	* module.c (import_module): Add extern C flag.
	* parser.c (cp_parser_import_declaration): Adjust.
	gcc/testsuite/
	* g++.dg/modules/inc-xlate-1{.map,_[ab].H}: New.

	Distinguished __import spelling.
	gcc/c-family/
	* c-common.c (c_common_reswords): Add __import spelling.
	gcc/cp/
	* module.cc (module_mapper::translate_include): Use __import.
	gcc/testsuite/
	* g++.dg/modules/legacy-[3456]*: Adjust.
	* g++.dg/modules/map-2.C: Likewise.

	Fix preprocessor tokenizing rules.
	gcc/cp/
	* lex.c (module_preprocess_token): Detect extern "C" {, tokenize
	trailing attributes before importing header unit.
	gcc/testsuite/
	* g++.dg/modules/cpp-2_[abc].[CH]: Extend testing.

	Fix interface partition export rules.
	gcc/cp/
	* module.cc (module_state::read_imports): Don't check partition
	import/export here ...
	(module_state::direct_import): ... or here ...
	(module_state::write): ... but do it here.
	gcc/testsuite/
	* g++.dg/modules/part-2_[cd].C: Adjust.
	* g++.dg/modules/part-2_e.C: New.

2019-02-22  Nathan Sidwell  <nathan@acm.org>

	gcc/
	* doc/invoke.texi: Update modules documentation.

	libcpp/
	* mkdeps.h (deps_write): Add phony arg.
	(deps_phony_targets): Delete.
	* init.c (cpp_finish): Adjust deps_write call.
	* mkdeps.c (mrules): Add quote_lwm member.
	(munge): Just return static buffer.
	(deps_add_target, deps_add_dep, deps_add_module): Store unmunged.
	(write_name): Rename ...
	(make_write_name): ... here.  Maybe munge here.
	(write_vec, deps_write): Rename to ...
	(make_write_vec, make_write): ... here.  Adjust.
	(deps_write): New wrapper.

	gcc/cp/
	* cp-tree.h (init_module_processing): Add arg.
	* decl.c (cxx_init_decl_processing): Adjust.
	* module.cc (init_module_processing): Check preprocess sanity.

	libcpp/
	* mkdeps.c (deps_add_module): Allow empty bmi name.
	(deps_write): Refactor. Add PHONY.
	gcc/cp/
	* cp-tree.h (module_preprocess): Declare.
	* lex.c (module_preprocess_token): Have a proper state object,
	register imports with dependency machinery.
	* module.cc (module_preprocess_token): New.
	(module_begin_main_file): Cope with just preprocessing.

2019-02-21  Nathan Sidwell  <nathan@acm.org>

	gcc/c-family/
	* c.opt: Rename fmodule-legacy to fmodule-header
	gcc/
	* doc/invoke.texi: Update.
	gcc/cp/
	* cp-tree.h, module.cc, lang-specs.h, name-lookup.c, parser.c:
	Rename.
	gcc/testsuite/
	* g++.dg/modules/: Likewise.

	gcc/
	* langhooks.h (struct lang_hooks): Adjust preprocess_token API.
	gcc/cp/
	* lex.c (module_preprocess_token): Adjust API.
	* cp-tree.h (module_preprocess_token): Adjust API.
	* module.cc (module_state::direct_import): Not fatal if preprocessing.
	gcc/c-family/
	* c-ppoutput.c (scan_translation_unit): Adjust preprocess_token
	hook API.

2019-02-20  Nathan Sidwell  <nathan@acm.org>

	gcc/
	* REVISION: Add [].
	gcc/cp/
	* Make-lang.in (MODULE_VERSION): Replace ...
	(MODULE_STAMP): ... this.  Adjust
	* cxx-mapper.cc: Update.
	* module.cc: Update version behaviour.
	(module_state::do_import): Add dependency.
	libcpp/
	* mkdeps.c (mrules): Add dtor properly.   Add modules.
	(deps_write): Spew module deps.

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

	Merge trunk r268782.

	Make dependencies
	libcpp/
	* include/cpplib.h (cpp_get_deps): Change type.
	* include/mkdeps.h (struct deps): Rename to ...
	(struct mrules): ... this.  Adjust accessors.
	(deps_add_module): Declare.
	* internal.h (sttuct cpp_reader): Likewise.
	* mkdeps.c (struct mrules): Rename from deps.  Add module fields.
	(munge): Allow concatenation.
	(deps_add_module): New.
	(write_name, write_vec): New, broken out of ...
	(deps_write): ... this.  Add module pieces.
	gcc/
	* module.cc: #include mkdeps.h.
	(module_state::direct_import): Add module to dependencies.
	(finish_module_parse): Set target dependency info.
	gcc/c-family/
	* c-opts.c (handle_deferred_opts): Adjust dep accessors.
	gcc/fortran/
	* cpp.c (gfc_cpp_add_dep, gfc_cpp_add_target, gfc_cpp_init): Adjust
	dep accessors.

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

	libcpp/
	* mkdeps.c (struct deps): Make more C++y.  Update all uses.

2019-02-07  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.cc (module_mapper::module_mapper): Fix local socket creation.

	gcc/cp/
	* c++-mapper.cc (module2bmi): Do not map dir separators.
	gcc/testsuite/
	* g+.dg/modules/modules.exp (decode_mod_spec): Likewise.

	gcc/cp/
	* module.cc (create_dirs): New.
	(maybe_add_bmi_prefix): Add FORCE parm, adjust.
	(finish_module_parse): Try and create intermediate dirs.

2019-02-05  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (finish_namespace_using_decl): Add assert + FIXME.

	gcc/cp/
	* cxx-mapper.cc (client::action): Add mapper agent.
	* module.cc (module_mapper::handshake): Add mapper agent slot.
	gcc/
	* doc/invoke.texi (C++ Module Mapper): Update handshake.

	gcc/cp/
	* module.cc (module_state::read_locations): Make warning
	development-only.

	gcc/cp/
	* module.cc (get_module_slot): New broken out of ...
	(get_module): ... here.  Call it.
	(module_mapper::translate_include): Cope with file mapper.
	gcc/testsuite/
	* g++.dg/modules/map-2.{C,map}: New.

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

	Merge trunk r268456.

	gcc/cp/
	* decl.c (duplicate_decls): Accomodate anticipated fns.
	* module.cc (set_module_owner): Adjust.
	gcc/testsuite/
	* g++.dg/modules/printf-1_[ab].[HC]: New.

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

	gcc/cp/
	* module.cc (try_increase_lazy): Fix setrlimit call.
	(init_module_processing): Fix getrlimit call.

	gcc/cp/
	* module.cc (init_module_processing): Dump even more config.
	Tweak lazy limit.

	Rework lazy limit handling.
	gcc/cp/
	* module.cc (lazy_limit, lazy_hard_limit, LAZY_HEADROOM): New.
	(lazy_open): Invert sense, make unsigned.  Adjust all uses.
	(try_increase_lazy): New.
	(module_state::freeze_an_elf): Call it first.
	(init_module_processing): Adjust lazy_limit setting.

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

	ADL part 2
	gcc/cp/
	* cp-tree.h (LOOKUP_FOUND_P): Allow enumeral type.
	* module.cc (module_visible_instantiation_path): Protect against
	not modules.
	* name-lookup.c (name_lookup::adl_enum): New.
	(name_lookup::adl_type): Use it.
	(name_lookup::adl_namespace): INST_PATH may be null.
	(name_lookup::search_adl): Add partitions of types.
	gcc/testsuite/
	* g++.dg/modules/adl-[23]_[abc].C: New.

	ADL part 1
	gcc/cp/
	* cp-tree.h (module_visible_instantiation_path): Declare.
	* module.cc (module_visible_instantiation_path): Implement.
	* name-lookup.c (name_lookup::add_module_fns): Delete.
	(name_lookup::add_namespace_fns): Add visible bitmaps,
	reimplement.
	(name_lookup::search_adl): Get path of instantiation.
	gcc/testsuite/
	* g++.dg/modules/adl-1_[abc].C: New.

	gcc/cp/
	* name-lookup.c (name_lookup::adl_namespace_only): Delete.
	(name_lookip::adl_{namespace,class}_fns): New.
	(name_lookup::adl_{namespace,class}): Adjust.
	(name_lookup::search_adl): Refactor.

2019-01-30  Iain Sandoe  <iain@sandoe.co.uk>

	gcc/cp/
	* module.cc: Reorder includes.
	* cxx-mapper.cc: Likewise.

	gcc/testsuite/
	* g++.dg/modules/fn-inline-1_{bc}.C: Adjust weak scan.

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

	gcc/
	* doc/invoke.texi (C++ Modules): Add submenu.

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

	gcc/cp/
	* module.cc (init_module_processing): Dump more config.

	gcc/cp/
	* module.cc (MAPPED_READING, MAPPED_WRITING): 0 or 1
	(init_module_processing): Dump mapping behaviour.

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

	gcc/cp/
	* module.cc (module_mapper::make): Drop options arg, look at
	CXX_MODULE_MAPPER.
	gcc/
	* doc/invoke.texi (fmodule-mapper): Document env var.
	(C++ Module Mapper): Likewise.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Lambda location.
	* cp-objcp-common.c (cp_common_init_ts): Fix LAMBDA_EXPR marking.
	* cp-tree.h (tree_lambda_expr): Save 8 bytes.

	Merge trunk r268337.

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

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream expression locii.

	gcc/cp/
	* cp-objcp-common.c (cp_common_init_ts): MARK_TS_EXP for tcc_statement.

	gcc/cp/
	* cp-objcp-common.c (cp_common_init_ts): MARK_TS_EXP for scope_ref
	& noexcept_expr.
	* module.cc (trees_{in,out}::core_vals): Rely on TS_EXP.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Adjust expression streaming.

	Fix TS_CONTAINS_STRUCT for tcc_expression.
	gcc/
	(MARK_TS_EXP): New.
	gcc/c-family/
	* c-common.c (c_common_init_ts): Use MARK_TS_EXP. Mark
	SIZEOF_EXPR.
	gcc/cp/
	* cp-objcp-common.c (cp_common_init_ts): MARK_TS_EXP for
	tcc_expression nodes.  Call c_common_init_ts.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Clean up enumeral type
	handling.
	(trees_out:tree_node, module_state::mark_enum_def): Use
	SCOPED_ENUM_P.

	gcc/cp/
	* module.cc (tree_tag): Add tt_enum_int.
	(trees_out::mark_node): Allow marking non-decls.
	(trees_{in,out}::tree_node): Serialize enum values.
	(module_state::mark_enum_def): Mark enum int_csts.
	gcc/testsuite/
	* g++.dg/modules/enum_1_[ab].C: Test serialization.

	gcc/cp/
	* module.cc (trees_in::finish_type): Don't speciual case
	TYPE_PACKs.
	* pt.c (template_parm_to_arg, coerce_template_parameter_pack)
	(make_argument_pack, tsubst_template_args, tsubst)
	(type_unification_real, unify_pack_expansion): Set
	TYPE_STRUCTURAL_EQUALITY for type packs.

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

	gcc/cp/
	* cp-objcp-common.c (cp_common_init_ts): Set TYPE_PACK_EXPANSION
	and TYPE_ARGUMENT_PACK correctly.
	* module.c (trees_in::finish_type): Special case pack types and
	bound parms.
	gcc/testsuite/
	* g++.dg/modules/var-tpl-1_[ab].C: New.

	gcc/cp/
	* module.cc (tree_tag): Add tt_ptrmem_type.
	(trees_{in,out}::core_vals): Don't scrog pointer's ptrmem cache.
	(trees_out::tree_type): Stream pointers to member functions.
	(trees_in::tree_node): Likewise.
	gcc/testsuite/
	* g++.dg/modules/nodes-1_[ab].C: More.

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

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Stream tcc_reference,
	baselink, static_assert, trait_expr.
	gcc/testsuite/
	* g++.dg/modules/nodes-1_[ab].C: New.

	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): Fix TYPE_CACHED_VALUES
	handling. Stream ptrmem_cst.  Note userdef_literals unreachable.
	gcc/testsuite/
	* g++.dg/modules/nodes-1_[ab].C: Add prememdata

	gcc/cp/
	* module.cc (module_state::{read,write}_locations): Fix macro
	expansion compression.

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

	Enable partition entity merging.
	gcc/cp/
	* module.cc (depset::hash): Add mergeable flag.
	(trees_out::{tpl_parms,tree_mergeable}): Protect from not
	streaming.
	(depset::hash::add_dependency): Deal with mergeablility.
	(depset::hash::add_mergeable): New.
	(depset::hash::connect): Adjust dump.
	(module_state::write_cluster): Sort mergeables.
	(module_state::find_dependencies): Deal with mergeability.
	(module_state::sort_mergeables): New.
	gcc/testsuite/
	* g++.dg/modules/scc-1.C: Adjust scans.
	* g++.dg/modules/part-3_[cd].C: Remove xfails.

	gcc/cp/
	* module.cc (trees_{in,out}::fn_parms): New.
	(trees_{in,out}::tree_mergeable): Call them.
	(cluster_cmp): Move earlier.
	(depset::hash::connect): New, broken out of ...
	(module_state::write): ... here.  Call it.

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

	gcc/cp/
	* module.cc (trees_{in,out}::tree_mergeable): Allow non-implicit
	typedefs.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-9_[abc].[HC]: New.

	Merge partition entities (disabled).
	gcc/cp/
	* module.cc (trees_{in,out}::tree_mergeable): Fold partitions.
	(module_state::{read,write}_cluster): Register module entities.
	gcc/testsuite/
	* g++.dg/modules/part-3_[abcd].C: New.

	gcc/cp/
	* module.cc (dumper::GM): Rename to MERGE.  Update uses.

	gcc/cp/
	* cp-tree.h (module_name): Replace FULL parm with primary pointer.
	* error.c (dump_module_suffix): Adjust.
	* module.cc (module_state::fullname): Rename to flatname.
	(module_state::{get,set}_flatname): New.  Use get_flatname.
	(module_state::attach): Conditionally call set_flatname.
	(get_module): Likewise.
	(module_mapper::imex_query): Adjust.
	(module_mapper::bmi_response): Likewise.
	(module_state::write_readme): Adjust.
	(module_state::{read,write}_config): Adjust name checking.
	* name-lookup.c (make_namespace): Adjust anonymous name creation.
	* ptree.c (cxx_print_decl): Adjust.
	gcc/testsuite/
	* g++.dg/modules/part-2_[cd].C: Adjust regex.

	gcc/cp/
	* cp-tree.h (module_name): Add FULL parm.
	* module.cc (module_name): Check it and strip partitions if not.
	* error.c (dump_module_suffix): Don't want full name.

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

	Merge trunk r267946.

	Partition BMI folding, but not entity merging.
	gcc/cp/
	* cp-tree.h (get_module_owner): Mark PURE.
	* module.cc (loc_spans::open): Add location parm.
	(trees_out::{lang_decl_bools,tree_node_specific,tree_decl}): Account
	for remapping.
	(depset::hash::add_binding): Account for partitions.
	(module_state::write_locations): Account for partitions.
	(module_state::read_locations): Add partition spans to primary
	interface.
	(module_state::add_writables): Add partition bitmap arg.  Adjust
	extraction.
	(module_state::write): Generate partition bitmap.
	(module_state::read): Only read partitions on primary.
	* name-lookup.h (extract_module_binding): Adjust parms.
	* name-lookup.c (add_mergeable_decl): Break out from ...
	(record_mergeable_decl): ... here.  Call it.
	(match_mergeable_decl): Likewise.
	(check_mergeable_decl): Tweak.
	(extract_module_binding): Examine partitions and merge.
	* tree.c (ovl_sort): Simplify. 
	gcc/testsuite/
	* g++.dg/modules/part-1_a.C: Adjust.
	* g++.dg/modules/part-1_c.C: New.

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

	gcc/
	* tree.h (cache_integer_cst): Add defaulted small parm.
	* tree.c (cache_integer_cst): Add small parm, adjust.
	gcc/cp/
	* module.cc (trees_out::start): FIXED_CST are C only.
	(trees_in::finish): Merge small INTEGER_CSTs.
	(trees_{in,out}::core_bools): Don't write base.public_flag of types.

	gcc/cp/
	* module.cc (trees_out::start): Catch POLY_INT_CST, adjust
	VECTOR_CST.
	(trees_{in,out}::core_vals): Do TS_VECTOR.
	* g++.dg/modules/literals-1_[ab].C: Add vector cst.

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

	String literals.
	gcc/cp/
	* module.cc (trees_{in,out}::core_vals): String literals (a NOP).
	gcc/testsuite/
	* g++.dg/modules/literals-1_[ab].C: Add string lit.

	Real & complex literals.
	gcc/cp/
	* module.cc (bytes_{in,out}::buf): Void pointer
	(trees_{in,out}::core_vals): Stream REAL_CST & COMPLEX.
	gcc/testsuite/
	* g++.dg/modules/literals-1_[ab].C: New.

	gcc/cp/
	* module.cc (get_module): Fix partition parsing.
	(module_state::read_imports): Check interface import requirements.
	(module_state::{read,write}_partitions): No need for exported.
	(module_state::write_config): Write is_interface.
	(module_state::direct_import): Check interface import
	requirements.
	(declare_module): Set interface_p, not exported_p.
	* parser.c (cp_parser_module_name): Partitions only in non-legacy
	module purview.
	gcc/testsuite/
	* g++.dg/modules/part-2_[abcd].C: New.

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

	gcc/cp/
	* cp-tree.h (module_not_legacy_p): New.
	* module.cc (trees_out::tree_namespace): Rema namespace owner.
	(tree_in::tree_node): Protect bogus tt_namespace.
	* name-lookup.c (record_mergeable_decl): New.
	(check_mergeable_decl): Namespaces are never overloaded.
	(check_module_override): Add to mergeable list.
	(do_pushdecl): Record mergeable.
	(make_namespace_finish): Use check_mergeable_decl.  Never add to level
	(push_namespace): Add to level here.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_b.C: Adjust dump scan.

	gcc/cp/
	* module.cc (finish_module_parse): Better location info on errors.
	* name-lookup.c (name_lookup::search_namespace_only): Skip
	partition slot too.
	(check_module_override): Likewise.
	(check_mergeable_decl): New broken out of ...
	(match_mergeable_decl): ... here.  Call it.
	(reuse_namespace): Iterate over global slot.
	* ptree.c (cxx_print_xnode): More cluster info.

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

	gcc/cp/
	* module.cc (module_state::read_partitions): New.
	(module_state::read_imports): Deal with elided partitions.
	(module_state::write_partitions): Write more.
	(module_state::read): Read partitions.
	(module_state::direct_import): Deal with elided partitions.
	(process_deferred_imports): Don't request known filenames.  Avoid
	double request.
	gcc/testsuite/
	* g++.dg/modules/atom-preamble-2_d.C: Check no duplicate.
	gcc/
	* doc/invoke.texi (C++ Modules): Update.

	gcc/cp/
	* module.cc (module_state::from_partition_p): New field.
	(module_state::maybe_partition_name): New.
	(module_state::{read,write}_imports): Adjust.
	(module_state::write_partitions): New.
	(module_state::remap_partitions): Delete.
	(trees_out::tree_decl): Remap owner.
	(module_state::write_readme): Adjust.
	(module_state_config): Add imports and partitions fields.
	(module_state::{read,write}_config): Adjust.
	(module_state::write): Separate out hidden partitions.  Adjust
	import & partition writing.
	(module_state::read): Adjust import reading.
	gcc/testsuite/
	* g++.dg/modules/import-1_c.C: Adjust scan.
	* g++.dg/modules/mod-imp-1_c.C: Likewise.

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

	gcc/cp/
	* cxx-mapper.cc (module2bmi): Update mapping
	* module.cc (module_state::{maybe_defrost,freeze_an_elf}): Quote
	filename..
	gcc/testsuite/
	* g++.dg/modules/modules.exp (decode_mod_spec): Update mapping.
	* g++.dg/modules/freeze-1_d.C: Adjust scan-final.
	* g++.dg/modules/import-2.C: Likewise.
	* g++.dg/modules/mod-stamp-1_d.C: Likewise.

	gcc/cp/
	* module.cc (module_state::{interface_p,is_interface}): New.
	(module_state::resolve_alias): Don't propagate exported_p here.
	(module_state::write_readme): Show exportedness of imports.
	(module_state::read_imports): Use resolve_alias.
	(module_state::read_config): Set interface_p.
	(module_state::read): Reformat.
	(module_state::set_import): Correctly set imports.
	(module_state::direct_import): Not here.
	(declare_module): Set interface_p.
	gcc/testsuite/
	* g++.dg/modules/import-1_e.C: Adjust scan.

	gcc/cp/
	* module.cc (bytes_out::set_crc): Only set if crc_ptr != 0.
	(module_state::write_readme): Update for partitions.
	(module_state::{read,write}_config): Write exported_p for
	partitions.
	(finish_module_parse): Write partitions.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-2.C: Adjust.
	* g++.dg/modules/atom-pragma-3.C: Adjust.
	* g++.dg/modules/mod-decl-1.C: Adjust.
	* g++.dg/modules/mod-decl-3.C: Adjust.

	gcc/cp/
	* module.cc (module_state::direct_import): Add LAZY parm, use it
	rather than legacy_p.  Never expect a has_bmi file.
	(declare_module): Always add to pending imports.
	* parser.c (cp_parser_translation_unit): Expect a deferred import
	for a legacy module.

	gcc/cp/
	* cp-tree.h (module_has_bmi_p): New.
	* module.cc (module_state::{is_interface,interface_p}): Rename to ...
	(module_state::{is_primary,primary_p}): ... here.  Adjust users.
	(module_state::read_cluster): Partitions need deduping too.
	(declare_module): Set primary_p, partition_p.
	(process_pending_imports): Adjust.

	gcc/cp
	* cp-tree.h (module_export_depth, module_purview): Replace with ...
	(module_kind): ... this.
	(MK_MODULE, MK_GLOBAL, MK_INTERFACE, MK_PARTITION, MK_EXPORTING): New.
	(module_purview_p, not_module_p, module_legacy_p)
	(module_interface_p, module_partition_p, module_global_p)
	(module_exporting_p): Adjust.
	(declare_module): Return bool.
	* module.cc (module_export_depth, module_purview): Replace with ...
	(module_kind): ... this.
	(module_maybe_interface_p): Delete.
	(module_state::direct_import, declare_module)
	(module_begin_main_file, process_deferred_imports)
	(finish_module_parse): Adjust.
	* name-lookup.c (make_namespae): Use module_global_p.
	* parser.c (cp_parser_module_declaration): Return bool.  Deal with
	GMF introducer.
	(cp_parser_translation_unit, cp_parser_module_export): Adjust.
	gcc/testsuite/
	* g++.dg/modules/circ-1_d.C: Adjust.
	* g++.dg/modules/mod-decl-1.C: Adjust.
	* g++.dg/modules/mod-decl-5_b.C: Adjust.
	* g++.dg/modules/p0713-3.C: Adjust.

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

	gcc/cp/
	* cxx-mapper.cc (module2bmi): Don't map ':'.
	* module.cc: Update design description.
	gcc/testsuite/
	* g++.dg/modules/modules.exp (decode_mod_spec): Don't map ':'

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

	gcc/cp/
	* name-lookup.h (match_global_decl): Rename to ...
	(match_mergeable_decl): ... this.  Add global/partition flag.
	* name-lookup.c (match_global_decl): Rename to ...
	(match_mergeable_decl): ... this.  Adjust.
	* module.cc: Rename mme to mergeable.
	(trees_{in,out}::tree_mergeable): Stream global/partition
	indicator. Call match_mergeable_decl.

	gcc/cp/
	* name-lookup.c (module_binding_slot): Break apart to ...
	(search_imported_binding_slot, get_fixed_binding_slot)
	(append_imported_binding_slot): ... these.
	(fixed_module_binding_slot): Delete.
	(do_pushdecl, match_global_decl, import_module_binding)
	(set_module_binding, get_binding_or_decl, get_imported_namespace)
	(reuse_namespace, make_namespace_finish)
	(add_imported_namespace): Update for new API.

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

	gcc/cp/
	* name-lookup.c (module_binding_slot): Use FIXED parm.

	gcc/cp/
	* name-lookup.c (module_binding_slot): Add FIXED parm, adjust all
	callers.

	gcc/cp/
	* module.cc: Rename gme -> mme, because partitions.

	gcc/cp/
	* cp-tree.h (DECL_MODULE_PURVIEW_P): Delete.
	(MAYBE_DECL_MODULE_PURVIEW_P): Delete.
	* mangle.c (maybe_write_module): Adjust.

	gcc/testsuite/
	* g++.dg/modules/legacy-8_[abcde].[CH]: New.

	gcc/cp/
	* cxx-mapper.cc (server): Workaround PR c++/88664.

	Merge trunk r267509.
	* module.cc, cxx-mapper.cc: Update copyright years.

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

	MODULE_VEC has alloc field too.
	gcc/cp/
	* cp-tree.h (MODULE_VECTOR_ALLOC_CLUSTERS): New.
	(MODULE_VECTOR_NUM_CLUSTERS): Adjust.
	(struct tree_module_vec): Adjust.
	* tree.c (make_module_vec): Adjust.
	* name-lookup.c (module_binding_slot): Extend vector if it fits.
	* ptree.c (cxx_print_xnode): Cope with lazy module-vector slots.

	gcc/cp/
	* module.cc (module_state::check_read): Fix bogus note.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_c.C: Add bogus note test.

	gcc/cp/
	* module.cc (module_state::remap): New member var.
	(module_state::remap_partitions): New.
	(module_state::write_imports): Skip partitions.
	(module_state::write): Remap partitions.

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

	Partition parsing.  Don't get excited!
	gcc/cp/
	* module.cc (get_module): Attach current module for null
	partition.
	* parser.c (cp_parser_module_name): Parse partitions
	gcc/testsuite/
	* g++.dg/modules/part-1_[ab].C: New.

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

	gcc/cp/
	* cp-tree.h (get_module): Add partition arg.
	* module.cc (module_state): Add partition flag.
	(module_state_hash): Hash & compare partition flag.
	(module_state::mangle, get_module, attach): Add partition awareness.

	gcc/cp/
	* cp-tree.h (get_module): Default NULL parent.
	* lex.c (module_preprocess_token): Adjust get_module call.
	* module.cc (get_module, module_begin_main_file): Likewise.
	* parser.c (cp_parser_module_name): Likewise.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Remove some remaining
	non-atomic template hacks.

	gcc/cp/
	* module.cc (module_state::write): Sort dependency table.

	gcc/cp
	* module.cc (module_cpp_undef): Don't zap undef hook if we don't
	own it.
	gcc/c-family/
	* c-opts.c (c_common_init): Don't unilaterally clobber undef
	callback.
	* c-ppoutput.c (cb_undef): Call lang_hook if non-null.
	gcc/testsuite/
	* g++.dg/modules/dir-only-1.C: New.

	Merge trunk r267229.

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

	gcc/cp/
	* module.cc (trees_out::{write,mark}_template_def): Delete.
	(trees_out::{write,mark}_definition): Adjust.
	(trees_in::read_template_def): Delete.
	(trees_in::read_definition): Adjust.

	Kill old broken global module merge code.
	gcc/cp/
	* module.cc (trees_in::finish): Remove DECL merging.
	* name-lookup.c (merge_global_decl): Delete.
	* name-lookup.h (merge_global_decl): Delete decl.

	Atomic TEMPLATE_DECL + DECL_TEMPLATE_RESULT.
	gcc/cp/
	* module.cc (trees_out::mark_node): Remove temp tpl hack.
	(trees_out::tree_decl): Remove tt_template remarking.
	(trees_out::tree_value): Atomic TEMPLATE_DECL.
	(trees_in::tree_node): Likewise.
	(trees_out::{mark,read,write}_template_def): Move DECL_LIST to ...
	(trees_out::{mark,read,write}_class_def): ... here.
	(trees_{in,out}::tree_gme): Don't mark inner decl.
	gcc/testsuite/
	* leg-merge-8_[abc].[CH]: New.

	Intermediate step to atomic TEMPLATE_DECL + DECL_TEMPLATE_RESULT.
	Breaks leg-merge-7_c.C,
	gcc/cp/
	* module.cc (tree_tag): Add tt_template, tt_implicit_template.
	(node_template_info): Not a member fn.
	(trees_out::{mark_node,mark_gme}): Mark the template.
	(trees_{in,out}::tree_decl): Do implicit_template.

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

	gcc/cp/
	* module.cc (trees_out::node_template_info): New, broken out of
	...
	(trees_out::tree_decl): ... here.  Use it.

	gcc/cp/
	* module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access.

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

	Function template deduping
	gcc/cp/
	* module.cc (trees_{in,out}::tpl_parms): New.
	(trees_out::mark_gme): Mark template result too.
	(trees_{in,out}::tree_gme): Do templates.
	(module_state::write_cluster): Any decl can be a GME.
	* name-lookup.c (match_global_decl): Do template matching.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-7_[abc].[HC]: New.

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

	gcc/cp/
	* module.cc (slurping::remap): Heap allocate.
	(gt_pch_nx): Delete hacks.

	gcc/cp/
	* module.cc (tree_tag): Replace tt_named_type with
	tt_{primary,secondary}_type.
	(trees_out::tree_type): Not recursive.
	(trees_in::tree_node): Adjust tt_named_type case.

	Class deduping
	gcc/cp/
	* module.cc (trees_in::tree_node): Record defn to skip.
	(trees_in::is_skip{,pable}_defn): Fix int/long ptr const.
	(module_state::read_{function,var,class}_def): Add skip checking.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-6_[abc].[HC]: New.

	TYPE streamed with its implicit typedef.
	gcc/cp/
	* module.cc (trees_in::reserve_gmes): Only 2 per.
	(trees_in::{set,get}_backref_gme): Delete.
	(trees_in::existing_gme): Rename to ...
	(trees_in::is_existing_gme): ... this.  Return bool.
	(trees_out::mark_gme): Adjust assert.
	(trees_in::insert): Add assert.
	(trees_out::tree_type): Always look at typedef.
	(trees_out::tree_value): Stream type with its decl.
	(trees_in::tree_node): Likewise.
	(trees_{in,out}::tree_gme): Adjust.

	gcc/cp/
	* module.c (module_state::{read,write,mark}_enum): Take DECL.
	(module_state::{read,write,mark}_definition): Adjust.

	gcc/cp/
	* class.c (layout_class_type): Base type has same module as owner.
	* module.c (module_state::{read,write,mark}_class): Take DECL.
	(module_state::{read,write,mark}_definition): Adjust.
	(topmost_decl, get_module_owner): Don't look at TYPE_CONTEXT.

	gcc/cp/
	* class.c (build_base_field_1): Refactor.
	(layout_class_type): Give as_base type a name.
	* decl.c (initialize_predefined_identifiers): Make as_base name
	unpronouncable.
	* module.cc (tree_tag): Delete tt_as_base.
	(trees_out::mark_node): Don't expect fake base here.
	(trees_out::tree_decl): Write fake base as pseudo-named.
	(trees_out::tree_type): Don't handle fake base specially here.
	(trees_in::tree_node): Read fake base as pseudo-named.  Delete
	tt_as_base handling.
	(module_state::mark_class_def): Adjust.

	gcc/cp/
	* module.cc (trees_in): Rename bad_decls to skip_defns.
	(trees_in::{record,is}_bad_decl): Delete.
	(trees_in::{record,is,any}_skip_defn): New.
	(module_state::is_ignorable_defn): Rename to ...
	(module_state::is_skippable_defn): Key off namespace-scope decl.
	(topmost_decl): New.
	(module_state::read_function_def): Adjust.

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

	Merge trunk r266680.

	gcc/cp/
	* module.cc: Fix enums with trailing commas.
	* name-lookup.c (match_global_decl): Avoid unused arg warning.

	gcc/cp/
	* module.cc (module_state::write_binfos): Binfo was not visited.

	gcc/cp/
	* module.cc (module_state::write_binfos): Always write number of
	vbases.
	(module_state::read_binfos): Don't smash the type here.
	(module_state:{read,write}_class_def): Adjust binfo serializing.

	gcc/cp/
	* class.c (fixup_type_variants): Copy TYPE_SIZE & TYPE_SIZE_UNIT.
	(finish_struct): Use fixup_type_variants for template.
	* module.cc (trees_{in.out}::core_vals): Don't serialize TYPE_SIZE
	and TYPE_SIZE_UNIT for classes.
	(trees_in::finish_type): Don't layout clesses here.
	(module_state::{read,write}_class_def): Do it here.

	gcc/cp/
	* module.cc (trees_in): Add bad_decls and post_decls.
	(trees_in::{record,is}_bad_decl): New.
	(trees_in::post_process): New.
	(module_state::is_{matching_decl,ignorable_defn}): New.
	(trees_in::tree_node): Use former.
	(module_state::read_function_def): Use latter. Register for
	post-processig.
	(module_state::read_cluster): Post process.

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

	Merge global module function definitions.
	gcc/cp/
	* modules.cc (module_state::write_function_def): Don't rely on
	decl's form.
	(module_state::read_function_def): Allow multiple decls.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-5_[abc].[CH]: New.

	gcc/cp/
	* modules.cc (module_state::check_read): Adjust, print inform of
	outer location.
	(module_state::write_cluster): defns are decls too.
	(lazy_load_binding): Don't inform here.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-4_c.C: Adjust regexps.

	Fixing GME classes
	gcc/cp
	* module.cc (trees_in::tree_node_vals): Add specific bool arg,
	adjust.
	(trees_in::existing_gme): Return cookie.
	(trees_in::{get,set}_backref_gme): New.
	(trees_out::mark_gme): Mark typedef target.
	(trees_out::tree_type): Don't be fooled by GME TYPE_NAME.
	(trees_out::tree_value): Write GME type code.
	(trees_in::tree_node): Use backref channel for typedefs.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-4_c.C: Adjust.

	Some ODR checking of GMEs
	gcc/cp/
	* module.cc (trees_in::tree_node): Check type of matched GME.
	(lazy_load_binding): Add note if diagnostics emitted.
	* name-lookup.c (name_lookup::search_namespace_only): Forward
	iterate over slots.
	(match_global_decl): Return close matches.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-4_[abc].[CH]: New.

	Global module var declaration merging.
	gcc/cp/
	* module.cc (trees_in::reserve_gmes): Add headroom.
	(trees_{in,out}::tree_gme): Deal with VAR_DECLs.
	(module_state::write_cluster): Likewise.
	* name-lookup.c (match_global_decl): Likewise.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-3_[abcd].[CH]: New.

	Global module class declaration merging.
	gcc/cp/
	* module.cc (trees_in::start): Check code & category.
	(trees_in::tree_node): Allow gme types.  Refactor gme/node
	reading.
	(trees_{in,out}::tree_gme): Allow implicit typedefs.
	(module_state::write_cluster): GME Implicit typedefs too.
	* name-lookup.c (match_global_decl): Match TYPE_DECLs too.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-2_[abc].[CH]: New.

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

	Global module function declaration merging.
	gcc/cp
	* module.cc (tree_tag): Add tt_gme.
	(trees_in::gmes): New data member.
	(trees_in::tree_node_specific): Add no-alloc flag.
	(trees_in::{tree_gme,reserve_gmes,existing_gme}): New.
	(trees_out::walk_kind): Add WK_gme.
	(trees_out::{mark,tree}_gme): New.
	(trees_out::{ref_node,insert}): Deal with WK_gme walk.
	(trees_out::tree_{decl,value}): Likewise.
	(trees_in::tree_node): Add tt_gme support.
	(cluster_tag): Add ct_gme.
	(module_state::{read,write}_cluster): Add gme support.
	* name-lookup.h (match_global_decl): Declare.
	(add_module_decl): Declare.
	* name-lookup.c (match_global_decl): New.
	(set_module_binding): Don't dedup here.
	(add_module_decl): New.
	gcc/testsuite/
	* g++.dg/modules/leg-merge-1_[abcd].[CH]: New.

	gcc/cp/
	* modules.cc (trees_{in,out}::tree_node_bools): Break out
	tree_node_specific.
	(trees_out::ref_force_{lwm.hwm}): Delete.
	(trees_out::gme_lwm): New.
	(trees_out::insert): Change force to walk_kind.
	(trees_out::mark_node): Drop walk_kind arg.
	(trees_out::{,un}mark_trees): Adjust.
	(trees_out::{mark_node,insert}): Adjust.
	(trees_out::start): Drop CODE parm.
	(trees_out::{ref_node,tree_ctx}): Adjust.
	(trees_out::tree_value): Adjust.
	(trees_{in,out}::tree_node): Likewise.
	(module_state::write_binfos): Likewise.
	(module_state::mark_{class,enum}_def): Adjust.
	(module_state::{read,write}_cluster): Adjust.
	(module_state::find_dependencies): Adjust.

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

	gcc/cp/
	* modules.cc (trees_{in,out}::tree_node_raw): Bifurcate to ...
	(trees_{in,out}::tree_node_{bools,vals}): ... these.
	(trees_out::tree_value): Adjust.
	(trees_in::tree_node): Likewise.

	gcc/cp/
	* modules.cc (trees_out::tree_ref): Rename to ...
	(trees_out::ref_node): ... this.
	(trees_out::tree{value,decl,type,namespace}): Replace FORCE
	paramenter with walk_kind.
	(trees_out::tree_node): Adjust.
	(module_state::mark_{class,enum,template}_def): Adjust.
	(module_state::write_cluster): Adjust.
	(module_state::find_dependencies): Adjust.

	gcc/cp/
	* modules.cc (trees_out::walk_kind): New enum.
	(trees_out::tree_ref): Return it.
	(trees_out::tree_{ctx,decl,node}): Use it.

	gcc/cp/
	* modules.cc (trees_out::ref_force_{lwm.hwm}): New ref values.
	(trees_out::{,un}mark_trees): Use them.
	(trees_out::{mark_node,tree_ref}): Likewise.

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

	gcc/cp/
	* modules.cc (dumper): Rename dump flags.  Adjust throughout.

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

	gcc/cp/
	* module.cc (handle_module_option): Handle OPT_fmodule_legacy.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Insert /./ in legacy names.
	* g++.dg/modules/*.H: Adjust as necessary.

	Merge trunk r266271.

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

	Merge trunk r266161.

	gcc/
	* doc/invoke.texi: Rename cookie->ident, people read too much into
	'cookie'.

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

	gcc/cp/
	* parser.c (cp_parser_translation_unit): Refactor.

	Implement d0924r1 (to be written).
	gcc/cp/
	* lex.c (init_reswords): Set D_CXX_MODULES mask.
	* module.cc (declare_module): Check purview state.
	* parser.c (cp_parser_translation_unit): Module and import are
	always conditional.
	(cp_parser_tokenize): Likewise.
	gcc/
	* doc/invoke.texi (fno-module-keywords): Delete.
	gcc/c-family/
	* c-common.c (c_common_reswords): Don't mark import, module for CXXWARN.
	* c.opt (fmodule-keywords): Delete.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-1.C: Delete.
	* g++.dg/modules/keyword-1_[ab].C: Adjust.
	g++.dg/modules/mod-decl-[13].C: Adjust.
	g++.dg/modules/p0713-3.C: Adjust.

	gcc/cp/
	* cp-tree.h (module_gmf_p): Adjust.
	(not_module_p): New.
	* module.cc (declare_module): Don't deal with starting GMF.
	* parser.c (cp_parser_translation_unit): Adjust module_purview
	values.

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

	Implement Bjarne's suggested solution.
	gcc/cp/
	* parser.cc (cp_parser_translation_unit): No tentative parsing.
	Look for following ::.
	(cp_parser_module_{name,declaration,import}): Adjust.
	(cp_parser_tokenize): Adjust, tokenize more.
	gcc/
	* doc/invoke.texi (C++ Modules): Update.
	gcc/testsuite/
	* g++.dg/modules/cpp-5_b.C: Update.
	* g++.dg/modules/keyword-1_[ab].C: Likewise.

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

	gcc/cp/
	* modules.c (module_state::read): Interface can be lazy too.

	gcc/cp/
	* name-lookup.c (STAT_EXPORTS): Rename to ...
	(STAT_VISIBLE): ... this.
	(name_lookup::search_namespace_only, name_lookup::add_module_fns)
	(check_module_override, set_module_binding): Adjust.
	* module.cc (module_state::read_cluster): Likewise.

	gcc/cp/
	* cp-tree.h (module_may_redeclare): Declare.
	* decl.c (duplicate_decls): Check moduleness.
	* module.cc (module_state::read_cluster): Adjust export tail.
	(module_may_redeclare): New.
	* name-lookup.c (name_lookup::search_namespace_only): Check
	STAT_TYPE_VISIBLE_P.
	(update_binding): Allow NULL LEVEL.
	(check_module_override): New.
	(do_pushdecl): Deal with module overrides.
	(set_module_binding): Adjust.  Don't push interface bindings.
	gcc/testsuite/
	* g++.dg/modules/ambig-1_[ab].C: New.
	* g++.dg/modules/macro-4_e.C: Avoid error.
	* g++.dg/modules/namespace-2_b.C: Remove xfail.

	gcc/cp/
	* module.cc (module_state::read_cluster): Preserve export_tail.
	* name-lookup.c (STAT_HACK_TYPE_VISIBILE_P): New.
	(name_lookup::process_module_binding): Reimplement.
	(name_lookp::search_namespace_only): Likewise.
	(set_module_binding): Adjust when STAT_HACK_EXPORTS is set.

	gcc/cp/
	* decl.c (duplicate_decls): Refactor export check.
	gcc/testsuite/
	* g++.dg/modules/export-1.C: New.

	gcc/cp/
	* decl.c (duplicate_decls): Refactor checks.
	* name-lookup.c (name_lookup::process_module_binding): Only pubic
	namespaces are shared.
	gcc/testsuite/
	* g++.dg/lookup/crash6.C: Adjust error
	* g++.dg/parse/crash38.C: Likewise.

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

	Merge trunk r265714.
	Move to autoconf 2.69.

	gcc/cp/
	* module.cc (module_state::read): Don't read macros for
	preprocessed innput.
	(module_state::set_import): Adjust legacy test.

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

	gcc/cp/
	* module.cc (module_state::check_not_purview): Check name.
	(mangle_module, module_name): Likewise.
	(declare_module): Set parent, not alias.

	Merge trunk r265692.

	Merge trunk r265679.

	gcc/cp/
	* cp-tree.h (OVL_EXPORT_P): Delete.
	(OVL_DEDUP_P): Move to lang flag 0.
	* module.cc (module_state::read_cluster): Don't set OVL_EXPORT_P.
	* tree.c (ovl_copy): Don't copy OVL_EXPORT_P.

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

	Module interface gets own mod number
	gcc/cp/
	* cp-tree.g (ovl_iterator::set_dedup): New.
	* module.cc (module_state::{interface_p,is_interface}): New.
	(module_state::check_not_purview): Adjust.
	(mangle_module, module_name): Likewise.
	(module_state::read_cluster): Adjust.
	(module_state::read): Adjust.
	(module_state::{set_import,direct_import}): Adjust import setting.
	(declare_module): Module interface gets number.
	* name-lookup.h (set_module_binding): Add iface parameter.
	* name-lookup.c (name_lookup::search_namespace): Fix indexing.
	(set_module_binding): Insert interface decls.
	gcc/testsuite/
	* g++.dg/modules/namespace-4_b.C: Remove xfails.
	* g++.dg/modules/static-1_b.C: Remove xfails.

	gcc/cp/
	* cp-tree.h (OVL_HAS_USING_P): Rename to ...
	(OVL_DEDUP_P): ... here.
	* name-lookup.c (name_lookup::add_overload)
	(get_class_binding_direct): Adjust.
	* tree.c (ovl_make, ovl_copy, ovl_insert, lookup_maybe_add): Adjust.

	Less ordered overloads
	gcc/cp/
	* cp-tree.h (ovl_sort): Declare.
	* name-lookup.h (extract_module_binding): Binding is reference.
	* tree.c (ovl_insert): Don't sort non-hidden members.
	(ovl_splice, ovl_sort): New.
	* name-lookup.c (extract_module_binding): Binding is reference.
	Sort the binding.
	* ptree.c (cxx_print_xnode): Print MODULE_VEC name.
	* module.cc (module_state::add_writables): Binding is reference.
	gcc/testsuite/
	* g++.dg/lookup/friend21.C: New.

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

	gcc/cp/
	* cp-tree.h (ovl_insert): Drop export_tail parm.
	* name-lookup.c (update_binding): No need to track export_tail.
	* tree.c (ovl_insert): Drop export_tail parm.
	* ptree.c (cxx_print_xnode): Output formatting.

	gcc/cp/
	* module.cc (module_state::read_imports): Do in one pass.

	gcc/cp/
	* module.cc (module_state::direct_import): Drop DEFERRABLE arg.
	({import,declare}_module): Deal with deferring here.
	(process_deferred_imports): Adjust direct_import call.

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

	Merge trunk r265554.

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

	Anon namespaces
	gcc/cp/
	* module.cc (elf_out::strtab_write): Fallback to assembler name.
	(elf_out::name): Allow 0 name.
	(dumper::impl::nested_name): Fallback to assembler name.
	(module_state::{read,write}_namespaces): Write assembler name for
	anons.
	* name-lookup.h (add_imported_namespace): add anon-name arg.
	* name-lookup.c (get_imported_namespace): Look in current slot
	too.
	(make_namespace): Add anon-name arg, calculate as necessary.
	(add_imported_namespace): add anon-name arg.
	gcc/testsuite/
	* gcc/testsuite/g++.dg/modules/namespace-4_[abc].C: New.

	Statics on bindings
	gcc/cp/
	* module.cc (depset::hash::add_binding): Take overload and type
	values, do pruning here.
	(module_state::write_cluster): Reorder binding emission.
	(module_state::read_cluster): Determine export_tail here.
	(module_state::add_writables): Adjust.
	* cp-tree.h (ovl_iterator::export_tail): Delete.
	* name-lookup.h (extract_module_decls): Rename to ...
	(extract_module_binding): ... here.  Return overload set.
	* name-lookup.c ( (extract_module_decls): Rename to ...
	(extract_module_binding): ... here.  Don't prune here.
	(set_module_binding): Simplify.
	(lookup_by_ident, get_lookup_ident): Simplify.
	gcc/testsuite/
	* g++.dg/modules/static-1_b.C: XFAIL error
	* gcc/testsuite/g++.dg/modules/unnamed-1_[ab].C: Adjust scans.
	* gcc/testsuite/g++.dg/modules/unnamed-2.C: Likewise.

	gcc/cp/
	* cp-tree.h (module_purview): Declare.
	(module_purview_p, module_interface_p, module_gmf_p): Inline
	predicates.
	* module.cc (module_purview): Extern.
	(module_purview_p, module_interface_p): Delete.

	p1103 no implicit namespace export
	gcc/cp/
	* module.cc (trees_out::mark_node): Allow namespace marking.
	(trees_out::tree_ctx): Namespaces may be forced.
	(trees_out::tree_namespace): Reimplement.
	(trees_out::tree_{type,decl}): Adjust tree_ctx calls.
	(module_state::write_cluster): Likewise.
	(module_state::{read,write}_namespace): Adjust.
	(module_state::find_dependencies): Also walk namespaces.
	* name-lookup.c (name_lookup::process_binding): Fixup hidden
	namespaces.
	(implicitly_export_namespace): New.
	(do_pushdecl, push_namespace): Call it.
	(add_imported_namespace): Add export_p arg, adjust.
	* name-lookup.h (add_imported_namespace): Add export_p arg.
	* ptree.c (cxx_print_node): Adjust MODULE_VEC printing.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_b.C: Adjust scans.
	* g++.dg/modules/namespace-[23].C: Split to ...
	* g++.dg/modules/namespace-[23]_[ab].C: ... these.

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

	Rationalize bool ok == true
	gcc/cp/
	* module.cc (elf::has_error): Rename to ...
	(elf::get_error): ... this.  Update all callers.
	(elf::end): Return true == ok.  Update (indirect) callers.
	(module_state::check_read): Likewise.  Update callers.
	(module_state::lazy_load): Zap slot on failure.
	* name-lookup.c (get_binding_or_decl): No need to assert here.

	gcc/cp/
	* module.cc (module_state::write_readme): Tidy.
	(module_state::{add_writables,find_dependencies): Dump
	DEPENDENCIES.
	(module_state::direct_import): Always pop dump.
	* ptree.c (cxx_print_decl): Print DECL_MODULE_EXPORT_P.
	gcc/c-family/
	* c-ppoutput.c (scan_translation_unit): Remove unused var.

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

	gcc/cp/
	* module.cc (enum tree_tag): Add tt_namespace.
	(trees_out::tree_namespace): Use it.
	(trees_in::tree_node): Grok it.
	* name-lookup.h (get_imported_namespace): Declare.
	* name-lookup.c (get_imported_namespace): New.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_c.C: Adjust.

	gcc/cp/
	* module.cc (trees_out::{tree_{decl,type}): Drop owner arg.
	(trees_out::tree_namespace): New.
	(trees_out::ctx): Take owning-decl arg, use tree_namespace.
	(trees_out::{core_vals,tree_binfo}): Adjust.
	(trees_out::{read,write}_cluster): Adjust.

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

	gcc/cp/
	* module.cc: Add dumper::TREES to tree streamers.
	gcc/testsuite/
	* g++.dg/modules/: Add -uid to several lang dumps.

	gcc/cp/
	* module.cc (slurping::remap_module): New.
	(depset::hash::add_binding): Don't deal with namespaces here.
	(module_state::write_namespaces): No longer static.  Write
	locations.
	(module_state::read_namespaces): Read locations.
	(module_state::add_writables): Deal with namespaces here.
	(module_state::find_dependencies): Don't walk namespaces.
	* name-lookup.h (get_lookup_ident, find_by_ident): Reorder args,
	update callers.
	(add_imported_namespace): Add location arg.
	* name-lookup.c (module_binding_slot): Fix initial alloc.
	(extract_module_decls): Return namespace.
	(get_binding_or_decl, lookup_by_ident, get_lookup_ident): Reorder
	args.
	(make_namespace): Add loc & module args.
	(push_namespace): Adjust.
	(add_imported_namespace): Adjust.
	* ptree.c (cxx_print_decl): Avoid final linefeed.
	(cxx_print_xnode): Adjust MODULE_VEC
	gcc/
	* doc/invoke.texi: Document -fdump-lang-module options.
	gcc/testsuite/
	* g++.dg/modules/namespace-2.C: Adjust.

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

	gcc/cp/
	* cp-tree.h (module_exporting_level): Delete.
	(module_export_depth): Declare.
	(module_exporting_p): New.
	({push,pop}_module_export): Adjust, make inline.
	* module.cc (export_depth): Replace with ...
	(module_exporting_level): ... this.
	({push,pop}_module_export): Delete.
	(set_module_owner, import_module, module_begin_main_file)
	(finish_module_parse): Adjust.
	* parser.cc (cp_parser_module_export): Adjust.

	gcc/cp/
	* lex.c (module_preprocess_token): Fix padding/comment states.
	* parser.c (cp_parser_tokenize): Reduce is_decl states.

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

	Merge trunk r265362.

	Add -fno-module-keywords.
	gcc/
	* doc/invoke.text (fmodule-keywords): Document.
	gcc/cp/
	* lex.c (init_reswords): Don't add module keywords if
	fno-module-keywords.
	*module_preprocess_token): Adjust.
	* module.cc (module_State_config:get_opts): Drop fmodule-keywords.
	* parser.c (cp_parser_import_declaration): Allow to be tentative.
	(cp_parser_translation_unit): Allow module & import to not be
	keywords. Tentatively parse import declaration.
	(cp_parser_module_keyword): Commit to tentative parse.
	(cp_parser_tokenize): Allow import to not be a keyword.
	gcc/testsuite/
	* g++.dg/modules/keywords-1_[ab].C: New.

	gcc/cp/
	* lex.c (module_preprocessing_token): Pay attention to braces.
	* parser.c (cp_parser_tokenize): Return ptr to stopping import.
	Pay attention to CPP_HEADER tokenization.
	(cp_parser_translation_unit): Adjust.

	gcc/cp/
	* parser.c (cp_parser_diagnose_invalid_type_name): Use C_RID_CODE
	more.

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

	gcc/cp/
	* parser.c (cp_parser_tokenize): Don't stop after nested
	module/import decl.

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

	gcc/cp/
	* parser.c (cp_parser_translation_unit): Adjust GMF deferred
	imports.
	(cp_parser_tokenize): Only pay attention to module/export at start
	of decl.

	gcc/cp/
	* parser.c (cp_parser_translation_unit): Process deferred imports
	here ...
	(cp_parser_tokenize): ... not here.
	gcc/testsuite/
	* g++.dg/modules/macloc-1_d.C: Correct regexp.

	Expunge -fmodules-atom as a thing.
	gcc/
	* doc/invoke.texi (fmodules-atom): Delete.
	gcc/cp/
	* cp-tree.h (modules_legacy_p): Adjust.
	* module.cc: Expunge OPT_fmodules-atom.
	gcc/c-family/
	* c.opt (fmodules-ts): Adjust.
	(fmodules-atom): Alias fmodules-ts
	(fmodule-legacy*): Adjust.

	gcc/testuite/
	* g++.dg/modules/modules.exp (mode-list): Delete.
	(main): Don't use mode-list.
	* g++.dg/modules/: Add -fmodules-ts to many tests.

	Remove ATOM as a distinction.
	gcc/c-family/
	* c-cppbuiltin.c (c_cpp_builtins): Remove __cpp_modules_{atom,ts}.
	* c.opt (fmodules-ts): Adjust.
	gcc/cp/
	* cp-tree.h (modules_atom_p): Delete.
	* module.cc (module_state::write_readme): Drop ATOM distinction.
	(module_state::{read,write}_config): Likewise.
	(init_module_processing): Drop atom distinction.
	(handle_module_option): Adjust.
	gcc/testsuite/
	* g++.dg/modules/: Drop -fmodules-atom from all tests.

	Simplify translate-include hook.
	libcpp/
	include/cpplib.h (cpp_translate_include_t): Delete.
	(struct cpp_calbacks): Adjust translate_include decl.
	gcc/
	* langhooks.h (struct lang_hooks): Adjust preprocess_translate_include.
	gcc/c-family
	* c-opts.c (c_common_post_options): Adjust.
	gcc/cp/
	* cp-tree.h (maybe_import_include): Replace by ...
	(module_translate_include): ... this.
	* cp-lang.c (LANG_HOOKS_PREPROCESS_TRANSLATE_INCLUDE): Adjust.
	* module.c (module_state::do_import): Check read on all top level
	imports.
	(do_translate_include): Rename to ...
	(module_translate_include): ... this.  Explicitly turn off.
	(maybe_import_include): Delete.

	Preamble on module
	gcc/cp/
	* parser.c (cp_parser_import_declaration): Always check past_preamble.
	gcc/testsuite/
	* g++.dg/modules/atom-norescan-1.C: Delete.
	* g++.dg/modules/atom-pragma-1.C: Not atom-specific.
	* g++.dg/modules/atom-pragma-3.C: Likewise.
	* g++.dg/modules/atom-preamble-1.C: Likewise.
	* g++.dg/modules/atom-preamble-2_a.C: Likewise.
	* g++.dg/modules/atom-preamble-2_b.C: Likewise.
	* g++.dg/modules/atom-preamble-2_c.C: Likewise.
	* g++.dg/modules/atom-preamble-2_d.C: Likewise.
	* g++.dg/modules/atom-preamble-2_e.C: Likewise.
	* g++.dg/modules/atom-preamble-3.C: Likewise.
	* g++.dg/modules/atom-preamble-4.C: Likewise.
	* g++.dg/modules/mod-indirect-1_b.C: Adjust.

	No export { import x; }
	gcc/cp/
	* parser.c (cp_parser_tokenize): Drop nested arg, adjust.
	(cp_parser_translation_unit): Don't deal with outermost export { block.
	gcc/testsuite/
	* g++.dg/modules/err-1_a.C: Adjust.
	* g++.dg/modules/err-1_c.C: Adjust.
	* g++.dg/modules/import-1_c.C: Adjust.
	* g++.dg/modules/mod-decl-1.C: Adjust.


	No atom preamble in non-module
	gcc/cp/
	* parser.c (cp_parser_translation_unit): Preamble is tristate.
	(cp_parser_module_name): Add FOR_MODULE arg, issue error.
	(cp_parser_module_declaration): Adjust.
	(cp_parser_import_declaration): Adjust twice.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-[23].C: Adjust.
	* g++.dg/modules/legacy-6_f.C: Remove XFAIL.

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

	gcc/testsuite/
	* g++.dg/modules/err-2_[ab].*: Move to ...
	* g++.dg/modules/cpp-5_[ab].*: ... here.
	* g++.dg/modules/cpp5_c.C: New.

	Robustify parse errors on module/import decls.
	gcc/cp/
	* parser.c (cp_parser_consume_semicolon_at_end_of_statement):
	Return void.
	(cp_parser_translation_unit): Adjust.
	(cp_parser_{module,import}_declaration): Don't try and resync
	here.
	(cp_parser_tokenize): Deal with unprocessed incoming tokens.
	gcc/testsuite/
	* g++.dg/modules/err-2_[ab].*: New.

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

	Remove some atom/ts differences.
	gcc/cp/
	* module.cc (declare_module): Copy always.
	* parser.c (cp_parser_translation_unit): Allo GMF under atom.
	(cp_parser_module_name): Allow legacy name under ts
	(cp_parser_initial_pragma): Fix from trunk.
	gcc/testsuite/
	* g++.dg/modules: Many changes.

	gcc/cp/
	* module.cc (module_purview): New.
	(module_purview_p, module_interface_p): Use it.
	(module_maybe_interface_p): New.
	(module_state::direct_import): Use it.
	(process_deferred_imports): Likewise.
	(declare_module): Set it.
	* parser.c (cp_parser_translation_unit): Inform modules of GMF.

	gcc/testsuite/
	* g++.dg/modules/macloc-1_[abcd].C: No longer atom-specific.

	Locations for everyone!
	gcc/cp/
	* module.cc (loc_spans::{init,open,close}): Dump info.
	(module_state::{read,write}_location): No longer atom-specific.
	(module_state::{read,write}): Locations for everyone.
	(process_deferred_imports): Open and close spans correctly.
	gcc/testsuite/
	* g++.dg/modules/adhoc-1_[ab].C: No longer atom-specific.
	* g++.dg/modules/loc-1_[abc].C: Likewise.
	* g++.dg/modules/loc-2_[abcdef].C: Likewise.

	gcc/
	* dumpfile.c (dump_switch_p_1): Don't let a '-' filename fool the
	option machinery.

	Legacy importing during -E
	gcc/c-family/
	* c-lex.c (init_c_lex): Don't use lang_hooks here.
	* c-opts.c (c_common_init): Set them here.
	gcc/cp/
	* lex.c (module_preprocess_token): Enable legacy importing.
	* module.cc (module_state::read): Skip items when preprocessing
	only.
	(module_cpp_undef): Adjust unsetting.
	gcc/testsuite/
	* g++.dg/modules/cpp-2_c.C: Adjust.

	Remove token peeking & preamble related infrastructure.
	libcpp/
	* include/cpplib.h (cpp_relocate_peeked_tokens): Delete.
	(cpp_peek_token_with_location): Delete.
	(cpp_in_macro_expansion_p): Delete.
	* directives-only.c (_cpp_preprocess_dir_only): Adjust
	_cpp_handle_directive call.
	* directives.c (struct if_stack): Drop hash_loc.
	(PEEK_INVISIBLE): Delete.
	(linemarker_dir): Adjust.
	(_cpp_handle_directive): Drop hash_loc arg.  dont set it.
	(push_conditional): Drop hash_loc.
	* init.c (read_original_filename): Adjust _cpp_handle_directive
	call.
	* internal.h (struct cpp_reader): Delete peeked_directive field.
	(_cpp_handl_directive): Drop hash_loc arg.
	* lex.c (cpp_relocate_peeked_tokens): Delete.
	(cpp_peek_token): Swallow ...
	(cpp_peek_token_with_location): ... this.  Delete.
	(_cpp_lex_token): Adjust _cpp_handle_directive call.
	* macro.c (cpp_in_macro_expansion_p): Rename to ...
	(cpp_in_macro_expansion): ... this.  Make static.
	* traditional.c (_cpp_scan_out_logical_line): Adjust
	_cpp_handle_directive call.

	gcc/testsuite/
	* g++.dg/modules/*.H: Drop unnecessary -fmodules-atom option.

	Reimplement preamble peeking
	gcc/
	* doc/invoke.texi (fmodule-preamble): Delete.
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_PREAMBLE): Replace with ...
	(LANG_HOOKS_PREPROCESS_TOKEN): ... this.
	* langhooks.h (struct lang_hooks): Replace preprocess_preamble
	with preprocess_token.
	c-family/
	* c-ppoutput.c (scan_translation_unit): Adjust preprocess lang
	hook.
	* c.opt (fmodule-preamble, fmodule-preamble=): Delete.
	gcc/cp/
	* cp-lang.c (module_preamble_fsm): Delete.
	(LANG_HOOKS_PREPROCESS_PREAMBLE): Delete.
	(LANG_HOOKS_PREPROCESS_TOKEN): Override.
	* cp-tree.h (enum module_preamble_state): Delete.
	(module_preamble_prefix_{peek,next}): Delete.
	(module_preprocess_token): Declare.
	* lex.c (module_preamble_prefix_{peek,next}): Delete.
	(module_preprocess_token): New.
	* module.c (init_module_processing, handle_module_option): Drop
	preamble option handling.
	gcc/testsuite/
	* g++.dg/modules/*: Many changes.

	Remove preamble repeating.
	gcc/cp/
	* cp-tree.h (maybe_repeat_preamble): Delete.
	* module.c (maybe_repeat_preamble): Delete.
	* parser.c (cp_parser_initial_pragma): Revert to trunk.
	* lex.c (modle_preamble_prefix_peek): Don't repeat preamble.
	gcc/testsuite/
	* g++.dg/modules/cpp-preamble-1.C: Adjust.
	* g++.dg/modules/atom-preamble-1.C: Is now well formed.

	Remove preamble peeking
	gcc/cp/
	* cp-tree.h ({import,declare}_module): return void.
	(process_deferred_imports): Return void.
	(module_state::direct_import): Return void, deferrable is
	tristate.  Push onto pending_import vector if permitted.
	({import,declare}_module): Don't return adjustment, use
	direct_import always.
	(process_deferred_imports): Don't return adjustment.
	* parser.c (cp_parser_module_declaration): Return void, drop first
	arg.
	(cp_parser_import_declaration): Return void.
	(cp_parser_module_export): Don't deal with module declaration
	here.
	(cp_parser_get_module_preamble_tokens)
	(cp_parser_parse_module_preamble): Delete.
	(cp_parser_tokenize): Delete #ifdef'd adjustment code.
	(c_parse_file): Don't peek preamble.
	libcpp/
	* line-map.c (linemap_module_restore): Don't calculate adjustment.
	* include/line-map.h (linemap_module_restore): Return void.

	Common tokenizer for atom & ts
	gcc/cp/
	* module.cc ({import,declare}_module): Don't defer legacy modules.
	* parser.c (cp_parser_translation_unit): Deal with atom preamble.
	(cp_parser_module_declaration): No need to check if first.
	(cp_parser_tokenize): Enable filename token as needed.
	(c_parse_file): Disable preamble scan.
	gcc/testsuite/
	* g++.dg/modules/alias-1_b.C: Adjust.
	* g++.dg/modules/atom-pragma-1.C: Adjust
	* g++.dg/modules/atom-pragma-2.C: Delete.
	* g++.dg/modules/atom-preamble-2_e.C: Copy from 2_f.C
	* g++.dg/modules/atom-preamble-2_f.C: Delete.
	* g++.dg/modules/atom-preamble-[34].C: Adjust.
	* g++.dg/modules/atom-rescan-1.C: Delete.
	* g++.dg/modules/ice-1.C: Adjust
	* g++.dg/modules/macro-2_c.H: Adjust
	* g++.dg/modules/macro-3_b.H: Adjust
	* g++.dg/modules/macro-3_c.C: Adjust
	* g++.dg/modules/macro-6_b.C: Adjust

	gcc/cp/
	* cp-tree.h (process_deferred_imports): Drop location arg.
	* modules.cc ({import,declare}_module): Disable eager imports.
	(process_deferred_imports): Drop location arg, take it from the
	deferred imports.
	* parser.c (cp_parser_translation_unit): Process deferred imports.
	(cp_parser_tokenize): Correct close-brace handling.  Process
	deferred imports.
	(c_parse_file): Adjust prcess_deferred_imports call.
	gcc/testsuite/
	* g++.dg/modules/atom-preamble-1.C: More workarounds

	gcc/cp/
	* parser.c (cp_parser_translation_unit): Detect GMF here ...
	(cp_parser_module_declaration): ... not here.

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

	gcc/cp/
	* cp-tree.h ({import,declare}_module): Return adjustment.
	* module.c (module_state::direct_import): Preserve line table,
	return adjustment.
	* parser.c (cp_parser_fill_main): Delete.
	(cp_parser_tokenize): Take cp_token pointer, reorder check & push.
	(cp_parser_translation_unit): Take cp_token pointer, call
	cp_parser_tokenize.
	(c_parse_file): Don't tokenize here.

	gcc/cp/
	* lang-specs.h: Fix .s elision with legacy modules.

	gcc/
	* langhooks.h (struct lang_hooks): Adjust preprocess_main_file
	signature.
	gcc/c-family/
	* c-opts.c (push_command_line_include): Adjust
	preprocess_main_file hook call.
	(cb_file_change): Likewise.
	gcc/cp/
	* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE): Adjust.
	* cp-tree.h (module_note_main_file): Rename to ...
	(module_begin_main_file): ... here.
	(maybe_begin_legacy_module): Delete.
	* module.cc (declare_module): Remove legacy handling here.
	(module_note_main_file): Rename to ...
	(module_begin_main_file): ... here.  Swallow ...
	(maybe_begin_legacy_module): ... this.
	(process_deferred_imports): We're already exporting for legacy
	headers.
	* parser.c (c_parse_file): Don't call maybe_begin_legacy_module.

	gcc/cp/
	* cp-tree.h (process_deferred_imports): New.
	(module_preamble_load): Delete.
	* module.cc (module_state::direct_import): Fatal error here.
	(module_state::preamble_load): Delete, move into ...
	(process_deferred_imports): ... here.  Subsume ...
	(module_preamble_load): ... this.
	* parser.c (c_parse_file): Adjust.
	gcc/testsuite/
	* g++.dg/modules/atom-inc-1.C: Delete.
	* g++.dg/modules/atom-inc-1_[abc].*: New.
	* g++.dg/modules/import-2.C: Adjust.

	gcc/cp/
	* module.cc (module_state::direct_import): New.
	({import,declare}_module): Call it.
	(module_state::preamble_load): Likewise.

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

	libcpp/
	* lex.c (cpp_peek_token_with_location): Fix pragma rewinding.
	gcc/cp/
	* parser.c (cp_parser_initial_pragma): Peek at first token.

	Merge trunk r265127.

	gcc/cp/
	* parser.c (cp_parser_{module,import}_declaration): Remove temp hacks.
	(cp_parser_translation_unit, cp_parser_parse_module_preamble): Adjust.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-1.C: Adjust errors.
	* g++.dg/modules/atom-preamble-1.C: Likewise. XFAIL.
	* g++.dg/modules/mod-decl-1.C: Likewise,
	* g++.dg/modules/p0713-[23].C: Likewise.

	gcc/cp/
	* parser.c (cp_parser_translation_unit): Deal with one level of
	export block here.
	(check_module_outermost): Delete.
	(cp_parser_{module,import}_declaration): Don't call it.
	(cp_parser_declaration): Don't deal with module or import decls.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-[13].C: Adjust errors.

	gcc/cp/
	* parser.c (cp_parser_translation_unit): Detect module and import
	declarations here.

	Start breaking out toplevel parsing.
	gcc/c-family/
	* c.opt (Wlegacy-header): Delete.
	gcc/
	* doc/invoke.texi (Wlegacy-header): Delete.
	gcc/cp/
	* cp-lang.c (module_preamble_fsm): Don't call atom_preamble_end.
	* cp-tree.h (atom_preamble_end): Delete.
	* lex.c (module_preamble_prefix_peek): Drop Wlegacy_header check.
	* module.cc (module_preamble_end_loc): Delete.
	(do_translate_include): Always translate.
	(maybe_import_include): Drop Wlegacy_header check.
	(atom_preamble_end): Delete.
	* parser.h (cp_parser): Drop implicit_extern_c.
	* parser.c (cp_parser_tokenize): New.
	(cp_debug_parser): Drop implicit_extern_c.
	(cp_parser_new): Likewise.
	(cp_parser_translation_unit): Move global module detectin here.
	(module_preamble_end_loc): Delete declaration.
	(in_preamble): Temp hack.
	(cp_parser_{import,module}_declaration): A couple of temp hacks.
	(cp_parser_parse_module_preamble): Manipulate in_preamble.
	(cp_parser_toplevel_declaration): New, broken out of ...
	(cp_parser_declaration_seq_opt): ... here, call it. Drop top_level arg.
	(c_parse_file): Adjust.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-[23].C: Adjust diags.
	* g++.dg/modules/atom-preamble-[13].C: Likewise.
	* g++.dg/modules/legacy-6_[df].C: Likewise.

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

	Merge trunk r265055.

	Kill proclaiming decls
	gcc/cp/
	* cp-tree.h (push_module_export): Drop proclaiming arg.
	* module.c (proclaimer): Delete.
	({push,pop}_module_export): Adjust.
	(maybe_begin_legacy_module, module_preamble_load): Adjust.
	* parser.c (cp_parser_module_export): Adjust error.
	(cp_parser_module_proclamation): Delete.
	(cp_parser_declaration): Don't call it.
	gcc/testsuite/
	* g++.dg/modules/proclaim-1.C: Delete.

	Macro locations! (ATOM only)
	libcpp/
	* internal.h (linemap_enter_macro): Move declaration to ...
	* include/cpplib.h (linemap_enter_macro): ... here.
	(linemap_lookup_macro_index): Declare.
	* line-map.c (linemap_lookup_macro_index): Break out of ...
	(linemap_macro_map_lookup): ... this.  Use it.
	gcc/cp/
	* module.cc (loc_spans): Record macro spans.
	(module_state::write_readme): Record controlling macro.
	(module_state::{read,write}_location{s,}): Stream macro locations.
	(module_state::write_readme): Move later.
	gcc/testsuite/
	* g++.dg/modules/macloc-1_[abcd].C: New.

	Merge trunk r265037.

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

	gcc/cp/
	* module.cc (loc_spans::close): Close the current last map.
	(module_state::prepare_locations): Adjust.
	(module_state::preamble_load): Adjust span closing.
	(finish_module_parse): Likewise.

	gcc/cp/
	* module.cc (pending_imports): New.
	({import,declare}_module): Use it.
	(module_from_cmp): Delete.
	(module_state::preamble_load): Use pending_imports array.

	gcc/
	* doc/invoke.texi (fmodule-legacy): Augment syntax.
	gcc/cp/
	* module.cc (module_controlling_macro): Replace with ...
	(module_legacy_macro): ... this.
	(module_state::{read,write}_config): Controlling macros only for
	legacy mode.
	(set_module_legacy_name): New.
	(maybe_begin_legacy_module, handle_module_option): Use it.
	(init_module_processing, finish_module_parse): Adjust.
	gcc/c-family/
	* c.opt (fmodule-macro): Delete.
	gcc/testsuite/
	* g++.dg/modules/alias-1_a.H: Fix.
	* g++.dg/modules/legacy=0[ab].H: Adjust.
	* g++.dg/modules/alias-2_*: New.

	gcc/cp/
	* module.cc (module_state::controlling_macro): Delete.
	(module_state_config): New struct.
	(module_state::{read,write}_config): Wrap args in a struct.
	(get_option_string): Move into module_state_config.
	(module_state::write_macros): Adjust.
	(module_state::{read,write}): Adjust.

	gcc/cp/
	* module.cc (module_state::{read,write}_defines): Rename to ...
	(module_state::{read,write}_macros): ... here.
	(module_state::{read,write}): Cope with legacy aliases.
	(finish_module_parse): Install initialized controlling macro.
	gcc/testsuite/
	* g++.dg/modules/alias-1_[cdef].C: New.

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

	Lazy macro table loading
	gcc/cp/
	* module.cc (struct slurping): Add macro_tbl, rename macros to
	macros_def.
	(slurping::~slurping): Release macro_tbl.
	(module_state::{read,write}_config): Replace macro count with
	boolean.
	(module_state::{import,install}_defines): New.
	(module_state::read_defines): Map in the table, don't read it.
	(module_state::{check_read,freeze_an_elf}): Adjust.
	(import_module, module_state::preamble_load): Use install_defines.
	gcc/testsuite/
	* g++.dg/modules/macro-6_[abc].*: New.

	Controlling macros & alias detection
	gcc/cp/
	* module.cc (cpp_node, identifier): Conversions between
	cpp_hashnode and IDENTIFIER. Use them.
	(data_in::no_more): Seek end.
	(module_state::{resolve,is}_alias): New.
	(module_state::read): Return alias.
	(module_state::read_config): Initialize controlling macro,
	determine alias.
	(module_state::{read,write}_define): Allow unlocated macros.
	(module_controlling_macro): New switch.
	(module_state::{read_imports,do_import}): Deal with aliases.
	(module_state::write_config): Write controlling macro.
	(module_state::write_defines): Deal with controlling macro.
	(module_state::preamble_load): Deal with aliases.
	(finish_module_parse): Process explicit controlling macro.
	gcc/testsuite/
	* g++.dg/modules/alias-1*: New.
	* g++.dg/modules/macro-[234]*: Adjust.
	* g++.dg/modules/only-[23].C: Adjust.
	libcpp/
	* include/cpplib.h (HT_NODE,NODE_LEN,NODE_NAME): Adjust.
	(cpp_set_deferred_macro): Add defaulted forced arg.

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

	gcc/cp/
	* module.cc (module_state::deferred_macro): Print macro
	definition.
	gcc/testsuite/
	* g++.dg/modules/macro-2_d.C: Adjust regexps.
	* g++.dg/modules/macro-4_[de].C: Likewise.
	* g++.dg/modules/macro-5_c.C: Likewise.
	libcpp/
	* include/cpplib.h (cpp_macro_definition): Add overload.
	(cpp_macro_definition_location): Make inline, adjust.
	* macro.c (get_deferred_or_lazy_macro): New, broken out of ...
	(_cpp_notify_macro_use): ... here.  Call it.
	(warn_of_redefinition): Call it.
	(cpp_macro_definition): Split into two overloads. Deal with
	deferred macros.
	(cpp_macro_definition_location): Delete.

	gcc/cp/
	* module.cc (module_state): Add controlling_macro, unionize slurp
	with alias.  Add accessors.  Use them.
	(module_state::{read,do_import,read_config}): Drop check_crc arg.
	(module_state::read_imports): Zap direct_p before importing.

	Use 'include translation' terminology.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Adjust.
	gcc/cp/
	* cp-lang.c (LANG_HOOKS_PREPROCESS_TRANSLATE_INCLUDE): Override.
	* cp-tree.h (maybe_import_include): Adjust return type.
	* module.cc (module_mapper::translate_include): Replace ...
	(module_mapper::divert_include): ... this.
	(do_translate_include): Replace ...
	(do_divert_include): ... this.
	(maybe_import_include, atom_preamble_end): Adjust.
	gcc/
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE): Replace
	with ...
	(LANG_HOOKS_PREPROCESS_TRANSLATE_INCLUDE): ... this.
	* langhooks.h (struct lang_hooks): Replace
	preprocess_divert_include with preprocess_translate_include.
	libcpp/
	* directives.c (do_include_common): Adjust.
	* include/cpplib.h (cpp_divert_include_t): Rename to ...
	(cpp_translate_include_t): ... this.
	(struct cpp_callbacks): Replace divert_include with translate_include.

	Mainfile loc has no line number.
	libcpp/
	* internal.h (_cpp_stack_file): Add line_one_p arg.
	* files.c (_cpp_stack_file): Likewise.  Use it.
	* include/cpplib.h (cpp_read_main_file): Add line_one_p arg.
	* init.c (cpp_read_main_file): Likewise, use it.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Start main file on line zero.
	(push_command_line_include): Call preprocess_main_file hook here ...
	(cb_file_change): ... except when reading preprocessed source.
	* c.opt: Add full stops.
	gcc/cp/
	* module.cc (module_note_main_file): Remove fixmes fixed yesterday.
	gcc/testsuite/
	* g++.dg/modules/macro-4_[de].C: Adjust regexp.
	* g++.dg/modules/macro-5_c.C: Likewise.
	* lib/options.exp (check_for_options): Fix comment typos.

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

	Dump command line macros, better command line locs
	libcpp/
	* include/cpplib.h (cpp_force_token_locations): Take location, not
	pointer.
	* internal.h (cpp_reader): Replace forced_token_location_p with
	forced_token_location.
	* init.c (cpp_create_reader): Adjust.
	* lex.c (_cpp_lex_direct, cpp_force_token_locations): Adjust.
	(cpp_stop_forcing_token_locations): Adjust.
	gcc/c-family/
	* c-opts.c (c_finish_options): Force command line locations.
	gcc/cp/
	* module.cc (loc_spans::init): Add fixed and cmd line locs.
	(loc_spans::SPAN_*): New.
	(loc_spans::cmd_line): New.
	(module_state::read_location): Adjust, return module loc for
	UNKNOWN.
	(module_state::{prepare,read,write}_locations): Adjust.
	(maybe_add_macro): Write cmd_line macros.
	(load_macros): Location is main source file.
	gcc/fortran/
	* cpp.c (gfc_cpp_init): Adjust token forcing.
	gcc/testsuite/
	* g++.dg/modules/macro-4_[de].C: Adjust regexp.
	* g++.dg/modules/macro-5_*: New.

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

	Merge trunk r264769.
	Slip in module.c -> module.cc rename

	Merge trunk r264765.

	gcc/cp/
	* lang-specs.h: Error out on -fcoroutines.

	From c++-coroutines branch:
	2018-10-01  Iain Sandoe  <iain@sandoe.co.uk>
	gcc/c-family/
	* c-common.h (RID_CO_AWAIT, RID_CO_YIELD, RID_CO_RETURN,
	D_CXX_COROUTINES, D_CXX_COROUTINES_FLAGS): New.
	* c-common.c (c_common_reswords): co_await, co_yield,
	co_return New keywords.
	gcc/cp/
	* lex.c (init_reswords): Handle flag_coroutines.
	gcc/c-family/
	* c.opt (fcoroutines, fcoroutines-ts): New.

	Avoid UB type punning union shenanigans
	gcc/cp/
	* module.c (macro_import::slot): Explicitly code bit
	manipulation.  Update all users.
	gcc/testsuite/
	* g++.dg/modules/adhoc-1_b.C: Adjust regexp for wierd dejagnu/TCL bug.

	AdHoc locations
	gcc/cp/
	* modules.c (dumper): Add LOCATIONS, flags.
	(dumper::operator()): Add default arg.
	(dumper::push): Set flags.
	(module_state::{read,write}_location): Serialize adhoc locs.
	(module_state::deferred_macro): Optimize current TU undef case.
	gcc/testsuite/
	* g++.dg/modules/adhoc-1_[ab].C: New.

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

	gcc/cp/
	* module.c (module_state::deferred_macro): Fix undef hiding logic.
	gcc/testsuite/
	* g++.dg/modules/macro-4*: New.

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

	No speculative undefs.
	gcc/cp/
	* module.c (maybe_add_macro): Simplify.
	(module_state::undef_macro): Only add undef for a deferred macro.

	Add -fforce-module-macros
	libcpp/
	* include/cpplib.h (get_deferred_macro): Declare.
	* macro.c (undefer_macro): Rename to ...
	(get_deferred_macro): ... here.  Adjust callers.
	gcc/
	* doc/invoke.texi (fforce-module-macros): Document.
	gcc/c-family/
	* c.opt (fforce-module-macros): New.
	gcc/cp/
	* module.c (get_option_string): Prune more options.
	(load_macros): New.
	(finish_module_parse): Walk identifiers, if forcing macros.

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

	Add deferred cpp_hashnode field. Replace macro_imports hash table
	with vector and refactor.
	libcpp/
	* include/cpplib.h (NODE_DEFERRED_MACRO): Delete.
	(cpp_hashnode): Reduce flags width.  Add deferred field.
	(cpp_deferred_macro_p): Delete.
	(cpp_set_deferred_macro): Don't set flag.
	* directives.c (do_undef): Adjust deferred check.
	* macro.c (undefer_macro): Adjust.
	gcc/cp/
	* module.c (macro_export): Drop node field.  Add ctor.
	(macro_import): Rename one to struct slot.  Add ctors, type
	erase.  Delete struct traits.
	(macro_imports): Change to vec type.
	(macro_import::{append,exported}): Adjust.
	(get_macro_{imports,exports}): Allocate node deferred index,
	adjust.
	(maybe_add_macro): Add to macros vector, check unexported undefs
	here.
	(macro_loc_cmp): Reimplement.
	(module_state::{read,write}_macros): Adjust.
	(module_state::{undef,deferred}_macro): Likewise.
	(finish_module_parse): Adjust deallocation.

	Macro import and export (corrected).
	libcpp/
	* include/cpplib.h (cpp_callbacks): Add user_deferred_macro.
	(NODE_DEFERRED_MACRO): New.
	(cpp_hashnode): Increase flags size.
	(cpp_deferred_macro_p, cpp_set_deferred_macro): New.
	(cpp_compare_macros): Take two macros.
	* internal.h (_cpp_notify_macro_use): Take source location, return bool.
	(_cpp_maybe_notify_macro_use): Likewise.
	* directives.c (do_undef): Don't warn about unresolved deferred
	macros.
	(do_ifdef, do_ifndef): Cope with deferred macros evaporating.
	* expr.c (parse_defined): Likewise.
	* macro.c (undefer_macro): New.
	(enter_macro_context): Adjust notify call.
	(cpp_get_token_1): Deal with deferred nodes.
	(warn_of_redefinition):  Node extraction of compare, call ...
	(cpp_compare_macros): ... this to compare two macros.
	(cpp_create_definition): Adjust compare call.
	(_cpp_notify_macro_use): Deal with deferred macros.
	gcc/
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_DEFERRED_MACRO): New.
	* langhooks.h (struct langhooks): Add preprocess_deferred_macro.
	gcc/c-family/
	* c-lex.c (init_c_lex): Register deferred_macro hook.
	gcc/cp/
	* cp-tree.h (module_cpp_deferred_macro): Declare.
	* cp-lang.c (LANG_HOOKS_PREPROCESS_DEFERRED_MACRO): Override.
	* module.c (bytes_in::random_access): New.
	(elf_in::{preserve,release}): New.
	(slurping::{legacies,macros}): New fields.
	(slurping::close): New.
	(module_state::legacies): Remove field.
	(module_state::slurper): Delete.
	(module_state::{read,write}_config): Add number of macros.
	(module_state::{read,write}_define{,s}): Reimplement.
	(module_state::{undef,deferred}_macro): New.
	(cpp_undefs): Delete.
	(struct macro_export, struct macro_import): New.
	(get_macro_{export,import}): New.
	(maybe_add_macro,macro_loc_cmp): Adjust.
	(module_state::{read,write}): Adjust.
	(module_state::check_read): Adjust.
	(module_state::set_import): Adjust.
	(module_state::freeze_an_elf): Preserve macros.
	(import_module): Update legacies bitmap.
	(module_cpp_undef): Call module_state::undef_macro.
	(module_cpp_deferred_macro): New.
	(finish_module_parse): Free macro state.
	gcc/testsuite/
	* g++.dg/modules/macro-2_*: Adjust tests.
	* g++.dg/modules/macro-3_*: Likewise.

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

	gcc/cp/
	* modules (module_state): Add legacies bitmap.
	(module_state::write): Write README later.
	(module_state::read): Set legacies bit.
	(module_state::set_import): Update legacies.
	gcc/testsuite/
	* g++.dg/modules/unnamed-1_b.C: Update.

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

	gcc/
	* doc/invoke.texi (C++ Modules): Update mapper protocol.
	* cxx-mapper.c (client): Remove bewait, forget members.
	(client::action): Remove BYIMPORT, BEWAIT & RESET.

	Remove BYIMPORT, BEWAIT.
	gcc/cp/
	* module.c (module_mapper::uncork): Send blank command.
	(module_mapper::imex_query): Take exported_p bool.
	(module_mapper::bewait_{cmd,response}): Delete.
	(module_mapper::send_command): Don't shortcut blank format.
	(module_state::preamble_load): Avoid async commands.

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

	gcc/
	* langhooks.h (preprocess_main_file): Drop index arg.
	gcc/c-family/
	* c-opts.c (cb_file_change): Adjust preprocess_main_file hook.
	gcc/cp/
	* cp-tree.h (module_node_main_file): Drop index parm.
	* module.c (loc_spans::init_p, ): New.
	(loc_spans::init_once): Rename to ...
	(loc_spans::init): ... here.
	(loc_spans::main_start): New.
	(prefix_line_maps_hwm, prefix_locations_hwm): Delete.
	(maybe_add_macro, declare_module, do_divert_include)
	(module_note_main_file, maybe_begin_legacy_module): Adjust.

	A grand renaming
	gcc/cp/
	* cp-tree.h (atom_preamble_state, atom_preamble_prefix_peek)
	(atom_preamble_prefix_next): Rename to ...
	(atom_preamble_state, atom_preamble_prefix_peek)
	(atom_preamble_prefix_next): ... here.
	(atom_cpp_undef, atom_module_preamble, atom_main_file)
	(atom_divert_include, maybe_atom_legacy_module): Rename to ...
	(module_cpp_undef, module_preamble_load, module_note_main_file)
	(maybe_import_include, maybe_begin_legacy_module): ... here.
	* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE)
	(LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE)
	(LANG_HOOKS_PREPROCESS_UNDEF, LANG_HOOKS_PREPROCESS_PREAMBLE): Adjust.
	(module_preamble_fsm): Adjust.
	* lex.c (atom_preamble_prefix_peek, atom_preamble_prefix_next):
	Rename to ...
	(atom_preamble_prefix_peek, atom_preamble_prefix_next): ... here.
	Adjust.
	* module.c (atom_cpp_undef, atom_module_preamble, atom_main_file)
	(atom_divert_include, maybe_atom_legacy_module): Rename to ...
	(module_cpp_undef, module_preamble_load, module_note_main_file)
	(maybe_import_include, maybe_begin_legacy_module): Here ... Adust.
	* parser.c (cp_parser_get_module_preamble_tokens, c_parse_file):
	Adjust.

	Expunge the spewer
	gcc/cp/
	* module.c (struct slurping): No need to tag.
	(struct spewing): Delete.
	(declare_module, module_state::atom_preamble)
	(finish_module_parse): Don't deal with it.

	Expunge old location scheme
	gcc/cp/
	* module.c (struct slurper): Remove early_locs, late_locs,
	loc_offset, filenames.
	(module_state::{prepare,read,write}_locations): Delete
	(module_state::{read,write}): Adjust.

	New locations working
	gcc/cp/
	* module.c (module_state::prepare_locations): New, broken out of ...
	(module_state::write_locations): Adjust.
	(module_state::read_locations): Fix.

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

	Read & write new locations (buggy, disabled).
	gcc/cp/
	* module.c (module_state::{read,write}_location): Add new-loc
	scheme.
	(module_state::{read,write}_locations): Adjust.
	(module_state::read): Select location scheme.
	gcc/testsuite/
	* g++.dg/modules/loc-1_c.C: Use regexp for note loc.

	Reading location spans (but not using them).
	gcc/cp/
	* module.c (loc_range_t): Global typedef.
	(loc_spans::release): Delete.
	(slurping): Add new range locs.
	(module_state::write_locations): Adjust.
	(module_state::read_locations): New.
	(module_state::read): Call it.

	Stop passing line_map around.  There is only one.
	gcc/cp/
	* cp-tree.h (import_module, declare_module, atom_module_preamble)
	(finish_module_parse, maybe_atom_legacy_module): Drop line_map
	arg.
	* decl2.c (c_parse_final_cleanups): Adjust.
	* parser.c (cp_parser_module_declaration)
	(cp_parser_import_declaration, c_parse_file): Adjust.
	* module.c (loc_spans): Drop lmaps member & adjust.
	(module_state): Drop line_maps from some but not all members.

	Refactor location spans
	gcc/cp/
	* module.c (class loc_spans): New.  Absorb ...
	({open,close,ordinary,macro}_interval): ... these.  Update all uses.

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

	Adding location spans
	gcc/cp/
	* module.c (loc_range_t): New range.
	(struct lmap_interval): New.
	(lmap_spans): New.
	(open_interval, close_interval, ordinary_interval)
	(macro_interval): New.
	(module_state::write_locations): Write spans.
	(module_state::write): Write spans.
	(module_state::atom_preamble): Update spans.
	(atom_main_file): Initialize spans.
	(finish_module_parse): Close out span.

	gcc/cp/
	* parser.c (cp_parser_get_module_preamble_tokens): Don't read past
	EOF.
	gcc/testsuite/
	* g++.dg/modules/ice-1.C: New.
	* g++.dg/modules/modules.exp: Remove old pruning.

	Implement p1103r0 19.3/2 not-a-keyword.
	gcc/cp/
	* module (module_state::write_define): Don't export keywords.
	gcc/testsuite/
	* g++.dg/modules/legacy-7_{a.H,b.C}: New.

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

	gcc/
	* diagnostic.c (diagnostic_report_current_module): Do not line
	break after module name.
	gcc/testsuite/
	* lib/prune.exp (prune_gcc_output): Adjust module loc regexp.
	* g++.dg/modules/loc-2_[def].C: Adjust dg-regexp.
	* g++.dg/modules/macro-2_d.C: Likewise.

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

	gcc/c-family/
	* c.opt (fmodule-only): Set flag.
	gcc/cp/
	* decl2.c (c_parse_final_cleanups): Always call finish_module_parse.
	* module.c (finish_module_parse): Warn on incorrect -fmodule-only.
	gcc/testsuite/
	* g++.dg/modules/only-[123].C: New.

	Add -fmodule-only, rename -fmodules-legacy
	gcc/c-family/
	* c.opt (fmodules-legacy*): Rename to ...
	(fmodule-legacy*): ... here.
	(fmodule-only): New.
	gcc/cp/
	* lang-specs.h: Incorporate -fmodule-only.
	* module.c (get_option_string, handle_module_option): Adjust.
	gcc/
	* doc.invoke.texi: Update module options.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Adjust.
	* g++.dg/modules/*: Adjust options.

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

	libiberty/
	* configure.ac (checkfuncs, AC_CHECK_FUNCS): Add pipe2.
	* configure, config.in: Regenerated.
	* pex-unix.c (pex_unix_execute): Use pipe to transfer child failure.

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

	AIXify tests
	fcc/testsuite/
	* fn-inline-1_[abc].C: Adjust regexps.
	* sym-subst-2_a.C: Don't add -fat-lto option, use scan-assembler instead.

	Fix AIX
	gcc/cp/
	* cxx-mapper.cc (buffer::get_request): Reinit pos.

	Fix --enable-checking=release.
	gcc/cp/
	* name-lookup.c (set_module_binding): Add static cast.

	Fix more GC
	gcc/cp/
	* module.c (module_state): Tag for_user.
	(module_state_hash): Defive from ggc_ptr_hash.
	(init_module_processing): GGC alloc hash table.  get mapper when
	not lazy, add ggc_collect.
	(finish_module_parse): Don't zap hash table here ...
	(finish_module_processing): ... do it here instead.
	gcc/testsuite/
	* g++.dg/modules/gc-2_a.C: New.
	* g++.dg/modules/gc-2.map: New.

	AIX build
	gcc/
	* configure.ac: Check sighandler_t, memrchr.
	* config.in, configure: Rebuilt.
	gcc/cp/
	* Make-lang.in (MODULE_STAMP): Protect against non--r capable
	date.
	(cxx-mapper): Add LIBINTL, not LIBBACKTRACE.
	* module.c (memrchr, sighandler_t): Provide fallback.
	* cxx-mapper.cc (memrchr, sighandler_t): Provide fallback.

	* Merge trunk r263974.

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

	gcc/cp/
	* module.c (atom_cpp_undef): location_t arg is unused.

	gcc/cp/
	* module.c (module_state::{read,write}_define): Add NUL
	terminators to CPP_TOKEN_FLD_STR elements.

	libcpp/
	* lex.c (cpp_alloc_token_string): Don't clobber ending NUL.

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

	Undefs
	gcc/cp/
	* cp-lang.c (LANG_HOOKS_PREPROCESS_UNDEF): Override.
	* cp-tree.h (atom_cpp_undef): Declare.
	* module.c: Include langhooks.h.
	(cpp_undefs): New global.
	(module_state::{read,write}_defines): Stream undefs.
	(atom_cpp_undef): Define.
	gcc/
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_UNDEF): Default.
	(LANG_HOOKS_INITIALIZER): Add it.
	* langhooks.h (struct lang_hooks): Add preprocess_undef hook.
	gcc/c-family/
	* c-lex.c: Include langhooks.h
	(init_c_lex, cb_undef): Look at lang hook.
	gcc/testsuite/
	* g++.dg/modules/macro-3_[ab].H: New.
	* g++.dg/modules/macro-3_c.C: New.

	Sorted macros
	gcc/cp/
	* module.c (module_state::{read,write}_define): New, single-macro
	streamers.
	(module_state::write_define_cb): Delete.
	(maybe_add_macro, macro_loc_cmp): New.
	(module_state::write_defines): Write in source order.
	(module_state::read_defines): Adjust.

	Macro define locations
	libcpp/
	* include/cpplib.h (cpp_macro): Add imported field.
	gcc/cp/
	* module.c (module_state::write_define_cb): Ignore imported, write
	location.
	(module_state::read_defines): Read location.
	gcc/testsuite/
	* g++.dg/modules/macro-2_[abc].H: New.
	* g++.dg/modules/macro-2_d.C New.

	Reading macros.
	gcc/cp/
	* module.c (bytes_{in,out}::cpp_node): New.
	(bytes_out::buf): New.
	(bytes_{in,out}::str): Treat zero-length strings specially.
	(module_state::write_define_cb): Concatenate strings.
	(module_state::write_defines): Write padding byte.
	(module_state::read_defines): New.
	(module_state::read): Call it.
	libcpp/
	* include/cpplib.h (cpp_alloc_token_string): New.
	(cpp_compare_macros): Declare.
	* lex.c (cpp_alloc_token_string): New, broken out of ...
	(create_literal): ... here.  Call it.
	* macro.c (warn_of_redefinition): Rename to ...
	(cpp_compare_macros): ... this, and make it extern.
	(_cpp_create_definition): Adjust.
	gcc/testsuite/
	* g++.dg/modules/macro-1_a.H: Adjust.
	* g++.dg/modules/macro-1_b.C: New.

	Writing macros.
	gcc/cp/
	* cp-tree.h (import_module, declare_module, atom_module_preamble,
	finish_module_parse, maybe_atom_legacy_module): Add cpp_reader
	arg.
	* decl2.c (c_parse_final_cleanups): Adjust finish_module_parse.
	* module.c (bytes_out::str): Overload for cpp_hashnode.
	(module_state::read_imports,write_imports,do_import): Add
	cpp_reader arg.
	(module_state::atom_preamble): Likwise.
	(import_module, declare_module, atom_module_preamble)
	(finish_module_parse, maybe_atom_legacy_module): Likewise.
	(module_state::write_{define_cb,defines}): New.
	(module_state::write): Write defines when in legacy mode.
	* parser.c (cp_parser_module_declaration)
	(cp_parser_import_declaration, c_parse_file): Pass parse_in.
	gcc/testsuite/
	* g++.dg/modules/macro-1_a.H: New.

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

	Merge trunk r263897.

	gcc/cp/
	* module.c (module_state): Remove depth.
	(module_state::maybe_create_loc): Replace ...
	(module_state::set_loc): ... this.
	(module_state::read_imports): Check CRC of indirect imports too.
	(module_state::attach): Simplify logic.
	libcpp/
	* include/linemaph (linemap_module_loc): Drop CURRENT parm.
	* line-map.c (linemap_module_loc): Drop reseating capability.

	gcc/cp/
	* module.c (module_state::check_not_purview): New.
	(module_state::read_imports,import_module): Use it.

	Remove %M formatter, it is not worth complexity.
	gcc/c-family/
	* c-format.c (local_module_ptr_node): Remove
	(gcc_cxxdiag_char_table): Remove 'M'
	(init_dynamic_diag_info): Remove module_state lookup
	* c-format.h (T89_M): Remove
	gcc/cp/
	* cp-tree.h (class module_state): Move to module.c section.
	(pp_module_name): Delete.
	* error.c (cp_printer): Remove %M.
	* module.c: Remove %M error printing.
	(pp_module_name): Delete.
	* ptree.c (cxx_print_decl): Print module number too.

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

	Mangling substitutions!
	gcc/cp/
	* cp-tree.h (module_vec_name): Delete.
	* mangle.c (mangle_substitution): Fix name typo.
	* module.c (class module_state): Drop vec_name field.  Make mod
	short.  Add subst field.
	(module_state::mangle): New.
	(mangle_module): Deal with substitutions.
	(mangle_module_fini): Undeal with substitutions.
	(module_vec_name): Delete.
	(module_state::attach): Don't set vec_name.
	gcc/testsuite/
	* g++.dg/modules/sym-subst-1.C: New.
	* g++.dg/modules/sym-subst-2_[ab].C: New.

	Fix module-state lifetime issue.
	gcc/cp/
	* cp-tree.h (finish_module): Break into ...
	(finish_modle_{parse,procesing}): ... these two.
	* decl2.c (c_parse_final_cleanups): Adjust modules finalization.
	* modules.c (finish_modules): Break into ...
	(finish_module_{parse,procesing}): ... these two.
	(module_state::release): Break out ...
	(module_state::slurped): ... this.
	(module_state::{init,fini}): Fold into callers.

	Refactor mangling interface.
	gcc/cp/
	* cp-tree.h (mangle_module, mangle_module_fini): Declare.
	(mangle_substitution, mangle_identifer): Declare.
	* mangle.c (mangle_substitution, mangle_identifer): Define.
	(struct globals): Add mod field.
	(maybe_write_module): Call mangle_module.
	(finish_mangling_internal): Call mangle_module_fini.
	* module.c (mangle_module, mangle_module_fini): Define.

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

	Module state gains parent.
	gcc/cp/
	* cp-tree.h (get_module): Add parent argument.
	(module_name): Return string.
	* error.c (dump_module_suffix): Adjust module_name use.
	* module.c (module_state_hash): Adjust for having a parent.
	(module_state: Add parent & fullname fields.
	(module_state::set_name): Delete.
	(get_module): Add parent.
	(get_module): Split string.
	(module_mapper::{export_done,imex_query}): Adjust module name access.
	(module_state::write_readme): Adjust.
	(module_state::{read,write}_{imports,config}): Adjust.
	(module_state::set_loc): Use fullename.
	(module_state::attach): Create fullname.
	* parser.c (cp_parser_module_name): Generate parental name.
	* ptree.c (cxx_print_decl): Adjust.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-1.C: Adjust diags.

	Kill N: prefix notation
	gcc/cp/
	* module.c (enum module_kind): Delete.
	(module_state): Replace kind with legacy, adjust is_legacy.
	(module_state::set_name): Adjust.
	(module_state_hash): Adjust hasher & comparator.
	(module_legacy_system_p): Delete.
	(make_flat_name): Move into ...
	(get_module): ... here.  Adjust.
	(get_module): Add string variant.
	(module_mapper::module_mapper): Adjust.
	(module_mapper::{module_name_kind,response_name}): Delete.
	(module_mapper::{imex_query,bewait_response,divert_include}): Adjust.
	(module_state::{read_imports,attach}): Adjust.
	(pp_module_name): Adjust.
	(maybe_atom_legacy_module, init_module_processing)
	(handle_module_option): Adjust.
	* cxx-mapper.cc (module2bmi): Remove encoding.
	(encode_module_name): Remove encoding.
	gcc/c-family/
	* c-lex.c (c_lex_with_flags): CPP_HEADER include quoting.
	gcc/
	* doc/invoke.texi (C++ Modules): Adjust protocol doc.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Adjust BMI mapping.
	* g++.dg/modules/legacy-0[ab].H: New.
	* g++.dg/modules/legacy-*: Adjust.

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

	%M formatter
	gcc/c-family/
	* c-format.c (local_module_ptr_node): New.
	(gcc_cxxdiag_char_table): Add 'M'.
	(argument_parser::handle_conversions): Allow wanted type to be
	NULL.
	(init_dynamic_diag_info): Simplify lookup, add module_state.
	* c-format.h (T89_M): New.
	gcc/cp/
	* cp-tree.h (class module_state): Declare before diagnostics.
	* error.c (cp_printer): Add %M.
	* module.c: Use %M error printing.

	Use modules as handles themselves.
	gcc/cp/
	* cp-tree.h (class module_state): Forward declare.
	(get_module, pp_module_name): Declare.
	(import_module, declare_module, push_module_export): Take
	module_state.
	* module.c (proclaimer): A module.
	(get_module, pp_module_name): Define.
	(push_module_export, import_module, declare_module): Adjust.
	* parser.c (cp_parser_module_name): Return module_state.
	(cp_parser_module_declaration, cp_parser_import_declaration)
	(cp_parser_module_proclamation): Adjust.

	Fix GTY
	gcc/cp/
	* cp-tree.h (struct mc_index): Don't mark.
	(struct mc_slot): Converted from union.  Adjust.
	(struct module_cluster): Skip mc_index.
	* module.c (struct slurping,spewing): Skip range_t members.
	(class module_state): Remove static data members.
	(global_tree_arys, fixed_trees, global_crc, our_opts, lazy_lru)
	(lazy_open, modules, modules_hash): New static vars.  Adjust uses.
	(finish_module): Add gc point.
	gcc/testsuite/
	* g++.dg/modules/gc-1_[abcd].C: New.

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

	gcc/cp/
	* cp-tree.h (declare_module, import_module): Separate name from
	location.
	* module.c (module_state::attach): Drop maybe_vec_name arg.
	(module_state::get_module): Flatten here.
	(declare_module, import_module): Separate name and from loc.
	(maybe_atom_legacy_module): Adjust.
	* parser.c (cp_parser_module_name): Return tree only.
	(cp_parser_module_declaration, cp_parser_import_declaration): Adjust.
	gcc/testsuite/
	* g++.dg/modules/legacy-4.H: Adjust error.

	gcc/cp/
	* module.c (module_mapper::divert_include): Don't append export attrib.
	(import_module): Don't scan attribs.
	(maybe_atom_legacy_module): Push exporting.
	gcc/testsuite/
	* g++.dg/modules/legacy-3_[bc].H: Adjust.
	* g++.dg/modules/legacy-5_b.C: Adjust.
	* g++.dg/modules/legacy-6_[cd].C: Adjust.

	gcc/cp/
	* module.c (module_state::get_module): Lose dflt & insert args.
	(module_state::insert_mapping): Move directly into ...
	(module_mapper::module_mapper): ... here.
	(module_mapper::bewait_response, module_state::read_imports): Adjust.
	(import_module, declare_module): Adjust.

	gcc/cp/
	* module.c (module_state::is_mapping): Rename to ...
	(module_state::is_detached): ... here.  Use from_loc.
	(module_state::attach): New broken out of ...
	(module_state::find_module): ... here.  Delete, fold into ...
	(module_state::read_imports, import_module, declare_module): ...
	these callers.
	(module_state::read): Adjust module index setting.

	libiberty/
	* pex-unix.c (IS_FAKE_VFORK): Rename to VFORK_IS_FORK.
	(pex_unix_exec_child): Avoid spuros clobber warning, use stdio
	when forking.

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

	Merge trunk r263679.

	Merge trunk r263673.

	Revert r263619  2018-08-17  Nathan Sidwell  <nathan@acm.org>
	Revert r263597  2018-08-16  Nathan Sidwell  <nathan@acm.org>
	They break GTY strangely.

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

	gcc/cp/
	* module.c (module_state::is_detached): New.
	(module_state::attach): New, broken out of ...
	(module_state::find_module): ... here.  Call it.
	(declare_modules): Do module-specific attaching here.

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

	gcc/testsuite/
	* g++.dg/modules/modules.exp (dg-module-pre-prune): Delete
	(g++-dg-prune): Don't override.
	* g++.dg/modules/legacy-4.H: Use dg-regexp.
	* g++.dg/modules/loc-2_[def].C: Likewise.

	gcc/cp/
	* cp-tree.h (class module_state): Forward declare.
	(get_module, pp_module_name): Declare.
	(push_module_export, declare_module, import_module): Take
	module_state.
	* error.c (cp_printer): Accept %M.
	* module.c (module_state::find_module): Take module_state.
	(module_state::get_module): Drop default & insert args.
	(module_state::insert_mapping): Delete.
	(module_mapper::{module_mapper,bewait_response): Adjust.
	(module_mapper::divert_include): Drop indentation.
	(module_state::read_imports): Adjust.
	(proclaimer): Is a module_state pointer.
	(push_module_state, declare_module, import_module): Adjust.
	(pp_module_name): New.
	(get_module): New.
	(maybe_atom_legacy_module): Adjust.
	* parser.c (cp_parser_module_name): Return module_state, adjust.
	(cp_parser_module_declaration, cp_parser_import_declaration):
	Adjust.
	gcc/testsuite/
	* g++.dg/modules/legacy-4.H: Adjust regexp.

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

	Merge trunk r263429.

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

	Merge trunk r263272.

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

	libcpp/
	* include/cpplib.h (cpp_clear_if_stack): Renamed from
	cpp_pop_directives.
	* directives.c (cpp_clear_if_stack): Likewise, drop all arg.
	gcc/c-family/
	* c-ppoutput.c (scan_translation_unit): Fixup.

	gcc/c-family/
	* c.opt (fmodule-preamble): Alias fmodule-preamble=
	(fmodule-preamble): Fix type.
	* module.c: Add i18n markers.
	(init_module_processing): Detect unsupported option combos.
	(handle_module_option): Don't zap explicit modules-ts.
	gcc/
	* diagnostic.c (diagnostic_report_current_module): Add i18n
	markers.
	gcc/testsuite/
	* g++.dg/modules/cpp-preamble-9.C: New.
	* g++.dg/modules/modules.exp (mode_list): Preamble is atom.
	libcpp/
	* directives.c (cpp_pop_directives): Buffer could be NULL.le

	gcc/cp/
	* lex.c (atom_preamble_prefix_peek): Use cpp_macro_p.

	Hide NT_MACRO
	libcpp/
	* include/cpplib.h (cpp_macro_p): New.
	* macro.c (cpp_fun_like_macro_p): Use it.
	gcc/c-family/
	* c-ada-spec.c (count_ada_macro, store_ada_macro): Use
	cpp_macro_p.
	* c-ppoutput.c (dump_macro): Likewise.
	* c-spellcheck.cc (should_suggest_as_macro_p): Likewise.
	gcc/
	* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Use cpp_macro_p.
	* config/powerpcspe/powerpcspe-c.c (rs6000_macro_to_expand): Likewise.
	gcc/fortran/
	* cpp.c (dump_macro): Use cpp_macro_p.

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

	gcc/testsuite/
	* g++.dg/modules/modules.exp: Restore g++-dg-prune after test.
	* g++.dg/modules/legacy-5_c.C: Fix scan-lang-dump.

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

	No ALIASes for IMPORTS
	gcc/cp/
	* cxx-mapper.cc (module2bmi): No aliases here.
	(client::imex_response): Adjust.
	gcc/
	* doc/invoke.texi (C++ Modules): Remove ALIAS from IMPORT response
	set.

	Legacy header warning
	gcc/
	* invoke.texi (Wlegacy-header): New warning.
	gcc/c-family/
	* c.opt (Wlegacy-header): New.
	gcc/cp/
	* cp-tree.h (atom_preamble_end): Declare.
	* cp-lang.c (atom_preamble_fsm): Use it.
	* lex.c (atom_preamble_prefix_peek): Check OPT_Wlegacy_header.
	* module.c (do_divert_include): Likewise.
	(atom_divert_include): Default -Wlegacy-header.
	(atom_preamble_end): New.
	* parser.c (c_parse_file): Use it.
	gcc/testsuite/
	* g++.dg/modules/legacy-6*: New.

	Legacy header aliasing
	gcc/
	* doc/invoke.texi (C++ Modules): Update protocol docs
	gcc/cp/
	* cxx-module.cc (module2bmi): Deal with aliasing.
	(encode_module_name): New.
	(read_mapping_file): Use it.  Deal with aliasing.
	(client::imex_response): Likewise.
	(client::action): Likewise,
	* module.c (module_mapper::module_name_kind): New.
	(module_mapper::response_name): Use it.
	(module_mapper::divert_include): Allow aliasing.
	gcc/testsuite/
	* g++.dg/modules/legacy-5*: New.

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

	Merge legacy header options to -fmodules-
	gcc/
	* doc/invoke.texi (C++ Modules): Adjust.
	gcc/c-family/
	c.opt (fmodules_legacy, fmodules_legacy=): New.
	(fmodule-{user,system}-header{,=}): Delete.
	gcc/cp/
	* cp-tree.h (modules_legacy_p): Renamed from modules_header_p.
	* lang-specs.h (@c++-header): Update.
	* lex.c (atom_preamble_prefix_peek): Adjust.
	* module.c (module_legacy_name): Do not force to empty string.
	(module_state::get_option_string): Adjust.
	(declare_module, maybe_atom_legacy_module, init_module_processing)
	(handle_module_option): Likewise.
	gcc/testsuite/
	* g++.dg/modules/legacy-[1234]*: update.
	* g++.dg/modules/atom-inc-1.C: Update.

	Explicit user/system legacy headers
	gcc/c-family/
	* c-lex.c (c_lex_with_flags): Encode header names in tree lists.
	* c.opt (fmodule-{user,system}-header): New.
	gcc/cp/
	* cxx-mapper.cc (module2bmi): Adjust.
	(read_mapping_file): Encode legacy header names.
	* lang-specs.h (@c++-header): Update.
	* module.c (module_state_hash::hash): Update hashers.
	(enum module_kind): New.
	(module_state::set_name): Adjust.
	(module_state_hash::equal): Adjust.
	(module_header_is_system): New.
	(make_legacy_name): Delete.
	(module_state::get_module): Adjust.
	(module_mapper::response_name): New.
	(module_mapper::imex_query): Adjust.
	(module_mapper::bewait_response): Adjust.
	(module_mapper::divert_include): Adjust.
	(declare_module, maybe_atom_legacy_module): Likewise.
	(handle_module_option): Check new options.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: update BMI encodings.
	* g++.dg/modules/legacy-[1234]*: update.
	* g++.dg/modules/atom-inc-1.C: Update.
	gcc/
	* doc/invoke.texi (C++ Modules): Document new options.

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

	Diverted header column preservation
	libcpp/
	* directives.c (do_include_common): Adjust divert callback.
	* include/cpplib.h (cpp_divert_include_t): Likewise.
	gcc/cp/
	* module.c (module_mapper::divert_include): Add line_maps.
	Preserve column number.
	(import_module): Look at attribs.
	(do_divert_include): Adjust.
	* parser.c (cp_parser_module_declaration): Return loc of name.
	(cp_parser_import_declaration): Likewise.
	(cp_parser_parse_module_preamble): Adjust.
	gcc/
	* langhooks.h (lang_hooks): Adjust preprocess_divert_include.
	gcc/testsuite/
	* g++.dg/modules/legacy-3_b.H: Adjust.
	* g++.dg/modules/legacy-3_c.H: Adjust.
	* g++.dg/modules/legacy-4.H: Adjust.

	Diverted include line numbering
	libcpp/
	* directives.c (do_include_common): Fixup diversion line
	numbering.
	(_cpp_pop_buffer): Free to_free even if not a file.
	gcc/c-family/
	* c-ppoutput.c (print_line_1): More C++y.
	gcc/cp/
	* module.c (module_mapper::divert_include): Two \n's.
	gcc/testsuite/
	* g++.dg/modules/legacy-4: New.
	* g++.dg/modules/legacy-3_b.H

	gcc/testsuite/
	* g++.dg/modules/modules.exp (dg-module-pre-prunes): Renamed.

	libcpp/
	* directives.c (do_include_common): Include diverter will push
	buffer.
	* include/cpplib.h (cpp_divert_include_t): Adjust signature.
	gcc/
	* langhooks.h (lang_hooks): Adjust preprocess_divert_include
	signature.
	gcc/cp/
	* module.c (module_mapper::divert_include): Push buffer here.
	(do_divert_include): Adjust.

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

	gcc/testsuite/
	* g++.dg/modules/legacy-3*: New.

	gcc/testsuite/
	* g++.dg/modules/modules.exp: Fix execution tests. Add dg-module-literal
	* g++.dg/modules/legacy-2_d.C: Fix expected line number.
	* g++.dg/modules/loc-2_[def].C: Use dg-module-literal.

	(Beginnings of) Include diversion.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Set divert_include hook.
	(cb_file_change): Fixup precedence.
	gcc/cp/
	* cp-lang.c (LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE): Override.
	* cp-tree.h (modules_header_p): New.
	(atom_divert_include): Declare.
	* cxx-mapper.cc (flag_fallback): New flag.
	(module2bmi): Deal with NULL names.
	(buffer::get_request): Fix off-by-one error.
	(read_mapping_file): Can be multiply called.  Target file name can
	be null.
	(client::action): Deal with INCLUDE.
	(main): There can be may files after connection.  Fixup networking
	errors.
	* lex.c (atom_preamble_prefix_peek): Don't rescan legacy header
	module.
	* module.c (module_preamble_end_loc): Declare here.
	(module_mapper::module_mapper): Prepend path for anything looking
	defaulty.
	(module_mapper::divert_include): New.
	(do_divert_include): New.
	(atom_divert_include): New.
	(init_module_processing): Set header mode here.
	* parser.c (module_preamble_end_loc): Extern.
	gcc/
	* doc/invoke.text (C++ Modules): Document -fmodule-header.
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE): Provide
	default.
	* langhooks.h (lang_hooks): Add preprocess_divert_include.
	libcpp/
	* directives.c (do_include_common): Add diversion smarts.
	* include/cpplib.h (cpp_divert_include_t): New.
	(struct cpp_callbacks): Add divert_include.
	* line-map.c (linemap_module_loc): Missed commit.
	gcc/testsuite/
	* g++.dg/modules/legacy-2.*: New.
	* g++.dg/modules/modules.exp: Fixup header compilation.

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

	(Beginnings of) Legacy importing
	gcc/cp/
	* cxx-mapper.cc (module2bmi): Map legacy header names.
	* module.c (module_state::legacy): New field.
	(module_state::{is_legacy,set_name}): New.
	(make_legacy_name): New.
	(module_state::get_module): Canonicalize legacy name.
	(module_state::get_option_string): Strip -fmodule-header.
	(declare_module): Check correct kind.
	(maybe_atom_legacy_module): Use make_legacy_name.
	* parser.c (cp_parser_module_name): Parse legacy names.
	(cp_parser_import_declaration): Don't special case legacy names
	here.
	gcc/testsuite/
	* g++.dg/modules/atom-inc-1.C: Add expected errors.
	* g++.dg/modules/legacy-1_[abc].[CH]: New.
	* g++.dg/modules/modules.exp: Support legacy header compilation.

	(Beginnings of) Legacy header modules
	libcpp/
	* line-map.c (linemap_module_loc): Expect ordinary loc.
	gcc/
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_MAIN_FILE): Provide
	default.
	* langhooks.h (lang_hooks): Add preprocess_main_file hook.
	gcc/c-family/
	* c-opts.c (cb_file_change): Call new hook.
	gcc/cp/
	* cp-tree.h (enum atom_preamble_state): Define.
	(atom_preamble_prefix_{peek,next}): Use enum.
	(atom_main_file, maybe_atom_legacy_module): Declare.
	* cxx-mapper.cc (module2bmi): Munge legacy module chars.
	* lang-specs.h (@c++-header): Fix -fmodule-header use.
	* lex.c (atom_preamble_prefix_{peek,next}): Adjust for enum.
	* module.c (prefix_line_maps_hwm, prefix_locations_hwm): New.
	(module_state::{read,write,prepare}_locations): Adjust prefix checking.
	(ordinary_loc_of): New.
	(import_module): Use it.
	(declare_module): Set preamble prefix if needed.
	(atom_main_file, maybe_atom_legacy_module): New.
	(init_module_processing): Don't default module_header_name here.
	(atom_module_preamble, finish_module): Push & pop exporting state in
	legacy mode.
	* parser.c (cp_parser_get_module_preamble_tokens): Adjust for
	preamble state.  Return indicator of preamble contents.
	(c_parse_file): Maybe inject legacy module decl.
	* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE): Override hook.
	(atom_preamble_fsm): Adjust for state enum.

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

	Merge trunk r262148.

	gcc/
	* configure.ac: Fix AF_INET6 & accept4 tests.
	* configure, config.in: Rebuilt.
	gcc/cp/
	* module.c: Update some comments.
	(module_mapper::module_mapper): Fix up conditional code.
	(module_state::read_imports): Replace local class with std::pair,
	because C++98.
	* cxx-mapper.cc (accept_from): Fixup conditional code.

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

	gcc/cp/
	* cxx-mapper.cc (kill_signal): New.
	(server): Fixup inet_ntop use.

	gcc/
	* configure.ac: Check for inet_ntop.
	* configure, config.in: Rebuilt.
	gcc/cp/
	* cxx-mapper.cc (server): Use inet_ntop when available.

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

	gcc/cp/
	* cxx-mapper.cc: BMI->GCC
	* module.c: Likewise.
	gcc/
	* doc/invoke.texi: Likewise.

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

	gcc/cp/
	* cxx-mapper.cc (struct netmask): New.
	(server): Validate connection addresses.
	(accept_from): New.
	(process_args): Add -a arg.

	Simplify protocol.
	gcc/cp/
	* cxx-mapper.c (buffer::empty): New.
	(buffer::send_response): Fixup buffer management.
	(client::imex_response): New.
	(client::action): Reimplement.
	* module.c (module_mapper): Update.
	gcc/
	* doc/invoke.texi (C++ Modules): Update protocol.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_c.C: Tweak scan.

	A proper server
	gcc/cp/
	* cxx-module-mapper.sh: Delete.
	* cxx-mapper.cc: New.
	* Make-lang.in: Adjust.
	* module.c (module_mapper:get_response): Fixup errors.
	(module_mapper::import_query): Drop filename.

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

	gcc/cp/
	* module.c (module_mapper::send_command): Fix off-by-one.
	(module_mapper::get_response): Cleanup batch splitting.
	(module_mapper::handshake): Adjust.
	* cxx-module-mapper.sh (cmd): Adjust HELLO.
	gcc/
	* doc/invoke.texi (C++ Modules): Tweak mapper protocol.

	gcc/
	* configure.ac: Check select, accept4.
	* config.in, configure: Rebuilt.

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

	gcc/c-family/
	* c.opt: Add -fmodule-header.
	gcc/cp/
	* lang-specs.h: Add legacy import options.
	* module.c (module_header_name): New.
	(init_module_processing): Default it.
	(handle_module_option): Set it.

	Use getaddrinfo, not gethostbyname2
	gcc/
	* configure.ac (HAVE_AF_INET6): Test for getaddrinfo.
	* configure: Rebuilt.
	* doc/invoke.text (C++ Modules): Default is loopback.
	gcc/cp/
	* module.c (module_mapper::module_mapper): Reorganize network startup.
	gcc/testsuite/
	* g++.dg/modules/bad-mapper-[23].C: Adjust diagnostics.

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

	Early & late location maps.
	gcc/cp/
	* modules.c (slurping, spewing): Rearrange.
	(module_state::{prepare,read,write}_locations): Reimplement.
	(module_state::{read,write}): Adjust.
	(module_state::atom_preamble): Adjust.

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

	gcc/testsuite/
	* g++.dg/modules/loc-2_[a-f].C: New.

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

	gcc/
	* configure.ac: Detect epoll & pselect.
	* configure, config.in: Rebuilt.

	gcc/cp/
	* module.c (module_mapper::module_mapper): Fixup length errors.

	gcc/cp/
	* cxx-module-mapper.sh: Remove recompilation capability.
	gcc/testsuite/
	* g++.dg/modules/import-2.C: Adjust messages.
	* g++.dg/modules/main-aux.cc: Delete.
	* g++.dg/modules/main_1.C: Delete.

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

	gcc/
	* diagnostic.c (diagnostic_report_current_module): Starting
	location could be a module.
	gcc/cp/
	* module.c (trees_{in,out}::loc): Move to ...
	(module_state::{read,write}_location}): ... here.
	(trees_{in,out}::core_vals): Adjust.
	(module_state::{read,write}_imports): Serialize import location.
	(module_state::set_loc): Add floc parm, adjust.
	gcc/testsuite/
	* lib/prune.exp (prune_gcc_output): Adjust regexp.

	gcc/cp/
	* cp-tree.h (make_module_loc): Delete.
	* lex.c (make_module_loc): Delete.
	* module.c (module_state): Add depth field.
	(module_state::set_loc): Deal with reseating.  Add line_maps parm.
	(module_state::read_imports): Do two passes.
	(module_state::write_imports): Write length.
	gcc/testsuite/
	* g++.dg/modules/import-1_e.C Adjust lang dump scan.
	* g++.dg/modules/mod-imp-1_d.C: Likewise.
	libcpp/
	* include/line-map.h (linemap_module_loc): Add incomping loc parm.
	* line-map.c (linemap_module_loc): Do reseating.

	Location! Location! Location!
	gcc/cp/
	* module.c (module_state::slurper): New.
	(trees_{in,out}::loc): Implement.
	(trees_in::core_vals): Set locus.
	(spewing::linemaps): Fixup offset calculation.
	(module_state::read_locations): Set ord_locs.
	gcc/testsuite/
	* g++.dg/module/loc-1_[abc].C: New.

	libcpp/
	* include/line-map.h (IS_ORDINARY_LOC, IS_MACRO_LOC): New.
	(IS_ADHOC_LOC): Simplify.
	(MAP_ORDINARY_P): Use IS_ORDINARY_LOC.
	* line-map.c (linemap_module_restore): Fixup included_at.

	gcc/
	* diagnostic.c (diagnostic_report_current_module): Fixup include
	stack messages.
	gcc/testsuite/
	* lib/prune.exp (prune_gcc_output): Adjust include stack regexps.

	gcc/cp/
	* module.c (spewer::linemaps): Return mask.
	(module_state::{find,write}_locations): Use mask.
	(module_state::read_locations): Implement.

	Line_maps args everywhere!
	gcc/cp/
	* cp-tree.h (declare_module, import_module, atom_module_preamble):
	Add line_maps arg.
	* module.c (module_state::{read_imports,do_import}): Add line_maps.
	(module_state::set_loc): New.
	(module_state::atom_preamble): Deal with restoring line_maps.
	(module_state::read): Add line_maps.  Call read_locations.
	* parser.c (cp_parser_module_declaration)
	(cp_parser_import_declaration): Adjust.
	(c_parse_file): Line_maps restoration is moved.
	libcpp/
	* include/line-map.h (linemap_save_pre_module): Delete.
	(linemap_restore_pre_module): Rename to ...
	(linemap_module_restore): ... here.
	* line-map.c (linemap_save_pre_module): Delete.
	(linemap_restore_pre_module): Rename to ...
	(linemap_module_restore): ... here.

	gcc/cp/
	* module.c (bytes_{in,out}::align): New.
	(bytes_{in,out}::buf): Use it.

	libcpp/
	* line-map.c (linemap_init): Set default allocator here.
	(line_map_new_raw): Break out of ...
	(new_linemap): ... here.  Call it.
	* include/line-map.h (line_map_new_raw): Declare

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

	Break out import section.
	gcc/cp/
	* module.c (module_state::{read,write}_imports): New.
	(module_state::{read,write}_config): Don't do imports here ...
	(module_state::{read,write}): ... do them here.

	Fix section alignment.
	gcc/cp/
	* module.c (elf_out::grow): Fix padding calc.
	(elf_out::add): Assert aligned.

	Write out line maps.
	gcc/cp/
	* cp-tree.g (atom_module_preamble, finish_module): Add line_maps.
	* decl2.c (c_parse_final_cleanups): Pass line_table.
	* parser.c (c_parse_file): Adjst.
	* module.c (struct spewing): New.
	(struct slurping): Add GTY tagging.
	(module_state::spewer): New.
	(module_state::{write,atom_preamble}): Add linemaps.
	(module_state::{find,write,read}_locations): New.

	gcc/cp/
	* module.c (struct slurping): New, broken out of ...
	(struct module_state): ... here.  Move loading data there and
	adjust all users.

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

	Reorg line_map data structures.
	libcpp/
	* include/line-map.h (LINE_MAP_MAX_LOCATION): Define here.
	(struct line_map): Move reason field to line_map_ordinary.  Adjust
	GTY tagging.
	(struct line_map_ordinary): Reorder fields for less padding.
	(struct line_map_macro): Likewise.
	(MAP_ORDINARY_P): New.
	(linemap_check_ordinary, linemap_check_macro): Adjust.
	(MAP_MODULE_P): Adjust.
	* line-map.c (LINE_MAP_MAX_SOURCE_LOCATION): Delete.
	(new_linemap): Take start_location, not reason.  Adjust.
	(linemap_add, linemap_enter_macro): Adjust.
	(linemap_line_start): Likewise.
	(linemap_macro_expansion_map_p): Use MAP_ORDINARY_P.
	(linemap_macro_loc_to_spelling_point): Likewise.
	(linemap_macro_loc_to_def_point): Likewise.
	(linemap_dump): Likewise.

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

	Better socket handling.  Kill mapping from fd
	gcc/cp/
	* module.c (class module_mapper): Add from & to fds.
	(module_mapper::{module_mapper,kill}): Adjust.
	(module_mapper::{send_command,get_response}): Likewise.
	(module_from_cmp): New.
	(module_state::atom_preamble): Reimplement.
	gcc/
	* doc/invoke.texi (C++ Modules): Remove fd mapper options.
	gcc/testsuite/
	* g++.dg/modules/import-2.C: Adjust messages.
	* g++.dg/modules/flag-1_b.C: Likewise.
	* g++.dg/modules/mod-stamp-1_d.C: Likewise.

	gcc/
	* configure.ac: Rename HOST_HAS_AF_$FOO to HAVE_AF_$FOO.
	* configure, config.in: Rebuilt.
	gcc/cp/
	* module.c: Adjust.

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

	gcc/cp/
	* module.c
	(elf_out::grow): Always define, always align.
	(elf_out::write): Streaming buffers must be using our
	allocator.  No need to align here.

	MMAP writing
	gcc/
	* configure.ac: Check for posix_fallocate.
	* configure, config.in: Rebuilt.
	gcc/cp/
	* module.c (MAPPED_WRITING): New.
	(data::allocator::{grow,shrink}): New overloads.
	(data::use): Check available.
	(data::allocator::grow): Deal with allocator failure.
	(bytes_in::read): Set overflow on fail.
	(bytes_{in,out}::{u32,c,i,u,wi,buf}): Adjust.
	(bytes_out::printf): Likewise.
	(bytes_out::bytes_out): Allocator is non-optional.
	(elf_out): Derive from data::allocator.
	(elf_out::{grow,shrink}): New overriders.
	(elf_out::elf_out): Find page size.
	(elf_out::{create,remove}_mapping): New.
	(elf_out::write): New overload.
	(elf_out::add): Take bytes_out.  Adjust users.
	(elf_out::{begin,end}): Add mapping support.
	(trees_out::trees_out): Add allocator parm.
	(trees_{in::out}::fixed_refs): Delete, adjust uses.
	(module_state::write_{readme,config,namespaces,bindings}): Adjust.
	(module_state::write_{unnamed,cluster}): Adjust.

	Prep for MMAP exporting.
	gcc/cp/
	* module.c (MODULE_MMAP_IO): Rename to ...
	(MAPPED_READING): This.
	(data): Add allocator class with default instance.
	(data::{write,printf}): Move to bytes_out.
	(data::read): Move to bytes_in.
	(data::{extend,release}): Delete. Adjust uses.
	(bytes_out): Add allocator pointer, alter ctor.
	(bytes_out::begin): Add need_crc parm.
	(elf::section_vec): Delete.
	(elf): Add sectab, strtab data members.
	(get_num_sections): Delete.
	(elf_{in,out}::strings): Delete here.
	(elf_in::{grow,shrink}): New.
	(elf_in::{get_section{,_limit}): New, adjust uses.
	(elf_in::{keep_sections,forget_section}): Delete.

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

	MMAP importing!
	gcc/cp/
	* module.c (MODULE_MMAP_IO): New define.
	(bytes::{begin,end}): Delete.
	(elf_in::{freeze,defrost}): Adjust.
	(elf_in::{begin,end}): Adjust.
	(elf_in::{keep,forget}_section): Adjust.
	(elf_in::read): Adjust.
	(module_state::our_opts): New static member.  Adjust uses.
	gcc/
	* doc/invoke.texi (C++ Modules): Document lazy limit change.

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

	gcc/cp/
	* module.c (elf): Replace FILE *stream with int fd.  Update uses.

	gcc/cp/
	* module.c (bytes::begin): Add CRC parm.
	(elf_in): Read buffers, adjust.

	gcc/cp/
	* module.c (elf_out): Track file position directly.
	(elf_out::pad): Remove, fold into ...
	(elf_out::write): ... here.  Take a buffer.
	(elf_out::{add,begin,end}): Adjust.

	gcc/cp/
	* module.c (elf): Add hdr member.
	(elf_in::begin): Adjust.
	(elf_out::{begin,end}): Adjust.

	gcc/cp/
	* module.c (data::printf): Moved from ...
	(bytes_out::printf): ... here.
	(elf): Replace sections pointer with section_vec local class.
	Adjust all uses.
	(elf_out): Remove strtab member class.
	(elf_out::end): Adjust.

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

	gcc/cp/
	* module.c (bytes::calc_crc): Take length parm.  Adjust callers.
	(elf_out::strtab): Reimplement.
	(elf_out::add): Use buffer pos for length.

	gcc/cp/
	* module.c (struct data): Resurrect.  Move buffer extension here.
	Update users.
	(class bytes): Derive from data.

	gcc/cp/
	* module.c (struct data): Delete.  Move into ...
	(struct bytes): ... here.  Update uses.

	gcc/cp/
	* module.c (struct data): Make buffer a pointer.  Redo interface.

	Change integer on-disk format.
	gcc/cp/
	* module.c (bytes_{in,out}::{i,u,wi}): Reimplement.
	(make_bmi_path): Don't prefix absolute paths.

	BMI repo directory
	libiberty/
	* pex-unix.c: Fixup optimization issues.
	gcc/cp/
	* cxx-module-mapper.sh: Add repo to HELLO.
	* module.c (bmi_repo, bmi_repo_length, bmi_path, bmi_path_alloc): New.
	(set_bmi_repo, make_bmi_path, drop_bmi_prefix): New.
	(module_mapper::{handshake,module_mapper}): Repo location from file.
	(relativize_import): Delete.
	(module_state::{write_readme,maybe_defrost,do_import,finish_module):
	Adjust.
	gcc/
	* doc/invoke.texi (C++ Modules): Document bmi repo.

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

	Better pex-unix.
	libiberty/
	* pex-unix.c (VFORK_STRING): Replace with ...
	(IS_FAKE_VFORK): ... this.
	(pex_child_error): Delete, fold into ...
	(pex_unix_exec_child): ... here.  Inform parent, when really vforking.
	gcc/cp/
	* module.c (module_mapper::module_mapper): Merge error message.
	gcc/testsuite/
	* g++.dg/modules/bad-mapper-1.C: Adjust.
	* g++.dg/modules/bad-mapper-{2,3}.C: New.

	gcc/cp/
	* module.c (module_mapper::module_mapper): Ignore sigpipe.
	(module_mapper::kill): Restore sigpipe.
	(module_mapper::{response_unexpected,get_response}): Cope with EOF.
	gcc/testsuite/
	* g++.dg/modules/bad-mapper-1.C: New.

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

	gcc/
	* doc/invoke.texi (C++ Modules): Clarify and extend.

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

	Self relative direct import pathnames.
	gcc/cp/
	* module.c (relativize_import): New.
	(module_state::write_readme): Call it.
	(module_state::read_imports): Make import relative to importer,
	query mapper if needed.

	Cookies for mapping files
	gcc/cp/
	* module.c (module_mapper::response_eol): Add ignore arg.
	(module_mapper::module_mapper): Cookie on file mapper.
	gcc/
	* invoke.texi (C++ Modules): Document file mapper cookie.
	gcc/testsuite/
	* g++.dg/modules/map-1_b.C: Use specific mapper.
	* g++.dg/modules/map-1_b.map: New.

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

	gcc/
	* diagnostic.c (diagnostic_report_current_module): Don't claim
	module was imported.
	* doc/invoke.texi (C++ Modules): Update module-mapper docs.
	gcc/cp/
	* module.c (module_mapper::module_mapper): Change syntax for
	option.
	(module_mapper::response_token): Add all parm.
	(module_mapper::bmi_response): Use it.
	(module_state::check_read): Fix error reporting.
	(finish_module): Warn if not exporting due to errors.
	gcc/testsuite/
	* lib/prune.exp (prune_gcc_output): Adjust module import regexp/
	* g++.dg/modules/map-1_[ab].C: Adjust module-mapper arg.
	* g++.dg/modules/atom-decl-2.C: Add expected warning
	* g++.dg/modules/mod-decl-1.C: Likewise.
	* g++.dg/modules/mod-decl-3.C: Likewise.
	* g++.dg/modules/proclaim-1.C: Likewise.

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

	gcc/cp/
	* module.c (module_mapper): Robustify.

	gcc/fortran/
	* cpp.c (cb_file_change): Adjust for line map inclusion changes.

	Module mapping file is back
	gcc/
	* doc/invoke.text (C++ Modules): Document mapping file.
	gcc/cp/
	* cxx-module-mapper.sh: Strip -fmodule-preamble=.
	* module.c (elf::get_error): Detect no file name.
	(module_state): Add imported field.
	(module_state::is_{imported,mapping}): New.
	(module_mapper::module_mapper): Read mapping file.
	(module_mapper::get_response): Distingish empty from end.
	(module_state::get_module): Copy a mapping.
	(module_state::insert_mapping): New.
	(module_state::read_imports): Adjust.
	(module_state::do_import): Set imported.
	(import_module, declare_module): Adjust.
	(module_state::atom_preamble): Adjust.
	gcc/testsuite/
	* g++.dg/modules/map-1{_a.C,_b.C,.map}: New.

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

	gcc/
	* doc/invoke.texi (C++ Modules): Show mapper cookie.
	gcc/cp/
	* module.c (module_mapper::fini): Assert.
	(module_mapper::module_mapper): Remove dup2.
	(module_mapper::reset): Delete.

	gcc/
	* doc/invoke.texi (C++ Modules): Rename -fmodule-server to
	-fmodule-mapper.
	gcc/c-family/
	* c.opt (fmodule-mapper): Renamed from fmodule-server.
	gcc/cp/
	* cxx-module-mapper.sh: Renamed from cxx-module-server.sh.
	* Make-lang.in: Update.
	* module.c (struct module_mapper): Renamed from module_server.

	Merge trunk r261033.

	gcc/cp/
	* module.c (bytes_in::begin): Add location_t arg.
	(elf_in::begin): Add location args.
	(trees_in::{tree_node,finish}): Use error_at.
	(module_server::module_server): Likewise.
	(module_state::read*): Adjust.
	(module_state::{do_import,lazy_load}): Don't set input_location.
	(finish_module): Likewise.

	ASYNC loading & server cookie.
	gcc/cp/
	* cp-tree.h (reseat_module_loc, module_from_loc): Delete.
	(atom_module_preamble): Declare.
	* cxx-module-server.sh (cmd): Fix ASYNC response.
	* lex.c (reseat_module_loc, module_from_loc): Delete.
	* module.c (module_state::from_loc): Is a field.
	(module_server): Require locations throughout.  Redesign
	interface.  Add cookie.
	(module_state::read_config): Use from_loc.
	(module_state::read): Don't set module_purview here ...
	(module_state::find_module): ... do it here.
	(module_state::do_import): Add check_crc flag.  Don't query server
	here.
	(import_module, declare_module): Query server here (ts).
	(module_state::atom_preamble): New.
	(atom_module_preamble): Call it.
	(finish_module): Adjust.
	* parser.c (cp_parser_peek_module_name): Fold into ...
	(cp_parser_module_name): ... here.
	(cp_parser_module_declaration): No injected atom end marker.
	(cp_parser_module_preamble): Rename to ...
	(cp_parser_get_module_preamble_tokens): ... this.  Don't append
	end marker.  Return end loc.
	(cp_parser_parse_module_preamble): New.
	(cp_parser_declaration_seq_opt): Adjust.
	(cp_parser_fill_main): Skip preamble.
	(c_parse_file): Do preamble tokenization and parsing here.
	gcc/
	* doc/invoke.texi (C++ Modules): Document server cookie.
	libcpp/
	* include/cpplib.h (cpp_relocate_peeked_tokens): Declare.
	* include/line-map.h (linemap_save_pre_module)
	(linemap_restore_pre_module): Declare.
	(LINEMAP_MODULE_SET_FROM): Delete.
	* lex.c (cpp_relocate_peeked_tokens): New.
	* line-map.c (linemap_module_loc): Set from direcly.
	(linemap_save_pre_module, linemap_restore_pre_module): New.
	gcc/testsuite/
	* g++.dg/modules/flag-1_b.C
	* g++.dg/modules/freeze-1_d.C
	* g++.dg/modules/import-2.C
	* g++.dg/modules/indirect-1_c.C
	* g++.dg/modules/mod-stamp-1_d.C

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

	Module location
	libcpp/
	* include/cpplib.h (cpp_module_file): Delete.
	* include/line-map.h (MAP_MODULE_P, LINEMAP_MODULE_SET_FROM): New.
	(linemap_module_loc): Declare.
	* files.c (cpp_module_file): Delete.
	* line-map.c (linemap_module_loc): New.
	gcc/cp/
	* cp-tree.h (module_file_nest): Delete.
	(make_module_loc, reseat_module_loc, module_from_loc): Declare.
	* lex.c (module_file_nest): Delete.
	(make_module_loc, reseat_module_loc, module_from_loc): New.
	* module.c (struct module_state): Replace imp_loc and self_loc
	with plain loc.
	(module_state::{push,pop}_location): Delete.
	(module_state::from_loc): New.
	(module_state::find_module): Set module loc here.
	(module_state::do_import): Adjust loc setting.
	(module_state::lazy_load): Likewise.
	(finish_module): Likewise.
	gcc/
	* diagnostic.c (diagnostic_report_current_module): Show module imports.
	gcc/testsuite/
	* lib/prune.exp: Prune 'module imported at'.
	* g++.dg/modules/atom-check-1_b.C: Adjust.
	* g++.dg/modules/circ-1_c.C: Adjust.
	* g++.dg/modules/flag-1_b.C: Adjust.
	* g++.dg/modules/import-2.C: Adjust.
	* g++.dg/modules/mod-decl-1.C: Adjust.
	* g++.dg/modules/mod-decl-2_b.C: Adjust.
	* g++.dg/modules/mod-stamp-1_d.C: Adjust.

	gcc/cp/
	* module.c (struct module_state): Replace loc with imp_loc &
	self_loc.  Rename imported to direct.
	(module_state::occupied): Delete.
	(module_state::read{_,config}): Replace crc_ptr with bool flag.
	(module_state::do_import): ... here.  Break out ...
	(module_state::find_module): ... this part.  Absorb ...
	(module_state::occupy): ... this.  Delete.
	(module_state::get_module): Change default insert.  Check vec_name
	for occupation.
	(module_state::write_imports): Adjust.
	(import_module, declare_module): Adjust.

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

	Included from index becomes included_at location
	libcpp/
	* include/line-map.h (line_map_ordinary): Replace included_from
	index with included_at source_location.
	(ORDINARY_MAP_INCLUDER_FILE_INDEX, LAST_SOURCE_LINE_LOCATION)
	(LAST_SOURCE_LINE, LAST_SOURCE_COLUMN): Delete.
	(INCUDED_FROM): Delete.
	(INCLUDED_AT, linemap_included_at): New.
	(MAIN_FILE_P): Adjust.
	* directives.c (do_linemarker): Use linemap_included_at.
	* line-map.c (include_at_map): New.
	(line_check_files_exited): Use it.
	(LAST_SOURCE_LINE_LOCATION): New (moved from header).
	(linemap_add, linemap_dump, linemap_dump_location): Adjust.
	gcc/
	* diagnostic.c (diagnostic_report_current_module): Use
	linemap_included_at.  Adjust line & col discovery.
	gcc/c-family/
	* c-common.c (try_to_locate_new_include_insertion_point): Use
	linemap_included_at.
	* c-lex.c (fe_file_change): Use INCLUDED_AT.
	* c-ppoutput.c (pp_file_change): Likewise.

	libcpp/
	* include/line-map.h (enum lc_reason): Add LC_HWM, LC_CXX_MODULE.
	* line-map.c (linemap_dump): Adjust.
	gcc/
	* diagnostic.c (diagnostic_report_current_module): Reroll loop.

	gcc/cp/
	* cxx-module-server.sh: Add batching and ASYNC support.
	gcc/
	* doc/invoke.texi (C++ Modules): More protocol explanation

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

	Server protocol batching
	gcc/
	* doc/invoke.texi (C++ Modules): Document protocol batching.
	gcc/cp/
	* cp-tree.h (maybe_peek_import): Delete.
	* lex.c (atom_preamble_prefix_peek): Drop import peeking.
	* parser.c (cp_parser_module_preamble): Likewise.
	* module.c (module_server::{send_command,get_response}): Deal with
	batching.
	(module_state::peek_import_query, maybe_peek_import): Delete.
	(module_state::next_line): New.
	gcc/tesutsuite/
	* g++.dg/modules/atom-peek-1_[abc].C: Delete.

	Merge trunk r260753.

	Direct import lambda returns!
	gcc/cp/
	* module.c (depset::decl_key): Remove assert.
	(trees_{in,out}::core_vals): Serialize type context, lambda expr and
	decl size & value.
	(trees_out::tree_decl): Spot voldemort returns. Ident by index.
	(trees_in::tree_node): Ident by index.
	(trees_in::finish_type): Don't set type context here.
	(depset::hash::add_dependency): Namespaces are also ok.
	* decl.c (fndecl_declared_return_type): Default to auto.
	* decl2.c (no_linkage_error): Ignore imported decls.
	* name-lookup.h (lookup_by_ident): Ident is index.
	(get_lookup_ident): Declare.
	* name-lookup.c (get_binding_or_decl): New.
	(lookup_by_ident): Use it.  Ident is index.
	(get_lookup_ident): New.
	gcc/testsuite/
	* g++.dg/modules/vmort-1_[ab].C: New.
	* g++.dg/modules/lambda-1_[ab].C: New.

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

	gcc/cp/
	* name-lookup.c (extract_module_decls): Don't strip template of
	result.
	gcc/
	* doc/invoke.texi (C++ Modules): Consider batching.

	gcc/
	* doc/invoke.texi (C++ ModuleS): Update server docs.
	gcc/cp/
	* cxx-module-server.sh: Add INCLUDE.
	* semantics.c (deferred_access): Move GTY.
	* module.c (module_state::global_vec): Move GTY.
	(module_state::modules): Likewise.
	* parser.c (cp_parser_peek_module_name): Remove incomplete
	partition work.

	DECL_DISCRIMINATOR for local classes, merge local var disc.
	gcc/cp/
	* cp-tree.h (language_function): Remove x_local_names.
	(DECL_DISCRIMINATOR_P): Allow IMPLICIT_TyPEDEF too.
	(DECL_DISCRIMINATOR_SET_P): Delete.
	(local_classes): Delete declaration.
	(determine_local_discriminator): Declare.
	* class.c (local_classes): Delete.
	(init_class_processing): Don't init it.
	* decl.c (local_names): Delete.
	(local_entities): New.
	(push_local_name): Replace with ...
	(determine_local_discriminator): ... this.
	(cp_finish_decl): Adjust.
	(save_function_data, finish_function): Remove local_name handling.
	* decl2.c (finish_anon_union): Set discriminator.
	* mangle.c (write_unnamed_type_name): Use discriminator_for_local_entity.
	(local_class_index): Delete.
	(discriminator_for_local_entity): Use DECL_DISCRIMINATOR for both
	cases.
	(write_local_name): Adjust.
	* name-lookup.c (do_pushtag): Use determine_local_discriminator.
	gcc/testsuite/
	* g++.dg/abi/anon5.C: New.

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

	gcc/
	* diagnostic-code.h (fullname): Delete.
	* diagnostic.c (fullname): Delete.
	* toplev.c (general_init): Don't set it.
	gcc/cp/
	* module.c: Include opts.h.
	(module_state::get_option_string): New.
	(module_state::write_{readme,config}): Write option string.
	(module_state::read_config): Check it.
	(module_state::write): Adjust.
	(module_server::module_server): Adjust.
	gcc/testsuite/
	* g++.dg/modules/flag-1_[ab].C: New.

	Now with a Sneakoscope!
	gcc/cp/
	* module.c (depset::hash): Add a sneakoscope.
	(module_state::find_dependencies): Turn it on.
	(trees_out::tree_decl): Check it.
	gcc/testsuite/
	* g++.dg/modules/local-1_[ab}.C: New.

	gcc/cp/
	* cxx-module-server.sh: Remove --no-default.
	* module.c (module_server::send_command): New.
	(module_server::{reset,handshake,import_export_query,export_done}):
	Use it.
	gcc/testsuite/
	* g++.dg/modules/atom-peek-1_[bc].C: Adjust scans.
	* g++.dg/modules/indirect-1_c.C: Likewise.

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

	gcc/cp/
	* cxx-module-server.sh: Add --no-compile, --no-default and
	--mapping options.

	gcc/cp/
	* module.c (depset::defn_key): Add is_def parm.
	(depset::hash::add_definition): Delete.
	(depset::hash::add_dependency): Add either decl or defn.
	(depset::hash::add_binding): Use add_dependency.
	(cluster_cmp): Swap defns and decls.
	(cluster_tag): Delete ct_voldemort, ct_no_decl.
	(module_state::{read,write}_cluster): Voldemorts are implicit.
	(module_state::write): Adjust.
	gcc/testsuite/
	* g++.dg/modules/unnamed-1_b.C: Adjust module scan.

	Revert lazy definition patches.  Once one gets into template land
	it's all very brittle.  We end up with an unmaintained difference
	betweek 'we need the definition right now', and 'we need the
	definition at some point'.  I end up not being able to maintin the
	SCC dependency graph, and my head melted, looking a the rat hole
	that was appearing.  Until proved otherwise, there are other
	things to get on with.
	gcc/cp/
	* cp-tree.h (DECL_MODULE_LAZY_DEFN, HAS_DECL_MODULE_LAZY_DEFN_P)
	(MAYBE_DECL_MODULE_LAZY_DEFN): Delete.
	(struct lang_decl_min): Remove lazy_module_defn field.
	(lazy_load_defn): Delete decl.
	* constexpr.c (cxx_eval_call_expression): Remove lazy loading.
	* decl2.c (decl_defined_p, mark_used): Likewise.
	* module.c (depset::hash::add_definition): Remove DEFERRED parm.
	(trees_in::{pre,}seed): Delete.
	(trees_out::seeding{,_p}): Delete.
	(trees_out::unmark_trees): Seeding not needed.
	(trees_out::{begin,end}): Delete seeding variants.
	(trees_out::seed): Remove.
	(trees_out::insert): Return val, remove seeding.
	(trees_{in,out}::lang_decl_vals): Remove seeding.
	(has_definition): Return bool.
	(ct_seed_decl, ct_self_used): Delete.

	(module_state::{read,write}_cluster): Remove lazy handling.
	(module_state::{find_dependencies,write}): Adjust.
	(module_state::check_read): Adjust.
	(module_state::lazy_load, lazy_load_defn): Delete.
	* ptree.c (cxx_print_decl): Remove lazy defn index.

	Almost lazy function definitions.
	gcc/cp/
	* constexpr.c (cxx_eval_call_expression): Maybe lazy load.
	* decl2.c (decl_defined_p): Lazy definitions are ok.
	(mark_used): Try and lazy load.
	* module.c (module_state::lazy_load): Lazy load a definition.
	(trees_out::seed): Mark template result.
	(trees_in::tree_node): Adjust mark_used.
	(module_state::write_cluster): Adjust.
	(module_state::read_cluster): Accept ct_self_used.
	(lazy_load_defn): New.

	gcc/cp/
	* module.c (trees_out::seed): Reimplement mechanim.
	(trees_out::{begin,end}): Don't turn seeding on/off here.
	(trees_out::unmark_trees): Add logging.
	(trees_in::preseed): Fix addition calculation.
	(module_state::write_cluster): Adjust lazy defn seeding.
	(module_state::read_cluster): Add lazy defn seeding.
	(module_State::find_dependencies): Adjust.

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

	libcpp/
	* directives.c (struct if_stack): Add hash_loc field.
	(PEEKED): Replace with ...
	(PEEK_INVISIBLE): ... this.  Inverted sense.
	(DIRECTIVE_TABLE): Update.
	(linemarker_dir): Add PEEK_INVISIBLE.
	(_cpp_handle_directive): Correctly handle if nests.

	gcc/testsuite/
	* g++.dg/modules/atom-preamble-2_[def].C: New.

	gcc/cp/
	* cp-tree.h (HAS_DECL_MODULE_LAZY_DEFN_P): New.
	(MAYBE_DECL_MODULE_LAZY_DEFN): Use it.
	* module.c (trees_in::{pre,}seed): Adjust.
	(trees_out::{begin,end}): New overloads.
	(trees_out::unmark_trees): Adjust.
	(trees_out::{preseed,insert}): Correct force marking.
	(trees_in::tree_node): Robustify.
	(module_state::write_cluster): Fix name, better messages,
	(module_state::read_cluster): Use ct_no_decl.
	(module_state::write): Use HAS_DECL_MODULE_LAZY_DEFN_P.
	(module_state::check_read): Use decl if it makes sense.

	Write lazy decls (no reading yet)
	gcc/cp/
	* module.c (elf_out::strtab::named_decl): Add IS_DEFN parm.
	(elf_out::named_decl): Likewise.
	(elf_out::strtab::write): Adjust.
	(FIXED_LIMIT): New.
	(trees_out::set_seed): Delete.
	(trees_out::{pre,un,}seed): New.
	(trees_out::insert): Adjust for seeding.
	(trees_out::tree_ref): Likewise.
	(cluster_tag): Add ct_lazy.
	(module_state::write_cluster): Preseed decls of lazy defns.
	(module_state::find_dependencies): Adjust seeding changes.
	(module_state::write): Determine lazy defn section numbers.

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

	libcpp/
	* internal.h (_cpp_handle_directive): Add HASH_LOC arg.
	* directives.c (_cpp_handle_directive): Add HASH_LOC arg, store it.
	* init.c (read_original_filename): Adjust _cpp_handle_directive call.
	* lex.c (_cpp_lex_token): Likewise.
	* traditional.c (_cpp_scan_out_logical_line): Likewise.
	* directives-only.c (_cpp_preprocess_dir_only): Likewise.

	Import peeking
	gcc/c-family/
	* c-lex.c (c_lex_with_flags) <case CPP_STRING>: Check
	C_LEX_STRING_IS_HEADER.
	* c-pragma.h (C_LEX_STRING_IS_HEADER): New flag.
	gcc/cp/
	* cp-tree.h (HEADER_STRING_LITERAL_P): Delete.
	(maybe_peek_import): Declare.
	* cxx-module-server.sh: Adjust.
	* lex.c (atom_preamble_prefix_peek): Add peeking state.
	* module.c (module_server::peek_import_query): New.
	(make_flat_name): New.  Broken out of ...
	(module_state::do_import): ... here.  Call it.
	(maybe_peek_import): New.
	* parser.c (cp_parser_peek_module_name): New.
	(cp_parser_module_name): Use it.
	(cp_parser_import_declaration): Adjust.
	(cp_parser_module_preamble): Do peeking.
	gcc/
	* doc/invoke.texi (C++ Modules): Tweak server protocol
	gcc/testsuite/
	* g++.dg/modules/atom-peek-1_[abc].C: New.
	* g++.dg/modules/mod-decl-1.C: Adjust diags.
	* g++.dg/modules/p0713-2.C: Likewise.
	* g++.dg/modules/proclaim-1.C: Likewise.

	Diagnose pragmas ending preamble.
	libcpp/
	* lex.c (cpp_peek_token_with_location): Set peeked_location to
	incoming location.  Fix pragma unwind.
	gcc/cp/
	* cxx-module-server.sh: Add new commands.
	* lex.c (atom_preamble_prefix_peek): Note trailing pragma.
	gcc/
	* doc/invoke.text (C++ Modules): More server commands.
	gcc/testsuite/
	* g++.dg/modules/atom-pragma-[123].C: New.

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

	Parse after tokenizing
	libcpp/
	* lex.c (cpp_peek_token_with_location): Adjust for compiler warning.
	gcc/cp/
	* parser.c (module_preamble_end_loc): Rename to ...
	(module_marker_loc): ... here.
	(cp_parser_module_declaration): Reimplement.
	(cp_parser_import_declaration): Adjust.
	(cp_parser_module_preamble): Don't parse here.  Add artificial end
	marker.
	(cp_parser_declaration_seq_opt): Adjust for atom.
	(cp_parser_fill_main): Whole buffer is to be parsed.
	(c_parse_file): Don't set end_loc here.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-1.C: Adjust diagnostics.
	* g++.dg/modules/atom-preamble-1.C: Likewise.
	* g++.dg/modules/mod-decl-1.C: Likewise.
	* g++.dg/modules/p0713-[23].C: Likewise.

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

	gcc/cp/
	* module.c (trees_out::maybe_insert_typeof): New.
	(trees_out::{force_,maybe_,}insert): Merge, adjust callers.
	(trees_out::tree_decl): Use maybe_insert_typeof.
	(module_state::write_cluster): Likewise.
	gcc/testsuite/
	* g++.dg/modules/indirect-3_c.C: Adjust scans.

	gcc/cp/
	* module.c (module_state::write_cluster): Break apart unnamed
	numbering from marking.
	(module_state::write): Break apart cluster sizing from section
	numbering.

	gcc/cp/
	* module.c (trees_out::mark_node): Lose walk_into parm.  Adjust
	all callers.
	(module_state::write_cluster): Assert binding already marked.

	gcc/cp/
	* module.c (module_state::mark_definition): Remove include_decl
	parm.
	(module_state::mark_{template,function,var,class,enum}_def): Likewise.

	gcc/cp/
	* module.c (trees_in::{preseed,seed}): New.
	(trees_out::seeding): New member.
	(trees_out::seeding_p): New predicate.
	(trees_out::unmark_trees): Add trees_in parm to preseed.
	(trees_out::end): Add trees_in parm.
	(trees_out::set_seed): New.
	(trees_out::tree_decl): Check seeding_p.
	(module_state::find_dependencies): Preseed the decl of a defn.
	gcc/testsuite/
	* g++.dg/modules/defer-1.C :New.

	gcc/cp/
	* module.c (depset::hash::add_definition): Add DEFERRABLE parm.
	(has_definition): Return tristate.
	(depset::hash::add_{dependency,binding}): Adjust.
	(module_state::find_dependencies): Refactor.

	Add lazy_module_defn cookie.
	* cp-tree.h (DECL_MODULE_LAXY_DEGN, MAYBE_DECL_MODULE_LAZY_DEFN): New.
	(struct lang_decl_min): Add lazy_module_defn field.
	* module.c (trees_{in,out}::lang_decl_vals): Serialize it.
	* ptree.c (cxx_print_decl): Print it.

	gcc/cp/
	* cp-tree.h (ovl_op_flags, ovl_op_code): Reindent.
	* lex.c (atom_preamble_prefix_peek): FIXME.
	* parser.c (cp_parser_module_preamble): FIXME.
	* module.c (bytes_out::streaming_p (): New.
	(trees_out::streaming_p): Delete.
	(tt_backref): Delete.  Update uses to know -ve == backref
	(module_state::write_cluster): Some refactoring.

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

	Preamble rescanning!
	gcc/
	* configure.ac: Look for execv.
	* config.in, configure: Rebuilt.
	* toplev.h (original_argc, original_argv): Declare.
	* toplev.c (original_argc, original_argv): Declare.
	(toplev::main): Set them.
	doc/invoke.texi (EE) Rename to ...
	(fmodule-preamble): ... this.
	(C++ Modules): Document RESET message.  Document N,N.
	gcc/c-family/
	* c.opt (EE): Rename to ...
	(fmodule-preamble) ... here.
	(fmodule-preamble=): New hidden option.
	* c-ppoutput.c (scan_translation_unit): Use cpp_pop_directives.
	gcc/cp/
	* cp-tree.h (atom_preamble_prefix_peek): Add from-parser parm.
	(maybe_repeat_preamble): Declare.
	* cp-lang.c (atom_preamble_fsm): Adjust.
	* cxx-module-server.sh (RESET): New command.
	* lang-specs.h (@c++): Adjust EE->fmodule-preamble.
	* lex.c (atom_preamble_prefix_peek): Add from-parser parm.  Check
	flag_module_preamble.  Call maybe_repeat_preamble.
	* module.c: #include "toplev.h"
	(module_server_name): Is const.
	(module_server::module_server): Copy command.  Support N,N for two
	pipes.
	(module_server::make): Adjust.
	(module_server::reset): New.
	(module_server::fini): Add reset arg.  Reset.
	(maybe_repeat_preamble): New.
	(handle_module_option): Adjust.
	* parser.c (cp_parser_module_preamble): Adjust.
	gcc/testsuite/
	* g++.dg/modules/cpp-preamble-[1-8].C: Adjust options.
	* g++.dg/modules/atom-rescan-1.C: New.
	* g++.dg/modules/atom-no-rescan-1.C: New.

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

	Detect cpp directives at end of preamble
	libcpp/
	* include/cpplib.h (cpp_peek_token_with_location): Declare.
	(cpp_pop_directives): Declare.
	* internal.h (struct cpp_reader): Add peeked_directive field.
	* directives.c (PEEKED): New.
	(DIRECTIVE_TABLE): Add it.
	(_cpp_handle_directive): Set peeked_directive.
	(cpp_pop_directives): New.
	* lex.c (cpp_peek_token): Wrapper around ...
	(cpp_peek_token_with_location): ... this.
	gcc/cp/
	* cp-lang.c (atom_preamble_fsm): Update for new state transitions.
	* lex.c (atom_preamble_prefix_peek): Check peeked directives.
	* parser.c (cp_parser_module_preamble): Update.
	gcc/testsuite/
	* g++.dg/modules/cpp-preamble-1.C: Add diag
	* g++.dg/modules/cpp-preamble-[678].C: New.

	libcpp/
	* include/cpplib.h (cpp_in_macro_expansion_p): Declare.
	* macro.c (in_macro_expansion_p): Rename to ...
	(cpp_in_macro_expansion_p): ... here.  Externalize.
	(cpp_get_token_1): Adjust.
	* internal.h: Update docs.
	gcc/
	* langhooks.h (struct lang_hooks): Adjust preprocess_preamble.
	gcc/c-family/
	* c-ppoutput.c (scan_translation_unit): Pass token location to
	preamble hook.
	gcc/cp/
	* cp-lang.c (atom_preamble_fsm): Pass token loc through.
	* cp-tree.h (atom_preamble_prefix_next): Take token loc.
	* lex.c (atom_preamble_prefix_next): Take token loc.  Warn if
	ending inside macro.
	* parser.c (cp_parser_module_preamble): Adjust.
	gcc/testsuite/
	* g++.dg/modules/cpp-preamble-5.C: New.

	gcc/
	* langhooks.h (struct lang_hooks): Adjust preprocess_preamble.
	gcc/cp/
	* cp-tree.h (atom_preamble_prefix_{peek,next}): Declare.
	* cp-lang.c (atom_preambls_fsm): Adjust args.  Use
	atom_preamble_prefix_{peek,next}.
	* lex.c (atom_preamble_prefix_len): Turn into ...
	(atom_preamble_prefix_peek): ... this.
	(atom_preamble_prefx_next): New.
	* parser.c (cp_parser_module_preamble): Adjust.
	gcc/c-family/
	* c-ppoutput.c (scan_translation_unit): Adjust
	gcc/testsuite/
	* g++.dg/modules/atom-preamble-2_c.C: New.
	* g++.dg/modules/cpp-preamble-4.C: New.

	gcc/cp/
	* Make-lang.in: Dont sed server version
	* module.c: Use fixed server version.
	* cxx-module-server.sh: Likewise.

	gcc/cp/
	* module.c (trees_out::dep_walk_p): Replace with ...
	(trees_out::{streaming,depending}_p): ... these.  Update callers.

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

	Objectify module server.
	gcc/cp/
	* module.c (class module_server): New.
	(server_read, server_write, server_pex, server_size)
	(server_buffer, server_pos, server_end)
	(server_response, server_token, server_word, server_unexpected)
	(server_error, server_init, server_fini): Move into module_server class.
	(server_module_filename): Delete.
	(module_state::do_import): Use module_server::import_query.
	(finish_module): Use module_server::export_{query,done}.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_c.C: Tweak.

	gcc/
	* doc/invoke.texi (C++ Modules): Clarify server docs.
	gcc/cp/
	* cxx-module-server.sh: Robustify.
	* module.c (server_module_filename): Send from location.
	gcc/testsuite/
	* g++.dg/modules/import-2.C: Tweak.

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

	Redo the server protocol.
	gcc/cp/
	*cxx-module-server.sh: Update protocol.
	* module.c (elf_out::end): Protect from NULL stream.
	(server_size, server_buffer, server_pos, server_end): New.
	(server_response, server_token, server_word): New.
	(server_end_p): New.
	(server_malformed): Delete.
	(server_init, server_module_filename, server_done): Adjust.
	(module_state::do_import): Adjust.
	gcc/
	* doc/invoke (C++ Modules): Update server protocol.

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

	gcc/cp/
	* module.c (module_server): Make pointer to non-const.
	(server_fini, handle_module_option): Add const_cast.
	(server_init): Write into module_server.  strdup if it came from
	environment.

	Rename oracle->server, thanks Richard Smith
	gcc/
	* doc/invoke.texi (fmodule-oracle): Rename.
	gcc/c-family/
	* c.opt (fmodule-oracle): Rename.
	gcc/cp/
	* Make-lang.in (cxx-module-oracle): Rename.
	* cxx-module-oracle.sh: Rename.
	* module.c (ORACLE_VERSION, module_oracle, oracle_read)
	(oracle_write, oracle_pex): Rename.
	(oracle_fini, oracle_init, oracle_response, oracle_unexpected)
	(oracle_malformed, oracle_module_filename, oracle_done): Rename.

	Direct import filenames are stored.
	gcc/cp/
	* module.c (bytes_out::str): Add overload.
	(bytes_in::str): Robustify.
	(module_state::{read,write}_imports): New.
	(noisy_p): New.
	(module_state::announce, oracle_init): Use noisy_p.
	(oracle_module_file): Rename to ...
	(oracle_module_filename): ... here.  Adjust parms, return
	filename.
	(module_state::write_readme): Write import filename.
	(module_state::{read,write}_config): Use {read,write}_imports.
	(module_state::do_import): Add FILENAME arg, adjust.
	(finish_module): Adjust.
	gcc/testsuite/
	* g++.dg/modules/import-1_e.C: Adjust scan.
	* g++.dg/modules/indirect-1_c.C: Verify no query on indirect import.

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

	Remove remaining knowledge of module file names.
	gcc/cp/
	* module.c (MOD_FNAME_SFX, MOD_FNAME_DOT): Delete.
	(module_state): Remove srcname.
	(module_state::print_map): Delete.
	(oracle_query_module, oracle_stream, find_module_file): Merge to ...
	(oracle_module_file): ... this.
	(make_module_file, find_file): Delete.
	(module_state::do_import): Adjust.
	(finish_module): Likewise.

	(Kill -fmodule-output -- use the oracle.
	gcc/c-family/
	* c.opt (fmodule-output): Delete.
	gcc/
	* doc/invoke.texi (C++ Dialect Options): Delete -fmodule-output.
	(C++ Modules): Likewise.
	gcc/cp
	* module.c (module_output): Delete.
	(module_state::do_import): Don't check it.
	(finish_module): Likewise.
	(handle_module_options): Likewise.
	gcc/testsuite/
	* g++.dg/modules/fmod-out-1_[ab].C: Delete.

	Kill -fmodule-file -- use the oracle.
	gcc/c-family/
	* c.opt (fmodule-map-dump): Delete.
	(fmodule-file): Delete.
	gcc/cp/
	* module.c (module_file_args, module_map_dump): Delete.
	(parse_module_mapping): Delete.
	(add_module_mapping): Delete.
	(init_module_processing): Delete module map init.
	(handle_module_option): Delete module map options.
	gcc/
	* doc/invoke.texi (C++ Dialect Options): Delete -fmodule-file.
	(C++ Modules): Likewise.
	gcc/testsuite/
	* g++.dg/modules/fmod-file-1_[ab].C: Delete.
	* g++.dg/modules/fmod-out-1_[ab].C: Adjust.

	Kill -fmodule-path and CXX_MODULE_PATH -- use the oracle.
	gcc/
	* doc/invoke.texi (C++ Dialect Options): Remove -fmodule-path.
	(C++ Modules): Likewise.
	* incpath.h (INC_CXX_MPATH): Delete.
	(clean_cxx_module_path): Delete.
	* incpath.c (clean_cxx_module_path): Delete.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Don't clean_cxx_module_path.
	* c.opt (fmodule-path): Delete.
	gcc/cp/
	* module.c (module_path, module_path_max): Drop.
	(find_file): Adjust.
	(init_module_processing): Drop module path init.
	(handle_module_option): Drop module_path.

	gcc/cp/
	* Make-lang.in (cxx-module-oracle): Sed version.
	(cxx_module-wrapper): Delete.
	* cxx-module-oracle: Allow dev versions.
	* cxx_module-wrapper: Delete.
	* module.c (ORACLE_VERSION): New.
	(oracle_init): Use MODULE_STAMP if available.

	A more conventional protocol
	gcc/
	* doc/invoke.texi (C++ Modules): Update oracle protocol.
	gcc/cp/
	* cxx-module-oracle.sh: Update protocol.
	* module.c (oracle_response): Parse response.
	(oracle_unexpected, oracle_malformed): New.
	(oracle_init): Check version.
	(oracle_query_module): Update.

	Kill module wrapper -- you should use the oracle.
	gcc/
	* doc/invoke.texi (C++ Dialect Options): Remove -fmodule-wrapper.
	* gcc.h (driver::maybe_putenv_CXX_MODULE_WRAPPER): Delete decl.
	* gcc.c (maybe_putenv_CXX_MODULE_WRAPPER): Delete.
	(driver::main): Don't call it.
	gcc/cp/
	* module.c (module_wrapper): Delete.
	(find_module_file): Drop wrapper spawning.
	(init_module_processing): Drop wrapper initialization.
	(handle_module_option): Drop wrapper option.
	gcc/c-family/
	* c.opt (fmodule-wrapper=): Delete.
	gcc/testsuite/
	* g++.dg/modules/modules.exp (DEFAULT_MODFLAGS): Drop -fmodule-wrapper.
	* g++.dg/modules/main-[123]-aux.cc: Delete.
	* g++.dg/modules/main-[123]-map: Delete.
	* g++.dg/modules/main-[123]_a.C: Delete.

	gcc/c
	* config.in: Rebuilt too.

	gcc/
	* diagnostic-core.h (fullname): Declare.
	* diagnostic.c (fullname): Define.
	* toplev.c (general_init): Set it.
	gcc/cp/
	* cxx-module-oracle.sh: More messages.
	* module.c (oracle_init): When defaulting, expect to be next to
	cc1plus.
	(oracle_stream): Always try and init the oracle.
	gcc/testsuite/
	* g++.dg/modules/main_a.C: Adjust for oracle use.

	gcc/
	* configure.ac: Check for AF_UNIX and AF_INET6.
	* configure: Rebuilt.
	* doc/invoke.texi (C++ Modules): Update oracle.
	gcc/cp/
	* module.c: Check HOST_HAS_AF_{UNIX,INET6}.

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

	gcc/cp/
	* module.c: Include socket headers.
	(oracle_init): Create and connect local or ipv6 socket.
	gcc/
	* doc/invoke.texi (C++ Modules): Document oracle socket options.

	gcc/cp/
	* module.c (module_prefix): Delete.
	(make_module_filename): Don't handle it.
	(handle_module_option): Nor here.
	gcc/c-family/
	* c.opt (fmodule-prefix): Delete.
	gcc/
	* doc/invoke.texi (C++ Dialect Options): Remove -fmodule-prefix.
	(C++ Modules): Remove -fmodule-prefix

	Oracle!
	gcc/cp/
	* Make-lang.in (cxx-module-oracle): New rule.
	* cxx-module-oracle.sh: New.
	* module.c (module_oracle): New flag.
	(oracle_read, oracle_write, oracle_pex): New vars.
	(oracle_init, oracle_fini, oracle_response, oracle_query_module)
	(oracle_done, oracle_stream): New.
	(find_module_file, finish_module): Use oracle.
	(handle_module_option): Store oracle option.
	gcc/
	* doc/invoke.texi (C++ Dialect Options): Add -fmodule-oracle.
	(C++ Modules): Document oracle.
	gcc/c-family/
	* c.opt (fmodule-oracle=): New.

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

	gcc/cp/
	* module.c (module_state::get_module): Add insert arg.
	(module_state::{read,write}_config): Stream direct imports first.
	gcc/testsuite/
	* g++.dg/modules/import-1_[ce].C: Adjust.
	* g++.dg/modules/mod-imp-1_[cd].C: Adjust.

	Add -EE
	gcc/cp/
	* cp-lang.c (atom_preamble_fsm): New.
	(LANG_HOOKS_PREPROCESS_PREAMBLE): Override.
	* cp-tree.h (atom_preamble_prefix_len): Declare.
	* lang-specs.h (@c++): Pass -EE when preprocessing.
	* lex.c (atom_preamble_prefix): New.  Broken out of ...
	* parser.c (cp_parser_module_preamble): ... here.  Use it.
	* module.c (handle_module_option): EE implies atom.
	gcc/c-family/
	* c-ppoutput.c: Include langhook.h.
	(scan_translation_unit): Use lang_hooks.preprocess_preamble.
	* c.opt (EE): New.
	gcc/
	* langhooks-def.h (LANG_HOOKS_PREPROCESS_PREAMBLE): Define.
	(LANG_HOOKS_INITIALIZER): Add it.
	* langhooks.h (struct lang_hooks): Add preprocess_preamble.
	* doc/cppopts.texi (EE): Document.
	* doc/invoke.texi (Preprocessor Options): Add -EE.
	(C++ Modules): Document -EE.
	gcc/testsuite/
	* g++.dg/modules/cpp-preamble-[123].C: New.

	gcc/cp/
	* cp/parser.c (module_preamble_end_loc): New var.
	(cp_parser_module_declaration): Check it.
	(cp_parser_import_declaration): Likewise.
	(cp_parser_module_preamble): Deal with FILENAME enabling.
	(cp_parser_declaration_seq_op): Set it.
	(cp_parser_declaration): Parse out-of-preamble module & import
	decls.
	(cp_parser_initial_pragma): Don't check modules here.
	(c_parse_file): Set module_preamble_end_loc.
	gcc/c-family/
	* c-lex.c (c_lex_with_flags): Remove C_LEX_FILENAME handling.
	* c-pragma.h (C_LEX_FILENAME): Delete.
	gcc/testsuite/
	* g++.dg/modules/atom-decl-[123].C: Adjust.
	* g++.dg/modules/atom-preamble-3.C
	* g++.dg/modules/atom-preamble-4.C: New.
	* g++.dg/modules/mod-decl-1.C: Adjust.
	* g++.dg/modules/p0713-[23].C: Adjust.

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

	gcc/cp/
	* parser.c (cp_parser_module_preamble): Check for macros
	gcc/testsuite/
	* g++.dg/modules/atom-preamble-3.C: New.

	gcc/cp/
	* parser.c (cp_parser_module_preamble): New.
	(cp_parser_fill_main): Remove atom parsing here.
	(c_parse_file): Adjust.
	gcc/testsuite/
	* g++.dg/modules/atom-preamble-1.C: New.
	* g++.dg/modules/atom-preamble-2_[ab].C: New.

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

	gcc/cp/
	* module.c (depset): Add is_unnamed and refs_unnamed flags.
	(depset::hash::add_dependency): Set them here.
	(cluster_cmp): Change order again.
	(module_state::write_cluster): Check refs_unnamed here.
	gcc/testsuite.
	* g++.dg/modules/scc-1.C: Readjust.

	gcc/cp/
	* module.c (depset::tarjan::connect): Use section==0 for done, not
	top bit of cluster.
	gcc/testsuite/
	* g++.dg/modules/unnamed-1_b.C: Fix scan.

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

	Horcruxes!
	gcc/cp/
	* module.c (FIXED_LIMIT): Remove.
	(trees_out::{,maybe_}insert): Make public.
	(trees_out::maybe_mark_unnamed): Delete.
	(trees_out::tree_ref): Remove voldemort handling.
	(trees_in::tree_node): Likewise.
	(tree_tag): Remove tt_voldemort.
	(trees_out::maybe_tag_decl_type): Move back into ..
	(trees_out::tree_decl): ... here.
	(cluster_tag): Add voldemort & horcruxes.
	(module_state::{read,write}_cluster): Deal with horcruxes.
	gcc/testsuite/
	* g++.dg/modules/unnamed-1_[ab].C: Adjust scans.

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

	gcc/cp/
	* module.c (trees_out::maybe_tag_decl_type): New, broken out of ...
	(trees_out::tree_decl): ... here. Call it.
	(trees_out::tree_ref): Use it.
	gcc/testsuite/
	* g++.dg/modules/unnamed-1_[ab].C: New.

	gcc/cp/
	* ptree.c (cxx_print_decl): Show module.
	* module.c (tree_tags): Add tt_voldemort.
	(FIXED_LIMIT): New.
	(trees_out::maybe_mark_unnamed): New.
	(module_state::unnamed): New field.
	(module_state::{read,write}_unnamed): New.
	(module_state::{read,write}_config): Serialize unnamed count.
	(module_state::{read,write}_cluster): Determine unnamedness.
	(trees_out::tree_ref): Check for unnamed.
	(trees_in::tree_node): Add tt_voldemort.
	(depset::hash::add_dependency): Don't add decl to its binding.
	(cluster_cmp): Reorder, again.
	(cluster_tag): Add ct_unnamed.
	(module_state::{read,write}): Adjust.
	gcc/testsuite/
	* g++.dg/modules/namespace-2.C: Adjust scan.
	* g++.dg/modules/unnamed-[12].C: New.
	* g++.dg/modules/scc-1.C: Unadjust.

	gcc/cp/
	* module.c (module_state::mark_definition): Add include_decl arg.
	(module_state::mark_{template,function,var,class,enum}_def): Likewise.
	(cluster_cmp): Reorder decl < defn < bind.
	(enum cluster_tag): New.
	(module_state::{read,write}_cluster): Use it.
	gcc/testsuite/
	* g++.dg/modules/scc-1.C: Adjust.

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

	gcc/c-family
	* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_modules value,
	define __cpp_modules_{ts,atom} as selected.
	gcc/testsuite/
	* g++.dg/modules/atom-check-1_a.C: Check for __cpp_modules_atom.
	* g++.dg/modules/atom-check-1_b.C: Check for __cpp_modules_ts.

	gcc/cp/
	* module.c (cluster_size): Delete.
	(module_state::write_{cluster,namespaces,bindings}): Adjust.
	(module_state::write): Precalculate section numbers.

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

	gcc/cp/
	* cxx-module-wrapper.sh: Require bash.

	Fragment depsets more.
	gcc/cp/
	* module.c (depset): Replace container & decls with key.  Adjust
	hashing etc.
	(depset::{binding,decl,defn}_key): New.
	(depset::is_{binding,decl,defn}): New.
	(depset::hash::{maybe_insert,find}): Take a key.
	(depset::hash::add_definition): Reimplement.
	(depset::hash::add_dependency): Reimplement.
	(depset::hash::add_binding): Reimplement.
	(cluster_cmp): Extend.
	(module_state::write_{cluster,namespaces,bindings}): Adjust.
	(module_state::{add_writables,find_dependencies}): Adjust.

	gcc/cp/
	* module.c (depset::tarjan): Replace binds, spaces & defs fields
	with plain result field.
	(depset::tarjan::connect): Don't categorize SCCs here.
	(cluster_size): New.
	(module_state::write_cluster): Take SIZE arg.
	(module_state::write): Use cluster_size, split out namespaces here.

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

	gcc/cp/
	* module.c (trees_out::tree_{type,decl,ctx}): Separate need_body
	and owner args.
	(trees_{in,out}::core_vals): Don't stream TYPE_CONTEXT.
	(trees_in::finish_type, module_state::read_class_def): Reconstruct
	it here.
	(trees_out::tree_binfo): Use tree_ctx.

	gcc/cp/
	* module.c (trees_out::tree_decl): Write innermost args.
	gcc/testsuite/
	* g++.dg/modules/indirect-4_[abc].C: New.

	gcc/cp/
	* module.c (module_state::occupy): Do not set filename here.
	(search_module_path): Rename to ...
	(find_file): ... here.  Search for bmis too.
	(find_module_file): Use find_file.
	(add_module_mapping, finish_module): Adjust.
	gcc/
	* doc/invoke.texi (C++ Modules): Document search path and prefix.

	gcc/cp/
	* Make-lang.in (c++.install-common): Install wrapper into
	libexecsubdir.

	Merge trunk r184995.

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

	gcc/cp/
	* module.c (trees_out::tree_decl): Adjust for member templates.
	(trees_out::tree_node): Don't deal with templates here.
	(trees_in::tree_node): Adjust template instantiations here.
	(module_state::mark_template_def): Adjust.
	gcc/testsuite/
	* g++.dg/modules/indirect-2_b.C: Adjust module scan.
	* g++.dg/modules/indirect-3_[abc].C: New.

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

	Merge trunk r259710.

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

	gcc/cp/
	* cp-tree.h (DECL_TEMPLATE_INFO): Correct comment.
	* module.c: Update description, general format cleanups.
	(elf_out::SECTION_ALIGN): New.
	(elf_out::pad): Use it.
	* pt.c (build_template_decl): Make static.

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

	gcc/cp/
	* module.c (maybe_get_template): Delete.
	(trees_out::tree_decl): Move dependency building into named-decl
	handling.  Don't walk into namespaces.

	gcc/cp/
	* module.c (trees_out::tree_node): Reorder.

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

	gcc/cp/
	* module.c (trees_out::tree_decl): Deal with templated types.
	(tree_in::tree_node): Likewise.
	gcc/testsuite/
	* g++.dg/modules/indirect-2_[abc].C: Add template class.

	gcc/cp/
	* module.c (enum tree_tag): Add tt_template.
	(trees_out::tree_decl): Emit tt_template as needed.
	(trees_in::tree_node): Read tt_template.
	gcc/testsuite/
	* g++.dg/modules/class-3_b.C: Adjust.
	* g++.dg/modules/indirect-1_b.C: Adjust.
	* g++.dg/modules/indirect-2_[abc].C: New.

	gcc/cp/
	* module.c (trees_out::core_vals): Check module of type context.
	(trees_out::tree_decl): Assert we can find the named decl.
	(module_state:read_config): Move defrosting to ...
	(module_state::read): ... here.

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

	gcc/testsuite/
	* g++.dg/modules/indirect-1_[abc].C: Add exported constant.

	gcc/cp/
	* name-lookup.c (lookup_by_ident): Look in enumerals.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_[abc].C: Add enum.

	gcc/cp/
	* module.c (trees_{in,out}::core_vals): More FUNCTION_DECL fields.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_[abc].C: Add virtual class.

	gcc/cp/
	* module.c (dumper::pop): Don't print trailing line.

	gcc/cp/
	* module.c (trees_{in,out}::core_vals): Allow NULL-context VAR_DECLS.
	gcc/testsuite/
	* g++.dg/modules/indirect-1_[abc].C: Add class.

	gcc/cp/
	* module.c (enum tree_tag): Remove tt_namespace.
	(trees_out::tree_{value,decl,type,ref,ctx}): New.  Broken out of ...
	(trees_out::tree_node): ... here.  Use them.
	(trees_out::core_vals): Use tree_ctx.
	(module_state::write_cluster): Use tree_ctx.
	* name-lookup.h (find_imported_namespace): Delete.
	* name-lookup.c (find_imported_namespace): Delete.
	gcc/testsuite/
	* g++.dg/modules/class-3_d.C: Adjust scans.
	* g++.dg/modules/indirect-1_[abc].C: New.

	gcc/cp/
	* module.c (module_state::importing): New.
	(module_state::init): Lazy_open is not just for laziness.
	(module_state::read_config): Call maybe_defrost.
	(module_state::maybe_defrost): New, broken out of ...
	(module_state::load_section): ... here.  Call it.
	(module_state::freeze_an_elf): Look in importing stack too.
	gcc/testsuite/
	* g++.dg/modules/nest-1_[abc].C: New.

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

	gcc/c-family/
	* c-lex.c (c_lex_with_flags): Check C_LEX_FILENAME.  Deal with
	CPP_HEADER_NAME.
	* c-pragma.h (C_LEX_FILENAME): New.
	gcc/cp/
	* parser.c (cp_parser_fill_main): Ask for C_LEX_FILENAME.
	(cp_parser_import_declaration): Parse legacy import names.
	* cp-tree.h (HEADER_STRING_LITERAL_P): New.
	libcpp/
	* include/cpplib.h (cpp_enable_filename_token): Declare.
	* macro.c (cpp_enable_filename_token): Define.
	pfile->state.angled_headers.
	gcc/testsuite/
	* g++.dg/modules/atom-inc-1.C: New.

	gcc/cp/
	* module.c (module_state::lazy_depth): Remove.
	(module_state::lazy_open): Make countdown value.
	(module_state::init): Use getrlimit to default PARAM_LAZY_MODULES.
	gcc/
	* doc/invoke.texi (C++ Modules): Document lazy loading.
	* params.def (PARAM_LAZY_MODULE_FILES): Rename to ...
	(PARAM_LAZY_MODULES): ... here.
	gcc/testsuite/
	* g++.dg/modules/freeze-1_d.C: Fix.

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

	Protect against too-many lazy loadings.
	gcc/
	* params.def (PARAM_LAZY_MODULE_FILES): Define.
	gcc/cp/
	* module.c: Include params.h
	(elf::has_error): Return the error code.
	(elf_in): Add device, inode & size fields.
	(elf_in::{is_frozen,freeze,defrost}): New.
	(module_state): Add lru, lazy_lru, lazy_open fields.
	(module_state::{load_section,freeze_an_elf}): New.
	(module_state::{read,lazy_load}): Adjust.
	(module_state::check_read): Check for EMFILE.
	(module_state::do_import): Adjust.
	gcc/testsuite/
	* g++.dg/modules/freeze-1_[a-d].C: New.

	gcc/cp/
	* parser.c (cp_parser_declaration_seq_opt): Remove ATOM handling here.

	Incremental tokenization of ATOM preamble.
	gcc/c-family/
	* c-pragma.h (C_LEX_STRING_FILENAME): New.
	gcc/cp/
	* cp-tree.h (module_file_nest): Declare.
	* lex.c (module_file_nest): Define.
	* module.c (module_state::{push,pop}_location): Use it.
	* parser.c (cp_lexer_fill_main): Rename to ...
	(cp_parser_file_main): ... this.  Take parser not lexer.  Read &
	parse one atom declaration at a time.
	(cp_parser_declaration_seq_opt): Disable atom preamble here.
	(c_parse_file): Adjust.
	libcpp/
	* files.c (cpp_module_file): New.
	* include/cpplib.h (cpp_module_file): Declare.

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

	gcc/cp/
	* parser.c (cp_lexer_new_main): Replace with ...
	(cp_lexer_fill_main): ... this.  Move initial pragma processing to
	...
	(c_parse_file): ... here.
	(cp_parser_new): Adjust.

	gcc/cp/
	* parser.c (cp_lexer_get_preprocessor_token): Take cpp-flags
	directly.
	(cp_lexer_new_main, cp_parser_initial_pragma): Adjust.

	gcc/cp/
	* cp-tree.h (modules_p, modules_atom_p): New predicates.
	* decl.c (cxx_init_decl_processing): Use modules_p.
	* decl2.c (c_parse_final_cleanups): Likewise.
	* lex.c (init_reswords):
	* module.c (module_state::write_readme): Use modules_atom_p.
	(module_state::{read,write}_config): Likewise.
	(handle_module_option): Don't handle OPT_fmodules_atom here,
	* name-lookup,c (reuse_namespace, make_namespace_finish): Use
	modules_p.
	* optimize.c (maybe_clone_body): Likewise.
	* semantics.c (expand_or_defer_fn_1): Likewise.
	* parser.c (cp_parser_diagnose_invalid_type_name)
	(cp_parser_declaration_seq_opt, cp_parser_declaration): Use
	modules predicates.
	(cp_parser_initial_pragma): Reject pragma with modules.
	(c_parse_file): Adjust error message.
	gcc/c-family/
	* c.opt (fmodules-ts, fmodules-atom): Adust.
	(fno-modules): New.
	gcc/
	* doc/invoke.texi (fno-modules): Document.

	gcc/cp/
	* module.c (init_module_processing): Disallow PCH.
	gcc/c-family/
	* c-pch.c (c_common_valid_pch): Never valid with modules.

	gcc/cp/
	* module.c (module_state::{read,write}_config): Check ATOM/TS
	matches.
	gcc/testsuite/
	* g++.dg/modules/atom-check-1_[ab].C: New.

	gcc/cp/
	* module.c (module_state::write_readme): New.  Broken out of ...
	(module_state::write_context): ... here.  Absorb remainder into ...
	(module_state::write_config): ... here.
	(module_state::read_context): Merge into ...
	(module_state::read_config): ... here.
	(module_state::{read,write}): Adjust.

	gcc/cp/
	* module.c (module_state::release): Simplify.
	(module_state::check_read): Release if done.
	gcc/testsuite/
	* g++.dg/modules/import-2.C: Expect no bmi.
	* g++.dg/modules/modules.exp (dg-module-bmi): Always delete the bmi.

	gcc/cp/
	* module.c (module_state::read): Allocate elf_in here.
	(module_state::do_import): Adjust.
	gcc/testsuite/
	* g++.dg/modules/import-2.C: New.

	gcc/cp/
	* module.c (trees_out::tree_node): Avoid uninitialized false
	positive.

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

	Merge trunk r259189.

	Lazy loading!
	gcc/cp/
	* cp-tree.h (union mc_slot): New.
	(struct module_cluster): Use it.
	(lazy_load_binding): Take an mc_slot.
	* module.c (module_state::release): End the elf source.
	(module_state::read_function_def): Save and restore
	current_function_decl.
	(module_state::read): Enable lazy loading.
	(module_state::lazy_load): Take an mc_slot, adjust.
	(lazy_load_binding): Likewise.
	* name-lookup.c (module_binding_slot): Return an mc_slot pointer.
	(fixed_module_binding_slot): New.
	(name_lookup::search_namespace_only): Lazily load.
	(do_pushdecl): Use fixed_module_binding_slot.
	(merge_global_decl): Adjust.
	(import_module_binding): Install lazy cookie.
	(set_module_binding): Adjust.  Kill stale & wrong global module
	bits.
	(lookup_by_ident): Lazily load.
	(reuse_namespace): Use fixed_module_binding_slot.
	(make_namespace_finish): Likweise.
	(add_imported_namespace, find_imported_namespace): Adjust.
	gcc/c-family/
	* c.opt (fmodule-lazy): Default on.
	gcc/testsuite/
	* g++.dg/modules/lazy-1_[ab].C: New.

	gcc/cp/
	* module.c (elf::E_BAD_LAZY): New error.
	(elf::has_error): New.
	(elf::get_error): Return string.
	(elf::end): Return bool.
	(elf_in::forget_section): New.
	(module_state::check_error): New.
	(module_state::do_module_import): Use it.
	(module_state::lazy_load): New.
	(module_state::{read,write}_decls): Absorb into callers.
	(module_state::read_{context,config,namespaces,bindings,cluster}): Lose
	from parm.
	(module_state::lazy_depth): New.
	(lazy_load_binding): New.
	(finish_module): Adjust.
	* cp-tree.h (lazy_load_binding): Declare.
	gcc/testsuite/
	* g++.dg/modules/circ-1_c.C: Adjust errors.
	* g++.dg/modules/mod-stamp-1_d.C: Adjust errors.

	gcc/cp/
	* module.c (elf_in::keep_sections): New.
	(elf_in::read): Add type arg.
	(elf_in::find): Remove type arg.
	(elf_in::begin): Coalesce error messages.
	(module_state::loading): New field.
	(module_state::{read,write}_config): Serialize section range ...
	(module_state::{read,write}_namespace): ... not here.
	(module_state::read_decls): Do not read the actual decls.
	(module_state::read): ... do them here.

	gcc/cp/
	* module.c (trees_{in,out}, depset): Reorder definitions.

	gcc/cp/
	* module.c (module_state::{read,write}_binfos): Merge loops.

	gcc/cp/
	* module.c (trees_{in,out}::tree_binfo): Delete.
	(module_state::{read,write}_binfos): New.
	(module_state::{read,write}_class_def): Use them.

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

	gcc/
	* doc/invoke.texi (C++ Modules): New section.
	gcc/c-family/
	* c.opt (-fmodule-lazy): New option.
	gcc/cp/
	* module.c (module_state::read_decls): Prepare for laziness.

	gcc/cp/
	* module.c (module_state::tng_*): Rename.

	gcc/cp/
	* module.c (enum tree_tag): Delete tt_definition, tt_binding.
	(trees_in::tag_{binding,definition}): Delete.
	(trees_out::{,maybe_}tag_definition): Delete.
	(trees_{in,out}::define_{function,var,class,enum}): Delete.
	(trees_in::tree_node): Remove tt_definition handling.
	(trees_in::read, trees_out::write): Delete.

	gcc/cp/
	* module.c (module_state::write_namespace): Delete.
	(module_state::{write_bindings,read_bindings}): Likewise.

	gcc/cp/
	* module.c (TNG): Delete.
	(module_state::{tng_read_bindings,write): Constant fold TNG.
	(trees_out::tree_node, trees_in::finish_type): Likewise.

	gcc/cp/
	* module.c (refs_tng): Replace with TNG.

	Switch over to new binding scheme.
	gcc/cp/
	* module.c (TNG): Enable.

	gcc/cp/
	* module.c (module_state::{read,write,mark}_template_def): Deal
	with CLASSTYPE_DECL_LIST.
	(trees_out::tree_node): Check implicit TEMPLATE_DECLs.

	gcc/cp/
	* module.c (trees_out::tree_node): Reorder by-name checks.
	* name-lookup.c (pushdecl_top_level): Replace IS_FRIEND parm with
	MAYBE_INIT.  Set DECL_CONTEXT.  Finish if requested.
	(pushdecl_top_level_and_finish): Use pushdecl_top_level.
	* name-lookup.h (pushdecl_top_leve): Adjust declaration.

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

	gcc/cp/
	* module.c (module_state::{read,write,mark}_template_def): New.
	(module_state::{read_write_mark}_definition): Call them.
	(depset::hash::add_dependency): Don't depend on no-context decls.
	(trees_out::tree_node): Don't try and name no-context decls.

	gcc/cp/
	* module.c (module_state::{read,write}_class_def}): Fixup
	vptr-containing logic.
	(trees_in::tree_binfo): Forward walk.

	gcc/cp/
	* module.c (enum tree_tag): Replace tt_tinfo_pseudo with
	tt_tinfo_typedef.  Add tt_vtable.
	(module_state::mark_class_def): Mark vtables.
	(trees_out::tree_node): Move TINFO processing to decl section.
	Replace tinfo_psuedo handling with tinfo_typedef handling.  Add
	vtable special.
	(trees_in::tree_node): Likewise.
	* rtti.c (struct tinfo_s): Note type is const qualified variant.
	gcc/testsuite/
	* g++.dg/aaa/class-3_d.C: Adjust message.

	gcc/cp/
	* module.c (module_state::read_definition): New.
	(module_state::read_{function,var,class,enum}_def): New.
	(module_state::tng_read_cluster): New.
	(module_state::tng_read_bindings): Call it.
	(trees_in::tree_node): Check refs_tng.

	gcc/cp/
	* module.c (module_state::write_var_def): Write definition.

	gcc/cp/
	* module.c (trees_out::mark_node): Allow preseeding.
	(trees_out::tree_node): Fix as_base.

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

	gcc/cp/
	* module.c (tt_type_name, tt_named): Rename to ...
	(tt_named_type, tt_named_decl): ... here.  Adjust uses.
	(module_state::mark_class_def): Mark fake base.
	(module_state::write_class_def): Write fake base.
	(trees_{in,out}::tree_node): Avoid goto again.
	(trees_in::finish_type): Protect fake base serialize.
	* Make-lang.in (version.o): Depend on cp dir.
	gcc/testsuite/
	* g++.dg/aaa/class-3_d.C: Adjust message.

	gcc/cp/
	* module.c (bytes_in::{use,i,u,wi,str}): Use set_overrun.
	(module_state::tng_write_cluster): Sort cluster here ...
	(module_state::tng_write_bindings): ... not here.
	(module_state::tng_read_bindings): Set refs_tng.
	(trees_{in,out}::define_class): Don't deal with refs_tng here.
	(trees_out::tree_binfo): Protect from dep_walk_p.  Force insert
	new tag.

	Reorder for better logging
	gcc/cp/
	* module.c (trees_{in,out}::core_vals): Stream name-like members
	early.
	(module_state::do_import): Set module purview before streaming.
	* name-lookup.c (set_module_binding): Don't barf on null.

	gcc/
	* gdbinit.in: Add conditions on error catching breakpoints.

	Fix enum types, more globals
	gcc/cp/
	* module.c (module_state::maybe_add_global): New.
	(module_state::init): Use it.
	(trees_{in,out}::core_vals): Special case TYPE of unscoped enum.

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

	Read new .bindings section
	gcc/cp/
	* module.c (elf::get_num_sections): New.
	(module_state::tng_{read,write}_namespaces): Serialize section range.
	(module_state::tng_read_bindings): New.
	(module_State::tng_{read,write}_bindings): Adjust.
	(trees_in::define_enum, trees_in::tag_binding): Adjust.
	* name-lookup.h (push_module_binding): Rename to ...
	(set_module_binding): ... here.
	(import_module_binding): Declare.
	* name-lookup.c (import_module_binding): New.
	(push_module_binding): Rename to ...
	(set_module_binding): ... here.  Adjust.

	Kill old .bindings section
	gcc/cp/
	* module.c (module_state::record_namespace): Delete.
	(module_state::write_namespace): Remove bind parm.  Adjust.
	(module_state::read_namespace): Delete.
	(module_state::tng_read_namespaces): New.
	(module_state::write_bindings): Don't write bindings section.
	(module_state::read_bindings): Use tng_read_bindings).
	* name-lookup.c (make_namespace): Public namespaces are exported.
	(push_namespace): Adjust.

	gcc/cp/
	* module.c (trees_{in,out}::define_class): Check refs_tng.
	(trees_out::tree_binfo): Add definition dependency.
	(trees_{in,out}::tree_node): Don't write binfos in refs_tng mode.
	(trees_in::finish_type): Chek refs_tng.

	gcc/cp/
	* module.c (trees_{in,out}::tree_binfo): Serialize entire path.
	(trees_{in,out}::tree_node): Adjust.

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

	gcc/cp/
	* module.c (has_definition): VAR_DECLs too.
	{module_state::mark_{,function_,var_,class_,enum_}definition): New.
	(trees_out::walk_into): Turn into ...
	(trees_out::mark_node): ... this.  Adjust callers.
	(module_state::write{_function_,class_,var_}_def): Define.
	(module_state::find_dependencies): Look in definitions.

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

	gcc/cp/
	* module.c (maybe_get_template): New.
	(depset::hash::maybe_add_definition): Return a depset.
	(depset::hash::add_dependency): Don't deal with template here.
	(module_state::write_{function,class}): New stubs.
	(module_state::write_enum): New.
	(module_state::write_definition): New.
	(module_state::tng_write_cluster): Write binding header.
	(module_state::add_writables): Don't return a bool. No need to
	nadger namespace ownership.
	(module_state::find_dependencies): Adjust.
	(bind_cmp, space_cmp): New.
	(ns_cmp): Delete.
	(module_state::tng_write_bindings): Sort here.
	(trees_out::tree_node): Check dependency of containers.
	(module_purview_p): Defend against early checks.
	* name-lookup.c (extract_module_decls): Don't special-case
	namespaces.
	(push_namespace): Set EXPORT & OWNER inside a module.
	gcc/testsuite/
	* g++.dg/modules/namespace-2.C: Adjust.
	* g++.dg/modules/namespace-3.C: New.
	* g++.dg/modules/scc-1.C: Adjust.
	* g++.dg/modules/scc-2.C: New.

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

	gcc/cp/
	* module.c
	(depset::hash::{add_writables,find_dependencies}): Moved to ...
	(module_state::{add_writables,find_dependencies}): ... here.  Adjust.
	(depset::hash::write_bindings): Moved to ...
	(module_state::tng_write_bindings): ... here.  Adjust.
	(depset::hash::{add_decls,get_work}): New.

	gcc/cp/
	* module.c (hash_definition): New.
	(struct depset::tarjan): New.
	(depset::tarjan_connect, depset::hash::find_sccs): Delete.
	(depset::hash::maybe_add_definition): New.
	(module_state::tng_write_namespaces): New.
	(depset::hash::{maybe_namespace,write_namespaces): Delete.
	(module_state::tng_write_bindings): Adjust.

	gcc/cp/
	* module.c (depset::traits): Hash & compare using name too.

	gcc/cp
	* module.c (refs_tng): Temporary modal hack.
	(tree_tag): Rename tt_import to tt_named.
	(module_state::write_cluster): Fix iteration.
	(module_state::tng_write_bindings): Set and clear refs_tng.
	(trees_out::tree_node): Refs by name when applicable.
	(trees_out::tree_node): Use tt_named.
	gcc/testsuite/
	* g++.dg/modules/by-name-1.C: New.
	* g++.dg/modules/class-3_b.C: Adjust.
	* g++.dg/modules/scc-1.C: More checking.

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

	gcc/cp/
	* module.c (depset::table): Rename to ...
	(depset::hash): ... here.
	(trees_out::deps_only): Rename to ...
	(trees_out::dep_walk_p): ... here.

	gcc/cp/
	* module.c (depset::table::find_exports): Renamed ...
	(depset::table::add_writables): .. here.  Return bool, add
	exported namespaces.
	(depset::table::append): Add namespaces to worklist.
	(mdule_state::write_namespace): Use TREE_PUBLIC.
	* name-lookup.c (extract_module_decls): Only extract decls in our
	purview.
	(make_namespace): Remove FIXME.
	(push_namespace): Set MODULE_OWNER if exporting.
	gcc/testsuite/
	* g++.dg/modules/namespace-2.C: New.

	gcc/testsuite/
	* lib/scanlang.exp (scan-lang-dump-not): new.

	gcc/cp/
	* module.c (depset::visited): Use depset::cluster.  Adjust users.

	gcc/cp/
	* module.c (elf_out::strtab::named_decl): Cope with TYPE constext.
	(elf_out::strtab::write_named_decl): Likewise.
	(module_state::write_cluster): Adjust dump.
	(fixup_unscoped_enum_owner): New.
	* decl.c (finish_enum_value_list): Call
	fixup_unscoped_enum_owner, as necessary.
	* cp-tree.h (fixup_unscoped_enum_owner): Declare.
	gcc/testsuite/
	* g++.dg/modules/scc-1.C: New.

	gcc/cp/
	* module.c (elf_out::strtab): Add name-by-decl.
	(module_state::write_cluster): Find naming decl, and use it.

	gcc/cp/
	* module.c (class depset): Make a class, add accessors.  Implicitly
	hold name as first decl.
	(depset::table::{maybe_insert,find}): New.
	(depset::table::{append,find_exports,find_dependencies}): Adjust.
	(depset::table::{write_bindings,write_namespaces}): Adjust.
	(module_state::write_cluster): Adjust.

	Add depset analysis (incomplete)
	gcc/cp/
	* module.c (struct depset): New.
	(module_state::tng_write_bindings, write_cluster): New.
	(trees_out::{decls,mark_decls,mark_trees,unmark_trees): New.
	(trees_out::{begin,end,walk_into,force_insert): New.
	(module_state::write): Call tng_write_bindings.
	(trees_out::{core_vals,lang_decl_vals,lang_type_vals,tree_node_raw,
	tree_node): Deal with deps_only.

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

	Allow dump '-'
	gcc/
	* dumpfile.c (dump_open): New. Allow '-' for stdout.
	(dump_open_alternate_stream, dump_start, dump_begin): Call it.
	(dump_finish): Identify std{out,err} by stream.
	* doc/invoke.texi (fdump-rtl): Document stdout/stderr.

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

	Remove -fmodules, forcing -fmodules-{ts,atom}
	gcc/cp/
	* parser.c (cp_parser_diagnose_invalid_type_name): Adjust error.
	gcc/c-family/
	* c.opt (fmodules): Remove.
	gcc/
	* doc/invoke (fmodules): Remove.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Iterate over -fmodules-{ts,atom}.
	* g++.dg/modules: Mark tests that are -fmodules-ts only.

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

	Implement Atom module & import placement
	gcc/
	* doc/invoke.texi (-fmodules): Document -fmodules-atom.
	gcc/c-family/
	* c.opt (fmodules-atom): Renamed from fmodules++.
	gcc/cp/
	* cp-tree.h (import_module): Add parameter.
	* module.c (import_module): Add exporting param.
	(handle_module_option): Adjust.
	* parser.c (cp_parser_module_declaration): Remove fmodules++
	global module parsing.
	(cp_parser_import_declaration): Adjust.
	(cp_parser_declaration_seq_opt): Parse imports under -fmodules++ ...
	(cp_parser_declaration): and not here.
	gcc/testsuite/
	* g++.dg/modules/mod++-decl-0_[abc].C: Adjust.
	* g++.dg/modules/mod++-decl-2.C: Adjust.
	* g++.dg/modules/mod++-decl-3.C: New.

	Implement p0713 - identifiying module source
	gcc/cp/
	* parser.c (cp_parser_module_declaration): Allow global module
	preamble.  Return bool.
	(cp_parser_declaration_seq_opt): Adjust.
	gcc/testsuite/
	* g++.dg/modules/circ-1_d.C: Adjust.
	* g++.dg/modules/global-1_a.C: Adjust.
	* g++.dg/modules/main-[123]-aux.cc: Adjust.
	* g++.dg/modules/main-aux.cc: Adjust.
	* g++.dg/modules/mod-decl-[13].C: Adjust.
	* g++.dg/modules/mod-decl-5_b.C: Adjust.
	* g++.dg/modules/mod-exp-1_b.C: Adjust.
	* g++.dg/modules/mod-sym-2.C: Adjust.
	* g++.dg/modules/proclaim-1.C: Adjust.
	* g++.dg/modules/static-1_a.C: Adjust.
	* g++.dg/modules/p0713-[123].C: New: Adjust.

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

	gcc/cp/
	* module.c (add_module_mapping): Fix double increment.

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

	Merge trunk r258084.

	gcc/
	* Makefile.in (REVISION_c): Don't exec REVISION.
	* REVISION: Simple text file.
	gcc/cp/
	* Make-lang.in (MODULE_STAMP): New var.
	(REVISION_s): Wedge stamp into it here.
	(CFLAGS-cp/module.o): Adjust.

	Using flags on overloads.
	gcc/cp/
	* cp-tree.h (OVL_HAS_USING_P): New.
	* tree.c (alloc_ovl): New, broken out of ...
	(ovl_make): ... this.  Use it.  Maybe set OVL_HAS_USING_P.
	(ovl_copy): Use alloc_ovl.  Copy OVL_HAS_USING_P.
	(ovl_insert): Set OVL_HAS_USING_P appropriately.
	(lookup_maybe_add): Comment on OVL_HAS_USING_P.
	* name-lookup.c (name_lookup::add_overload)
	(get_class_binding_direct): Check OVL_HAS_USING_P.
	gcc/testsuite/
	* g++.dg/lookup/using60.C: New.

	gcc/
	* Makefile.in: Exec REVISION maybe.
	* REVISION: New.
	gcc/cp/
	* Make-lang.in: Directly set MODULE_STAMP.

	Map tag recognised in and out of comments
	gcc/cp/
	* module.c
	gcc/testsuite/
	* g++.dg/modules/hello.cc: Clone to ...
	* g++.dg/modules/main{,-[123]}-aux.cc: ... here.
	* g++.dg/modules/main-[123]_a.C: New.
	* g++.dg/modules/main-[123]-map: New.
	* g++.dg/modules/main-map: Delete.
	* g++.dg/modules/main_a.C: Update.

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

	gcc/cp/
	* module.c (version_string): Rename.
	(module_state::write_context): Write compiler version.

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

	Use TREE_VISITED
	gcc/cp/
	* module.c (trees_out::fixed_refs): New.
	(trees_out::{begin,end}): New.
	(module_state::init): Use TREE_VISITED.
	(trees_out::{maybe_insert,tree_node}): Likewise.

	gcc/cp/
	* module.c: More commenting.
	(trees_{in,out}::define_class): Don't do AsBase here.
	(trees_in::finish_type, trees_out::tree_node}: Do it here.
	(get_module_owner): Cleanup.

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

	Module ownership on containers
	gcc/cp/
	* cp-tree.h (decl_set_module, module_context): Delete.
	(get_module_owner, set_module_owner)
	(set_implicit_module_owner): Declare.
	* decl.c (grokfndecl, grokvardecl, grokdeclarator): Call
	set_module_owner.
	* error.c (dump_module_suffix): Use get_module_owner.
	* mangle.c (maybe_write_module): Likewise.
	* method.c (implicitly_declare_fn): Use set_implicit_module_owner.
	* module.c (module_context, decl_set_module): Delete.
	(trees_in::define_function): Adjust.
	(trees_{in,out}::lang_decl_bools): Set module_owner.
	(trees_{in,out}::tree_node_raw): Adjust.
	(trees_out::tree_node): Adjust.
	(get_module_owner, set_module_owner)
	(set_implicit_module_owner): Define.
	* name-lookup.c (do_pushtag): Use set_module_owner.
	* pt.c (lookup_template_class_1, instanitate_decl): Use
	set_implicit_module_owner.

	gcc/cp/
	* module.c (trees_out::tree_node): Reorder.

	gcc/cp/
	* module.c: Commenting and a few cleanups.

	gcc/cp/
	* module.c (elf): Make more constants private.
	(elf_in::find): Swap args, default to PROGBITS.
	(elf_out::add): Replace type and flags with string_p arg.
	(bytes_in::begin, bytes_out::end): Adjust.
	(data::set_crc): Store zero for no-crc.

	Module map files have more syntax
	gcc/cp/
	* cxx-module-wrapper.sh: Accept src filename, don't search
	MODULE_PATH.
	* module.c (module_state::srcname): New.
	(module_state::print_map): New.
	(make_module_name): Rename to ...
	(make_module_filename): ... here.  Don't assume trailing NUL.
	(find_module_file): Pass srcname.
	(parse_module_mapping): New.
	(add_module_mapping): Call it.  Detect too-deeply nested.
	gcc/c-family/
	* c.opt (fmodule-map-dump): New.
	gcc/
	doc/invoke.texi: Document new module-map file syntax
	gcc/testsuite/
	* g++.dg/modules/hello.c: Adjust.
	* g++.dg/modules/main_a.c: Adjust.
	* g++.dg/modules/main-map: New.
	* g++.dg/modules/modules.exp: Set CXX_MODULE_PATH.

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

	Module path is for mapping files. Replace -fmodule-root with
	-fmodule-prefix.
	gcc/cp/
	* cxx-module-wrapper.sh: Adjust.
	* module.c (module_state::lazy_{init,fini}): Drop the lazy.
	(module_state::maybe_early_init): Move into init.
	(module_prefix, module_file_args, module_wrapper): New.
	(make_module_name): New.
	(module_state::occupy): Call it.
	(module_to_filename): Delete.
	(search_module_path): Adjust for finding module-maps.
	(find_module_file): New.
	(add_module_mapping): Reimplement.
	(init_module_processing): Process module_file_args array.
	(module_state::do_import, finish_module): Adjust.
	(maybe_prepend_dir): Delete.
	(handle_module_option): Adjust.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Adjust clean_cxx_module_path
	call.
	* c.opt (fmodule-root=): Delete.
	(fmodule-prefix=): New.
	gcc/
	* doc/invoke.texi (fmodule-root): Replace with ...
	(fmodule-prefix): ... this.
	* incpath.c (clean_cxx_module_path): Drop root appending. Drop
	multilib handling.
	* incpath.h (clean_cxx_module_path): Adjust.
	gcc/testsuite/
	* g++.dg/modules/fmod-file-1_b.C: Adjust.
	* g++.dg/modules/main_a.C: Adjust.
	* g++.dg/modules/modules.exp: Adjust.

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

	AS_BASE is by reference.
	gcc/cp/
	* module.c (trees_out::define_class): Break AS_BASE loop during
	streaming.
	(trees_{in,out}::tree_node): Use tt_as_base.

	Mapping files are recursive.
	gcc/cp/
	* module.c (maybe_prepend_dir): New.
	(add_module_mapping): Recurse.  Deal with relative paths.
	(handle_module_option): Move file reading into add_module_mapping.
	gcc/
	* doc/invoke.texi (fmodule-file): Document.

	BINFOs imported by reference.
	gcc/cp/
	* module.c (trees_{in_out}::tree_binfo): New.
	(trees_out::maybe_insert): New.
	(trees_out::insert): Use it.
	(trees_{in,out}::define_class): Stream remaining binfo contents.
	(trees_{in,out}::start): Don't expect BINFOs.
	(trees_{in,out}::core_vals): Likewise.
	(trees_{in,out}::tree_node): Use tt_binfo.
	(trees_out::tree_node): Stream a class's child binfos.
	(trees_in::finish_type): Likewise.

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

	Add module map file reading.
	gcc/cp/
	* module.c (add_module_mapping): New, swallow ...
	(add_module_file): ... insertion bits.  Move other bits to ...
	(handle_module_option): ... here.  Read module map file.
	gcc/c-family/
	* c.opt (fmodule-file): Document new semantics.
	gcc/
	* doc/invoke.texi (fmodule-file): Document new semantics.
	gcc/testsuite/
	* g++.dg/modules/fmod-file-1_[ab].C: New.
	* g++.dg/modules/fmod-out-1_[ab].C: New.
	* g++.dg/modules/modules.exp (decode_mod_spec): Augment.

	Keep module-file map in module hash.
	gcc/cp/
	* module.c (module_state): Add empty_p, get_module members.
	Rename set_name, delete set_location.
	(module_file_map, module_file): Delete.
	(module_state::do_import): Use get_module, set filename here.
	(declare_module): No need to set filename here.
	(add_module_file): Use module_state::get_module.

	Move module option processing into module.c.
	gcc/cp/
	* cp-objcp-common.c (add_module_file): Move to module.c
	(cp_handle_option): Call handle_module_option.
	* cp-tree.h (module_output, module_files_map, module_files): Move
	to module.c
	* module.c (module_state::maybe_early_init): New.
	(module_output, module_files): Make static.
	(module_files_map): From cp-tree.h.
	(init_module_processing): Call maybe_early_init.
	(add_module): Moved from cp-objcp-common.c.
	(handle_module_option): New.

	Move module option processing out of c-common.c.
	gcc/c-family/
	* c-common.h (module_output, module_files_map, module_files): Move
	to cp-tree.h.
	* c-common.c (module_output, module_files): Move to module.c
	* c-opts.c (add_module_file): Move to cp-objcp-common.c.
	(c_common_handle_option): Move modules options to
	cp-objcp-common.c.
	gcc/cp/
	* cp-objcp-common.c (add_module_file): Moved from c-opts.c.
	(cp_handle_option): New, from c_common_handle_option.
	* cp-objcp-common.h (LANG_HOOKS_HANDLE_OPTION): Point at
	cp_handle_option.
	* cp-tree.h (module_output, module_files_map, module_files): Moved
	from c-common.h.
	* cp-module.c (module_output, module_files): Moved from c-common.c.

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

	gcc/cp/
	* module.c: Update more comments.

	gcc/cp/
	* module.c: Update a lot of comments.

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

	gcc/cp/
	* module.c (trees_in::tree_node): Absorb ...
	(trees_in::tree_node_special): ... this.

	gcc/cp/
	* module.c (trees_in::tree_node_special): Deserialize tt_node here ...
	(trees_in::tree_node): ... not here.

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

	gcc/cp/
	* module.c (trees_out::tree_node_special): Move into tree_node.

	gcc/cp/
	* module.c (trees_{in,out}::core_vals): Serialize decl name &
	context here.
	(trees_in::tree_node_raw): Don't set name & context here.
	(trees_{in,out}::tree_node): Don't serialize decl name and context
	here.

	Remove old import machinery.
	gcc/cp/
	* module.c (trees_in::tree_node_raw): Set module owner.
	(trees_{in,out}::tree_node): Remove importing here.

	Imports use special tags
	gcc/cp/
	* module.c (module_context): Cope with C++ anon types.
	(trees_{in,out}::tree_node_special): Deal with imports here ...
	(trees_{in,out}::tree_node): ... not here.
	gcc/testsuite/
	* g++.dg/modules/class-3_[bd].C: Adjust.

	Kill namespace module slot hackery
	gcc/cp/
	* name-lookup.c (module_binding_slot): Make CREATE a bool.  Remove
	namespace hackery.
	(find_namespace_partition): Delete.
	(merge_global_decl): Do not expect a namespace.  Remove such
	handling.
	(push_module_binding): Likewise.

	Namespaces use special tags
	gcc/cp/
	* module.c (trees_{in,out}::tree_node_special): Deal with
	namespaces.
	* name-lookup.h (find_imported_namespace): Declare.
	* name-lookup.c (find_imported_namespace): New.

	Less implicit tree numbering, negative indices for back refs
	gcc/cp/
	* module.c (ptr_uint_traits, ptr_uint_hash_map): Rename ...
	(ptr_int_traits, ptr_int_hash_map): ... here.  Map to ints.
	(uint_ptr_traits, uint_ptr_hash_map): Delete.
	(enum record_tag): Delete.
	(enum tree_tag): New.
	(trees_{in,out}::insert): Return int.
	(trees_{in,out}::tree_node_special): Adjust.
	(trees_{in,out}::tree_node): Adjust.
	(trees_out::write, trees_in::read): Adjust.
	gcc/testsuite/
	* g++.dg/modules/class-3_[bd].C: Adjust.

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

	gcc/cp/
	* decl2 (c_parse_final_cleanups): Only finish_module if we started
	it.
	* module.c (module_hash_state): Move earlier.
	(module_state): Add hash and modules static members.
	(module_state::set_import): Replace do_import.
	(module_state::lazy_init): Create the hash table and default
	module.
	(trees_in::tree_node_raw): Don't remap a public namespace.
	(module_purview_p, module_interface_p): Adjust.
	(module_state::do_import): Move more stuff to lazy_init.
	(import_module): Deal with setting current module flags.
	(finish_module): Adjust.

	Fix bootstrap
	gcc/cp/
	* module.c (elf): Clean up consts.
	(module_state::record_namespace): Comment args.
	(module_state::read_namespace): Comment unused vars.
	(trees_in::finish_tree): Fix logic error.
	(trees_in::tree_node_special): Fix undefined var.

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

	Module purview is implicit.
	gcc/cp/
	* cp-tree.h (lang_decl): Remove module_purview_p field.
	* mangle.c (maybe_write_module): Fix signed/unsigned mismatch.
	* module.c (trees_in::finish): Adjust.
	(trees{in,out}::lang_decl_bools): Drom module_purview_p field.
	(decl_set_module): Done set DECL_MODULE_PURVIEW_P.
	* name-lookup.c (extract_module_decls): check MODULE_PURVIEW_P.
	(make_namespace_finish): Remove inline_p arg.  Adjust callers.
	* pt.c (build_template_decl): Don't copy MODULE_PURVIEW_P.
	* rtti.c (tinfo_base_init): Don't clear MODULE_PURVIEW_P.

	gcc/cp/
	* name-lookup.c (make_namespace_finish): Always create the scope.
	(add_imported_namespace): Check namespace inlineness here.

	gcc/cp/
	* module.c (decl_set_module): Set DECL_MODULE_OWNER.
	* rtti.c (tinfo_base_init): Clear DECL_MODULE_OWNER.

	gcc/cp/
	* decl.c (grokfndecl): Protect decl_set_module call.
	* name-lookup,c (do_pushtag): Likewise.
	* module.c (decl_set_module): Assert namespace context.

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

	gcc/cp/
	* cp-tree.h: Adjust comments.
	* module.c (module_purview_p, module_interface_p): Adjust.

	Deserializing uses an array (Nathan is a dumbass)
	gcc/cp/
	* module.c (trees_in): Delete count and tree_map. Add back_refs.
	(trees_in::next): Delete.
	(trees_in::insert): Append to array.
	(trees_in::tree_node_special): Adjust.
	(trees_in::tree_node): Likewise.

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

	gcc/cp/
	* module.c (nodel_ptr_hash): New.
	(non_null_hash): Delete.
	(ptr_uint_traits, uint_ptr_traits): Adjust.
	(module_state_hash): Use nodel_ptr_hash.
	(module_hash): Do not GTY.
	(module_state::do_import, finish_module): Adjust.

	Use TREE_VEC for structured module names.
	gcc/cp/
	* cp-tree.h (module_name_parts): Replace with ...
	(module_vec_name): ... this.
	* mangle.c (maybe_write_modules): Adjust.
	* module.c (module_state): Replace name_parts with vec_name.
	(module_state::set_name): Add maybe_vec parm, construct TREE_VEC.
	(module_vec_name): Replace ...
	(module_name_parts): ... this.
	(module_state::do_import): Construct flat name.
	* parser.c (cp_parser_module_name): Construct TREE_VEC.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-1.C: Add error.

	MODULE_PURVIEW bug fixing.
	gcc/cp/
	* decl2.c (c_parse_final_cleanups): Reset current_module.
	* module.c (module_state::do_import): New, swallow ...
	(do_module_import): ... this.  Update callers.
	* name-lookup.c (name_lookup::search_namespace_only): Fix search
	of SLOT_CURRENT.
	(do_pushdecl): Fix assert.
	(merge_global_decl, push_module_binding, lookup_by_ident): Fix
	module remap thinko.

	Module purview has MODULE_PURVIEW number.
	gcc/cp/
	* module.c (module_state::read): Use MODULE_PURVIEW.
	(trees_{in,out}::tree_node): Adjust.
	(do_module_import, import_module): Likewise.
	* name-lookup.c (module_binding_slot): Adjust.
	(do_pushdecl): Always push to MODULE_SLOT_CURRENT.
	(merge_global_decl): Remap MODULE_PURVIEW.
	(lookup_by_ident, add_imported_namespace): Likewise.

	Rename MODULE_INDEX->MODULE_OWNER
	gcc/cp/
	* cp-tree.h (MODULE_NONE, MODULE_PURVIEW, MODULE_IMPORT_BASE)
	(MODULE_LIMIT): New, renamed from MODULE_INDEX_$FOO.
	(DECL_MODULE_OWNER): New, renamed from DECL_MODULE_INDEX.
	(MAYBE_DECL_MODULE_OWNER): Likewise.
	(struct lang_decl_base): Rename module_index to module_owner.
	* error.c, mangle.c, module.c, name-lookup.c, pt.c: Adjust.

	Keep namespaces on global slot.
	gcc/cp/
	* cp-tree.h (MODULE_SLOT_CURRENT, MODULE_SLOT_GLOBAL): Renamed
	from MODULE_SLOT_TU, MODULE_SLOT_GLOBALS.
	* name-lookup.h (set_module_namespace): Undeclare.
	(add_imported_namespace): Declare.
	* name-lookup.c (module_binding_slot): Remove assert, propagate
	external namespace to GLOBAL slot on creation.
	(update_binding): Don't add namespaces to level.
	(reuse_namespace): New.
	(make_namespace): New, absorb ...
	(create_namespace): ... this. Delete.
	(make_namespace_finish): New.
	(push_namespace): Adjust.
	(add_imported_namespace): New.  Absorb ...
	(set_module_namespace): ... this. Delete.
	* module.c (module_state::read_namespace): Adjust.
	gcc/testsuite/
	* g++.dg/modules/namespace-1_[abc].C: New.

	Fix circularity detection, and other errors
	gcc/cp/
	* module.c (elf::E_BAD_DATA, elf::E_BAD_IMPORT): New.
	(elf::set_error): Default to E_BAD_DATA.
	(elf::end, elf_out::end): Return error string.
	(module_state::set_location): New.
	(module_state::{push,pop}_location): Adjust.
	(do_module_import): Fixup circularity and other errors.
	(declare_module, finish_module): Adjust.
	gcc/testsuite/
	* g++.dg/modules/circ-1_[abcd].C: New.
	* g++.dg/modules/mod-decl-1.C: Adjust errors.
	* g++.dg/modules/mod-decl-2_b.C: Adjust errors.
	* g++.dg/modules/mod-decl-5_b.C: Adjust errors.
	* g++.dg/modules/mod-stamp-1-d.C: Adjust errors.

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

	Alloc a slot for global module
	gcc/cp/
	* cp-tree.h (MODULE_INDEX_NONE, MODULE_INDEX_PURVIEW): New.
	(MODULE_SLOT_TU, MODULE_SLOT_GLOBALS): New.
	(MODULE_INDEX_IMPORT_BASE): Increment.
	* module.c (do_module_import): Push reserved slot.
	* name-lookup.c (module_binding_slot): Reserve slots below
	MODULE_INDEX_IMPORT_BASE.

	Bindings point to decls
	gcc/cp/
	* module.c (data::check_crc): Only check.
	(data::get_crc): New.
	(elf_in::find): Return section index.
	(bytes_in::begin): Add by-section-number variant.
	(module_state): Add lazy counter (unused).
	(module_state::write_bindings): Emit decl section number.
	(module_state::read_bindings): Adjust, swallow ...
	(module_state::read_decls): ... this.  Delete.

	Read and parse the binding section in module_state.
	gcc/cp/
	* module.c (modules_state::record_namespace): New.
	(module_state::write_namespace): Adjust, renamed from ...
	(module_state::walk_namespace): ... here.
	(module_state::read_namespace): New.
	(module_state::{read,write}_bindings): Adjust.
	(module_state::finish_module): Adjust.
	* name-lookup.h (set_module_namespace): Declare.
	* name-lookup.c (merge_global_decl): Adjust.
	(create_namespace): New.
	(set_module_namespace): New, use it.
	(push_namespace): Use create_namespace.

	Write binding section in module_state.
	gcc/cp/
	* name-lookup.h (extract_module_decls): Renamed from
	extract_module_bindings.  Adjust signature.
	* name-lookup.c (extract_module_decls): Likewise.
	* module.c (module_state::walk_namespace): New, absorb ...
	(trees_out::walk_namespace): ... this.  Delete.
	(trees_out::write): Reimplement, absorb ...
	(trees_out::{tag_binding,bindings}): ... these.  Delete.
	(module_state::write_bindings): Adjust.

	Merge trunk r257292.

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

	gcc/cp/
	* module.c (cpms_{in,out}): Rename to ...
	(trees_in, trees_out): ... here.

	gcc/cp/
	* module.c (module_state::global_{trees,vec,crc}): New, moved from ...
	(globals{,_arys,_crc}): ... these globale scope vars.
	(cpms_in): Add global_vec member.

	Derive cpm_{in,out} from bytes_{in,out}
	gcc/cp/
	* module.c (cpms_{in,out}): Derive from bytes_{in,out}.  Adjust
	all uses of r & w.

	Kill cpm_stream.
	gcc/cp/
	* module.c (class cpm_stream): Delete.
	(class cpms_{in,out}): Adjust.

	Move elf out of cpms_in, cpms_out.
	gcc/cp/
	* module.c (module_state::{read,write}_bindings): New.
	(module_stste::read_decls): New.
	(cpms_{in,out}::get_elf): Delete.
	(cpms_out::{write,bindings}): Adjust.
	(cpms_in::read): Adjust.

	Add module_stat read & write
	gcc/cp/
	* module.c (module_state::{read,write}): New.
	(cpms_in::read): Adjust.
	(do_import_module, finish_module): Adjust.

	gcc/cp/
	* module.c: Move cpm_stream, cpms_in, cpms_out earlier.

	Move some reading to module_state.
	gcc/cp/
	* module.c (module_state::read_{context,config}): New, swallow ...
	(cpms_in::imports,header): ... these.  Delete.
	(cpms_in::read): Adjust.
	(do_import_module): Adjust.

	Move some writing to module_state.
	gcc/cp/
	* module.c (module_state::write_{context,config}): New, swallow ...
	(cpms_out::imports,header): ... these.  Delete.
	(cpms_out::write): Adjust.
	(finish_module): Adjust.

	Move global tree init.
	gcc/cp/
	* module.c (module_state::lazy_init): New, swallow ...
	(cpm_serial::lazy_globals): ... this.   Adjust callers.

	Reorder class declarations
	gcc/cp/
	* module.c (bytes, bytes_in, bytes_out): Move before module_state.

	Simplify import interface
	gcc/cp/
	* module.c (MODULE_INDEX_IMPORTING, MODULE_INDEX_ERROR): Delete.
	(MODULE_INDEX_UNKNOWN): New.
	(module_state): Initialize mod to MODULE_INDEX_UNKNOWN.
	(cpms_in::read): Return void.
	(do_module_import): Return pointer to module object.
	(cpms_in::imports): Adjust.
	(import_module, declare_module, finish_module): Adjust.

	Module_state owns elf and elf owns stream
	gcc/cp/
	* module.c (elf): Add begin, end members.
	(elf_in, elf_out): Adjust.
	(module_state::announce): New.
	(cpms_{in,out}::get_elf): Adjust.
	(cpms_{in,out}::{begin,end}): Delete.
	(do_module_import, finish_module): Adjust.

	Commonize module location
	gcc/cp/
	* module.c (module_state::{push,pop}_location): Set and restore
	input_location.
	(make_module_file): Lose module_root prepending.
	(do_module_import): Always set module location.
	(declare_module): Create location and filename.
	(finish_module): Adjust.

	Staticize instrumentation
	gcc/cp/
	* module.c (bytes_out): Staticize spans, lengths, is_set.
	(bytes_out::instrument): Make static.
	(cpms_out): Staticize unique, refs, nulls, records.
	(cpms_out::instrument): Make static.  Adjust.

	Separate dumper object
	gcc/cp/
	* cp-tree.h (dump, print_other_binding_stack): Undeclare.
	* name-lookup.c (print_other_binding_stack): Make static.
	* module.c (class dumper): New.
	(cpm_serial): Remove dumping machinery here.  Adjust all uses.
	gcc/testsuite/
	* g++.dg/modules/mod-imp-1_[abcd].C: Adjust dump scans.

	Start refactoring cpm_serial
	gcc/cp/
	* module.c (cpms_{in,out}::elf): Pointer to elf object,
	(cpms_{in,out}::get_elf): New.  Use it.
	(do_module_import, finish_module): Adjust.

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

	gcc/cp/
	* module.c (data::release): Return NULL, update users.
	(cpms_in::{mod_ix,crc}): Delete, adjust users.

	Reorder source
	gcc/cp/
	* module.c (struct data): First.
	(class elf, elf_in & elf_out): Next.

	gcc/cp/
	* module.c (module_state): Remove name_hash, crc_known, set_crc,
	set_location.
	(cpms_in::{read,header}): Add crc_ptr arg.
	(do_module_import): Expected CRC is a pointer.
	(cpms_in::imports): Adjust.

	Push remaps as they happen.
	gcc/cp/
	* module.c (cpms_{in,out}::imports): Write in ascending order.

	Move remap vector into module state.
	gcc/cp/
	* module.c (module_state): Add remap;
	(cpms_in): Remove remap_num, remap_vec.
	(module_state::release): New.
	(cpms_in::{imports,tree_node,read}): Adjust.
	(finish_module): Release module state.

	gcc/cp/
	* module.c (bytes_out::end): Create PROGBITS or STRTAB.
	(cpms_out::write): README is a STRTAB.

	Remove SYMTAB knowledge, the README is better.
	gcc/cp/
	* module.c (elf_out::symtab): Delete.
	(elf_out::end): Adjust.
	(cpms_out::imports): Don't create symtab.

	Section structure completish.
	gcc/cp/
	* module.c (elf::isection): Add flags.
	(elf_out::add): Add section flags.
	(bytes_out::end): Likewise,
	(elf_out::end): Adjust.
	(cpms_out::bindings): Generate bindings section too.
	(cpms_out::write): Add imports to README.  Make string section.
	(cpms_in::read): Adjust.

	Config in header
	gcc/cp/
	* module.c (cpms_{in,out}::tag_conf): Delete.
	(cpms_{in,out}::header): Serialize host & target conf.
	(cpms_in::read, cpms_out::write): Adjust.

	Globals in header
	gcc/cp/
	* module.c (module_state::set_name): Kill string names.
	(cpms_{in,out}::tag_globals): Delete.
	(cpms_{in,out}::header): Do globals.  Add outer crc.
	(cpms_in::read): Absorb cpms_in::read_item.
	(search_module_path, do_module_import): Kill string names.

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

	Import table is separate section
	gcc/cp/
	* module.c (bytes): Reorganize CRC calcs.
	(struct elf::symbol): New.
	(struct elf_out::symtab): New.
	(elf_out::end): Deal with symbol table.
	(bytes_{in,out}::{begin,end}): Adjust crc calcs.
	(cpms_{in,out}::imports): New.
	(cpms_{in,out}::tag_import): Delete.
	(cpms_in::read, cpms_out::write): Adjust.

	Header is separate section
	gcc/cp/
	* module.c (module_state_hash::equal): Remove string names.
	(elf_in::find): Find by name.
	(elf_in::name): New.
	(class elf_out::strtab): Rename type.
	(elf_out::strings): New member.
	(elf_in::begin): Veriy string table.  Create default.
	(elf_out::end): Write string table here.
	(bytes_in::begin, bytes_out::end): Always PROGBITS.
	(cpm_stream::rt_eof): Delete.
	(cpms_{in,out}::header): Reimplement.
	(cpms_in::read, cpms_out::write): Adjust.

	Remove string-literal module names :(
	gcc/cp/
	* cp-tree.h (validate_module_name): Remove.
	* module.c (validate_module_name): Delete.
	(bytes_{in,out}::module_name): Delete, adjust callers.
	* parser.c (cp_parser_module_name): Adjust.
	(cp_parser_module_declaration, cp_parser_import_declaration)
	(cp_parser_module_proclamation): Adjust.
	gcc/testsuite/
	* g++.dg/modules/mod++-decl-3_[ab].C: Delete.

	{read,write}_module become member fns
	gcc/cp/
	* module.c (cpms_{in,out}::elf}: Direct member. Adjust ctors.
	(cpms_{in,out}::{begin,end}): New.
	(cpms_in::read, cpms_out::write): New.
	(read_module, write_module): Delete.
	(do_module_import, finish_module): Adjust.

	README section
	gcc/cp/
	* module.c (version2date, version2time, version2string): Moved
	from cpm_serial.
	(struct_data): Broken out of elf.
	(struct elf::isection): Remove link field.  Adjust all uses.
	(class elf_out::strings): New.
	(elf_out::add): New.
	(bytes_out::printf): New.
	(cpm_stream::dump, cpms_in::header): Adjust version handling.
	(write_module): Write README section.

	Fix layering violation
	gcc/cp/
	* module.c (elf): Rename bad -> set_error.
	(elf_out, elf_in): Update.
	(cpm_serial, cpm_writer, cpm_reader): Rename to ...
	(bytes, bytes_out, bytes_in): ... here.
	(bytes_{in,out}): Remove source, sink members.
	(bytes_in): Rename overran -> get_overrun.  Add end, set_overrun.
	Delete bad, get_error.  Adjust users.
	(cpms_in, cpms_out): Add elf field.  Adjust.

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

	Simplify buffer filling & drainging
	gcc/cp/
	* module.c (cpm_serial): Add begin, end, use, unuse.
	(cpm_writer): Add use, unuse, begin, end.  Delete reserve, flush,
	seek, tell, checkpoint.
	(cpm_reader): Add overrun, use, begin, overran.  Delete fill,
	checkpoint.
	(cpm_{reader,writer}): Update all seralizers.
	(cpms_{in,out}): Remove checkpointing.

	CRC at section level
	gcc/cp/
	* module.c (elf::data): Add crc routines.
	(cpm_serial): Remove crc routines.
	(cpm_in, cpm_out): Don't calculate crcs.
	(read_module, write_module): Adjust (incomplete).

	BMI is ELF
	gcc/cp/
	* module.c (get_version): Moved from cpm_stream::version.
	(struct non_null_hash, ptr_uint_traits, ptr_uint_hash_map)
	uint_ptr_traits, uint_ptr_hash_map): New.
	(elf, elf_in, elf_out): New classes.
	(cpm_serial, cpm_in, cpm_out): Modify (incomplete).
	(cpms_in, cpms_out): Adjust.
	(read_module, write_module, finish_module): Adjust.

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

	Global tree via crc
	gcc/cp/
	* module.c (cpm_stream): Add globals & globals_crc.
	(cpm_stream::next): Add default arg.
	(cpm_stream::cpm_stream): Lazily init globals vector.
	(cpms_{in,out}::mark_present, globals): Delete.
	(cpms_{in,out}::tag_globals): Reimplement.
	(cpms_in::tree_node_special): Read global tree directly.
	* name-lookup.c (extract_module_bindings): Skip RTTI types.

	gcc/cp/
	* module.c (module_state): Replace direct_import with imported &
	exported flags.
	(module_state::do_import): Adjust.
	(enum import_kind): Delete.
	(do_module_import): Adjust.
	(cpms_{in.out}::tag_import): Adjust.
	(module_interface_p, import_module, declare_module)
	(finish_module): Adjust.

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

	Static bindings not visible in imports
	gcc/cp/
	* name-lookup.h (decapsulate_binding): Delete.
	(module_binding_vec, extract_module_bindings): Declare.
	* module.c (cpms_{in,out}::tag_binding): Reimplement.
	(cpms_out::bindings): Likewise.
	* name-lookup.c (decapsulate_binding): Delete.
	(extract_module_bindings): New.
	gcc/testsuite/
	* g++.dg/modules/mod++-decl-0_c.C: Remove XFAIL.
	* g++.dg/modules/static-1_[abc].C: New.

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

	gcc/cp/
	* tree.c (ovl_insert): No need to sort by USING_P.
	(ovl_iterator::reveal_node): Likewise.

	Update bug reporting instructions
	gcc/
	* configure.ac (ACX_BUGURL): Set new url
	* diagnostic.c (diagnostic_action_after_output): Special ICE
	instructions.
	* configure: Rebuilt.

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

	Kill mangle_namespace.
	gcc/cp/
	* cp-tree.h (CPTI_MANGLE, mangle_namespace): Delete.
	* decl.c (cxx_init_decl_processing): Don't create it.
	* module.c (cpms_out::bindings): Don't skip it.
	* name-lookup.c (suggest_alternatives_for): Likewise.

	Import ident by type not index.
	gcc/cp/
	* name-lookup.h (get_ident_in_namespace, get_ident_in_class,
	find_by_ident_in_namespace, find_by_ident_in_class): Delete.
	(lookup_by_ident): Declare.
	* name-lookup.c (get_ident_in_namespace, get_ident_in_class): Delete.
	(find_by_ident_in_namespace, find_by_ident_in_class): Replace with ...
	(lookup_by_ident): ... this.
	* module.c (cpms_{in,out}::ident_imported_decl): Delete.
	(cpms_out::tree_node): Write imported decl info directly.
	(cpms_in::tree_node): Use lookup_by_ident.

	gcc/cp/
	* module.c (cpms_{in.out}::tree_node_special): New, broken out of ...
	(cpms_{in,out}::tree_node): ... here.  Call them.

	Merge trunk r256894.

	gcc/cp/
	* Make-lang.in: Set MODULE_STAMP if non-branch experimental.

	Beginnings of global module correctness
	gcc/cp/
	* cp-tree.h (struct mc_index): New.
	(module_cluster): Use it.
	(MODULE_VECTOR_SLOTS_PER_CLUSTER): New.
	(GLOBAL_MODULE_INDEX, THIS_MODULE_INDEX, IMPORTED_MODULE_BASE): Delete.
	(MODULE_INDEX_IMPORT_BASE): New.
	(DECL_MODULE_PURVIEW_P, MAYBE_DECL_MODULE_PURVIEW_P): New.
	(MAYBE_DECL_MODULE_INDEX): Adjust.
	(MODULE_INDEX_BITS): New.
	(struct lang_decl_base): Add module_purview_p field.
	* decl2.c (c_parse_final_cleanups): Adjust.
	* error.c (dump_module_suffix): Adjust.
	* mangle.c (maybe_write_module): Adjust.
	* module.c (MODULE_INDEX_IMPORTING, MODULE_INDEX_ERROR): New.
	(module_state::freeze): Delete.
	(this_module): Delete.  Replace with (*modules)[0].
	(cpms_in::alloc_remap_vec): Adjust.
	(cpms_in::tag_import): Use MODULE_INDEX_ERROR.
	(cpms_{in,out}::tag_binding): Lose MAIN_P parm.  Adjust.
	(cpms_in::define_function): Remove GLOBAL_MODULE_INDEX handling.
	(cpms_in::read_item): Use MODULE_INDEX_IMPORTING.
	(cpms_in::finish): Remove NODE_MODULE parm.  use
	MAYBE_DECL_MODULE_PURVIEW_P.
	(cpms_{in,out}::lang_decl_bools): Read & write module_purview_p.
	(cpms_in::tree_node_raw): Lose NODE_MODULE parm.  Set module
	directly.
	(cpms_{in,out}::tree_node): Adjust module identification.
	(cpms_out::bindings): Bindings are on a single slot.
	(module_loc): Delete.
	(decl_set_module): Set purview as needed.
	(module_purview_p, module_interface_p): Adjust.
	(read_module): Simplify.
	(do_module_import): Adjust for lack of global module slot.  Use
	MODULE_INDEX_ERROR, MODULE_INDEX_IMPORTING.  Detect already
	declared module here.
	(import_module): Adjust.
	(declare_module): Don't detect already declared here.
	(write_module): Adjust.
	(finish_module): Adjust.
	* name-lookup.c (module_binding_slot): Reimplement.
	(name_lookup::process_module_binding)
	(name_lookup::search_namespace_only, name_lookup::add_module_fns)
	(name_lookup::adl_namespace_only, do_pushdecl): Adjust.
	(merge_global_decl): Kludge into reworking.
	(push_module_binding): Likewise.
	* name-lookup.h (merge_global_decl): Add module parm.
	* pt.c (build_template_decl): Propagate purview.
	* ptree.c (cxx_print_xnode): Adjust.
	* rtti.c (tinfo_base_init): Kludge into working.
	(get_tinfo_desc): Drop unnecessary push/pop abi namespace.
	(emit_tinfo_decl): Simplify.
	gcc/testsuite/
	* g++.dg/modules/global-1_[ab].C: New
	* g++.dg/modules/mod++-decl-0_b.C: Remove xfail.

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

	Merge access & discriminator.
	gcc/cp/
	* cp-tree.h (struct lang_decl_base): Rename u2sel to spare.
	(struct lang_decl_min): Replace lang_decl_u2 union with plain
	tree.
	(LANG_DECL_U2_CHECK): Delete.
	(DECL_DISCRIMINATOR_SET_P, DECL_DISCRIMINATOR): Adjust.
	(DECL_CAPTURED_VARIABLE, DECL_ACCESS, THUNK_VIRTUAL_OFFSET): Adjust.
	* decl.c (push_local_name): Represent discriminator as INTEGER_CST.
	(duplicate_decls): Copy DECL_ACCESS. fix formatting.
	* mangle.c (discriminator_for_local_entity): Extract integer value.
	* module.c (cpms_{in,out},lang_decl_bools): Drop u.base.u2sel.
	(cpms_{in,out}::lang_decl_vals): Drop u.min.u2 handling.
	* semantics.c (finish_omp_threadprivate): Drop u.base.u2sel copying.

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

	Merge trunk r256078.

	Typedefs!
	gcc/cp/
	* decl.c (grokdeclarator): Set typedef's module/export.
	gcc/testsuite/
	* g++.dg/modules/tdef-2_[abc].C: New.

	gcc/testsuite/
	* g++.dg/modules/tdef-1_[ab].C: New.

2017-12-20  Nathan Sidwell  <nathan@acm.org>

	Variables!
	gcc/cp/
	* decl.c (grokvardecl): Set exporting.
	* module.c (dump_nested_name): Dump integer values.
	(cpms_{in,out}::define_var): New.
	(cpms_{in,out}::tag_definition): Deal with vars.
	(cpms_out::maybe_tag_definition): Likewise.
	(cpms_out::core_bools): Externalize static vars.
	(cpms_out::lang_decl_bools): Likewise for not-really-extern.
	gcc/testsuite/
	* g++.dg/modules/var-1_[ab].C: New.

	Enumerations!
	gcc/cp/
	* module.c (module_state::set_name): Don't deal with crc.
	(module_state::set_crc): New.
	(cpm_serial::get_crc): Don't obscure zero.
	(cpm_writer::tell): New.
	(cpms_out::crc_tell): New.
	(cpms_{in,out}::define_enum): New.
	(cpms_out::header): Save crc location.
	(cpms_in::header): Use set_crc.
	(cpms_out::tag_eof): Adjust.
	(cpms_out::maybe_tag_definition): Deal with enums.
	(cpms_{in,out}::tag_definition): Deal with enums.
	(cpms_{in,out}::core_vals): Do not write enum bits.
	(do_module_import): Use set_crc.
	* name-lookup.c (push_module_binding): Fix assert.
	gcc/testsuite/
	* g++.dg/modules/enum-1_[ab].C: New.

2017-12-19  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r255836.

2017-11-27  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r255166.

2017-11-22  Nathan Sidwell  <nathan@acm.org>

	Non-type template parms, & nested template classes.
	gcc/cp/
	* module.c (cpms_{in,out}::core_vals): Deal with CONST_DECLs.
	gcc/testsuite/
	* g++.dg/modules/tplmem-3_[ab].C: New.

2017-11-21  Nathan Sidwell  <nathan@acm.org>

	Member types
	gcc/testsuite/
	* g++.dg/modules/nested-2_[ab].C: New

	Nested classes.
	gcc/cp/
	* module.c (cpm_reader::wi): Promote before shifting.
	(cpms_out::define_class): Maybe define all members.
	(cpms_out::maybe_tag_definition): Only implicit typedefs are
	defined.
	(cpms_{in.out}::core_vals): Don't stream value cache.
	gcc/testsuite/
	* g++.dg/modules/nested-1_[abc].C: New

2017-11-20  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r254959.

	Template member functions.
	gcc/cp/
	* cp-tree.h (TI_PENDING_TEMPLATE_FLAG): Add TI_CHECK.
	* module.c (cpms_out::maybe_tag_definition): Check DECL_INITIAL,
	write clones.
	(cpms_in::tag_definition): Don't zap clones.
	(cpms_in::finish): Clear TI_PENDING_TEMPLATE_FLAG.
	(cpms_{in,out}::core_vals): Check tcc_unary, tcc_binary.
	* optimize.c (maybe_clone_body): Don't alias when modules.
	gcc/testsuite/
	* g++.dg/modules/tplmem-1_[ab].C: New.

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

	gcc/cp/
	* module.c (cpms_out::tree_node): Fix conv-op identifiers.
	gcc/testsuite/
	* g++.dg/modules/convop-1_[ab].C: New.

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

	Constexprs!
	gcc/cp/
	* cp-tree.h (check_constexpr_fundef, find_constexpr_fundef): Declare.
	* constexpr.c (find_constexpr_fundef): New.
	(register_constexpr_fundef): Split checking off to ...
	(check_constexpr_fundef): ... here.  Call
	register_constexpr_fundef.
	* decl.c (): Adjust.
	* module.c (cpms_{in,out}::define_function): Serialize constexpr
	body.
	(cpms_{in,out}::core_vals): Serialize function-scope var initializers.
	gcc/testsuite/
	* g++.dg/modules/cexpr-[12]_[ab].C: New.

	Merge trunk r254823.

	Merge trunk r254819.

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

	Virtual bases!
	gcc/cp/
	* Make-lang.in: module.o depends on revision
	* class.c (layout_class_type): Unnamed types do not get base
	types.
	* cxx-module-wrapper.sh: Invoke make.  Strip bad args.
	* module.c (module_context): Allow NULL context.
	(cpms_{in,out}::define_class): Deal with classtype_as_base.
	(cpms_{in,out}::tag_definition): Allow raw class.
	(cpms_{in,out}:ident_imported_decl: Rework class scope.
	(cpms_out::tree_node): Deal with NULL module context.
	* name-lookup.c (maybe_lazily_declare): Break out of ...
	(get_class_binding): ... here.  Call it.
	(get_ident_in_class, find_by_ident_in_class): New.
	* name-lookup.h	(get_ident_in_class, find_by_ident_in_class): Declare.
	gcc/testsuite/
	* g++.dg/modules/class-7_[abc].C: New.
	* g++.dg/modules/main.cc: Move to ...
	* g++.dg/modules/main_a.C: ... here. Adjust.
	* g++.dg/modules/modules.exp: Remove main.cc exceptionalism.

2017-10-26  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.c (module_state): Add filename & loc.
	(module_state::{set,push,pop}_location): New.
	(cpm_stream): Add state member.  Adjust.
	(cpms_{in,out}): Adjust.
	(cpms_in::{header,tag_conf}): Adjust.
	(read_module, write_module): Lose fname arg.
	(search_moule_path): Don't prefix .
	(do_module_import, finish_module): Set location.
	gcc/
	* diagnostic.c (maybe_line_and_column): New.
	(diagnostic_get_location_text, diagnostic_report_current_module):
	Use it.
	gcc/testsuite/
	Markup no-column tests.

2017-10-24  Nathan Sidwell  <nathan@acm.org>

	gcc/cp
	* cxx-module-wrapper.sh: Cleanups.
	* module.c (cpm_stream::global_tree_arys): Add integer_types.
	(cpms_{in,out}::tree_node): Robustify.
	(read_module): Note end of importing.
	(search_module_path): Note if wrapper failed to install.
	* name-lookup.c (merge_global_decl): Zap anticipated decl here ...
	(push_module_binding): ... not here.
	gcc/
	* incpath.c (clean_cxx_module_path): Correct env var name.
	gcc/c-family/
	* c.opt (fmodules++): Add Driver.
	gcc/testsuite/
	* g++.dg/modules/{main.c,hello.cc}: New.
	* g++.dg/modules/modules.exp: Special case main.cc

2017-10-23  Nathan Sidwell  <nathan@acm.org>

	Wrapper program
	gcc/
	* doc/invoke.texi (fmodule-root, fmodule-path, fmodule-wrapper):
	Document.
	* gcc.c (driver::maybe_putenv_CXX_MODULE_WRAPPER): New.
	(driver::main): Call it.
	* gcc.h (driver::maybe_putenv_CXX_MODULE_WRAPPER): Declare.
	* incpath.h (clean_cxx_module_path): Add multilib parm.
	* incpath.c (add_path): Initialize length.
	(clean_cxx_module_path): Append multilib fragment.  Add '.'.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Pass multilib suffx to
	clean_cxx_module_path.
	* c.opt (fmodules): Notify driver.
	(fmodule-hook): Rename to  ...
	(fmodule-wrapper): ... here.
	gcc/cp/
	* Make-lang.in (cxx-module-wrapper): New program.
	* cxx-module-wrapper.sh: New.
	* module.c: Include libiberty.h, tree-diagnostic.h.
	(read_module): Add announcement.
	(module_to_filename): Identifier mapping does not depend on
	module_path.
	(search_module_path): Shell out to wrapper function.
	(do_module_import): Adjust.
	(init_module_processing): Default flag_module_wrapper.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Adjust.

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

	Template class!
	gcc/cp/
	* decl.c (xref_tag_1): Don't decl_set_module here.
	* module.c (cpms_in::define_function): Check templatedness.
	(cpms_{in,out}::define_class): Add maybe_template arg. Add
	templatey bits.
	(cpms_out::maybe_tag_definition): Deal with template classes.
	{cpms_{in,out}::tag_definition): Add maybe_template arg, adjust.
	{cpms_{in,out}::core_vals): Write record template_info.
	* name-lookup.c (set_class_binding): Protect against empty
	member_vec.
	(do_pushtag): Call decl_set_module here.
	* pt.c (build_template_decl): Copy module bits here ...
	(push_template_decl_real): ... not here.
	gcc/testsuite/
	* g++.dg/modules/mod-tpl-2_[ab].C: New.

	Early CRC not time stamps.
	gcc/cp/
	* module.c (module_state::set_name): CRC too.
	(cpm_serial::get_crc): New.
	(cpm_writer::seek): New.
	(cpm_{reader,writer}::bytes4): Rename to ...
	(cpm_{reader,writer}::raw): ... this.  Adjust all users.
	(cpm_reader::get_crc): Delete.
	(module_state::stamp): Replace with ...
	(module_state::crc): ... this.
	(cpms_in::cpms_in): Drop stamp arg.
	(cpms_{in,out}::header): Deal with CRC not timestamp.
	(time2str, timestamp_mismatch): Delete.
	(cpms_{in,out}::tag_eof): Deal with crc.
	(cpms_{in,out}::tag_import): Drop timestamp.
	(read_module, do_module_import): Likewise. Use CRC.
	gcc/testsuite/
	* g++.dg/modules/mod-stamp-1_d.C: Adjust.

	Merge trunk r253954.

2017-10-13  Nathan Sidwell  <nathan@acm.org>

	Template function!
	gcc/
	* tree.h (MARK_TS_TYPE_NON_COMMON): New.
	gcc/cp/
	* cp-objcp-common.c (cp_common_init_ts): Fix
	TEMPLATE_TEMPLATE_PARM, TEMPLATE_TYPE_PARM,
	BOUND_TEMPLATE_TEMPLATE_PARM marking.
	* cp-tree.h (canonical_type_parameter): Declare.
	* module.c (cpms_{in,out}::define_function): Add maybe_template
	parm, adjust.
	(cpms_out::maybe_tag_definition): Allow function templates.
	(cpms_{in,out}:tag_definition): Allow templates.
	(cpms_{in,out}::core_vals): Stream more nodes.
	(cpms_{in,out}::lang_decl_vals): Stream more nodes.
	(cpms_in::finish_type): Deal with TEMPLATE_TYPE_PARM,
	TEMPLATE_TEMPLATE_PARM.
	* pt.c (canonical_type_parameter): Make extern, simplify.
	(push_template_decl_real): Propagate exportednes.
	gcc/testsuite/
	* g++.dg/modules/mod-tpl-1_[ab].C: New.

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

	gcc/cp/
	* cp-tree.h (TS_CP_BINDING, TS_CP_WRAPPER, LAST_TS_CP_ENUM): Delete.
	(union lang_tree_node): Adjust GTY desc.
	(cp_tree_node_structure): Take a tree_code.
	* decl.c (cp_tree_node_structure): Take a tree_code.
	* module.c (cpms_{out,in}::core_vals): Order clauses from
	tree-core.h, use cp_tree_node_structure for C++.

	Module name can be a string const (-fmodules++)
	gcc/cp/
	* cp-tree.h (cp_expr): Add constant operator* and operator->.
	(validate_module_name): New.
	(declare_module, import_module): Take cp_expr.
	* error.c (dump_module_suffix): Adjust.
	* module.c (module_state): Add name_hash.  Adjust.
	(module_state_hash): Allow string consts.
	(module_state::set_name): Likewise.
	(cpm_{writer,reader}::module_name): New.
	(dump_nested_name): Name can be a string const.
	(cpms_{out,in}::header): Adjust.
	(cpms_{out,in}::tag_import): Adjust.
	(validate_module_name): New.
	(module_to_filename): Allow string consts.
	(make_module_file): Adjust.
	(do_module_import): Adjust.
	(import_module, declare_module): Adjust.
	* parser.c (cp_parser_module_name): Return cp_expr, allow
	string-cst.
	(cp_parser_module_declaration, cp_parser_import_declaration,
	cp_parser_module_proclamation): Adjust.
	gcc/testsuite/
	* g++.dg/modules/modules.exp (dg-module-bmi): Renamed.
	* g++.dg/modules/mod++-decl-3_[ab].C: New.

	Add -fmodule-path, -fmodule-root.
	gcc/
	* incpath.h (INC_CXX_MPATH): New.
	(clean_cxx_module_path): Declare.
	* incpath.c (clean_cxx_module_path): New.
	gcc/cp/
	* cp-tree.h (init_module_processing): Declare.
	* decl.c (cxx_init_decl_processing): Call init_module_processing.
	* module.c (module_path, module_path_max): New vars.
	(MOD_FNAME_PFX): Delete.
	(module_to_filename): Reimplement.
	(search_module_path, make_module_file): New.
	(do_module_import): Adjust.
	(init_module_processing): New.
	(finish_module): Adjust.
	gcc/c-family/
	* c-opts.c (c_common_handle_option): Process OPT_fmodule_path_.
	(c_common_post_options): Clean module path.
	* c.opt (fmodule-root=, fmodule-path=, fmodule-hook=): New.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Adjust module name logic.

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

	Merge trunk r253654.

2017-10-10  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r253585.

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

	gcc/c-family/
	* c_common_handle_option: Handle fmodules++.
	* c.opt (fmodules): Make Uinteger.
	(fmodules++, fmodules-ts): New.
	gcc/cp/
	* parser.c (cp_parser_consume_semicolon_at_end_of_statement):
	Return success bool.
	(cp_parser_translation_unit): Adjust cp_parser_declaration_seq_opt
	call.
	(cp_parser_declaration_seq_opt): Add top_level parm, look for
	module-decl here.
	(cp_parser_module_declaration): Handle -fmodules++ syntax.
	(cp_parser_module_export): No need to handle module-declaration
	here ...
	(cp_parser_declaration): ... or here.
	gcc/
	* doc/invoke.texi (-fmodules++): Document.
	gcc/testsute/
	* g++.dg/modules/mod++-decl-0_[abc].C: New.
	* g++.dg/modules/mod++-decl-[12].C: New.
	* g++.dg/modules/mod-decl-1.C: Adjust expected error.

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

	Merge trunk 252831.

2017-07-20  Boris Kolpackov <boris@codesynthesis.com>

	Add -fmodule-output & -fmodule-file options.
	gcc/c-family/
	* c.opt (-fmodule-output): New option.
	(-fmodule-file): New option.
	* c-common.h (module_output): Declare.
	(module_files): Declare.
	* c-common.c (module_output): New variable.
	(module_files): New variable.
	* c-opts.c (add_module_file): New function.
	* c-opts.c: Handle -fmodule-output and -fmodule-file.
	gcc/cp/
	* module.c (finish_module): If specified, use module_output as output
	file name.
	* module.c (do_module_import): Check module_files for a module name
	to file mapping before falling back to default.
	gcc/
	* doc/invoke.texi (C++ Dialect Options): Document -fmodule-output
	and -fmodule-file.

2017-07-17  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r250272.

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

	Merge trunk r250159.

2017-07-03  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR): Use
	lookup_fnfields_slot_nolazy.
	* search.c (lookup_fnfields_idx_nolazy): Don't use
	CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR.

	gcc/cp/
	* class.c (type_has_user_declared_move_constructor,
	type_has_user_declared_move_assign): Delete, replace with:
	(classtype_has_user_move_assign_or_ctor_p): ... this.
	* cp-tree.h (type_has_user_declared_move_constructor,
	type_has_user_declared_move_assign): Delete, replace with:
	(classtype_has_user_move_assign_or_ctor_p): ... this.
	* method.c (maybe_explain_implicit_delete): Update.
	(lazily_declare_fn): Update.
	* tree.c (type_has_nontrivial_copy_init): Update.
	* search.c (lookup_fnfields_slot_nolazy): Don't try and complete
	the type.
	* pt.c (check_explicit_specialization): Use regular lookup.

	gcc/cp/
	* class.c (maybe_warn_about_overly_private_class): Ignore
	copy/move ctors.
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
	lookup_fnfields_slot for ctors.

	gcc/cp/
	* module.c (cpms_{out,in}::start): Don't deal with identifiers
	here.
	(cpms_{out,in}::tree_node): Deal with identifiers specially.

	Merge trunk r249852.

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

	Merge trunk r249835.

2017-06-29  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r249794.

	gcc/cp/
	* cp-tree.h (class_method_index_for_fn): Delete.
	* decl2.c (check_classfn): Use lookup_fnfields_slot, reimplement
	diagnostics.
	* name-lookup.h (lookup_all_conversions): Declare.
	* name-lookup.c (lookup_all_conversions): New.
	* pt.c (retrieve_specialization): Use lookup_fnfields_slot,
	lookup_all_conversions.
	* search.c (class_method_index_for_fn): Delete.
	gcc/testsuite/
	* g++.dg/concepts/memfun-err.C: Adjust.
	* g++.dg/cpp0x/decltype9.C: Adjust.
	* g++.dg/lookup/decl1.C: Adjust.
	* g++.dg/other/pr28432.C: Adjust.
	* g++.dg/parse/crash12.C: Adjust.
	* g++.dg/parse/enum3.C: Adjust.
	* g++.dg/parse/operator6.C: Adjust.
	* g++.dg/template/crash69.C: Adjust.
	* g++.dg/template/error27.C: Adjust.
	* g++.dg/template/error28.C: Adjust.
	* g++.dg/template/memfriend6.C: Adjust.
	* g++.old-deja/g++.mike/err1.C: Adjust.
	* g++.old-deja/g++.mike/p811.C: Adjust.
	* g++.old-deja/g++.other/crash25.C: Adjust.
	* g++.old-deja/g++.other/dtor4.C: Adjust.
	* g++.old-deja/g++.pt/t37.C: Adjust.

	Merge trunk r249779.

	gcc/cp/
	* class.c (finish_struct): Use OVL_P.
	* cp-tree.h (THIS_NAME, IN_CHARGE_NAME, VTBL_PTR_TYPE,
	VTABLE_DELTA_NAME, VTABLE_PFN_NAME): Delete.
	* decl.c (initialize_predefined_identifiers): Encode them here
	directly.  Rename cdtors consistently.
	(cxx_init_decl_processing): Name vtbl_ptr_type directly.
	* search.c (class_method_index_for_fn): No need to frob cdtor names.

2017-06-28  Nathan Sidwell  <nathan@acm.org>

	cdtor name cleanup. expunge lookup_fnfields_1 use.
	gcc/
	* builtins.c (fold_builtin_FUNCTION) Use
	lang_hooks.decl_printable_name.
	gcc/cp/
	* call.c (build_new_method_call_1) Update cdtor handling.
	* class.c (get_basefndecls): Use lookup_fnfields_slot.
	* cp-tree.h (lookup_fnfields_1): Don't declare.
	* decl.c (register_dtor_fn): Use lookup_fnfields_slot.
	(grokfndecl): Set cdtor name.
	* method.c (implicitly_declare_fn): Adjust cdtor flag setting.
	* pt.c (check_explicit_specialization): Adjust cdtor checking, use
	lookup_fnfields_slot_nolazy.
	* search.c (lookup_fnfields_1): Make static.
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
	lookup_fnfields_slot.
	gcc/testsite/
	* g++.dg/cpp1y/builtin_FUNCTION.C: New.
	* g++.dg/plugin/decl-plugin-test.C: Adjust.

	Merge trunk r249746.

	gcc/cp/
	* cp-tree.h (SET_CLASS_TYPE_P): Use RECORD_OR_UNION_CHECK.
	(NON_UNION_CLASS_TYPE_P): Just check for RECORD_TYPE.
	* call.c (check_dtor_name): Adjust constructor_name check.
	(name_as_c_string): Move const cast.
	(build_new_method_call_1): Use constructor_name from basetype.
	* class.c (get_vfield_name): Measure constructor_name length.
	(build_self_reference): Don't use constructor_name here.
	* cxx-pretty-print.c (is_destructor): Delete.
	(pp_cxx_unqualified_id): Remove bogus dtor code.
	* decl.c (grokdeclarator): Minor cleanup.
	* method.c (implicitly_declare_fn): Use ctor_identifier and
	dtor_identifier.
	* name-lookup.c (constructor_name): Reimplement.
	(constructor_name_p): Likewise.
	(push_class_level_binding_1): Don't use constructor_name here.
	* parser.c (cp_parser_direct_declarator): Reformat to avoid
	nesting ifs.
	* pt.c (tsubst_decl <FUNCTION_DECL>): Move var decls to
	initialization point.  Don't unnecessarily check for ctor name.
	gcc/c-family/
	* c-common.c (resort_field_decl_cmp): Don't declare.

2017-06-27  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r249702.
	gcc/c-family/
	* c-common.h (field_decl_cmp, resort_sorted_fields): Delete.
	* c-common.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp): Move to c-decl.c.
	gcc/c/
	* c-decl.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp): Moved from c-common.c

2017-06-26  Nathan Sidwell  <nathan@acm.org>

	Replace lang_type::sorted_fields with lang_type::bindings.
	gcc/cp/
	* cp-tree.h (lang_type): Delete sorted_fields.  Add bindings
	field.
	(CLASSTYPE_SORTED_FIELDS): Replace with ...
	(CLASSTYPE_BINDINGS): ... this.
	* name-lookup.c (lookup_class_member): Reimplement.
	(count_fields): Delete.
	(sorted_fields_type_new): Delete.
	(add_class_member): New.
	(add_fields_to_record_type): Replace with ...
	(add_class_members): ... this.
	(add_enum_fields_to_record_type): Delete.
	(create_classtype_sorted_fields): Replace with ...
	(set_class_bindings): ... this.
	(insert_late_enum_def_into_classtype_sorted_fields): Replace with ...
	(insert_late_enum_def_bindings): ... this.
	* name-lookup.h (create_classtype_sorted_fields,
	insert_late_enum_def_into_classtype_sorted_fields): Replace with ...
	(set_class_bindings, insert_late_enum_def_bindings): ... this.
	* ptree.h (cxx_print_type): Don't print SORTED_FIELDS.
	* search.c (lookup_field_1): Check CLASSTYPE_BINDINGS.
	* decl.c (finish_enum_value_list): Use insert_late_enum_def_bindings.
	* class.c (finish_struct_1): Use set_class_bindings.
	* module.c (cpms_in::define_class): Likewise.

	Start moving class name lookup around
	gcc/cp/
	* class.c (count_fields, add_fields_to_record_type,
	add_enum_fields_to_record_type, sorted_fields_type_new,
	create_classtype_sorted_fields,
	insert_late_enum_def_into_classtype_sorted_fields): Move to ...
	* name-lookup.c: ... here.
	(lookup_class_member): New.  Broken out of ...
	* search.c (lookup_field_1): ... here.  Call it.
	* name-lookup.h (lookup_class_member,
	create_classtype_sorted_fields,
	insert_late_enum_def_into_classtype_sorted_fields): Declare.

	Merge trunk r249657.

	gcc/cp/
	* cp-tree.h (lang_decl_fn): Remove assignment_operator_p field.
	* module.c (cpms_{out,in}::lang_decl_bools: Likewise.
	libcc1/
	* libcp1plugin.cc (plugin_build_decl): Don't set
	DECL_ASSIGNMENT_OPERATOR_P.

	gcc/
	* Makefile.in (MODULE_STAMP): Set here
	(REVISION, REVISION_c): Override.
	gcc/cp/
	* Make-lang.in (MODULE_STAMP): Not here.

2017-06-23  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (DECL_COMPLETE_CONSTRUCTOR_P): Directly compare
	identifier.
	(DECL_BASE_CONSTRUCTOR_P, DECL_COMPLETE_DESTRUCTOR_P,
	DECL_BASE_DESTRUCTOR_P, DECL_DELETING_DESTRUCTOR_P): Likewise.
	(DECL_ASSIGNMENT_OPERATOR_P): Use IDENTIFIER_ASSIGN_OP_P.
	* decl.c (grok_op_properties): Adjust identifier checking.
	* init.c (expand_default_init): Adjust identifier descision.
	* method.c (implicitly_declare_fn): Don't use
	DECL_ASSIGNMENT_OPERATOR_P.
	* search.c (lookup_fnfields_1): Use IDENTIFIER_CTOR_P,
	IDENTIFIER_DTOR_P.
	* call.c (in_charge_arg_for_name): Reimplement.
	(build_special_member_call): Use IDENTIFIER_CDTOR_P,
	IDENTIFIER_DTOR_P.

2017-06-22  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r249572.

	Reorder IDENTIFIER flags
	gcc/cp/
	* cp-tree.h (enum cp_identifier_kind): New.
	(IDENTIFIER_KIND_BIT_0, IDENTIFIER_KIND_BIT_1,
	IDENTIFIER_KIND_BIT_2): New.
	(IDENTIFIER_MARKED): Move to TREE_LANG_FLAG_4.
	(IDENTIFIER_VIRTUAL_P, IDENTIFIER_REPO_CHOSEN): Add IDENTIFIER_CHECK.
	(C_IS_RESERVED_WORD): Replace with ...
	(IDENTIFIER_KEYWORD_P): ... this.
	(IDENTIFIER_CTOR_OR_DTOR_P): Replace with ...
	(IDENTIFIER_CDTOR_P): ... this.
	(IDENTIFIER_CTOR_P, IDENTIFIER_DTOR_P): New.
	(IDENTIFIER_OPNAME_P): Replace with ...
	(IDENTIFIER_ANY_OP_P): ... this.
	(IDENTIFIER_ASSIGN_OP_P): New.
	(IDENTIFIER_TYPENAME_P): Replace with ...
	(IDENTIFIER_CONV_OP_P): ... this.
	(NEW_DELETE_OPNAME_P): Replace with ...
	(IDENTIFIER_NEWDEL_OP_P): ... this.
	(DECL_CONV_FN_P, DECL_OVERLOADED_OPERATOR_P): Adjust.
	(get_identifier_kind_name, set_identifier_kind): Declare.
	* lex.c (get_identifier_kind_name, set_identifier_kind): New.
	(init_operators): Adjust to avoid keywords, use
	set_identifier_kind. Copy TYPE_EXPR slot.
	(init_reswords): Call set_identifier_kind.
	(unqualified_name_lookup_error): Adjust.
	* operators.def (TYPE_EXPR): Remove.
	* decl.c (struct predefined_identifier): Move into ...
	(initialize_predefined_identifiers): ... here.  Call
	set_identifier_kind.
	(grokfndecl, check_var_type, grokdeclarator): Adjust.
	(grok_op_properties): Use IDENTIFIER_ANY_ASSIGN_OP to halve search
	space.  Adjust.
	* call.c (name_as_c_string): Adjust.
	(build_new_method_call_1): Likewise.
	* cp-cilkplus.c (is_conversion_operator_function_decl_p): Likewise.
	* cxx-pretty-print.c (pp_cxx_unqualified_id): Adjust.
	* dump.c (cp_dump_tree): Adjust.
	* error.c (dump_decl_name): Adjust.
	* mangle.c (write_unqualified_id, write_member_name,
	write_expression): Adjust.
	(mangle_conv_op_name_for_type): Use set_identifier_kind.
	* name-lookup.c (do_class_using_decl): Adjust.
	(lookup_name_fuzzy, lookup_name_real_1): Likewise.
	* parser.c (cp_lexer_get_preprocessor_token,
	cp_parser_direct_declarator): Likewise.
	* pt.c (push_template_decl_real, tsubst_decl, tsubst_baselink,
	tsubst_copy, tsubst_copy_and_build): Adjust.
	* ptree.c (cxx_print_identifier): Print identifier kind.
	* search.c (lookup_field_r, lookup_member,
	lookup_fnfields_idx_nolazy): Adjust.
	* semantics.c (finish_id_expression): Adjust..
	* typeck.c (cp_build_addr_expr_1): Adjust.

2017-06-21  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r249464.

	gcc/c-family/
	* c-ada-spec.c (decl_sloc): Ignore builtin fields.
	gcc/cp/
	* class.c (layout_class_type): Anon aggregates can never be bases.
	(finish_struct_1, dump_class_hierarchy_1): CLASSTYPE_AS_BASE can
	be null.
	* cp-tree.h (enum cp_tree_index): Add CPTI_AS_BASE_IDENTIFIER.
	(as_base_identifier): New.
	(module_context): Declare.
	* decl.c (initialize_predefined_identifiers): Initialize as_base.
	* error.c (dump_module_suffix): Use module_context.
	* mangle.c (maybe_write_module): Likewise.
	* module.c (module_context): New.
	(dump_nested_name): Distingush NULL context.
	(cpms_{in,out}::globals): Take array directly.
	(cpms_{in,out}::tree_node_raw): New, broken out of ...
	(cpms_{in,out}::tree_node): ... here.  Call it.  Use
	module_context.
	(cpms_in::finish): Add module number.  Adjust.
	(cpms_{in,out}::tag_trees): Write translation unit decl.

2017-06-16  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r249268.

2017-06-15  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r249217.
	libcc1/
	* libcp1plugin.c (supplement_binding): Don't call
	maybe_remove_implicit_alias.

	First bug report!
	gcc/cp/
	* cp-tree.h (CPTI_MANGLE): New.
	(mangle_namespace): New.
	(maybe_remove_implicit_alias): Delete.
	* decl.c (cxx_init_decl_processing): Create mangle namespace.
	* decl2.c (generate_mangling_alias): Use mangle_namespace.
	* mangle.c (maybe_remove_implicit_alias): Delete.
	(mangle_decl): Use mangle_namespace. Remove alias here.
	* module.c (cpms_out::bindings): Ignore mangle_namespace.
	* name-lookup.h (set_namespace_binding): Declare.
	* name-lookup.c (supplement_binding_1): Don't deal with implicit
	aliases here.
	(set_namespace_binding): New.  Broken out of ...
	(set_global_binding): ... this.  Call it.
	(suggest_alternatives_for): Ignore mangle namespace.
	gcc/testuite/
	* g++.dg/module/bug-1_[ab].C: New.

2017-06-14  Nathan Sidwell  <nathan@acm.org>

	Classes complete - Vcall indices and friends added.
	gcc/cp/
	* module.c (cpms_{out,in}::tree_pair_vec): New.
	(cpms_{out,in}::define_class): Stream vcall indices and friend list.
	gcc/testsuite/
	* g++.dg/module/class-6_[abc].C: New.

2017-06-12  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r249076.

2017-06-09  Nathan Sidwell  <nathan@acm.org>

	Vtable streaming.  Change keyed_classes representation.
	gcc/cp/
	* class.c (finish_struct_1): Adjust keyed_classes pushing.
	* cp-tree.h (CPTI_KEYED_CLASSES): Delete.
	(keyed_classes): Now a vector.
	* decl.c (keyed_classes): Define.
	(cxx_init_decl_processing): Initialize it.
	(record_key_method_defined): Adjust pushing.
	* decl2.c (decl_needed_p): Formatting fixes.
	(c_parse_final_cleanups): Reset current module.
	Call finish_module earlier.  Adjust keyed_classes iteration.
	* pt.c (instantiate_class_template_1): Adjust keyed_classes pushing.
	* module.c (cpms_{out,in}::define_class): Adjust key method
	streaming.
	(cpms_{out,in}::lang_type_bools): Don't srtream interface flags.
	gcc/testsuite/
	* g++.dg/modules/class-5_[abc].C: New.

	Typeinfo streaming
	gcc/cp/
	* cp-tree.h (DECL_TINFO_P): Also for TYPE_DECLs.
	(get_pseudo_tinfo_index, get_pseudo_tinfo_type): Declare.
	* rtti.c (enum tinfo_kind): Add TK_DERIVED_TYPES,
	TK_VMI_CLASS_TYPES, TK_MAX, delete TK_FIXED.
	(tinfo_names): New.
	(typeid_ok_p): Lool at TYPE_MAIN_VARIANT.
	(get_pseudo_to_index): Only determine index, don't create type.
	(get_tinfo_desc): New.  Create the pseudo type.  Set DCL_TINFO_P.
	(create_pseudo_type_info): Delete.
	(get_pseudo_ti_init): Use get_tinfo_desc.
	(get_pseudo_tinfo_index, get_pseudo_tinfo_type): New.
	(create_tinfo_types): Only allocate the vector.
	* module.c (cpms_{out,in}::insert): New.
	(cpm_stream::global_tree_arys): Add sizetype_tab.
	(cpms_out::tag_binding): Don't stream DECL_TINFO_P bindings.
	(cpms_{out,in}::define_class): Don't stream
	CLASSTYPE_TYPEINFO_VAR.  Stream CLASSTYPE_VTABLES.
	(cpms_{out,in}::core_vals): Stream CONSTRUCTORs.
	(cpms_{out,in}::tree_node): Detect DECL_TINFO_P things.

2017-06-08  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.c (cpms_in::read_item, cpms_in::tree_node): More
	diagnostics.
	(cpms_{out,in}::start, cpms_{out,in}::core_vals): Fix call
	handling.
	gcc/testsuite/
	* g++.dg/modules/class-4_[ab].C: New.

	gcc/cp/
	* module.c: Implement dump printf.

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

	Merge trunk r248972.

	gcc/cp/
	* module.c (cpms_{out,in}::core_vals): Stream block vars &
	abstract origin.

2017-06-06  Nathan Sidwell  <nathan@acm.org>

	Inline ctors/dtors
	gcc/cp/
	* module.c (cpms_in::define_function): Deal with non-namespace
	fn definitions.
	(cpms_{out,in}::define_class): Define member fns.
	(cpms_in::tag_definition): Clone fn.
	* semantics.c (expand_or_defer_fn_1): Keep cloned fns body when
	modules.
	gcc/testsuite/
	* g++.dg/modules/class-3_[abcd].C: Augment.

	Member functions
	gcc/cp/
	* class.c (resort_type_method_vec): Avoid signed/unsigned compare.
	* module.c (cpms_out::maybe_tag_definition): New.
	(cpms_{out,in}::tag_definition): Always tag, return tagged thing.
	(cpms_{out,in}::chained_decls, tree_vec): New.
	(cpms_{out,in}::define_class): Stream methods, as_base.
	(cpms_{out,in}::core_vals): Stream ARGUMENTs here.
	(cpms_in::tree_node): Cope with immediate definitions.
	gcc/testsuite/
	* g++.dg/modules/class-3_[abcd].C: Augment.

	More PoD struct
	gcc/cp/
	* module.c (cpms_{out,in}::ident_imported_decl): New.
	(cpms_{out,in}::lang_type_vals): New.
	(cpms_{out,in}::core_vals): Blocks and statements.
	(cpms_{out,in}::tree_node): More general import referencing.
	* name-lookup.c (name_lookup::add_module_fns): New.
	(name_lookup::adl_namespace_only): Use it.
	gcc/testsuite/
	* g++.dg/modules/class-3_[abc].C: New.

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

	More PoD struct
	gcc/cp/
	* cp-tree.h (default_hash_traits): Make non-deletable.
	(cpms_out::non_null): New hash trait.
	(cpms_in::traits): Use simple_hashmap_traits.
	(cpms_in::define_class, cpms_in::finish_type): Propagate
	completeness.
	(cpms_in::finish_type): Deal with pointer/ref to.
	(cpms_{out,in}::core_vals): Stream ints, pointer/ref to.
	(cpms_{out,in}::tree_node): Interstitial typedef.
	gcc/testsuite/
	* g++.dg/modules/class-1_[abc].C: Extend.
	* g++.dg/modules/class-2_[ab].C: New.

2017-06-02  Nathan Sidwell  <nathan@acm.org>

	Pod struct
	gcc/cp/
	* cp-tree.h (create_classtype_sorted_fields): Declare.
	* class.c (finish_struct_1): Adjust sorted field call.
	(insert_into_classtype_sorted_fields): Rename to ...
	(create_classtype_sorted_fields): ... here.  Export
	* module.c (cpms_{out,in}::tree_vec): New.
	(cpms_{out,in}::define_function): New.
	(cpms_{out,in}::define_class): New.
	(cpms_{out,in}::tag_definition): Adjust.
	(cpms_{out,in}::core_vals): Stream binfo, field_decl.
	gcc/testsuite/
	* g++.dg/modules/class-1_[abcd].C: Add field accesses.

	Merge r248828.

	gcc/cp/
	* modules.c (cpms_out::core_vals, cpms_in::core_vals): Don't
	stream structure fields etc.

2017-06-01  Nathan Sidwell  <nathan@acm.org>

	Incomplete or empty classes.
	gcc/cp/
	* cp-tree.h (ovl_iterator::export_tail): New.
	(TYPE_GET_PTRMEMFUNC_TYPE, TYPE_SET_PTRMEMFUNC_TYPE): Delete.
	(TYPE_PTRMEMFUNC_TYPE): New.
	(maybe_add_lang_type_raw): Add ptrmem_p arg.
	(fit_ptrmem_type_decl): Declare.
	(ovl_insert): Add export_tail.
	* decl.c (build_ptrmemfunc_type): Use fit_ptrmem_type_decl,
	adjust.
	(xref_tag_1): Call decl_set_module.
	* lex.c (maybe_add_lang_type_raw): Add ptrmem_p arg.  Adjust.
	(fit_ptrmem_type_decl): New.
	(cxx_make_type): Adjust.
	* module.c (name_string): New. Use it everywhere.
	(cpm_reader::fill): Check ferror.
	(cpms_out::tag_binding): Skip builtins.  Write types.
	(cpms_out::lang_type_bools, cpms_in::lang_type_bools): New.
	* name-lookup.c (STAT_EXPORTS): New.
	(name_lookup::process_module_binding): Use it.
	(update_binding): Set it.
	(newbinding_bookkeeping): New. Broken out of ...
	(do_pushdecl): ... here.  Call it.
	(push_module_binding): And call it here.  Set STAT_EXPORTS.
	* rtti.c (create_pseudo_type_info): Mark as builtins.
	(get_pseudo_ti_index): Likewise.
	(emit_support_tinfos): Use regular lookup to find type.  Set
	builtins location.
	* tree.c (ovl_insert): Add export_tail arg.
	gcc/testsuite/
	* g++.dg/modules/class-1_[abcd].C: New.

2017-05-31  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.c: Instrumentation.

	Merge trunk r248748.

2017-05-30  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248694.

	gcc/cp/
	* module.c (cpms_out::tag_binding, cpms_in::tag_binding): Mark
	type too.
	(cpms_out::bindings): Adjust.
	* name-lookup.c (push_module_binding): Add type arg.

	gcc/cp/
	* cp-tree.h (lang_decl_base): Lose decomposition_p flag.
	(lang_decl) Update GTY tags.
	(enum lang_decl_selector): New.  Replace magic consts with this.
	(DECL_DECOMPOSITION_P): Update.
	(SET_DECL_DECOMPOSITION_P): Delete.
	(maybe_add_lang_decl_raw): Second arg is bool.
	(retrofit_lang_decl): Lose selector arg.
	(fit_decomposition_lang_decl): Declare.
	* decl.c (cp_finish_decomp): Use fit_decomposition_lang_decl.
	(grokdeclarator): Likewise.
	* lex.c (maybe_add_lang_decl_raw): Change 2nd arg to bool. Don't
	to copying here.
	(set_decl_linkage, fit_decomposition_lang_decl): New.
	(retrofit_lang_decl): Lose selector arg.
	(cxx_dup_lang_specific_decl): Use selector directly.
	* module.c (cpms_out::lang_decl_bools, cpms_in::lang_decl_bools,
	cpms_out::lang_decl_vals, cpms_in::lang_decl_vals): Use
	lang_decl_selector.
	(cpms_in::tree_node): Adjust maybe_add_lang_decl call.

	gcc/
	* REVISION: Add file.
	gcc/c-family/
	* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_modules=201704.

2017-05-29  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248578.

	Merge trunk r248574.

	Merge trunk r248571.

2017-05-26  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248517.

	gcc/cp/
	* cp-tree.h: Comment cleanup.
	* name-lookup.c: Likewise.
	* tree.c: Likewise.

	Merge trunk 248485.
	gcc/cp/
	* lex.c (maybe_retrofit_lang_decl): Add sel parm.

2017-05-25  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (ovl_iterator): Make unduplicatable.
	(ovl_iterator::pop): New.
	(lkp_iterator::operator++): Adjust.

	Merge trunk r248454.

	Merge trunk r248436.

2017-05-24  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (lookup_name): Reimplement state preservation and
	restoration.
	* tree.c (lookup_mark): Add asserts.
	gcc/testsuite/
	* g++.dg/lookup/koenig14.C: New.

	Merge trunk r248406.

	gcc/cp/
	* call.c (build_operator_new_call, build_new_op_1): Open code ADL
	lookup.
	* name-lookup.h (lookup_function_nonclass): Delete.
	(lookup_arg_dependent): Adjust return type.
	* name-lookup.c (name_lookup): Absorb adl_lookup.
	(name_lookup::search_adl): New.
	(lookup_function_nonclass): Delete.
	(lookup_arg_dependent): Adjust.

2017-05-23  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248389.

	gcc/cp/
	* name-lookup.c (name_lookup::name_lookup): Lose F parm.
	(name_lookup::ambiguous, add_value, add_type): New.
	(name_lookup::merge_binding): Delete.
	(name_lookup::find_and_mark): Move from adl_lookup.
	(name_lookup::process_binding): Adjust.
	(adl_lookup::search_adl): New.
	(do_lookup_arg_dependent): Call it.
	(qualified_namespace_lookup): Return found flag.
	(unqualified_namespace_lookup): Delete.
	(lookup_name_real_1, push_namepace): Adjust.

	Merge trunk r248377.

	Merge trunk r248365.

2017-05-22  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248338.
	gcc/cp/
	* name-lookup.c (add_using_namespace): Remove FROM arg.
	(notify_debug_using_namespace): New.
	(finish_namespace_using_directive, push_namespace): Notify debug.
	gcc/testsuite/
	* g++.dg/lookup/strong-using-6.C: Delete.

	gcc/cp/
	* config-lang.in: Update.
	* name-lookup.c (add_using_directive): Rename to ...
	(add_using_namespace): ... here.  Add FROM arg.
	(do_toplevel_using_directive): Fold into add_using_namespace.
	(finish_namespace_using_directive, finish_local_using_directive,
	push_namespace): Adjust.

	Merge trunk r248329.

	gcc/testsuite/
	PR c++/80830
	* g++.dg/lookup/friend20.C: New testcase.

2017-05-19  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248295.

	gcc/cp/
	* cp-tree.h: Misc cleanups.
	* name-lookup.c (pushdecl_top_level): Fix description.
	gcc/
	* dumpfile.h: Whitespace cleanups.
	* system.h (ATTRIBUTE_NTC_PURE): Delete.
	gcc/testsuite/
	* g++.dg/tree-ssa/ssa-dse-2.C: Restore.

	Merge trunk r248285.

	Merge trunk r248271.

2017-05-18  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248250.

	LANG_HOOK_REGISTER_DUMPS
	gcc/
	* context.h (context::set_passes): New.
	* context.c (context::context): Do not create pass manager.
	* toplev.c (general_init): Create pass manager here.  Call
	register dump lang hook.
	* doc/invoke.texi: Document -fdump-lang option family.
	* dumpfile.c (dump_files): Remove module and class dumps here.
	(FIRST_AUTO_NUMBERED_DUMP): Adjust.
	* dumpfile.h (tree_dump_index): Remove TDI_lang, TDI_class.
	* langhooks-def.h (lhd_register_dumps): Declare.
	(LANG_HOOKS_REGISTER_DUMPS): Define.
	(LANG_HOOKS_INITIALIZER): Add it.
	* langhooks.c (lhd_register_dumps): Define.
	* langhooks.h (struct lang_hooks): Add register_dumps.
	gcc/c-family/
	* c-opts.c (class_dump_file, class_dump_flags): Delete.
	(c_common_parse_file): Remove class dump handling.
	(get_dump_info): Likewise.
	gcc/cp/
	* class.c (class_dump_id): Define.
	(dump_class_hierarchy, dump_vtable, dump_vtt): Use it.
	* cp-objcp-common.c (cp_register_dumps): New.
	* cp-objcp-common.h (cp_register_dumps): Declare.
	(LANG_HOOKS_REGISTER_DUMPS): Override.
	* cp-tree.h (class_dump_id, module_dump_id): Declare.
	* module.c (module_dump_id): Define.
	(read_module, write_module): Use it.
	gcc/testsuite/
	* g++.dg/inherit/covariant7.C: Adjust.
	* g++.dg/modules/ Adjust scans.

	gcc/cp/
	* cp-tree.h (lookup_add, lookup_maybe_add): Swap args.
	* name-lookup.c (name_lookup::merge_binding,
	adl_lookup::add_functions): Adjust.
	* pt.c (check_explicit_specialization, do_class_deduction): Adjust.
	* tree.c (lookup_add, lookup_maybe_add): Adjust.

	Merge trunk r248192.

2017-05-17  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248159.

	Merge trunk r248151.
	* cp-tree.h (ovl_insert): Swap first two args.  Update all uses.

	Merge trunk r248144.

2017-05-16  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248126.

	Merge trunk r248121.

	Merge trunk r248116.

	Merge trunk r248109.

2017-05-15  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r248059.

	gcc/cp/
	* module.c (cpms_in::tag_definition): Robustify.

2017-05-12  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.c (cpms_{in,out}): Rename {read,write}_tree to tree_node.

	gcc/cp/
	* module.c (cpms_{in,out}): Rename read/write fns.

	More inline bodies
	gcc/cp/
	* module.c (cpms_{in,out}::write_core_vals): Read/write
	statement lists & LABEL_DECLs.
	gcc/testsuite/
	* g++.dg/modules/fn-inline-1_c.C: More test.

	Inline function bodies
	gcc/cp/
	* module.c (cpms_{in,out}::write_core_vals): Read/write
	exprs
	(cpms_in::tag_definition): Insert inline function.
	gcc/testsuite/
	* g++.dg/modules/fn-inline-1_[ab].C: New.

	Merge trunk r247968.

	gcc/cp/
	* module.c (cpm_reader::read_tree): Change interface, adjust callers.

	gcc/cp/
	* module.c (cpm_writer): Instrument bool distribution.
	(cpms_out::tag_definition, cpms_in::tag_definition): New.
	(cpms_out, cpms_in): Transfer more stuff.

2017-05-11  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r247911.

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

	Merge trunk r247864.

	Merge trunk r247834.

2017-05-09  Nathan Sidwell  <nathan@acm.org>

	Rename -fdump-front-end to -fdump-lang.
	gcc/
	* dumpfile.h (TDF_KIND_MASK, TDF_KIND): New.  Adjust.
	* dumpfile.c (dump_files): Rename file suffix.
	(get_dump_file_name, dump_enable_all): Adjust.
	* doc/invoke.texi: Rename option.
	gcc/testsuite/
	* g++.dg/modules: Adjust tests.

	gcc/cp/
	* module.c (cpms_in::finish): Merge global decls.
	(cpms_in::finish_function, cpms_in::finish_namespace): Delete.
	* name-lookup.h (push_module_namespace): Replace with ...
	(merge_global_decl): ... this.
	* name-lookup.c (push_module_namespace): Morph into ...
	(merge_global_decl): ... this.
	(push_module_binding): Don't re-add found things.

	gcc/
	* tree.h (TREE_CHECK6, tree_check6): Delete.

	Merge trunk r247787.
	gcc/cp/
	* tree.c (type_has_nontrivial_copy_init): Use ovl_iterator.

	Error message module designation.
	gcc/cp/
	* error.c (dump_module_suffix): New.
	(dump_simple_decl, dump_function_name): Use it.
	gcc/testsuite/
	* g++.dg/modules/err-1_[abcd].C: New.

2017-05-08  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r247749.

	Implement 'export module foo;'
	gcc/cp/
	* cp-tree.h (declare_module): Add interface flag.
	(import_export_module): Rename to ...
	(import_module): ... here.  Lose export flag.
	* module.c (import_module): Determine exportness from export
	depth.
	(declare_module): Add interface flag, don't check attribs.
	* parser.c (check_module_outermost): Don't check export depth.
	(cp_parser_module_declaration): Don't deal with imports.
	(cp_parser_import_declaration): New.
	(cp_parser_module_export, cp_parser_declaration): Adjust.
	gcc/testsuite/
	* g++.dg/modules/import-1_[a-g].C: New.

	Implement DR2061
	gcc/cp/
	* name-lookup.c (push_inline_namespace): New.
	(push_namespace): Use it.  Check inline consistency here ...
	* parser.c (cp_parser_namespace_definition): ... not here.
	gcc/testsuite/
	* g++.dg/cpp0x/dr2061.C: New.
	* g++.dg/parse/namespace-alias-1.C: Augment.

	gcc/cp/
	* cp-tree.h, call.c, class.c, name-lookup.c, parser.c, pt.c,
	semantics.c, tree.c: Rename ovl2_iterator to lkp_iterator.

	gcc/cp/
	* name-lookup.h (push_namespace): Return int.
	* name-lookup.c (push_namespace): Return count of depth pushed.
	* parser.c (cp_parser_namespace_definition): Accumulate depth pushed.

2017-05-05  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r247654.

	Merge trunk r247646.

	Merge trunk r247636.

	Indirect import lookup by tagging
	gcc/cp/
	* cp-tree.h (MAYBE_DECL_MODULE_INDEX): New.
	(DECL_GLOBAL_MODULE_P, DECL_THIS_MODULE_P): Delete.
	* mangle.c (maybe_write_module): Adjust.
	* module.c (cpms_out::write_tree, cpms_in::read_tree): Mark
	imported decls by tag.
	* name-lookup.h (key_module_instance, find_module_instance): Declare.
	* name-lookup.c (module_binding_slot): Allow search only.
	(key_module_instance): New.
	(find_module_instance): Use key.
	gcc/testsuite/
	* g++.dg/modules/mod-indirect-1_[a-e].C: New.

2017-05-04  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r247612.
	gcc/testsuite/
	* g++.dg/lookup/using17.C: Adjust error message.

	Overload bindings
	gcc/cp/
	* module.c (cpms_in::tag_binding, cpms_out::tag_binding): Binding
	can be overload.
	(cpms_out::write_bindings): Write whole slot.
	(cpms_in::finish): Look for import match.
	(cpms_in::read_lang_decl_bools, cpms_out::write_lang_decl_bools,
	cpms_in::read_lang_decl_vals, cpms_out::write_lang_decl_vals):
	Implement.
	* name-lookup.c (push_module_binding): Binding can be overload.
	(find_module_instance): New.
	* name-lookup.h (find_module_instance): Declare.
	gcc/testsuite/
	* g++.dg/modules/mod-impl-1_[abcd]: Add overloads.

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

	Merge trunk r247593.

	gcc/cp/
	* cp-tree.h (LOOKUP_SEEN_P): Map to TREE_VISITED.
	(LOOKUP_FOUND_P, OVL_LOOKUP_P): Move to lang_flag_4

	Modules via index, working again!
	gcc/cp/
	* module.c (cpms_in::tag_binding): Set module index.
	gcc/testsuite/
	* g++.dg/modules/mod-impl-1_a.C: Remove xfail.

	Namespace partitions.
	gcc/cp/
	* cp-tree.h (MODULE_NAMESPACE_P, GLOBAL_MODULE_NAMESPACE_P,
	CURRENT_MODULE_NAMESPACE_P): Delete.
	(pop_module_namespace, push_module_namespace): Delete.
	* module.c (cpms_out::write_bindings, cpms_in::finish_namespace):
	Remove module namespace hacks.
	(push_module_namespace, pop_module_namespace): Delete.
	(module_to_ext): Swallow into ...
	(module_to_filename): ... here.
	(declare_module): Don't create module namespace symbol.
	* name-lookup.c (module_binding_slot): Fixup global module
	insertion.
	(is_nested_namespce, is_ancestor): Remove module namespace hacks.
	* parser.c (check_module_outermost, cp_parser_module_export,
	cp_parser_module_proclamation,
	cp_parser_namespace_definition): Likewise
	gcc/testsuite/
	* g++.dg/modules/mod-sym-[123].C: Remove xfails.
	* g++.dg/modules/mod-impl-1_a.C: Revert to run test.

	Namespace partitions.
	gcc/cp/
	* cp-tree.h (OVL_EXPORT_P): New. Move OVL_LOOKUP_P.
	(DECL_MODULE_EXPORT_P): Allow any DECL.
	(module_import_bitmap): Declare.
	* decl.c (cxx_init_decl_processing): Export global_namespace.
	* module.c (module_import_bitmap): New.
	(do_module_import): Install as global module, if needed.
	(declare_module): Freeze global imports.
	* name-lookup.c: Include bitmap.h.
	(name_lookup::process_binding): Take split bindings.
	(name_lookup::process_module_binding): New.
	(name_lookup::search_namespace_only): Adjust.
	* tree.c (ovl_insert): Sort by export_p too.

	Merge trunk r247550.

	Namespace partitions.
	gcc/cp/
	* cp-tree.h (MODULES_PER_BINDING_CLUSTER): Delete.
	(MODULE_VECTOR_NUM_CLUSTERS, MODULE_VECTOR_CLUSTER_BASE,
	MODULE_VECTOR_CLUSTER_LAST, MODULE_VECTOR_CLUSTER): New.
	(make_module_vec): Declare.
	* module.c (cpms_out::write_bindings): Look into MODULE_VECTOR.
	* name-lookup.c (modue_binding_slot): New.
	(name_lookup::merge_binding, name_lookup::process_binding): New.
	(name_lookup::search_qualified): Add usings parm.
	(name_lookup::search_namespace_only): Look into MODULE_VECTOR.
	(do_pushdecl): Create module slot.
	(find_namespace_partition): New, from ...
	(push_module_namespace): ... here.  Call it.
	(push_module_binding): Create module slot.
	(push_namespace): Adjust.
	* ptree.c (cxx_print_xnode): Print MODULE_VECTOR.
	* tree.c (make_module_vec): New.

2017-05-02  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (saved_scope): Add this_module.
	(current_module): New.
	* module.c (cpms_in): Add remapping vector.  Remove scope.
	(cpms_in::tag_import): Update remapping vector.
	(cpms_out::tag_binding, cpms_in::tag_binding): Write/read module no.
	* name-lookup.c (do_push_to_top_level): Set current_module.

	gcc/doc/
	* invoke.texi (-fdump-front-end): Document.

	Read/write direct namespace bindings part 2.
	gcc/cp/
	* module.c (cpms_out::tag_binding): Write the tag.
	(cpms_in::read_item): Detect rt_binding, set modules slot.
	(cpms_out::write_context_binding): Delete.
	(cpms_out::write_bindings): Simplify.
	(cpms_in::finish_function): Don't push function here.
	(cpms_in::finish_namespace): Adjust.
	(do_module_import): Adjust.
	* name-lookup.h (push_module_namespace): Declare.
	* name-lookup.c (push_module_namespace): New.

	Read/write direct namespace bindings part 1.
	gcc/cp/
	* cp-tree.def (module_vector): New tree type.
	* cp-tree.h (module_cluster, tree_module_vec): New tree.
	(enum cp_tree_node_structure_enum): Add TS_CP_MODULE_VECTOR.
	(lang_tree_node): Add tree_module_vec.
	* decl.c (cp_tree_node_structure): Detect MODULE_VECTOR.
	* module.c (cpms_out::tag_binding, cpms_in::tag_binding): New.
	(cpms_out::write_context_binding): New.
	(cpms_out::walk_namespace): Replace with ...
	(cpms_out::write_bindings): ... this.
	* name-lookup.h (push_module_binding): Declare.
	* name-lookup.c (push_module_binding): New.

2017-05-01  Nathan Sidwell  <nathan@acm.org>

	gcc/
	* tree.c (type_hash_default): Adjust ARRAY_TYPE hash.

	Import timestamp & crc
	gcc/cp
	* module.c (module_state): Add crc & stamp.
	(enum import_kind): New.
	(cpms_out::header, cpms_in::header): Check timestamps.
	(time2str, timestamp_mismatch): New.
	(cpms_out::tag_import, cpms_in::tag_import): Xfer indirect imports
	too.
	(read_module, do_module_import): Check timestamp & crc.
	gcc/testsuite/
	* g++.dg/modules/mod-stamp-1_[abcd].C: New.

	Proper mangle for module.  Still have namespace hack though.
	gcc/cp/
	* cp-tree.h (DECL_GLOBAL_MODULE_P, DECL_THIS_MODULE_P): Protect
	DECL_LANG_SPECIFIC.
	(decl_set_module, module_name, module_name_parts): New.
	* decl.c (duplicate_decls): Check moduleness.
	(grokfndecl): Set moduleness.
	* mangle.c (maybe_write_module): New.
	(write_name): Call it.
	* module.c (module_state::set_name): New.
	(decl_set_module, module_name, module_name_parts): New.
	gcc/testsuite/
	* g+.dg/modules.exp (dg-module-do, module_do_it): Adjust.
	* g++.dg/modules/mod-impl-1_a.C: Adjust & XFAIL.
	* g++.dg/modules/mod-impl-1_c.C: Likewise.
	* g++.dg/modules/mod-sym-1.C: Likewise.
	* g++.dg/modules/mod-sym-2.C: Likewise.
	* g++.dg/modules/mod-sym-3.C: Likewise.

2017-04-28  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (struct_lang_base): Add module_index.  Shrink selector.
	(DECL_MODULE_INDEX, DECL_GLOBAL_MODULE_P, DECL_THIS_MODULE_P): New.
	(EXPORTED_P): Rename to ..
	(DECL_EXPORTED_P): ... here.
	* modules.c: Adjust EXPORTED_P uses.

	Module indices and separated import/export info
	gcc/cp/
	* cp-tree.h (GLOBAL_MODULE_INDEX, THIS_MODULE_INDEX,
	IMPORTED_MODULE_BASE): New.
	(import_module, export_module): Replace with ...
	(import_export_module): ... this.
	* module.c: #include bitmap.h.
	(enum import_kind): Delete.
	(struct module_state): New.
	(modules, module_map, this_module): New.
	(imported_modules): Delete.
	(cpms_in::state): New member.  Update constructor.
	(cpms_in::tag_import, cpms_out::tag_import): Take is_export arg.
	(cpms_in::read_item): Assign module index.
	(module_user, is_interface): Delete.
	(dopen, dclose): Delete.  Move to call sites.
	(read_module): Return module index.
	(do_module_import): Reimplement.
	(import_module, export_module): Replace with ...
	(import_export_module): ... this.
	(declare_module, write_module, finish_module): Adjust.
	* parser.c (cp_parser_module_declaration): Adjust,
	gcc/testsuite/
	* g++.dg/modules/mod-decl-5_b.C: Adjust.

2017-04-27  Nathan Sidwell  <nathan@acm.org>

	Kill rt_import popping madness
	gcc/cp/
	* module.c (cpm_serial::rt_export): New tag.
	(cpms_in::tag_import): Do the importing right now.
	(cpms_in::read_item): ... not here.
	(read_module): Pass in dump file name, open it if needed.

	Kill walk_namespaces
	gcc/cp/
	* cp-tree.h (walk_namespaces): Delete.
	* decl.c (walk_namespaces_r, walk_namespaces): Delete.

	Rework module namespace walking
	gcc/cp/
	* name-lookup.h: (decapsulate_binding): Declare.
	* name-lookup.c: (decapsulate_binding): New.
	* module.c (cpms_out::walk_namespace): Iterate over namespace
	bindings, not decls.
	(imported_modules): Key by lang_identifier.  Adjust
	allocation/deletion.

	Refix unhidden extern C
	Revert 2017-04-26 extern_c_slot patch.
	gcc/cp/
	* name-lookup (do_pushdecl): Call check_extern_c_conflict when
	unhiding.
	gcc/testsuite/
	* g++.dg/lookup/extern-c-redecl.C: Adjust.
	* g++.dg/lookup/extern-c-hidden.C: New test.

	Merge trunk r247281.
	gcc/
	* tree.c (type_hash_default): Hash TYPE_TYPELESS_STORAGE.
	gcc/objc/
	* objc-gnu-runtime-abi-01.C (objc_add_static_instance): Use
	pushdecl langhook.

2017-04-26  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (extern_c_slot): New.
	(check_extern_c_conflict): Use it.
	(unhidden_extern_c): New.
	(do_pushdecl): Call it.

	gcc/cp/
	* name-lookup.c (extern_c_slot): New.
	(check_extern_c_conflict): Use it.
	(unhidden_extern_c): New.
	(do_puhdecl): Call it.

	Die IDENTIFIER_GLOBAL_BINDINGS! Die!
	gcc/
	* ipa-devirt.c (default_hash_traits <type_pair>): Add GTY((skip))s.
	gcc/cp/
	* cp-tree.h (lang_identifier): Remove namespace_bindings.
	(default_hash_traits<lang_identifier *>): Specialization.
	(IDENTIFIER_NAMESPACE_BINDINGS): Delete.
	(lang_decl_ns): Add bindings map.
	(DECL_NAMESPACE_BINDINGS): New.
	* lex.c (maybe_add_lang_decl_raw): Allocate namespace binding map.
	* name-lookup.c (create_namespace_binding): Delete.
	(find_namespace_binding): Split into ...
	(find_or_create_namespace_slot, find_namespace_slot): ... these.
	Update all callers.
	(extern_c_fns): Change to identifier map.
	* ptree.c (cxx_print_identifier): Remove IDENTIFIER_NAMESPACE_BINDINGS.

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

	gcc/cp/
	* name-lookup.c (find_namespace_binding): Return slot
	pointer. Adjust all callers.
	(update_binding): Add slot pointer arg.  Adjust.
	(check_extern_c_conflict): Cons up list of fns.
	(c_linkage_bindings): Use extern_c_fns map.

	gcc/cp/
	* name-lookup.c (extern_c_fns): New hash.
	(check_extern_c_conflict): Reimplement using hash map.
	(do_pushdecl): Move check_extern_c_conflict later.

	Namespace stat hack via special overload
	gcc/cp/
	* name-lookup.c (STAT_HACK_P, STAT_TYPE, STAT_DECL,
	MAYBE_STAT_DECL, MAYBE_STAT_TYPE): New.
	(stat_hack): New.
	(find_namespace_value, name_lookup::search_namespace_only,
	update_binding, do_pushdecl, set_identifier_type_value_with_scope,
	set_global_value, lookup_type_scope_1, do_pushtag): Adjust.

2017-04-24  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (add_local_decl): Delete.
	(name_lookup::add): Fold into ...
	(name_lookup::search_namespace_only): ... here.
	(update_binding): Allow pushing the same artificial type.
	(do_pushdecl): Explicitly set namespace type.
	(push_local_binding): Use add_decl_to_level.
	(set_identifier_type_Value_with_scope): Use update_binding for
	namespaces.

	gcc/cp/
	* name-lookup.c (do_nonmember_using_decl): Pass in pointers to
	value and type nodes.
	(do_local_using_directive): Use current_binding_level directly.
	(do_toplevel_using_directive): Adjust.
	(lookup_type_current_level): Delete.

	gcc/cp/
	* name-lookup.c (diagnose_name_conflict): Check decl context.
	(do_nonmember_using_decl): Simplify.
	gcc/testsuite/
	* g++.dg/lookup/using13.C: Adjust error.
	* g++.dg/lookup/using59.C: Likewise,

	gcc/cp/
	* cp-tree.h (SET_IDENTIFIER_GLOBAL_VALUE): Update.
	* name-lookup.h (set_namespace_value): Rename to ....
	(set_global_value): ... here.
	* name-lookup.c (update_namespace_binding): Delete.
	(set_namespace_value): Rename to ....
	(set_global_value): ... here.  Update binding directly.

2017-04-20  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (ovl_lookup_keep, ovl_lookup_mark, ovl_lookup_add,
	ovl_lookup_maybe_add): Rename to ...
	(lookup_keep, lookup_mark, lookup_add, lookup_maybe_add): ... these.

	Keep overloads correctly ordered
	gcc/cp/
	* cp-tree.h (ovl_iterator::unhide): Reimplement.
	(ovl_iterator::replace, ovl_iterator::ovl_unhide): Delete.
	(ovl_iterator::remove_node, ovl_iterator::unhide_node): Declare.
	(ovl_insert, ovl_lookup_maybe_add): Declare.
	* name-lookup.c (adl_lookup::add_functions): Adjust.
	(do_lookup_arg_dependent): Adjust.
	(do_nonmember_using_decl): Adjust.
	* pt.c (make_constrained_auto, do_class_deduction): Adjust.
	* tree.c (ov_move_unhidden, ovl_add): Delete.
	(ovl_copy, ovl_insert): New.
	(ovl_iterator::unhide_node, ovl_iterator::remove_node): New.
	(ovl_lookup_mark, ovl_lookup_add): Adjust.
	(ovl_lookup_maybe_add): New.
	(ovl_lookup_keep, ovl_skip_hidden): Adjust.
	(ovl_iterator::ovl_unhide, ovl_iterator::replace): Delete.
	* class.c (add_method): Adjust.

2017-04-14  Nathan Sidwell  <nathan@acm.org>

	Kill per-namespace static_decls.
	gcc/cp/
	* cp-tree.h (static_decls): Declare.
	(wrapup_globals_for_namespace,
	diagnose_inline_vars_for_namespace): Replace with ...
	(wrapup_namespace_globals): ... this.
	* decl.c (static_decls): Define.
	(wrapup_globals_for_namespace,
	diagnose_inline_vars_for_namespace): Replace with ...
	(wrapup_namespace_globals): ... this.
	(cxx_init_decl_processing): Initialize static_decls.
	* decl2.c (c_parse_final_cleanups): Adjust.
	* name-lookup.h (cp_binding_level): Remove static_decls member.
	* name-lookup.c (add_decl_to_level): Adjust.
	(begin_scope): Adjust.

	Merge namespace and local scope binding update
	gcc/cp/
	* name-lookup.c (add_namespace_decl): Delete.
	(namespace_push_binding, local_push_binding): Merge into ...
	(update_binding): ... this.
	(do_pushdecl): Adjust.

2017-04-13  Nathan Sidwell  <nathan@acm.org>

	Cleanups
	gcc/cp/
	* lex.c (unqualified_name_lookup_error): Use pushdecl.
	* name-lookup.h (push_local_binding): Delete.
	* name-lookup.c (add_decl_to_level): New, combining
	add_namespace_decl, add_local_decl.
	(namespace_push_binding, local_push_binding): Adjust.
	(do_pushdecl): Adjust.
	(push_local_binding): Make static.

	Unify binding push part 7
	gcc/cp/
	* name-lookup.c (namespace_push_binding): Merge duplicate code
	from local_push_binding.  Chain the decl.
	(do_pushdecl): Adjust.

	Cleanup pushdecl interface
	gcc/cp/
	* cp-lang.c (cxx_pushdecl): New.
	(LANG_HOOKS_PUSHDECL): Override.
	* name-lookup.h (pushdecl): Remove overload. Add default arg.
	* name-lookup.c (pushdecl): Likewise.
	gcc/c/
	* c-tree.h (pushdecl): Declare.
	gcc/c-family/
	* c-common.c (c_register_builtin_type): Use pushdecl lang hook.
	* c-common.h (pushdecl): Don't declare.	

	Some cleanups
	gcc/cp/
	* name-lookup.c (update_local_overload): Drop oldval parm.
	(replace_local_overload_binding): Delete.  Fold into only caller.
	(fixup_unhidden_decl): Likewise.
	(augment_local_overload_binding): Likewise.

	Unifying binding push part 6
	gcc/cp/
	* name-lookup.c (find_local_binding): New.  Broken out of ...
	(find_local_value): ... this.  Use it.
	(update_local_overload): New.  Broken out of ...
	(replace_local_overload_binding): ... this.  Use it.
	(do_pushdecl): Keep local binding around.
	(local_push_binding): Consume supplement_binding, add_local_decl.

	Unifying binding push part 5
	gcc/cp/
	* name-lookup.c (skip_anticipated_builtins): Kill.
	(namespace_push_binding): Consume supplement_binding.
	(do_pushdecl): Skip hidden builtin here.  Adjust.
	gcc/testsuite/
	* g++.dg/lookup/using59.C: New.

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

	Unifying binding push part 4
	gcc/cp/
	* name-lookup.c (namespace_push_binding, local_push_binding):
	Don't dup decls here. Deal with using.
	(do_pushdecl): Adjust.
	gcc/testsuite/
	* g++.dg/lookup/using58.C: New.

	Unifying binding push part 3
	gcc/cp/
	* name-lookup.c (create_local_binding) New.
	(do_local_push_overload): Turn into ...
	(local_push_binding): ... this.
	(do_pushdecl): Adjust.

	Unifying binding push part 2
	gcc/cp/
	* name-lookup.c (create_namespace_binding) New.
	(find_namespace_binding): Use it.
	(do_namespace_push_overload): Convert to ...
	(namespace_push_binding): ... this.
	(do_pusdecl): Adjust

	Unifying binding push part 1
	gcc/cp/
	* name-lookup.c (do_pusdecl): Skip using decls.  Retain namespace.

2017-04-11  Nathan Sidwell  <nathan@acm.org>

	Separating namespace bindings part 15
	gcc/cp/
	* cp-tree.h (PUSH_GLOBAL, PUSH_LOCAL, PUSH_USING): Delete.
	* lex.c (unqualified_name_lookup_error): Adjust push_local_binding
	call.
	* name-lookup.h (push_local_binding): Flags is now bool.
	* name-lookup.c (matching_using_decl_p): Rename to ...
	(matching_fn_p): ... here.  Update callers.
	(set_local_extern_decl_linkage): New.  Broken out of ...
	(do_pushdecl): ... here.  Call it.
	(push_local_binding, augment_local_overload_binding,
	do_local_push_overload, do_local_using_decl): Flags is now bool.
	gcc/testsuite/
	* g++.dg/lookup/extern-redecl1.C: New.
	* g++.dg/parse/ctor9.c: tweak.

	Separating namespace bindings part 14
	gcc/cp/
	* friend.c (do_friend): Use pushdecl directly.
	* name-lookup.h (lookup_name_innermost_nonclass_level): Delete.
	* name-lookup.c (find_local_value): New.  Broken out of ...
	(lookup_name_innermost_nonclass_level_1): ... here.  Call
	it.  Rename to ...
	(lookup_name_innermost_nonclass_level): ... this.  Delete external
	entry point.
	(do_pushdecl): Start handling binding levels directly.  Check
	local class friend injection rule.  More cleanup.
	gcc/testsuite/
	* g++.dg/lookup/friend12.C: Augment & adjust.
	* g++.old-deja/g++.jason/scoping12.C: Adjust.

	Separating namespace bindings part 13
	gcc/cp/
	* name-lookup.c (do_pushdecl): Some cleanups.

	Separating namespace bindings part 12
	gcc/cp/
	* name-lookup.c (do_pushdecl): Move overload pushing next to
	non-overload pushing.

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

	Separating namespace bindings part 11
	gcc/cp/
	* name-lookup.c (check_local_shadow): Move lookup code to here ...
	(do_pushdecl): ... from here.

	Separating namespace bindings part 10
	gcc/cp/
	* name-lookup.c (do_pushdecl): Reorder & delete more obsolete code.

	Separating namespace bindings part 9
	gcc/cp/
	* name-lookup.c (do_pushdecl): Delete a tonne of obsolete code.

2017-04-07  Nathan Sidwell  <nathan@acm.org>

	Fix bogus scope handling
	gcc/cp/
	* call.c (make_temporary_var_for_ref_to_temp): Push temp into
	current scope.
	* decl.c (xref_tag_1): Pass ts_lambda to pushtag.
	* name-lookup (do_pushtag): Deal with ts_lambda scope.
	gcc/testsuite
	* g++.dg/cpp0x/forw_enum9.C: Fix testcase.

2017-04-06  Nathan Sidwell  <nathan@acm.org>

	Separating namespace bindings part 8
	gcc/cp/
	* name-lookup.c (do_pushdecl): Kill obsolete C-era code!

	Separating namespace bindings part 7
	gcc/cp/
	* name-lookup.c (check_local_shadow, set_decl_context_in_fn): Break
	out and simplify from ... 
	(do_pushdecl): ... here.  Call them.

	Separating namespace bindings part 6
	gcc/c-family/
	* c-common.h (pushdecl_top_level): Delete.
	gcc/cp/
	* name-lookup.h (pushdecl_top_level): Delete non-friendly version.
	* name-lookup.c (check_extern_c_conflict): New.
	(lookup_extern_c_fun_in_all_ns): Delete.
	(do_pushdecl): Call it.  Rename variables sanely.
	(pushdecl_top_level): Delete non-friendly version.

2017-04-05  Nathan Sidwell  <nathan@acm.org>

	Separating namespace bindings part 5
	gcc/cp/
	* name-lookup.h (getdecls): Rename to ...
	(get_local_decls): ... here.
	* name-lookup.c (pop_bindings_and_leave_scope): Adjust.
	(do_pushdecl): Add some asserts.
	 (getdecls): Rename to ...
	(get_local_decls): ... here.  Assert local scope.
	* decl.c (poplevel): Adjust.
	(start_preparsed_function): Don't set current_function_decl, until
	decl is pushed.
	(store_parm_decls): Adjust.
	* parser.c (synthesize_implicit_template_parm): Adjust.

	Separating namespace bindings part 4
	gcc/cp/
	* cp-lang.c (LANG_HOOKS_GETDECLS): Override.
	(get_global_decls): New.
	* decl.c (poplevel): Assert not in namespace.  Simplify.
	* name-lookup.c (pop_binding): Rename to ...
	(pop_local_binding): ... here.
	(pop_bindings_and_leave_scope): Adjust.
	(getdecls): Assert not in namespace.
	* name-lookup.h (pop_binding): Rename to ...
	(pop_local_binding): ... here.

	Separating namespace bindings part 3
	gcc/cp/
	* name-lookup.c (do_local_push_overload): New, split out of ...
	(push_overloaded_decl_1): ... this.  Delete.
	(push_overloaded_decl): Delete.
	(do_pushdecl): Adjust.

	Separating namespace bindings part 2
	gcc/cp/
	* name-lookup.c (compparms_for_decl_and_using_decl): Replace with ...
	(matching_using_decl_p): ... this.
	(do_namespace_push_overload): New, split out of ...
	(push_overloaded_decl_1): ... this.
	(do_pushdecl): Adjust.
	(do_nonmember_using_decl): Adjust.

2017-04-04  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.h (get_global_value_if_present,
	is_typename_at_global_scope): Delete.
	* class.c (build_vtbl_initializer): Adjust.
	* decl.c (grokdeclarator)
	* except.c (do_get_exception_ptr, do_begin_catch, do_end_catch,
	do_allocate_exception, do_free_exception, build_throw): Adjust.
	* init.c (throw_bad_array_new_length): Adjust.
	* rtti.c (throw_bad_cast, throw_bad_typeid): Adjust.

	gcc/cp/
	* cp-tree.h (CPTI_INIT_LIST_IDENTIFIER, init_list_identifier): New.
	* decl.c (initialize_predefined_identifiers): Initialize
	initializer_list identifier.
	* call.c (is_std_init_list): Adjust.
	* name-lookup.c (do_pushtag): Likewise.
	* pt.c (listify): Likewise.

	Separating namespace bindings part 1
	gcc/cp/
	* name-lookup.h (namespace_binding, set_namespace_binding):
	Replace with ...
	(get_namespace_value, set_namespace_value): ... these.
	(get_global_value_if_present, is_typename_at_global_scope): Adjust.
	* cp-tree.h (IDENTIFIER_GLOBAL_VALUE,
	SET_IDENTIFIER_GLOBAL_VALUE): Adjust.
	(IDENTIFIER_NAMESPACE_VALUE, SET_IDENTIFIER_NAMESPACE_VALUE): Delete.
	* pt.c (listify): Use get_namespace_value.
	* decl.c (poplevel): Use get_namespace_value.
	* name-lookup.c (cp_binding_level_find_binding_for_name): Replace
	with ...
	(find_namespace_binding): ... this.
	(update_namespace_binding, find_namespace_value,
	add_namespace_decl, add_local_decl): New.
	(name_lookup::search_namespace_only,
	adl_lookup::assoc_namespace_only): Adjust.
	(binding_for_name, add_decl_to_level): Delete.
	(fixup_unhidden_decl, do_pushdecl, push_local_binding,
	check_for_out_of_scope_variable,
	set_identifier_type_value_with_scope, push_overloaded_decl_1): Adjust.
	(namespace_binding_1, namespace_binding): Replace with ...
	(get_namespace_value): ... this.
	(set_namespace_binding_1, set_namespace_binding): Replace with ...
	(set_namespace_value): ... this.
	(do_toplevel_using_decl, lookup_type_scope_1,
	lookup_name_innermost_nonclass_level_1, do_push_nested_namespace,
	push_namespace): Adjust.

2017-04-03  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r246647.
	gcc/cp/
	* pt.c (): Adjust guiding decl code.
	libcc1/
	* libcp1plugin.cc (safe_pushdecl_maybe_friend): Adjust.
	(plugin_make_namespace_inline): Adjust.
	(plugin_add_using_namespace): Likewise.

	Remove usings graph.
	gcc/cp/
	* cp-tree.h (lang_decl_ns): Replace tree list ns_using, ns_users
	with tree vector usings & inlinees.
	(DCL_NAMES_SPACE_USING, DECL_NAMESPACE_INLINEES): Update.
	(TREE_INDIRECT_USING): Delete.
	* decl.c (cxx_init_decl_processing): Tweak.
	* name-lookup.h (cp_binding_level): using_directives is a vec.
	* name-lookup.c (name_lookup::do_queue_usings, queue_usings,
	search_namespace, search_usings, queue_namespace,
	search_unqualified, assoc_namespace_only): inlinees and usings are
	vectors.  Remove old TREE_LIST code.
	(namespace_ancestor_1, namespace_ancestor, add_using_namespace_1,
	add_using_namespace): Delete.
	(qualified_namespace_lookup): Tweak.
	(add_using_directive): New.
	(do_toplevel_using_directive, do_local_using_directive): Adjust.
	(push_namespace): Adjust.
	* tree.c (decl_anon_ns_mem_p): Reimplement.
	(cp_free_lang_data): Update.

2017-03-31  Nathan Sidwell  <nathan@acm.org>

	Reimplement unqualified namespace lookup
	gcc/cp/
	* name-lookup.c (name_lookup::state, name_lookup::preserve_state,
	name_lookup::restore_state): New.
	(name_lookup::queue_namespace,
	name_lookup::do_queue_usings, name_lookup::queue_usings,
	name_lookup::search_unqualified): New.
	(unqualified_namespace_lookup_1): Kill.
	(unqualified_namespace_lookup): Adjust.
	(lookup_using_namespace): Kill.
	gcc/testsuite/
	* g++.dg/lookup/lambda1.C: New.

	gcc/cp/
	* name-lookup.c (name_lookup::scopes): Make static. Adjust uses.
	(name_lookup::search_namespace_only): Broken out of ...
	(name_lookup::search_namespace): ... here.  Call it.
	* tree.c (ovl_cache): New.
	(ovl_make, ovl_lookup_keep): Use it.

2017-03-30  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* dump.c (cp_dump_tree): Allow nested overloads.

	Add SCOPE_DEPTH
	gcc/cp/
	* cp-tree.h (SCOPE_DEPTH): New.
	* decl.c (cxx_init_decl_processing): Set current_namespace.
	* name-lookup.h (is_nested_namespace): Declare.
	(is_associated_namespace): Delete.
	* name-lookup.c (is_nested_namespace): New.
	(is_ancestor): Use is_nested_namespace for namespaces.
	(set_decl_namespace): Use is_nested_namespace.
	(namespace_ancestor_1): Likewise.
	(is_associated_namespace): Delete.
	(push_namespace): Set SCOPE_DEPTH.
	* pt.c (check_specialization_namespace): Use is_nested_namespace.
	(check_unqualified_spec_or_inst): Likewise.

	Reimplement qualified namespace lookup
	gcc/cp/
	* name-lookup.c (cp_binding_level_find_binding_for_name): Remove
	premature optimiation.
	(find_binding): Delete.
	(name_lookup): Add flags, move scopes from adl_lookup.
	(name_lookup::search_namespace, search_usings, search_qualified): New.
	(tree_vec_contains): Kill.
	(qualified_namespace_lookup): Kill old O(N^2) code.

	gcc/cp/
	* pt.c (determine_specialization): Use 2-d iterator

2017-03-29  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (LOOKUP_MARKED_P, RECORD_MARKED_P): Rename to ...
	(LOOKUP_SEEN_P, LOOKUP_FOUND_P): ... here.  Update everywhere.

	gcc/cp/
	* name-lookup.c (arg_assoc::assoc_expr): Refactor.
	(do_lookup_arg_dependent): Renamed from lookup_arg_dependent_1.
	(lookup_arg_dependent): Adjust.
	(qualified_namespace_lookup): Renamed from
	qualified_lookup_using_namespace.

	Kill DECL_NAMESPACE_ASSOCATIONS
	gcc/cp/
	* cp-tree.h (DECL_NAMESPACE_INLINE_P): Renamed.
	(DECL_NAMESPACE_ASSCIATIONS): Delete.
	(DECL_NAMESPACE_INLINEES): New.
	* name-lookup.c (adl_lookup::assoc_namespace_only): New.
	(adl_lookup::assoc_namespace): Find parent, walk from there.
	(is_associated_namespace): Walk inline namespace tree.
	(push_namepace): Add to INLINEES not ASSOCIATIONS.

	gcc/cp/
	* lambda.c (maybe_add_lambda_conv_op): Use namespace_bindings_p.
	* method.c (implicitly_declare_fn): Likewise.
	* search.c (node_debug_info_needed): Likewise.

	gcc/cp/
	* name-lookup.h (finish_namespace_using_directive): Rename from
	...
	(finish_toplevel_using_directive): ... here.
	* name-lookup.c: Likewise.
	* parser.c (cp_parser_using_directive): Adjust.

2017-03-28  Nathan Sidwell  <nathan@acm.org>

	Cleanup pushdecl_top_level
	gcc/cp/
	* cp-tree.h (pushdecl_top_level_maybe_friend,
	pushdecl_top_level_and_finish): Delete.
	* decl.c (cp_make_fname_decl): Adjust.
	* decl2.c (get_guard, handle_tls_init): Likewise.
	* pt.c (tsubst_friend_class): Likewise.
	* rtti.c (get_tinfo_decl, tinfo_base_init): Likewise.
	* name-lookup.h (pushdecl_top_level, pushdecl_top_level_init): Declare.
	* name-lookup.c (pushdecl_top_level_1): Rename to ...
	(push_decl_top_level): ... here.
	(pushdecl_top_level_init): New.
	(pushdecl_top_level_maybe_friend): Delete.
	(pushdecl_top_level_and_finish): Delete.

	Cleanup pushdecl
	gcc/cp/
	* cp-tree.h (pushdecl, pushdecl_maybe_friend): Delete.
	(pushtag): Delete.
	* decl.c (cp_make_fname_decl): Call pushdecl_outermost_localscope.
	* lambda.c (insert_capture_proxy): Likewise.
	* friend.c (do_friend): Call overloaded pushdecl.
	* name-lookup.h (pushdecl_with_scope): Delete.
	(pushdecl, pushtag, pushdecl_outermost_localscope): Declare.
	* name-lookup.c (pushdecl_maybe_friend_1): Rename to ...
	(do_pushdecl): ... here.
	(pushdecl_maybe_friend): Replace with overloaded pushdecl.
	(pushdecl): Adjust.
	(pushdecl_with_scope_1): Rename to do_pushdecl_with_scope. Adjust.
	(pushdecl_with_scope): Delete.
	(pushdecl_outermost_localscope): New.
	(pushdecl_namespace_level): Adjust.
	(do_pushtag): Renamed from pushtag_1.
	(pushtag): Adjust.

	Cleanup namespace push/pop part 2
	gcc/cp/
	* module.c (cpms_in::finish_namespace): Adjust.
	(push_module_namespace): Adjust.
	* name-lookup.c (push_namespace, pop_namespace): Reimplement.
	(make_namespace_inline): Delete.
	* name-lookup.h (push_namespace): Change prototype.
	* parser.c (cp_parser_namespace_definition): Adjust.

	Cleanup namespace push/pop part 1
	gcc/cp/
	* cp-tree.h (CPTI_GLOBAL, CPTI_GLOBAL_IDENTIFIER, CPTI_GLOBAL_TYPE,
	CPTI_ANON_IDENTIFIER): New.
	(global_namespace, global_identifier, global_type_node,
	anon_identifier): New.
	* decl.c (global_type_node, global_scope_name): Delete.
	(initialize_predefined_identifiers): Add new idents.
	(cxx_init_decl_processing): Adjust.
	* name-lookup.h (global_namespace, global_scope_name,
	global_type_node): Delete.
	* name-lookup (global_namespace, anonymous_namespace_name,
	get_anonomous_namespace_name): Delete.
	(do_push_nested_namespace, do_pop_nested_namespace): New.
	(push_nested_namespace, pop_nested_namespace): Reimplement.

	Cleanup using-directives
	gcc/cp/
	* cp-tree.h (LOOKUP_MARKED_P): Rename from NAME_MARKED_P, update all.
	* name-lookup.h (finish_toplevel_using_directive,
	finish_local_using_directive): Declare.
	(do_using_directive, parse_using_directive): Delete.
	* name-lookup.c (do_using_directive): Delete.
	(do_toplevel_using_directive): Reimplement.
	(do_local_using_directive, do_local_using_directive_1): New.
	(parse_using_directive): Delete.
	(push_using_directive, push_using_directive_1): Delete.
	(finish_toplevel_using_directive, finish_local_using_directive): New.
	* pt.c (tsubst_expr): Adjust.
	* parser.c (cp_parser_using_directive): Adjust.

	Kill strong using
	gcc/
	* doc/extend.texi (Namespace Association): Document removal.
	gcc/cp/
	* name-lookup (parse_using_directive): Remove strong handling.
	gcc/testsuite/
	* g++.dg/lookup/strong-using-6.C: New.

2017-03-27  Nathan Sidwell  <nathan@acm.org>

	Simplify ADL part 2
	gcc/cp
	* cp-tree.h (RECORD_MARKED_P): New.
	* tree.c (ovl_lookup_keep): Allow NULL.
	* name-lookup.c (struct adl_lookup): New.
	(struct arg_lookup): Delete.

2017-03-24  Nathan Sidwell  <nathan@acm.org>

	gcc/
	* tree.h (TREE_CHECK6): New.
	(tree_check6): New.
	gcc/cp/
	* cp-tree.h (NAME_MARKED_P): Add UNION_TYPE.
	* name-lookup.c (arg_lookup): Replace namespace & class vectors
	with visited.
	(arg_assoc_namespace, arg_assoc_class): Use NAME_MARKED_P.
	(lookup_arg_dependent_1): Unmark namespaces and classes.

	gcc/cp/
	* cp-tree.h (ovl2_iterator::operator++): Tweak.

	Simplify ADL part 1
	gcc/cp/
	* cp-tree.h (OVL_LOOKUP_P, NAME_MARKED_P): New.
	(OVL_TRANSIENT_P): Morph into ...
	(OVL_USED_P): ... this.
	(ovl_add_transient): Kill.
	(ovl_maybe_keep): Replace with ...
	(ovl_lookup_keep): ... this.
	(ovl_lookup_mark, ovl_lookup_add): Declare.
	* tree.c (ovl_add): Rename arg.  Set OVL_LOOKUP_P.
	(ovl_add_transient): Kill.
	(ovl_lookup_mark, ovl_lookup_add): New.
	(ovl_maybe_keep): Rename to ...
	(ovl_lookup_keep): ... this.  Adjust.
	* name-lookup.c (name_lookup::add): Use ovl_add directly.
	(struct arg_lookup): Kill args and fn_set.
	(add_function): Replace with ...
	(add_functions): ... this.
	(arg_assoc_namespace, arg_assoc_class_only): Use it.
	(lookup_arg_dependent_1): Use new API.
	* pt.c (tsubst_copy): Assert OVERLOAD is marked used.
	* semantics.c (finish_call_expr): Adjust.

2017-03-23  Nathan Sidwell  <nathan@acm.org>

	Fixup transient_p bug
	gcc/cp/
	* tree.c (ovl_add): Set TRANSIENT_P here.
	(ovl_add_transient): Not here.

	gcc/cp/
	* cp-tree.h (type_unknown_p): Make inline.  Lose TREE_LIST case.
	* tree.c (type_unknown_p): Delete.
	* name-lookup.c (arg_assoc): Lose TREE_LIST case.

	gcc/cp/
	* cp-tree.h (OVL_P, OVL_PLURAL_P): New.
	* name-lookup.c (name_lookup::add, diagnose_name_conflict,
	pushdecl_maybe_friend_1, push_overloaded_decl_1,
	do_nonmember_using_decl, push_class_level_binding_1,
	set_decl_namespace, lookup_arg_dependent_1): Use OVL_P.

	Two dimensional OVERLOADs
	gcc/cp/
	* cp-tree.h (OVL_FIRST): Call ovl_first.
	(ovl_iterator): Add allow_inner, adjust.
	(ovl2_iterator): New.
	(ovl_first): New.
	* name-lookup.c (name_lookup::add): Create 2d overload.
	(do_nonmember_using_decl): 2D overload.
	(lookup_arg_dependent_1, cp_emit_debug_info_for_using): Likewise.
	* call.c (add_candidates): Likewise.
	* class.c (resolve_address_of_overloaded_function): Likewise.
	* parser.c (cp_parser_template_name): Likewise.
	* pt.c (type_dependent_expression_p): Likewise.
	(print_candidates_1): Likewise.
	* ptree.c (cxx_print_xnode): Allow inner overload.
	* semantics.c (finish_call_expr): Keep overload, 2D overload.
	* tree.c (ovl_scope): Allow inner overload.
	gcc/testsuite/
	* g++.dg/lookup/using57.C: New.

2017-03-22  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (lookup_qualified_name): Unwrap singleton
	overload.
	(lookup_name_real_1): Remove ovl_hidden assert.
	(lookup_arg_dependent_1): Don't skip hidden here.
	* parser.c (cp_parser_lookup_name): Don't unwrap singleton
	overload here.

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

	gcc/cp/
	* name-lookup.c (lookup_name_real_1): Don's skip hidden here.
	Simplify singleton overload extraction.
	* tree.c (ovl_add): Assert no unexpected 2 dimensional overloads.
	gcc/
	* system.h (ATTRIBUTE_NTC_PURE): Define.
	* tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Use it.

	Refactor lookup part 1
	gcc/cp/
	* name-lookup.c (struct name_lookup): New.
	(struct scope_binding): Delete.
	(EMPTY_SCOPE_BINDING): Delete.
	(build_ambigious): New.
	(name_lookup::add): New.
	(do_nonmember_using_decl): Take pointer to cxx_binding.  Adjust.
	(do_local_using_decl, do_toplevel_using_decl): Adjust.
	(merge_functions, same_entity_p, ambiguous_decl): Delete.
	(suggest_alternatives_for): Adjust lookup functions.
	(unqualified_namespace_lookup_1): Use name_lookup.
	(lookup_qualified_name): Likewise.
	(lookup_using_namespace, qualified_lookup_using_namespace): Take a
	name_lookup.
	gcc/testsuite/
	* g++.dg/lookup/using17.C: Adjust error message.

	Keep hidden overloads at start of OVERLOAD list
	gcc/cp/
	* cp-tree.h (OVL_HIDDEN_P): New.
	(ovl_iterator::hidden_p, unhide): New.
	(DECL_HIDDEN_P): New.
	(hidden_name_p, remove_hidden_names): Delete.
	(ovl_skip_hidden): Declare.
	* decl.c (builtin_function_1): Set DECL_ANTICIPATED before
	pushing.
	(xref_tag_1): Replace hidden_name_p with DECL_HIDDEN_P.
	* name-lookup.c (anticipated_builtin_p,
	skip_anticipated_buitins): New.
	(supplement_binding_1): Use anticipated_builtin_p.
	(replace_local_overload_binding): New. Broken out of
	augment_local_overload_binding.
	(fixup_unhidden_decl): New.
	(pushdecl_maybe_friend_1): Deal with unhiding decl.  Set
	DECL_ANTICIPATED before really pushing.
	(augment_local_overload_binding): Call replace_local_overload_binding.
	(push_overloaded_decl_1): Deal with unhiding decl.
	(do_nonmember_using_decl): Use anticipated_builtin_p.
	(ambiguous_decls): Use ovl_skip_hidden.
	(lookup_name_real_1): Use DECL_HIDDEN_P, ovl_skip_hidden.
	(arg_assoc_namespace): Use DECL_HIDDEN_P.
	(lookup_arg_dependent_1): Use ovl_skip_hidden.
	* pt.c (instantiate_class_template): Use DECL_HIDDEN_P.
	* tree.c (ovl_move_unhidden): New.
	(ovl_add): Deal with hiddenness.
	(ovl_add_transient): Adjust.
	(hidden_name_p, remove_hidden_names): Delete.
	(ovl_skip_hidden): New.
	(ovl_iterator::ovl_unhide): New.
	gcc/testsuite/
	* g++.dg/lookup/friend19.C: New.
	* g++.dg/lookup/using56.C: New.

2017-03-16  Nathan Sidwell  <nathan@acm.org>

	New OVERLOAD representation part 6
	gcc/cp/
	* cp-tree.h: Move ovl handling fns to original location.
	* tree.c (ovl_add): Use ovl_make.
	(ovl_add_transient): Use ovl_add.

	New OVERLOAD representation part 5
	gcc/cp/
	* cp-tree.h (OVL_NEXT): Delete. Update uses.
	(OVL_CHAIN): Check for overload.

	New OVERLOAD representation part 4
	gcc/cp/
	* cp-tree.h (OVL_CURRRENT): Delete.
	(ovl_make): Declare.
	* tree.c (ovl_make): New.
	* constraint.cc (finish_shorthand_constraint): Use ovl_make.
	* typeck.c (build_x_unary_op): Likewise.

	New OVERLOAD representation part 3
	gcc/cp/
	* cp-tree.h: Remove OVLNEW pieces.
	* tree.c: Likewise.

	New OVERLOAD representation part 2
	gcc/cp/
	* cp-tree.h (OVL_VIA_USING_P, OVL_TRANSIENT_P, OVL_SINGLE_P): New
	names.
	* error.c, name-lookup.c, parser.c, search.c, tree.c: Adjust uses.

2017-03-15  Nathan Sidwell  <nathan@acm.org>

	New OVERLOAD representation part 1
	gcc/cp/
	* cp-tree.h (OVL_LENGTH, OVL_USINGS, OVL_FIRST, OVL_NAME,
	OVL_SINGLE, OVL_ELT, OVL_HAS_USING, OVL_HAS_HIDDEN): New.
	(ovl_iterator): Implement new-style iterator.
	* tree.c (tree_ovl_elt_check_failed): New.
	(ovl_maybe_keep): Fixup bracing.
	(ovl_scope): Add new smarts.

	Vectorize OVERLOAD part 9
	gcc/cp/
	* cp-tree.h (build_new_function_call): Lose koenig_p arg.
	(OVL_HAS_USING): New.
	* call.c (build_new_function_call): Lose koenig_p arg.
	* name-lookup.c (augment_local_overload_binding): New.  Broken out
	of ...
	(push_overloaded_decl_1): ... here.  Call it.
	(do_nonmember_using_decl): Lose augment arg.
	(do_local_using_decl): Use augment_local_overload_binding.
	(do_toplevel_using_decl): Adjust do_nonmember_using_decl call.
	* search.c (lookup_field_r): Use OVL_HAS_USING.
	* pt.c (do_class_deduction): Adjust build_new_function_call call.
	* semantics.c (finish_call_expr): Likewise.

	Vectorize OVERLOAD part 8
	gcc/cp/
	* cp-tree.h (ovl_add_transient): Declare.
	* tree.c (ovl_add_transient): New.
	(remove_hidden_names): Build transient.
	* name-lookup.c (do_nonmember_using_decl): Add AUGMENT parm,
	adjust.
	(do_local_using_decl): Ask for newvals from
	do_nonmember_using_decl, iterate over that list.
	(do_toplevel_using_decl): Ask for augmented vals.
	(add_function): Return void.  Remove extraneous
	checks.  Update callers.
	* semantics.c (finish_call_expr): Always call ovl_maybe_keep.

	Vectorize OVERLOAD part 7
	gcc/cp/
	* name-lookup.c (hidden_name_p, remove_hidden_names): Move
	declarations to ...
	* cp-tree.h (hidden_name_p, remove_hidden_names): ... here.
	* call.c (build_new_function_call): Remove hidden pruning.
	* name-lookup.c (hidden_name_p, remove_hidden_names): Move to
	tree.c.
	(lookup_name_real_1): Adjust hidden_name_p call.
	(lookup_arg_dependent_1): Adjust remove_hidden_names call.
	* tree.c (hidden_name_p, remove_hidden_names): Moved from
	name-lookup.h.  Adjust.

	Vectorize OVERLOAD part 6
	gcc/cp/
	* cp-tree.h (OVL_TRANSIENT): Rename from OVL_ARG_DEPENDENT.
	* tree.c (ovl_maybe_keep): Adjust.
	* name-lookup.c (set_namespace_binding_1): Use OVL_SINGLE.
	(lookup_name_real_1): Use OVL_FIRST.
	(add_function): Set OVL_TRANSIENT.
	(lookup_arg_dependent_1): Use OVL_FIRST.
	(cp_emit_debug_info_for_using): Use iterator.

	Add OVERLOAD iterator part 8
	gcc/cp/
	* name-lookup.c (do_nonmember_using_decl): Use iterators

	Add OVERLOAD iterator part 7
	gcc/cp/
	* name-lookup.c (pushdecl_maybe_friend_1): Use OVL_FIRST.
	(push_overloaded_decl_1): Use iterators.
	(consider_binding_level): Use OVL_FIRST.

2017-03-14  Nathan Sidwell  <nathan@acm.org>

	Add OVERLOAD iterator part 6
	gcc/cp/
	* decl2.c (check_class_fn): Use iterators.
	* semantics.c (omp_reduction_lookup): Likewise.
	(finish_omp_reduction_clause): Don't OVL_FIRST here.

	Vectorize OVERLOAD part 5
	gcc/cp/
	* cp-tree.h (ovl_maybe_keep): Declare.
	* tree.c (ovl_maybe_keep): New.
	* semantics.c (finish_call_expr): Call it.
	(finish_omp_clauses): Use new accessrs.
	* class.c (handle_using_decl): Use new accessors.
	(resolve_address_of_overloaded_function): Likewise.
	* pt.c (print_candidates_1, print_candidates): Reimplement.

	Vectorize OVERLOAD part 5
	gcc/cp/
	* cp-tree.h (OVL_SINGLE): New.
	* constraint.cc (resove_constraint_check): Use new iterator.
	(normalize_template_id_expression): Use OVL_FIRST.
	* cvt.c (build_expr_type_conversions): Likewise.
	* error.c (dump_decl): Use OVL_SINGLE.
	* parser.c (cp_parser_nested_name_specifier_opt): Likewise.
	* tree.c (is_overloaded_fn): Likewise.

	Add OVERLOAD iterator part 5
	gcc/cp/
	* cp-tree.h (ovl_iterator::via_using_p): New.
	(ovl_iterator::replace): New.
	(clone_function_decl): Add via_using parm.
	* tree.c (ovl_iterator::replace): New.
	* class.c (add_method): Use ovl_iterator.
	(clone_function_decl): Add via_using parm.  Pass it to add_method.
	(clone_costructors_and_destructors): Pass via_using.
	* pt.c (tsubst_decl, instantiate_template_1): Update
	clone_function_decl call.

	Change add_method signature
	gcc/cp/
	* cp-tree.h (add_method): Change 3rd arg.
	* class.c (add_method): Change 3rd arg to bool. Update.
	(handle_using_decl, one_inheriting_sig, one_inherited_ctor,
	clone_function_decl, finish_struct): Update add_method calls.
	* lambda.c (maybe_add_lambda_conv_op): Likewise.
	* method.c (lazily_declare_fn): Likewise.
	* semantics.c (finish_member_declaration): Likewise.

2017-03-13  Nathan Sidwell  <nathan@acm.org>

	Kill get_first_fn part 3
	gcc/cp/
	* cp-tree.h (get_first_fn): Delete.
	* pt.c (iterative_hash_template_arg, tsubst_copy_and_build): Use
	get_ovl.
	(tsubst_baselink): Use OVL_NAME.
	* typeck.c (invalid_nonstatic_memfn_p, build_x_unary_op,
	cp_build_addr_expr_1): Use get_ovl.
	(finish_class_member_access_expr): Use OVL_NAME.
	* tree.c (dependent_name): Recode.
	(get_first_fn): Delete.

	Kill get_first_fn part 2
	gcc/cp/
	* cp-tree.h (get_ovl): Add want_first parm, make pure.
	* constexpr.c (potential_constant_expression_1): Adjust get_ovl.
	* lambda.c (lambda_function): Likewise.
	* error.c (dump_decl): Use identifier_p.
	* mangle.c (write_expression): Use OVL_NAME.
	* name-lookup.c (pushdecl_class_level): Likewise.
	* parser.c (cp_parser_postfix_expression,
	cp_parser_expression_statement, cp_parser_direct_declarator,
	cp_parser_constructor_declarator_p): Use get_ovl.
	* search.c (lookup_member0: Likewise.
	* typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
	* semantics.c (perform_koenig_lookup): Use OVL_NAME.
	(finish_call_expr, finish_id_expression): Use get_ovl.
	* tree.c (get_ovl): Add want_first arg, adjust.

	Kill get_first_fn part 1
	gcc/cp/
	* call.c (add_list_candidates, build_new_method_call_1): Use
	OVL_FIRST directly.
	* constraint.cc (function_concept_check_p): Likewise.
	* name-lookup.c (validate_nonmember_using_decl): Likewise.
	* constexpr.c (potential_constant_expression_1): Use ovl_fns &
	OVL_FIRST.
	* lambda.c (lambda_function): Likewise.
	* decl.c (grokdeclarator): Use OVL_NAME.
	* error.c (dump_decl): Likewise.
	* friend.c (do_friend): Likewise.
	* mangle.c (write_expression): Likewise.

	Kill get_fns
	gcc/cp/
	* cp-tree.h (get_ovl): New.
	(get_fns): Delete.
	* parser.c (cp_parser_nested_name_specifier_opt): Update.
	* search.c (shared_member_p): Update.
	* semantics.c (omp_reduction_lookup): Update.

	Kill ovl_cons
	gcc/cp/
	* cp-tree.h (ovl_cons): Delete.
	* tree.c (ovl_cons): Delete.
	* class.c (add_method): Use ovl_add.
	* name-lookup.c (push_overloaded_decl_1): Likewise.
	* pt.c (check_explicit_specialization, do_class_deduction): Likewise.
	* typeck.c (build_x_unary_op): Likewise.

	Kill build_overload
	gcc/cp/
	* cp-tree.h (ovl_add): Declare.
	(build_overload): Delete.
	* tree.c (ovl_add): New.
	(build_overload): Delete.
	* class.c (add_method): Use ovl_add.
	* constraint.cc (finish_shorthand_constraint): Likewise.
	* name-lookup.c (do_nonmember_using_decl, merge_functions,
	remove_hidden_names, add_function): Likewise.
	* pt.c (make_constrained_auto): Likewise.

	Rename OVL_USED
	gcc/cp/
	* cp-tree.h (OVL_USED): Rename to ...
	(OVL_VIA_USING): ... here.
	* class.c (add_method): Update.
	* tree.c (ovl_scope): Update.
	* search.c (lookup_field_r): Update.
	* name-lookup.c (push_overloaded_decl_1,
	do_nonmember_using_decl): Update.

	Add OVERLOAD iterator part 4
	gcc/cp/
	* tree.c (cp_tree_equal): Use ovl_iterator.

	Vectorize OVERLOAD part 4
	gcc/cp/
	* cp-tree.h (ovl_iterator::ref): New.
	* semantics.c (finish_omp_reduction_clause): Use OVL_FIRST.
	* tree.c (is_overloaded_fn, get_fns): Likewise.

2017-03-10  Nathan Sidwell  <nathan@acm.org>

	Vectorize OVERLOAD part 3
	gcc/cp/
	* search.c (lookup_field_fuzzy_info::fuzzy_lookup_fn,
	lookup_conversion_operator, lookup_fnfields_idx_nolazy,
	lookup_conversions_r): Use new accessors.

	Vectorize OVERLOAD part 2
	gcc/cp/
	* decl2.c (mark_used): Use new accessors.
	* dump.c (cp_dump_tree): Likewise.
	* error.c (dump_decl, dump_expr, location_of): Likewise.
	* init.c (build_offset_ref): Likewise.
	* parser.c (cp_parser_nested_name_specifier_opt,
	cp_parser_lookup_name): Likewise.
	* pt.c (check_explicit_specialization, check_template_shadow,
	tsubst_baselink): Likewise.
	* ptree.c (cxx_print_xnode): Likewise.

	Vectorize OVERLOAD part 1
	gcc/cp/
	* cp-tree.h (OVL_FIRST, OVL_NAME): New accessors.
	* call.c (build_user_type_conversion_1,
	print_error_for_call_failure, add_candidates): Use them.
	* class.c (method_name_cmp, resort_method_name_cmp,
	resort_type_method_vec, finish_struct_methods, warn_hidden,
	resolve_address_of_overloaded_function,
	note_name_declared_in_class): Likwise.
	* cxx-pretty-print.c (pp_cxx_unqualified_id, pp_cxx_qualified_id,
	cxx_pretty_printer::id_expression,
	cxx_pretty_printer::expression): Likewise.
	* decl.c (poplevel): Likewise.
	* mangle.c (write_member_name): Likewise.
	* method.c (strip_inheriting_ctors): Likewise.
	* typeck.c (cp_build_addr_expr_1): Likewise.

	Makefile-supplied timestamp.
	gcc/cp
	* Make-lang.in: Provide MODULE_STAMP.
	* module.c (cpm_stream::version): Use MODULE_STAMP, not __DATE__ &
	__TIME__.

	Add OVERLOAD iterator part 3
	gcc/cp/
	* name-lookup.c (pushdecl_maybe_friend_1,
	lookup_extern_c_fun_in_all_ns, c_linkage_bindings,
	set_decl_namespace, pushdecl_top_level_and_finish (tree x,
	merge_functions, remove_hidden_names, arg_assoc_namespace,
	arg_assoc, lookup_arg_dependent_1, cp_emit_debug_info_for_using):
	Use new iterator. 
	* pt.c (retrieve_specialization, iterative_hash_template_arg,
	determine_specialization, check_explicit_specialization,
	resolve_overloaded_unification, resolve_nondeduced_context,
	type_dependent_expression_p, dependent_template_p,
	do_class_deduction): Likewise.

	Add OVERLOAD iterator part 2
	gcc/cp/
	* class.c (handle_using_decl,
	maybe_warn_about_overly_private_class, modify_all_vtables,
	get_basefndecls, warn_hidden, add_implicitly_declared_members,
	adjust_clone_args, deduce_noexcept_on_destructors, default_ctor_p,
	in_class_defaulted_default_constructor, user_provided_p,
	type_has_user_provided_constructor,
	type_has_user_provided_or_explicit_constructor,
	type_has_virtual_destructor, type_has_move_constructor,
	type_has_move_assign, type_has_user_declared_move_constructor,
	type_build_ctor_call, type_build_dtor_call,
	type_requires_array_cookie, explain_non_literal_class,
	finish_struct, resolve_address_of_overloaded_function): Use new
	iterator.
	* decl2.c (maybe_warn_sized_delete): Likewise.
	* parser.c (cp_parser_template_name): Tweak loop exit test.
	* semantics.c (finish_call_expr): Likewise.
	* typeck.c (check_template_keyword): Likewise.

	Add OVERLOAD iterator, part 1
	Add MAYBE_BASELINK_FUNCTIONS
	gcc/cp/
	* cp-tree.h (struct ovl_iterator): New.
	(MAYBE_BASELINK_FUNCTIONS): New.
	* call.c (build_op_call_1, add_candidates,
	build_op_delete_call): Use new iterator.
	* lambda.c (maybe_generic_this_capture): Likewise.
	* method.c (inherited_ctor_binfo, binfo_inherited_from): Likewise.
	* parser.c (lookup_literal_operator,
	cp_parser_template_name): Likewise.
	* search.c (shared_member_p, look_for_overrides_here,
	lookup_conversions_r): Likewise.
	* semantics.c (finish_call_expr,
	classtype_has_nothrow_assign_or_copy_p): Likewise.
	* typeck.c (check_template_keyword): Likewise.
	* tree.c (is_overloaded_fn, get_fns): Use MAYBE_BASELINK_FUNCTIONS.

	gcc/cp/
	* gcc/cp/cp-tree.h (NAMESPACE_CHECK): Delete.
	(MODULE_NAMESPACE_P, GLOBAL_MODULE_NAMESPACE,
	NAMESPACE_INLINE_P): Adjust.

	gcc/testsuite/
	* g++.dg/modules/modules.exp: Protect DEFAULT_CXXFLAGS.

2017-03-06  Nathan Sidwell  <nathan@acm.org>

	Add crc checkpointing.
	gcc/cp/
	* module.c (cpm_serial::crc): New.
	(cpm_serial::bit_flush): Compute crc.
	(cpm_serial::crc_unsigned_n, crc_buffer, crc_unsigned): New.
	(cpm_reader::checkpoint, cpm_writer::checkpoint): New.
	(cpm_reader, cpm_writer): Add checkpointing to io.
	(cpms_in, cpms_out): Likewise.

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

	Optimize crc.  Push to trunk
	gcc/
	* tree.h (crc32_unsigned_n): Declare.
	(crc32_unsigned, crc32_unsigned): Make inline.
	* tree.c (crc32_unsigned_bits): Replace with ...
	(crc32_unsigned_n): ... this.
	(crc32_unsigned, crc32_byte): Remove.
	(crc32_string): Remove unnecessary braces.

2017-03-04  Nathan Sidwell  <nathan@acm.org>

	Redo bool read/write
	gcc/cp/
	* module.c (cpm_serial::bit_flush): New.
	(cpm_writer::bytes4, cpm_writer::bflush: New.
	(cpm_reader::bytes4, cpm_reader::bflush, cpm_reader::bfill): New.
	(cpm_reader::fill): Rename from reserve.  Update callers.
	(cpm_writer::b, cpm_reader::b): Reimplement.
	(cpm_writer::flush_bits, cpm_reader::flush_bits): Delete.
	(cpms_out::write_tree_ary, cpms_in::read_tree_ary): Call bflush.
	(cpms_out::write_tree, cpms_in::read_tree): Likewise.

	Cleanup test pruning.  Push to trunk.
	gcc/testsuite/g++.dg
	* g++-dg.exp (find-cxx-tests): New.
	(main): Call it to discover direct tests rather than explicit pruning.

2017-03-03  Nathan Sidwell  <nathan@acm.org>

	Cleanup retrofit_lang_decl.  Push to trunk.
	gcc/cp/
	* cp-tree.h (add_lang_decl_raw, add_lang_type_raw): Rename.
	* lex.c (maybe_add_lang_decl_raw, maybe_add_lang_type_raw): Return
	bool.  Don't assert.
	(retrofit_lang_decl, cxx_make_type): Adjust.
	* module.c (cpms_in::read_tree): Verify lang_decl/type insertion
	valid.
	* class.c (alter_access): Directly call retrofit_lang_decl.
	* decl.c (push_local_name, duplicate_decls): Likewise.
	* pt.c (push_template_decl_real, txubs_omp_clauses): Likewise.
	* semantics.c (omp_privatize_field): Likewise.

	Renaming stuff.
	gcc/cp/
	* module.c: Remove anon namespace, rename seriator, reader,
	writer, streamer, in & out.

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

	Black triangle achieved
	gcc/cp/
	* cp-tree.h (GLOBAL_MODULE_NAMESPACE_P): New.
	(add_lang_decl_raw, add_lang_type_raw): Declare.
	* lex.c (add_lang_decl_raw): New.  Broken out of ...
	(retrofit_lang_decl): ... here.  Call it.
	(add_lang_type_raw): New.  Broken out of ...
	(cxx_make_type): ... here.  Call it.
	* module.c (out::write_decl_lang_bools, in::read_decl_lang_bools): New.
	(in::~in, in::set_scope): Correct.
	(out::write_tree, in::read_tree): Start lang_type/decl handling.
	(in::finish_type): Fix canonical type handling.
	(in::finish_function): Insert into symbol table.
	(in::finish_function): Preserve scope.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Add link & execute capability.
	* g++.dg/modules/mod-decl-2_b.C: Remove XFAILs.
	* g++.dg/modules/mod-decl-2_c.C: Remove XFAILs.
	* g++.dg/modules/mod-impl-1_a.C: New.
	* g++.dg/modules/mod-impl-1_b.C: New.
	* g++.dg/modules/mod-impl-1_c.C: New.
	* g++.dg/modules/mod-impl-1_d.C: New.

2017-02-17  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* module.c (in::finish_type): New.
	(in::finish): Call it.
	(out::write_core_vals, in::read_core_vals): Ensure canonical_type
	and type_main_variant are dumped early.
	gcc/testsuite/
	* g++/modules/mod-exp-1_b.C: Extend.

	Canonicalize canonical type hashing
	gcc/
	* tree.h (type_hash_default): Declare.
	* tree.c (type_hash_list, attribute_hash_list): Move into
	type_hash_default.
	(build_type_attribute_qual_variant): Break out hash code calc into
	type_hash_default.
	(type_hash_default): New.  Generic type hash computation.
	(build_range_type_1, build_array_type_1, build_function_type,
	build_method_type_directly, build_offset_type, build_complex_type,
	make_vector_type): Call it.
	gcc/c-family/
	* c-common.c (complete_array_type): Use type_hash_default.

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

	Namespace decls!
	gcc/cp/
	* module.c (out::write_tree_ary, in::read_tree_ary): New.
	(out::tag_trees, in::tag_trees): Repurpose.
	(in::finish_namespace, in::finish_function): New.
	(out::write_tree, in::read_tree): Adjust.
	(in::finish): Adjust.

	Some actual tree writing & reading
	gcc/cp/
	* module.c (out::write_core_bools, out::write_core_vals): New.
	(in::read_core_bools, in::read_core_vals): New.
	(in::set_scope): New.
	(out::write_tree, in::read_tree): Call core readers/writers.

	Node length & allocation.  Global trees.
	gcc/cp/
	* module.c (streamer::tags): Rename to ...
	(streamer::record_tag): ... here.  Fixup.
	(out::tag_trees, out::start, out::write_loc): New.
	(in::tag_trees, in::start, in::finish, in::read_loc): New.
	(out::write_tree, in::read_tree): Adjust.
	(write_module): Write global trees.

2017-02-15  Nathan Sidwell  <nathan@acm.org>

	Start of tree reading & writing.  Module namespace fix.
	gcc/cp/
	* cp-tree.h (pop_module_namespace, push_module_namespace): Add flag.
	* parser.c (check_module_outermost, cp_parser_module_export,
	cp_parser_module_proclamation, cp_parser_namespace_definition): Adjust.
	* module.c (pop_module_namespace, push_module_namespace): Add
	flag.
	(reader::read_tree, writer::write_tree): Initial stubs.
	(read_module, write_module, do_import_module, declare_module): Adjust.
	gcc/testsuite/
	* g++.dg/modules/mod-exp-1_a.C: New.
	* g++.dg/modules/mod-exp-1_b.C: New.
	* g++.dg/modules/mod-sym-1.C: Add cases.

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

	gcc/cp/
	* Make-lang.in (CFLAGS-cp/module.o): New var.
	* module.c (reader): Add peek_u.
	(reader::str): Force ending NUL.
	(writer::flush_bits): Avoid infinite recursion.
	(streamer): Extend tags, add next.
	(out, in): Add some readers/writers.
	(read_module, do_import_module, write_module): Augment.
	gcc/testsuite/
	* g++.dg/modules/mod-imp-1_a.C
	* g++.dg/modules/mod-imp-1_b.C
	* g++.dg/modules/mod-imp-1_c.C
	* g++.dg/modules/mod-imp-1_d.C

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

	Start actually writing & reading module files. (headers only)
	gcc/cp/
	* module.c (seriator, reader, writer, streamer, in, out): New
	classes.
	(read_module, do_import_module, write_module, finish_module): Adjust.

	gcc/
	* gengtype-lex.l (<in_struct>): Add '/'.

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

	Dump file
	gcc/
	* dumpfile.h (tree_dump_index): Add TDI_lang.
	(TDF_LANG): New.
	* dumpfile.c (dump_files): Add front-end.
	(dump_option_value_info): Add lang.  Adjust all.
	gcc/cp/
	* cp-tree.h (import_module): Lose is_export parm.
	* module.c: Include dumpfile.h
	(dopen, dclose): New.
	(import_add): Absorb into ...
	(do_import_module): ... here.  Broken out of ...
	(import_module): ... here.  Call it.
	(export_module, declare_module): Adjust.
	(read_module, write_module): Write dump.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-1.C: Adjust.
	* g++.dg/modules/mod-decl-2_b.C: Adjust.
	* g++.dg/modules/mod-decl-5_b.C: Adjust.

	gcc/cp/
	* cp-tree.h (DECL_CHECK): New.
	(NAMESPACE_MODULE_P): Rename to ...
	(MODULE_NAMESPACE_P): ... here.
	(CURRENT_MODULE_NAMESPACE_P): New.
	(MODULE_EXPORT_P): New.
	(import_module): Add is_export param.
	* module.c (mstream, mfname): Delete.
	(imported_modules): Make hash_map.
	(enum import_kind): New.
	(push_module_namespace, pop_module_namespace): Adjust.
	(import_add, import_module, export_module): Adjust.
	(read_module, write_module): New.
	(declare_module, finish_module): Adjust.
	* name-lookup.c (is_ancestor): Adjust.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-5_b.C: Adjust
	* g++.dg/modules/modules.exp: Remote host, tweak module deletion.

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

	gcc/cp/
	* name-lookup.c (is_ancestor): Pop from module namespace root.
	gcc/testsuite/
	* g++.dg/modules/mod-sym-3.C: New.

	Module namespaces
	gcc/cp/
	* cp-tree.h (NAMESPACE_MODULE_P): New.
	(push_module_namespace, pop_module_namespace): Declare.
	* module.c (MOD_SYM_PFX, MOD_SYM_DOT): New.
	(module_namespace_name): New.
	(push_module_namespace, pop_module_namespace): New.
	(module_to_ext): New. Broken out of ...
	(module_to_filename): ... here. Call it.
	(declare_module): Push to module namespace.
	* parser.c (check_module_outermost): Deal with module namespace.
	(cp_parser_module_export, cp_parser_module_proclaimation,
	cp_parser_namespace_definition): Likewise.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-1.C: Adjust.
	* g++.dg/modules/mod-sym-1.C: New.
	* g++.dg/modules/mod-sym-2.C: New.

	Cleanup inline namespace creation.
	gcc/cp/
	* name-lookup.h (make_namespace_inline): Declare.
	* name-lookup.c (do_toplevel_using_directive): New.
	(do_using_directive): Call it.
	(make_namespace_inline): New.
	* parser.c (cp_parser_namespace_definition): Call it.

2017-02-07  Nathan Sidwell  <nathan@acm.org>

	PR c++/79369 inline namespaces
	gcc/cp/
	* cp-tree.h (NAMESPACE_CHECK): New.
	(NAMESPACE_INLINE_P): New.
	* name-lookup.h (push_namespace): Return int.
	* name-lookup.c (push_namespace): Return int. Adjust.
	* parser.c (cp_parser_namespace_definition): Reorder nested
	parsing.  Check inline redefinition.
	gcc/testsuite/
	* g++.dg/cpp0x/pr65558.C: Adjust error loc.
	* g++.dg/cpp0x/pr79369.C: New.
	* g++.dg/cpp1z/nested-namespace-def1.C: Adjust.

2017-02-03  Nathan Sidwell  <nathan@acm.org>

	Module files open/closed.  Testsuite extension
	gcc/cp/
	* module.c (mstream, mfname): New.
	(module_to_filename): New.
	(import_module, declare_module, finish_module): Open/close module file.
	gcc/testsuite/
	* g++.dg/modules/modules.exp (mod_spec_to_file, dg-module-if,
	check_module_specs, cleanup_module_files): New.
	* g++.dg/modules/mod-decl-0.C: Adjust
	* g++.dg/modules/mod-decl-1.C: Adjust
	* g++.dg/modules/mod-decl-2_a.C: Adjust
	* g++.dg/modules/mod-decl-3.C: New.
	* g++.dg/modules/mod-decl-3_a.C: Delete.
	* g++.dg/modules/mod-decl-3_b.C: Delete.
	* g++.dg/modules/mod-decl-4.C: Adjust
	* g++.dg/modules/mod-decl-5_a.C: Adjust
	* g++.dg/modules/mod-decl-5_b.C: Adjust
	* g++.dg/modules/proclaim-1.C: Adjust

	Module names are identifiers.
	gcc/cp/
	* config-lang.in (gtfiles): Add modules.c.
	* c-tree.h (module_name_t): Delete.
	(finish_module): Declare.
	* decl2.c (c_pare_final_cleanups): Call finish_module.
	* module.c: Change module_name_t to tree.
	(imported_module): Hash of module names.
	(import_add): New.
	(import_module, declare_module): Use it.
	(export_module): Import module.
	(finish_module): New.
	* parser.c (cp_parser_module_name): Build up identifier.  Adjust
	callers.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-0.C: Adjust.
	* g++.dg/modules/mod-decl-1.C: Adjust.
	* g++.dg/modules/mod-decl-2_b.C: Adjust.
	* g++.dg/modules/mod-decl-2_c.C: New.
	* g++.dg/modules/mod-decl-5_a.C: New.
	* g++.dg/modules/mod-decl-5_b.C: New.

2017-02-02  Nathan Sidwell  <nathan@acm.org>

	[[interface]]
	gcc/cp
	* cp-tree.h: Adjust module interface fns.
	* modules.c (is_interface): New.
	(push_module_export, pop_module_export, module_exporting_level):
	Adjust.
	(module_proclaim): Delete.
	(module_interface_p): New.
	(declare_module): Use 'interface' attrib.
	(mport_module, export_module): Take attribs.
	* parser.c (check_module_outermost, cp_parser_module_declaration,
	cp_parser_module_export, cp_parser_module_proclamation): Adjust.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-2_a.C: Adjust.
	* g++.dg/modules/mod-decl-3_a.C: Adjust.
	* g++.dg/modules/proclaim-1.C: Adjust.
	* g++.dg/modules/mod-decl-4.C: New.

2017-01-27  Nathan Sidwell  <nathan@acm.org>

	Parse proclaimed ownership.
	gcc/cp/
	* cp-tree.h (module_exporting_p, module_proclaim): Declare.
	* module.c (proclaimer): New.
	(module_exporting_p, module_proclaim): New.
	* parser.c (check_module_outermost): New.
	(cp_parser_module_declaration, cp_parser_module_export): Call it.
	(cp_parser_module_proclamation): New.
	(cp_parser_declaration): Add proclaimed-ownership.
	gcc/testsuite/
	* g++.dg/modules/proclaim-1.C: New.

	Parse import & export.  Test infra.
	gcc/cp/
	* cp-tree.h (module_purview_p, push_module_export,
	pop_module_export, declare_module, import_module,
	export_module): Declare.
	* module.c (export_depth): New.
	(module_purview_p, push_module_export, pop_module_export): New
	(declare_module_name): Renme to ...
	(declare_module): ... here.
	(import_module, export_module): Stubs.
	* parser.c (cp_parser_module_declaration): Add IS_EXPORT
	parm. Deal with imports & exports.
	(cp_parser_module_export): New.
	(cp_parser_declaration): Allow module import, export.
	gcc/testsuite/
	* g++.dg/dg.exp: Prune module tests.
	* g++.dg/modules/modules.exp: New.
	* g++.dg/modules/mod-decl-2_[ab].C: New.
	* g++.dg/modules/mod-decl-3_[ab].C: New.

2017-01-25  Nathan Sidwell  <nathan@acm.org>

	Parse module-declaration.
	gcc/cp
	* cp-tree.h (module_name_t): Typedef.
	(declare_module_name): Declare.
	* parser.c (cp_parser_diagnose_invalid_type_name): Explain
	fmodules.
	(cp_parser_module_name, cp_parser_module_declaration): New.
	(cp_parser_declaration): Add module-declaration.
	* module.c (declared_module, module_location): New.
	(declare_module_name): Define.
	gcc/testsuite/
	* g++.dg/modules/mod-decl-0.C: New.
	* g++.dg/modules/mod-decl-1.C: New.

	New flag & keywords, etc
	gcc/c-family/
	* c-common.c (c_common_reswords): Add 'module', 'import'.
	* c-common.h (enum rid): Add RID_MODULE, RID_IMPORT.
	(D_CXX_MODULES, D_CXX_MODULES_FLAGS) New.
	* c-cppbuiltins.c (c_cpp_builtins): Add _cpp_modules define.
	* c.opt: Add fmodules flag.
	gcc/cp/
	* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add module.o.
	* module.c: New file.
	gcc/
	* doc/invoke.texi (-fmodules): Document it.

2017-01-24  Nathan Sidwell  <nathan@acm.org>

	Free up TREE_LANG_FLAG_3.  DECL_CONSTRUCTION_VTABLE_P is useless.
	gcc/cp/
	* cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): Delete.
	(DECL_NON_TRIVIALLY_INITIALIZED_P): Move to TREE_LANG_FLAG_6.
	* class.c (build_ctor_vtbl_group): Don't set
	DECL_CONSTRUCTION_VTABLE_P.
	* decl2.c (determine_visibility_from_class): Don't check
	DECL_CONSTRUCTION_VTABLE_P anymore.

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

	Branch creation from trunk:244828
	Use this Changelog for all branch changes, including merges.

Local Variables:
mode: change-log
change-log-default-name: "ChangeLog.modules"
End:
