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