Nathan Sidwell
65165eb3f8
Add -f[no-]header-guard-opt
...
Added so that one can determine the include graph from the -E output.
2021-02-03 11:37:35 -08:00
Nathan Sidwell
000bee388b
Merge commit '84110515b93' into devel/c++-modules
2021-02-03 06:48:16 -08:00
Nathan Sidwell
5938a61434
Th, th, th, that's all folks!
2021-01-04 07:59:53 -08:00
Nathan Sidwell
d8d2f7d752
Merge trunk a5469584f6
2021-01-04 07:53:37 -08:00
Nathan Sidwell
0325be5391
Merge trunk 6288183377
2021-01-04 07:21:50 -08:00
Nathan Sidwell
3c0ed58209
Merge trunk e798f08192
2020-12-21 12:21:11 -08:00
Nathan Sidwell
c3975ce1cc
ICE in has_definition
...
gcc/cp/
* module.cc (has_definition): Check VAR_DECL's LANG_SPECIFIC.
gcc/testsuite/
* g++.dg/modules/gvar_[ab].C: New.
2020-12-21 10:32:45 -08:00
Nathan Sidwell
d34124b256
Merge trunk 35b8d26874
2020-12-18 05:02:54 -08:00
Nathan Sidwell
0043138307
Merge trunk 433703843b
2020-12-15 11:26:27 -08:00
Nathan Sidwell
86c10ae324
Merge trunk 0feb237657
2020-12-15 09:36:55 -08:00
Nathan Sidwell
d01e5088e6
Remove comment
...
gcc/
* diagnostic-core.h (progname): Remove comment.
2020-12-14 13:20:15 -08:00
Nathan Sidwell
4295fbcd7a
Merge trunk 62c5ea5228 preprocessor: Deferred macro support
2020-12-14 08:28:12 -08:00
Nathan Sidwell
56318eb629
Named pipe support
...
gcc/cp
* mapper-client.cc (module_client::open_module): Allow named pipes.
gcc/
* doc/invoke.texi (C++ Module Mapper): Document.
2020-12-14 08:14:43 -08:00
Nathan Sidwell
bfe96878c6
Update deferred macro fields
...
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-14 08:14:43 -08:00
Nathan Sidwell
bb2e188ed7
Merge trunk 9324f7a25c c++: Avoid considering some conversion ops
2020-12-11 19:53:04 -05:00
Nathan Sidwell
68f0e5e053
Code cleanup
...
gcc/cp/
* decl2.c (c_parse_final_cleanups): Refactor.
2020-12-11 09:22:34 -08:00
Nathan Sidwell
0b6270c1d0
Merge trunk 1c6b86b50d c++: module test harness
2020-12-11 08:45:02 -08:00
Nathan Sidwell
1a03a5316b
Merge trunk e6e4b20de3 c++: name lookup API for modules
2020-12-10 13:28:23 -08:00
Nathan Sidwell
e6e4b20de3
c++: name lookup API for modules
...
This adds a set of calls to name lookup that are needed by modules.
Generally installing imported bindings, or walking the current TU's
bindings. One note about template instantiations though. When we're
about to instantiate a template we have to know about all the
maybe-partial specializations that exist. These can be in any
imported module -- not necesarily the module defining the template.
Thus we key such foreign templates to the innermost namespace and
identifier of the containing entitity -- that's the only thing we have
a handle on. That's why we note and load pending specializations here.
gcc/cp/
* module.cc (lazy_specializations_p): Stub.
* name-lookup.h (append_imported_binding_slot)
(mergeable_namespacE_slots, lookup_class_binding)
(walk_module_binding, import_module_binding, set_module_binding)
(note_pending_specializations, load_pending_specializations)
(add_module_decl, add_imported_namespace): Declare.
(get_cxx_dialect_name): Declare.
(enum WMB_flags): New.
* name-lookup.c (append_imported_binding_slot)
(mergeable_namespacE_slots, lookup_class_binding)
(walk_module_binding, import_module_binding, set_module_binding)
(note_pending_specializations, load_pending_specializations)
(add_module_decl, add_imported_namespace): New.
(get_cxx_dialect_name): Make extern.
2020-12-10 13:10:25 -08:00
Nathan Sidwell
ca79818f73
Merge trunk 4f1d8bd509 c++: modules & using-decls
2020-12-10 12:18:26 -08:00
Nathan Sidwell
ff3f561afe
Merge trunk afc14c8d0a c++: modularize spelling suggestions
2020-12-10 08:51:13 -08:00
Nathan Sidwell
5411a232ab
Remove unneeded tweaks
...
gcc/cp/
* name-lookup.c (member_vec_dedup): Remove gratuitous chaining.
(check_local_shadow): No need to check for clone.
2020-12-09 12:55:07 -08:00
Nathan Sidwell
7aa1b6fd42
Merge trunk e4c3ec980f c++: Module-specific error and tree dumping
2020-12-09 12:33:55 -08:00
Nathan Sidwell
e4c3ec980f
c++: Module-specific error and tree dumping
...
With modules, we need the ability to name 'foos' in different modules.
The idiom for that is a trailing '@modulename' suffix. This adds that
to the error printing routines. I also augment the tree dumping
machinery to show module-specific metadata.
gcc/cp/
* error.c (dump_module_suffix): New.
(dump_aggr_type, dump_simple_decl, dump_function_name): Call it.
* ptree.c (cxx_print_decl): Print module information.
* module.cc (module_name, get_importing_module): Stubs.
2020-12-09 12:20:53 -08:00
Nathan Sidwell
f87b20c032
c++: name-lookup cleanups
...
Name-lookup is the most changed piece of the front end for modules.
Here are some preparatort cleanups and API extensions.
gcc/cp/
* name-lookup.h (set_class_bindings): Return vector, take signed
'extra' parm.
* name-lookup.c (maybe_lazily_declare): Break out ...
(get_class_binding): .. of here, call it.
(find_member_slot): Adjust get_class_bindings call.
(set_class_bindings): Allow -ve extra. Return the vector.
(set_identifier_type_value_with_scope): Remove checking assert.
(lookup_using_decl): Set decl's context.
(do_pushtag): Adjust set_identifier_type_value_with_scope handling.
2020-12-09 12:20:53 -08:00
Nathan Sidwell
a873eca894
Pre-merge cleanups
...
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.
2020-12-09 05:54:10 -08:00
Nathan Sidwell
8cbe9fd263
Merge trunk cf97b970fe c++: Decl module-specific semantic processing
2020-12-09 05:01:29 -08:00
Nathan Sidwell
22dd3773a0
Merge trunk 570c312c03 c++: Originating and instantiating module
2020-12-08 12:42:48 -08:00
Nathan Sidwell
1de7ca5efe
Merge trunk dded5f78cc c++: template and clone fns for modules
2020-12-08 11:48:10 -08:00
Nathan Sidwell
6fcee7f194
Merge trunk 0bd4fecbea c++: Fix MODULE_VERSION breakage
2020-12-08 11:30:45 -08:00
Nathan Sidwell
b0db6b0b5e
Adjust duplicate checker
...
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.
2020-12-07 12:09:24 -08:00
Nathan Sidwell
f52faf7c78
Merge trunk ffb268ffcf c++: Adjust array type construction
2020-12-07 09:14:11 -08:00
Nathan Sidwell
e968f107df
Merge trunk 5a26d4a204 c++: Revert dependent-array changes
2020-12-04 08:59:31 -08:00
Nathan Sidwell
f963b2b0b0
Merge trunk 97eaf8c92f c++: Module API declarations
2020-12-04 05:45:03 -08:00
Nathan Sidwell
a49c711e57
Merge trunk 62fb1b9e0d c++: Fix array type dependency [PR 98107]
2020-12-03 08:55:53 -08:00
Nathan Sidwell
d76a624571
Fix noncanonical_target
...
c++tools/
* configure.ac: Need ACX_NONCANONICAL_TARGET
* configure: Rebuilt.
2020-12-03 06:51:46 -08:00
Nathan Sidwell
8a9aaaf7c1
c++tools: fix typo
...
c++tools/
* Makefile.in (libexecdir): Fix typo.
2020-12-03 06:17:49 -08:00
Nathan Sidwell
ead3c5394d
More documentation
...
gcc/
* doc/invoke.texi (C++ Modules): Add CMI section.
2020-12-02 15:06:45 -05:00
Nathan Sidwell
fd5e5a257b
Merge some lang_decl flags
...
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.
2020-12-02 11:28:51 -08:00
Nathan Sidwell
67c23df4fa
Merge trunk 05f7a2afe8 C++ Module Binding Vector
2020-12-02 06:34:57 -08:00
Nathan Sidwell
6420399409
Merge trunk 41676a36a0 C++ Module keywords
2020-12-02 05:41:56 -08:00
Nathan Sidwell
89611c477c
A Grand Renaming -- Crackin'!
...
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.
2020-12-02 05:25:26 -08:00
Nathan Sidwell
a2ece73254
Move struct module_vector
...
gcc/cp/
* cp-tree.h (struct tree_module_vec): Move to ...
* name-lookup.h (struct tree_module_vec): ... here.
2020-12-02 04:52:07 -08:00
Nathan Sidwell
12930302c2
Rename a struct
...
gcc/cp/
* lex.c (struct token_coro): Rename to ...
(struct module_token_filter): ... here. Adjust through out.
2020-12-02 04:39:35 -08:00
Nathan Sidwell
dfdce31c9e
libcody: Update from upstream, removing deprecated functions.
2020-12-01 10:40:38 -08:00
Nathan Sidwell
ee1460b684
Merge trunk 855bb43f6d
2020-12-01 09:18:56 -08:00
Nathan Sidwell
b1ee8f1468
Merge trunk eae68c434f testsuite: Adjust pruning
2020-12-01 08:33:45 -08:00
Nathan Sidwell
6e1fc16ff9
Merge trunk 83a1beee27 libstdc++: Add C++2a synchronization support
2020-12-01 07:54:15 -08:00
Nathan Sidwell
25ed79ba13
Fix noexcept circularity
...
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-12-01 07:19:42 -08:00
Nathan Sidwell
7c6ac2a899
Documentation updates
...
gcc/
* doc/invoke.texi: Updates from review.
2020-11-30 05:06:56 -08:00
Nathan Sidwell
e9bbe7ce0b
Merge trunk 89d9c634dc
2020-11-24 05:36:59 -08:00
Nathan Sidwell
3453ca9c92
Note some potential issues
...
gcc/cp/
* Make-lang.in: Don't depend VERSION on src dir.
* module.cc: Note some potential issues.
2020-11-24 05:36:08 -08:00
Nathan Sidwell
505e63fe26
Add flang-include-translate-not
...
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.
2020-11-24 05:35:58 -08:00
Nathan Sidwell
0e9a89a169
Include translate finesse
...
libcody/
Update from upstream, INCLUDE_TRANSLATE response meaning change
2020-11-23 04:51:57 -08:00
Nathan Sidwell
5a52a0a4a1
Doc fixes
...
gcc/
* doc/invoke.texi: Fixes.
2020-11-20 12:10:16 -05:00
Nathan Sidwell
535f1eaf8d
libcody: Update from upstream.
2020-11-20 07:37:20 -08:00
Nathan Sidwell
a089fe1fbb
Adjust template spec accessor
...
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.
2020-11-20 07:23:14 -08:00
Nathan Sidwell
e225fe8f4f
Remove erraneous doc delete
2020-11-20 10:16:37 -05:00
Nathan Sidwell
eb6351eac9
Update docs
...
gcc/
* doc/invoke.texi: Update
* doc/cppopts.texi: Update
2020-11-20 10:11:14 -05:00
Nathan Sidwell
02d6056179
Merge trunk 5bba2215c2 c++: Template hash access
2020-11-20 04:30:57 -08:00
Nathan Sidwell
0ef7a82c24
Merge trunk bf425849f1 preprocessor: main-file cleanup
2020-11-19 04:59:15 -08:00
Nathan Sidwell
3e3a50eb0c
Tidy up preprocess_undef lang_hook
...
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.
2020-11-18 13:13:32 -08:00
Nathan Sidwell
9a9d2e6556
Tidy up main_file detection
...
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.
2020-11-18 13:12:50 -08:00
Nathan Sidwell
49a91b6fe2
Merge trunk 92648faa1c
...
08-cpp-mkdeps.diff
05-cpp-files.diff
04a-cpp-lexer.diff
32-aix-fixincl.diff
2020-11-18 11:55:38 -08:00
Nathan Sidwell
057222167c
Merge trunk d3ae802402
...
01-langhooks.diff
02-cpp-line-maps.diff
03-cpp-callbacks.diff
19-global-trees.diff
21a-int-cst.diff
2020-11-18 04:50:39 -08:00
Nathan Sidwell
99c594dda5
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.
2020-11-16 10:34:25 -08:00
Nathan Sidwell
2d23df6e99
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.
2020-11-16 09:36:47 -08:00
Nathan Sidwell
d3af74a5cf
Merge trunk 63496cbea5
2020-11-16 05:14:36 -08:00
Nathan Sidwell
33ef7083da
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-16 04:53:47 -08:00
Nathan Sidwell
2711152d89
Merge trunk d50310408f c++: Implement C++20 'using enum'
2020-11-13 11:18:24 -08:00
Nathan Sidwell
aab3efb1b2
Merge trunk e3b3b59683
2020-11-13 10:56:59 -08:00
Nathan Sidwell
286a25f3b6
Fix libiberty linking
...
* g++tools/Makefile.in (LIBIBERTY): New.
2020-11-13 09:02:28 -08:00
Nathan Sidwell
6393b1f93a
Merge trunk 5fa821bba73#
2020-11-13 05:20:55 -08:00
Nathan Sidwell
c265470c48
Merge trunk 7f851c3341 libstdc++: Fix __numeric_traits_integer<__int20>
2020-11-12 12:06:03 -08:00
Nathan Sidwell
f41bab85db
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.
2020-11-12 11:44:15 -08:00
Nathan Sidwell
49305748e8
Fix some configure errors
...
* Makefile.def: Fix g++ check implications.
* Makefile.in: Rebuilt.
gcc/
* config.in: Rebuilt.
* configure: Rebuilt.
* configure.ac: Remove unneeded checks
gcc/cp/
2020-11-12 09:02:34 -08:00
Nathan Sidwell
3d7945021a
Merge trunk 3c3beb1a81
2020-11-12 08:05:39 -08:00
Nathan Sidwell
db742646c1
Update to new Cody::Resolver API
...
c++tools/
* resolver.h (module_resolver): Update to new API.
* resolver.cc (module_resolver): Likewise.
2020-11-11 09:54:30 -08:00
Nathan Sidwell
257f541310
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.
2020-11-11 06:25:33 -08:00
Nathan Sidwell
0835527413
Add mapper flags support
...
c++tools/
* mapper.h (class mapper_client): Add flag support.
gcc/cp/
* mapper-client: Likewise.
* module.cc (maybe_translate_include): Likewise.
(preprocessed_module): Likewise.
2020-11-10 11:58:38 -08:00
Nathan Sidwell
6bfad31b62
Rebase libcody -- $flag support.
...
libcody/
Rebase on upstream -- $flag support.
2020-11-10 11:54:25 -08:00
Nathan Sidwell
2e6ccb7833
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: Movedfrom 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-10 10:12:17 -08:00
Nathan Sidwell
47a70f40ef
Merge trunk e38cd64ac6 c++: ADL refactor
2020-11-09 05:27:36 -08:00
Nathan Sidwell
3658892018
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-09 04:51:00 -08:00
Nathan Sidwell
0986ce3ae9
Merge trunk 4b5f564a5d libcpp: Provide date routine
2020-11-06 10:27:15 -08:00
Nathan Sidwell
98186da5a2
Document cache_integer_cst
...
gcc/
tree.c (cache_integer_cst): Document API.
2020-11-06 09:04:49 -08:00
Nathan Sidwell
130faab585
Alter revision setting
...
gcc/cp/
* Make-lang.in: Drop git hash collection.
gcc/
* REVISION: New.
2020-11-06 05:55:31 -08:00
Nathan Sidwell
4a919dcc71
Revert some local changes
...
gcc/cp/
* parser.c (cp_parser_diagnose_invalid_type_name): Revert local
changes.
2020-11-06 05:28:11 -08:00
Nathan Sidwell
9582481c72
Genericize time API
...
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-06 05:27:05 -08:00
Nathan Sidwell
484c64ebaf
support SOURCE_DATE_EPOCH
...
gcc/cp/
* module.cc (module_state::write_Readme): Add cpp_reader parm, use
cb_get_source_data_epoch to see if the time is locked.
2020-11-05 12:53:23 -08:00
Nathan Sidwell
8ab6ed9c4f
Fixup merge kind enum
...
gcc/cp/
* module.cc (enum merge_kind): Minor remapping.
(merge_kind_name): Adjust.
2020-11-05 12:28:17 -08:00
Nathan Sidwell
ddae3c4f2e
Remove now-unreachable tmpl_partial handling
...
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.
2020-11-05 12:06:33 -08:00
Nathan Sidwell
02dd63c9e6
Replace EK_DECL + DB_PARTIAL_BIT with EK_PARTIAL
...
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.
2020-11-05 11:32:10 -08:00
Nathan Sidwell
c6a08b99e7
Constrained partial specializations
...
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.
2020-11-05 08:01:58 -08:00
Nathan Sidwell
4c56b02498
Adjust module-mapper path search behaviour
...
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-05 05:33:47 -08:00
Nathan Sidwell
a331aa92fb
fix scan for i686
...
gcc/testsuite/
* g++.dg/modules/builtin-3_[ab].C: Adjust for i686
2020-11-04 07:19:34 -08:00
Nathan Sidwell
1c548a8f65
Fix i686 build failure
...
gcc/cp/
* mapper-resolved.cc: define INCLUDE_ALGORITHM.
2020-11-04 06:55:37 -08:00
Nathan Sidwell
dbce8dbd1b
Merge trunk a52bf01643 c++: using-decl instantiation
2020-11-03 10:36:50 -08:00
Nathan Sidwell
0ecda01a12
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
2020-11-03 10:35:56 -08:00
Nathan Sidwell
cbf381f3e1
Merge trunk 444655b6f0 c++: cp_tree_equal cleanups
2020-11-03 06:40:09 -08:00
Nathan Sidwell
b269b6ce45
Remove unneeded fn
...
libcpp/
* include/cpplib.h (cpp_enable_filename_token): Delete.
* macro.c (cpp_enable_filename_token): Delete.
2020-11-03 05:56:17 -08:00
Nathan Sidwell
c385d545b0
Merge trunk b2a31e2c34
2020-11-02 06:28:38 -08:00
Nathan Sidwell
41710c43ad
Kill obsolete FIXME
...
gcc/cp/
* module.cc (module_state::write_elf): Remove obsolete FIXME.
2020-11-02 04:58:50 -08:00
Nathan Sidwell
bd3edcc6e0
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.
2020-10-30 10:35:50 -07:00
Nathan Sidwell
46337895de
More FIXMEs
2020-10-30 09:09:25 -07:00
Nathan Sidwell
81b4ae98a7
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.
2020-10-30 07:55:24 -07:00
Nathan Sidwell
f3bd075e5b
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-30 06:19:20 -07:00
Nathan Sidwell
f129054735
Fixme addressing
2020-10-29 14:04:29 -07:00
Nathan Sidwell
db9d03292b
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.
2020-10-29 13:24:51 -07:00
Nathan Sidwell
1dd2d6c253
Fix FIXMEs
...
gcc/cp/
* module.cc (trees_out::get_merge_kind): Resolve FIXMEs.
(trees_out::key_mergeable): Likewise.
2020-10-29 10:24:34 -07:00
Nathan Sidwell
7e388a776a
Check function-scope nameable decls are typedefs
...
gcc/cp/
* module.cc (trees_out::get_merge_kind): Only function-scope
entities we meet are implicit TYPE_DECLs.
2020-10-29 09:37:58 -07:00
Nathan Sidwell
1679952c7a
Merge trunk 9703b8d98c c++: Stop (most) function-scope entities having a template header
2020-10-29 08:48:20 -07:00
Nathan Sidwell
6cf1a723f8
Merge trunk bafcf452c7 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.
2020-10-29 08:23:30 -07:00
Nathan Sidwell
7105aeb958
Merge trunk 53dede0f04 CSE conversions within sincos
2020-10-29 07:54:45 -07:00
Nathan Sidwell
e6a58c9189
Merge trunk 4289e488dd c++: Make OMP UDR DECL_LOCAL_DECL_P earlier
2020-10-28 11:49:19 -07:00
Nathan Sidwell
c7c4e6db5e
Merge trunk 7d5f38e49e c++: Refactor push_template_decl
2020-10-28 08:26:32 -07:00
Nathan Sidwell
95ca0ee653
More FIXMEs
...
gcc/cp/
* module.cc: More FIXME addressing.
(trees_out::get_merge_kind): Assert function-scope entities are
not unexpected.
2020-10-28 07:24:47 -07:00
Nathan Sidwell
6c2dc8d4a3
Address FIXMES
...
gcc/cp/
* module.cc: More FIXME fixing.
2020-10-28 05:57:02 -07:00
Nathan Sidwell
c8125a20de
Fix various -xc++-header flags
...
gcc/cp/
* lang-specs.h: Fix -xc++-{,user-,system-}header.
2020-10-28 05:35:42 -07:00
Nathan Sidwell
c99d1f0b66
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.
2020-10-27 12:59:06 -07:00
Nathan Sidwell
3443305d12
Add tr1 as header unit
...
gcc/testsuite/
* g++.dg/modules/xtreme-tr1{.h,_a.H,_b.C}: New.
2020-10-27 12:38:33 -07:00
Nathan Sidwell
df57ef6f2e
Anonymous members with typedef name
...
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.
2020-10-27 12:29:42 -07:00
Nathan Sidwell
f5f2ca3000
Address a couple of FIXMEs
...
gcc/cp/
* module.cc (depset_cmp): Decide strcmp question.
(module_state::write_prepare_maps): Document pruning question.
2020-10-27 10:35:52 -07:00
Nathan Sidwell
a8f8a80306
nested udts are not a thing
...
gcc/cp/
* module.cc (trees_{in,out}::{read,write}_class_def): Remove
nested udt FIXMEs. They are no longer a thing.
2020-10-27 10:24:02 -07:00
Nathan Sidwell
c06eb13861
Merge trunk 54380d42e6 c++: Kill nested_udts
2020-10-27 10:21:34 -07:00
Nathan Sidwell
1bcfe77203
Type attributes
...
gcc/cp/
* module.cc (trees_{in,out{::type_node): Stream attribs.
2020-10-26 12:31:23 -07:00
Nathan Sidwell
2bd8a7ca3d
Aligned type support
...
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.
2020-10-26 10:52:21 -07:00
Nathan Sidwell
cb8c13729c
More FIXME resolution
...
gcc/cp/
* module.cc (trees_{in,out}::tree_list): Address more Fixmes,
either by obsoleting them, or coding around their confusion.
2020-10-26 10:26:14 -07:00
Nathan Sidwell
8cabe89e17
libcody rebase
...
libcody/
Rebase on upstream, robustify enable-checking.
2020-10-26 09:51:40 -07:00
Nathan Sidwell
059a635068
Avoid nreverse on readback
...
gcc/cp/
* module.cc (trees_{in,out}::tree_list): New streamers.
(trees_{in,out}::{read,write}_class_def): Use them.
2020-10-26 06:41:50 -07:00
Nathan Sidwell
a63681e296
More FIXME resolving, mainly in documentation
...
gcc/cp/
* module.cc: Remove or clarify more now-obsolete FIXMEs.
2020-10-26 05:55:25 -07:00
Nathan Sidwell
2d1e598895
Clarify FIXMES in documentation
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Document
middle-endy/debugy BLOCK fields. Document OPTIMIZATION_NODE &
TARGET_OPTION_NODE issue.
2020-10-26 05:21:41 -07:00
Nathan Sidwell
a0d842c128
Fix RESULT_DECL streaming
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): RESULT_DECL is like PARM_DECL.
2020-10-26 05:21:22 -07:00
Nathan Sidwell
3931fe3d77
Rebase libcody, fix bootstrap
...
libcody/
Rebase on upstream, fix enable-checking & bootstrap
2020-10-26 04:55:04 -07:00
Nathan Sidwell
11e0a02ed6
Suspicious FIXME is obsolete
...
gcc/cp/
* module.cc (trees_in::chained_decls): Chain should always be null.
2020-10-26 04:54:00 -07:00
Nathan Sidwell
ac089f0a16
libcody rebase
...
libcody/
Rebase on upstream, collect new autoconf bits.
2020-10-26 04:26:00 -07:00
Nathan Sidwell
9c31225a43
Address some FIXMEs
...
gcc/cp/
* module.cc: Address 3 now-irrelevant FIXMES.
2020-10-23 12:26:24 -07:00
Nathan Sidwell
cf17ae6ada
Reorder enum merge_kind
...
gcc/cp/
* module.cc (enum merge_kind): Reorder.
(merge_kind_name): Likewise.
2020-10-23 12:09:01 -07:00
Nathan Sidwell
e20d6929a6
Merge trunk cd8b7d7b24
...
Link with the configured net lib on vxworks7
2020-10-23 10:25:06 -07:00
Nathan Sidwell
2ef34e81b2
Merge trunk e957b86ca2
...
libstdc++: Rebase include/pstl to current upstream
gcc/testsuite/
PR 97549 workaround
* g++.dg/modules/xtream-header{,-2}.h: Don't include <exception>.
2020-10-23 10:24:29 -07:00
Nathan Sidwell
bf53df8813
Merge trunk 310fe80bab
...
Fortran: class.c - update vtable comment
2020-10-23 07:38:33 -07:00
Nathan Sidwell
24501a7519
More windows host bits
...
gcc/cp/
* mapper-server.cc: Disable networking when not available.
2020-10-23 07:03:37 -04:00
Nathan Sidwell
d963288e3a
More windows defense
...
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.
2020-10-22 18:37:07 -04:00
Nathan Sidwell
de3ad5aa97
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.
2020-10-22 11:53:02 -07:00
Nathan Sidwell
0cd3c276ab
function arg contexts
...
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.
2020-10-22 08:57:44 -07:00
Nathan Sidwell
d028af9e5f
libcody update
...
libcody/
* fatal.cc: noexcept fix from Iain Sandoe.
2020-10-22 10:59:41 -04:00
Nathan Sidwell
215d369942
Anticipated builtin smashing
...
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.
2020-10-22 05:13:32 -07:00
Nathan Sidwell
6246418aa4
Module mapper networking enablement
...
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-22 07:46:04 -04:00
Nathan Sidwell
ec6be390c6
Do not install libcody
...
* Makefile.def: Don't build libcody for build. Do not install it
either.
* Makefile.in: Rebuilt.
2020-10-21 17:45:01 -04:00
Nathan Sidwell
f7bac0295d
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.
2020-10-21 11:02:47 -07:00
Nathan Sidwell
853067ac5e
Trivial darwin test fix
...
gcc/testsuite/
* g++.dg/modules/builtin-3_[ab].C: Scans for darwin, thanks Iain
2020-10-21 12:37:20 -04:00
Nathan Sidwell
385f83480f
AIX fixinclude
...
fixincludes/
* inclhack.def (aix_physadr_t): New.
* fixincl.x: Regenerated.
2020-10-21 10:43:42 -04:00
Nathan Sidwell
62d7aae08f
AIX test fix
...
gcc/testsuite/
* g++.dg/modules/literals-1_[ab].C: Add -Wno-psabi
2020-10-21 06:14:43 -07:00
Nathan Sidwell
43d3295555
libcody fix
...
gcc/
* Makefile.in (INCLUDES): Add $(CODYINC).
2020-10-20 12:23:55 -07:00
Nathan Sidwell
1a32988713
AIX sed fix
...
gcc/cp/
* Make-lang.in (GIT_INFO): Support stricter seds.
2020-10-20 12:23:02 -07:00
Nathan Sidwell
cdaf02a04d
Local-extern fix
...
gcc/cp
* name-lookup.c (push_local_extern_decl_alias): Fix default arg bug.
2020-10-20 12:22:01 -07:00
Nathan Sidwell
225c2bdd6f
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.
2020-10-20 11:04:25 -07:00
Nathan Sidwell
413b468076
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.
2020-10-20 09:34:10 -07:00
Nathan Sidwell
b97e108859
Add libcody source
...
* libcody/: Import by value.
2020-10-20 09:33:51 -07:00
Nathan Sidwell
ea1205e3bb
AIX madvise fix
...
gcc/cp/
* module.cc (elf_in::begin): Fix madvise on AIX.
2020-10-20 07:33:46 -07:00
Nathan Sidwell
d502e14d8f
Fix non-mapped file io
...
gcc/cp/
* module.cc: Add testing for non-mmapped access.
(elf_out::grow): Assert aligned at start.
(elf_out::write): Align afterwards.
2020-10-19 12:49:14 -07:00
Nathan Sidwell
f5a64e960c
Fix arm test fail
...
gcc/testsuite/
* g++.dg/modules/sym-subst-3_a.C: Some assemblers say .global.
2020-10-19 09:28:45 -07:00
Nathan Sidwell
cf8ab1c0a4
Fix macro locs on darwin and ppc-linux (and probably others)
...
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-19 09:18:43 -07:00
Nathan Sidwell
2ec0cbf131
Merge trunk ccb4f20cbe
2020-10-16 11:58:51 -07:00
Nathan Sidwell
4c19fa0e25
exporting using decl
...
gcc/cp/
* name-lookup.c (do_nonmember_using_decl): Fix duplication case.
2020-10-16 10:59:20 -07:00
Nathan Sidwell
ed9415022f
Simplify binding callback API
...
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.
2020-10-15 12:11:07 -07:00
Nathan Sidwell
eb7a9f02da
Header unit static inits
...
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.
2020-10-15 11:19:30 -07:00
Nathan Sidwell
62406deca5
Remove internal-linkage kludge
...
gcc/cp/
* module.cc (depset::hash::finalize_dependencies): Remove
pre-p2003 kludge.
2020-10-14 12:49:07 -07:00
Nathan Sidwell
9b71f432d2
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.
2020-10-14 12:15:57 -07:00
Nathan Sidwell
822d875cc5
Resolve pt.c FIXMEs
...
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.
2020-10-14 11:17:19 -07:00
Nathan Sidwell
b7c73fc949
Merge trunk 068644a149 (c++: DECL_FRIEND_P cleanup)
2020-10-14 10:49:20 -07:00
Nathan Sidwell
40513f1fb1
Merge trunk 06bec55e80
2020-10-14 10:31:47 -07:00
Nathan Sidwell
b4d0492028
Remove some obsolete fixmes
...
gcc/cp/
* decl.c (duplicate_decls): Remove obsolete FIXME.
* pt.c (push_template_decl): Remove about-to-be obsolete FIXME.
2020-10-14 10:06:36 -07:00
Nathan Sidwell
808df6317c
Defining an import
...
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-14 10:05:20 -07:00
Nathan Sidwell
5730436827
Document unicode plan
...
libcpp/
* lex.c (do_peek_module): Update plan for unicode.
2020-10-09 09:15:10 -07:00
Nathan Sidwell
b37aaf57ec
fmodule-implicit-inline comment
...
gcc/cp/
* decl.c (grokmethod): Remove comment about -fmodule-implicit-inline.
2020-10-09 08:30:07 -07:00
Nathan Sidwell
3152c118ca
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.
2020-10-09 08:21:30 -07:00
Nathan Sidwell
363f58ec8b
Remove unused code
...
gcc/cp/
* friend.c (add_friend): Remove #if'd out code
2020-10-09 07:51:18 -07:00
Nathan Sidwell
aad9dacffc
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.
2020-10-09 07:48:07 -07:00
Nathan Sidwell
98e9001194
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.
2020-10-09 07:47:57 -07:00
Nathan Sidwell
8047291fa5
Clean up mangling documentation
...
gcc/cp/
* mangle.c (write_module): Update grammar description.
* module.cc (module_state::mangle): Clarify why partitions might
be significant.
2020-10-09 06:44:25 -07:00
Nathan Sidwell
563a32906f
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-09 06:06:25 -07:00
Nathan Sidwell
767eedddf4
Merge trunk d1c566d72d
2020-10-09 03:48:07 -07:00
Nathan Sidwell
a847e5c151
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-08 12:17:13 -07:00
Nathan Sidwell
3018e16e73
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-08 11:57:58 -07:00
Nathan Sidwell
d136cdaa41
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.
2020-10-08 09:59:20 -07:00
Nathan Sidwell
12234ffe6c
Location shortage note
...
gcc/cp/
* module.cc (module_state::read_prepare_maps): Only inform of
location shortage once.
2020-10-08 05:20:27 -07:00
Nathan Sidwell
4e65e528f3
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.
2020-10-08 04:55:24 -07:00
Nathan Sidwell
f5f9f2debe
Merge trunk 4e62aca0e0 (c++: block-scope externs get an alias)
2020-10-07 08:33:31 -07:00
Nathan Sidwell
dc91b82fab
Merge trunk e089e43365
2020-10-07 07:59:20 -07:00
Nathan Sidwell
7839315180
Merge trunk 255aa06d40
2020-10-07 07:25:05 -07:00
Nathan Sidwell
8150ef4e30
Merge trunk bf490f0636
2020-10-07 07:11:05 -07:00
Nathan Sidwell
1371d2fd7c
c++: Make spell corrections consistent
...
My change to namespace-scope spell corrections ignored the issue that
different targets might have different builtins, and therefore perturb
iteration order. This fixes it by using an intermediate array of
identifier, which we sort before considering.
gcc/cp/
* name-lookup.c (maybe_add_fuzzy_decl): New.
(maybe_add_fuzzy_binding): New.
(consider_binding_level): Use intermediate sortable vector for
namespace bindings.
gcc/testsuite/
* c-c++-common/spellcheck-reserved.c: Restore diagnostic.
2020-10-05 07:00:58 -07:00
Nathan Sidwell
52ab3aea01
Merge trunk 679dbc9dce (c++: Kill DECL_ANTICIPATED)
2020-10-02 13:54:58 -07:00
Nathan Sidwell
c24f808c49
Merge trunk 7ee1c0413e (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.
2020-10-02 13:29:52 -07:00
Nathan Sidwell
494311c339
Merge trunk 9340d1c97b (c++: cleanup ctor_omit_inherited_parms)
2020-10-02 13:09:16 -07:00
Nathan Sidwell
bf62288a8b
Merge trunk 3158482466
2020-10-02 12:50:50 -07:00
Nathan Sidwell
af5b22ea82
Merge trunk dfaa24c974 (c++: Kill DECL_HIDDEN_P)
2020-10-02 12:37:28 -07:00
Nathan Sidwell
6aff291867
Remove DECL_HIDDEN use from modules
...
gcc/cp/
* name-lookup.c (walk_module_binding): Update for new HIDDEN markers.
2020-10-02 12:27:00 -07:00
Nathan Sidwell
33fd0e7ffb
Merge trunk c2978b3405
2020-10-02 12:04:06 -07:00
Nathan Sidwell
baaabe0523
Merge trunk c2978b3405
2020-10-01 12:25:29 -07:00
Nathan Sidwell
437d6ec6cc
Missed commit
2020-10-01 11:23:35 -07:00
Nathan Sidwell
2bb414bcb5
c++: Kill DECL_HIDDEN_FRIEND_P (trunk 734eed6853)
2020-10-01 09:58:20 -07:00
Nathan Sidwell
a329d25fb7
Merge trunk 65167982ef
2020-10-01 06:56:51 -07:00
Nathan Sidwell
81b83669df
Merge trunk 7cbfe0894d
2020-10-01 06:27:10 -07:00
Nathan Sidwell
bc57d1f5d1
Merge trunk adcf8a11c7
2020-10-01 05:59:06 -07:00
Nathan Sidwell
bf42cd2284
Merge trunk cc61827b55
2020-10-01 05:32:26 -07:00
Nathan Sidwell
5e13acd2be
Merge trunk 39a27bb01a
2020-09-30 19:16:03 -07:00
Nathan Sidwell
0d893c686e
Merge trunk c74e6f7cfd
2020-09-30 14:44:01 -07:00
Nathan Sidwell
9dd9897ed3
c++: Hiddenness is a property of the symbol table (trunk 7cbfe0894d)
2020-09-30 13:26:08 -07:00
Nathan Sidwell
9be6759067
c++: Name lookup simplifications (trunk adcf8a11c7)
2020-09-30 12:00:54 -07:00
Nathan Sidwell
c109cb9336
c++: Identifier type value should not update binding (trunk cc61827b55)
2020-09-30 11:08:24 -07:00
Nathan Sidwell
23841c9ab8
c++: Adjust pushdecl/duplicate_decls API (merge c74e6f7cfd)
2020-09-30 10:40:50 -07:00
Nathan Sidwell
852d73592c
Prepare ovl_using for merge
...
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.
2020-09-30 09:35:15 -07:00
Nathan Sidwell
0106c98b91
c++: Replace tag_scope with TAG_how (merge 00aaae03db)
2020-09-30 07:30:51 -07:00
Nathan Sidwell
f5f068505a
Merge trunk 0d8f3f612d
2020-09-30 07:09:30 -07:00
Nathan Sidwell
298eb88294
Merge trunk d13c0ae859
2020-09-24 20:43:55 -04:00
Nathan Sidwell
7a4d1524b3
Merge trunk cd6743e9c4
2020-09-14 12:21:08 -07:00
Nathan Sidwell
650163b267
Assert assumptions
...
gcc/cp/
* module.cc (trees_out::get_merge_kind): Add asserts & FIXMEs.
2020-09-14 12:03:48 -07:00
Nathan Sidwell
ec1fefe043
Use VAR_OR_FUNCTION_DECL_P
...
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.
2020-09-14 10:34:45 -07:00
Nathan Sidwell
d02ded08f5
Merge trunk d106029c2a
2020-09-14 07:03:59 -07:00
Nathan Sidwell
7ffecad5c8
Merge trunk 10f51543bb
...
libstdc++: Add compile-time checks to__glibcxx_assert [PR 71960]
2020-09-14 06:33:38 -07:00
Nathan Sidwell
a1fed5312e
Concepts and local externs
...
gcc/cp/
* decl.c (grokfndecl): Don't attach to local extern.
gcc/testsuite/
* concepts/local-extern.C: New.
2020-09-14 05:54:19 -07:00
Nathan Sidwell
33be02f918
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-14 05:54:18 -07:00
Nathan Sidwell
84f2dc7a13
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.
2020-09-14 05:54:18 -07:00
Nathan Sidwell
065650c9da
Add 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-14 05:54:07 -07:00
Nathan Sidwell
b63aa6567e
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-14 04:56:09 -07:00
Nathan Sidwell
4949a75130
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-12 10:58:03 -04:00
Nathan Sidwell
051f07cfa4
Merge trunk 8bc0f24d7a
2020-09-03 07:29:35 -07:00
Nathan Sidwell
3cb5b2bc2f
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-03 05:33:35 -07:00
Nathan Sidwell
3a846b5f96
include-next should not be xlated
...
libcpp/
* files.c (_cpp_stack_file): Don't try and xlate include-next.
2020-09-02 12:06:39 -07:00
Nathan Sidwell
0a3599b598
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.
2020-09-02 12:05:45 -07:00
Nathan Sidwell
a73506a776
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-09-02 05:21:45 -07:00
Nathan Sidwell
7d342ac6fa
C++ headers need directives-only preprocessing
...
gcc/cp/
* lang-specs.h: c++headers always do directives-only preprocessing
in modules mode.
2020-09-01 12:44:35 -07:00
Nathan Sidwell
4d4b2024b7
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.
2020-09-01 12:43:41 -07:00
Nathan Sidwell
9ddb36a37c
Zero length mapper files
...
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.
2020-08-31 11:51:26 -07:00
Nathan Sidwell
965e986d18
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.
2020-08-31 10:52:10 -07:00
Nathan Sidwell
3e615e8d56
GMF namespace fix
...
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-31 07:34:06 -07:00
Nathan Sidwell
6f28db12d7
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.
2020-08-28 12:02:25 -07:00
Nathan Sidwell
c7c243c3ef
Tweak ICE pruning
...
gcc/testsuite/
* lib/prune.exp (prune_ices): Adjust regexp.
2020-08-28 06:19:29 -07:00
Nathan Sidwell
16f045d0e8
Merge trunk cb3c3d6331
...
Whee, all up to date!
2020-08-28 05:55:31 -07:00
Nathan Sidwell
c2285e6735
Merge trunk f1612b8ae8
...
c++: Check satisfaction before non-dep convs. [CWG2369]
gcc/testsuite/
* g++.dg/modules/concept-[13]_b.C: Adjust.
2020-08-28 05:32:05 -07:00
Nathan Sidwell
8d670e3e46
Merge trunk e6e01618e8.
2020-08-28 05:01:13 -07:00
Patrick Palka
82529869ce
libstdc++: integer-class types as per [iterator.concept.winc]
...
This implements signed and unsigned integer-class types, whose width is
one bit larger than the widest supported signed and unsigned integral
type respectively. In our case this is either __int128 and unsigned
__int128, or long long and unsigned long long.
Internally, the two integer-class types are represented as a largest
supported unsigned integral type plus one extra bit. The signed
integer-class type is represented in two's complement form with the
extra bit acting as the sign bit.
libstdc++-v3/ChangeLog:
* include/Makefile.am (bits_headers): Add new header
<bits/max_size_type.h>.
* include/Makefile.in: Regenerate.
* include/bits/iterator_concepts.h
(ranges::__detail::__max_diff_type): Remove definition, replace
with forward declaration of class __max_diff_type.
(__detail::__max_size_type): Remove definition, replace with
forward declaration of class __max_size_type.
(__detail::__is_unsigned_int128, __is_signed_int128)
(__is_int128): New concepts.
(__detail::__is_integer_like): Accept __int128 and unsigned
__int128.
(__detail::__is_signed_integer_like): Accept __int128.
* include/bits/max_size_type.h: New header.
* include/bits/range_access.h: Include <bits/max_size_type.h>.
(__detail::__to_unsigned_like): Two new overloads.
* testsuite/std/ranges/iota/difference_type.cc: New test.
* testsuite/std/ranges/iota/max_size_type.cc: New test.
2020-08-27 13:17:57 -07:00
Nathan Sidwell
28d02ccd11
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 13:17:43 -07:00
Nathan Sidwell
0fe27d8441
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 10:57:25 -07:00
Nathan Sidwell
95d673d68c
Merge trunk 708b3600d0.
2020-08-27 07:22:14 -07:00
Nathan Sidwell
c858355c6a
Merge trunk 17abcc7734
...
libstdc++: Replace operator>>(istream&, char*) [LWG 2499]
2020-08-26 13:02:58 -07:00
Nathan Sidwell
2383be81dd
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.
2020-08-26 12:09:54 -07:00
Nathan Sidwell
ee7260fe55
Fix int_cst caching
...
gcc/
* tree.c (cache_integer_cst): Fix pointer type indices.
2020-08-26 08:49:04 -07:00
Nathan Sidwell
971750eab0
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-26 06:18:41 -07:00
Nathan Sidwell
850418a6ed
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-25 06:42:16 -07:00
Nathan Sidwell
425d7384b5
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.
2020-08-20 13:00:12 -07:00
Nathan Sidwell
71e19827e4
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.
2020-08-20 10:49:49 -07:00
Nathan Sidwell
eb8dd5a3a3
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-20 10:25:24 -07:00
Nathan Sidwell
7023d170c7
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-19 17:10:55 -04:00
Nathan Sidwell
639941e922
c++: Move hidden-lambda entity lookup checking
...
Hidden lambda entities only occur in block and class scopes. There's
no need to check for them on every lookup. So moving that particular
piece of validation to lookup_name_1, which cares. Also reordered the
namespace and type checking, as that is also simpler.
gcc/cp/
* name-lookup.c (qualify_lookup): Drop lambda checking here.
Reorder namespace & type checking.
(lookup_name_1): Do hidden lambda checking here.
2020-08-18 06:22:18 -07:00
Nathan Sidwell
485e29be36
Fix -save-temps issue
...
libcpp/
* lex.c (cpp_maybe_module_directive): Increment prevent_expansion
if not expanding.
2020-08-18 09:00:19 -04:00
Nathan Sidwell
6ac22fbbde
Update module mapper documentation
...
gcc/
* doc/invoke.texi (C++ Module Mapper): Update documentation.
2020-08-17 20:18:07 -04:00
Nathan Sidwell
f198081bb5
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-17 15:26:08 -04:00
Nathan Sidwell
485bf433e2
c++: Final bit of name-lookup api simplification
...
We no longer need to give name_lookup_real not name_lookup_nonclass
different names to the name_lookup functions. This renames the lookup
functions thusly.
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.
2020-08-14 17:11:01 -07:00
Nathan Sidwell
b5db575f59
c++: Yet more name-lookup api simplification
...
This patch deals with LOOKUP_HIDDEN, which originally meant 'find
hidden friends', but it's being pressed into service for not ignoring
lambda-relevant internals. However these two functions are different.
(a) hidden friends can occur in block scope (very uncommon) and (b) it
had the semantics of stopping after the innermost enclosing
namepspace. That's really suspect for the lambda case, but not
relevant there because we never get to namespace scope (I think).
Anyway, I've split the flag into two and adjusted the lambda callers
to just search block scope. These two flags are added to the
LOOK_want enum class, which allows dropping another parameter from the
name lookup routines.
The remaining LOOKUP_$FOO flags in cp-tree.h are, I think, now all
related to features of overload resolution, conversion operators and
reference binding. Nothing to do with /name/ lookup.
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.
2020-08-14 15:56:18 -07:00
Nathan Sidwell
a6c852f4fc
more name-lookup api cleanups
...
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-14 08:24:34 -07:00
Nathan Sidwell
60356152cb
Unconfuse lookup_name_real API a bit
...
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-13 11:23:11 -07:00
Nathan Sidwell
6302da22e9
Merge trunk d21252de6c
2020-08-07 15:37:36 -07:00
Nathan Sidwell
87f1ccd4c5
Address 2 FIXMEs
...
gcc/cp/
* name-lookup.c (finish_nonmember_using_decl): Here.
(lookup_type_scope_1): Here.
2020-08-07 08:45:06 -07:00
Nathan Sidwell
d5750e3cba
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)
2020-08-07 08:45:06 -07:00
Nathan Sidwell
5b13659247
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.
2020-08-07 08:45:05 -07:00
Nathan Sidwell
7ad53d850a
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-07 08:44:50 -07:00
Nathan Sidwell
42461b826d
Remove now-unneeded dedup bits
...
gcc/cp/
* module.cc (module_state::read_cluster): Don't set dedup for
partition or header unit.
2020-08-06 09:01:44 -07:00
Nathan Sidwell
931286309b
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.
2020-08-06 07:52:59 -07:00
Nathan Sidwell
f2656a9abf
fix some lookup issues
...
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-06 07:41:14 -07:00
Nathan Sidwell
69adffa147
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.
2020-08-05 11:04:11 -07:00
Nathan Sidwell
cff03d76c2
Note duplicates on symbol vector
...
gcc/cp/
* cp-tree.h (MODULE_VECTOR_GLOBAL_DUPS_P)
(MODULE_VECTOR_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-05 10:35:21 -07:00
Nathan Sidwell
6f9c8865b7
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.
2020-08-04 13:03:23 -07:00
Nathan Sidwell
03e33763bb
Merge trunk 1790d13dc8
2020-08-04 10:34:39 -07:00
Nathan Sidwell
9c6fc6da56
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.
2020-08-03 12:57:50 -07:00
Nathan Sidwell
717a53b832
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.
2020-08-03 12:29:45 -07:00
Nathan Sidwell
eb9698edfa
Fix save-temps & header-units
...
gcc/cp/
* lang-specs.h (@c++-{,system-,user-}header): Directives-only
preprocessing for saving temps with modules.
2020-08-03 09:02:52 -07:00
Nathan Sidwell
583d5560c8
Merge trunk d1773f58f3
2020-08-03 08:21:10 -07:00
Nathan Sidwell
06dd8695ed
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-08-03 07:01:08 -07:00
Nathan Sidwell
1d95622996
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.
2020-07-31 11:08:02 -07:00
Nathan Sidwell
04a301cb10
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.
2020-07-31 10:21:27 -07:00
Nathan Sidwell
3910d132ca
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-31 06:30:22 -07:00
Nathan Sidwell
a30ceda5cb
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.
2020-07-30 11:24:01 -07:00
Nathan Sidwell
a894fa90d9
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-30 07:36:15 -07:00
Nathan Sidwell
403213844e
Merge trunk f3665bd111
2020-07-28 09:53:46 -07:00
Nathan Sidwell
c3e54977d6
Restore a bunch of trunk behaviour
...
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.
2020-07-28 09:23:33 -07:00
Nathan Sidwell
bc70c94655
Merge trunk 134051f16b
2020-07-28 06:42:22 -07:00
Nathan Sidwell
b573170cdc
line zero rewind fix
...
libcpp/
* directives.c (_cpp_do_file_change): Check we're moving to line
zero of the same file.
2020-07-28 06:15:10 -07:00
Nathan Sidwell
3c843d8968
Revert ada to trunk
...
gcc/c-family/
* c-ada-spec.c (decl_sloc): Revert to trunk.
2020-07-22 14:58:13 -04:00
Nathan Sidwell
20eb7c128f
Merge trunk 6e1e0decc9
2020-07-22 09:13:53 -07:00
Nathan Sidwell
82250e6409
Unbreak Ada
...
gcc/
* gcc.c (execute): Disable argv[0] munging.
2020-07-22 10:47:50 -04:00
Nathan Sidwell
24fcaf7cad
Sadly Ada still broken :(
...
gcc/c-family/
* c-ada-spec.c (decl_sloc): Actually return the field's loc.
2020-07-21 09:49:13 -04:00
Nathan Sidwell
bcbd792383
Unbreak bootstrap
...
gcc/cp/
* rtti.c (init_rtti_processing): Unbreak bootstrap.
2020-07-20 07:14:58 -07:00
Nathan Sidwell
be9f7b2b0b
Merge trunk a926eeedf4
2020-07-20 05:59:07 -07:00
Nathan Sidwell
77bd6fc0ed
Source main location
...
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-17 12:30:41 -07:00
Nathan Sidwell
ca814b3322
Declaring a builtin in a header unit
...
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.
2020-07-16 14:39:38 -07:00
Nathan Sidwell
aa9f1d9155
More FIXME resolution
...
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.
2020-07-16 14:00:51 -07:00
Nathan Sidwell
7f3bd0c72e
include xlate callback
...
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.
2020-07-16 13:39:08 -07:00
Nathan Sidwell
09e0d79249
enum for main search mechanism
...
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.
2020-07-16 13:38:40 -07:00
Nathan Sidwell
41d88a6c8f
Function-scope using-decls
...
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-16 13:38:13 -07:00
Nathan Sidwell
4556080e3c
Merge trunk 765fbbf9bb
2020-07-15 11:43:59 -07:00
Nathan Sidwell
7eae4731c9
Merge trunk 5f809982e8
2020-07-14 09:11:51 -07:00
Nathan Sidwell
1edf8b5ed9
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.
2020-07-13 12:49:36 -07:00
Nathan Sidwell
903dcdf0b0
Address more FIXMEs
...
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.
2020-07-13 10:33:03 -07:00
Nathan Sidwell
9c75aba591
Remove some FIXMEs
...
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.
2020-07-13 08:48:20 -07:00
Nathan Sidwell
65e3cb488b
Fix scan-lang-dump-not
...
gcc/testsuite/
* lib/scanlang.exp (scan-lang-dump-not): Fix 3-arg case.
* g++.dg/modules/builtin-3_a.C: Remove unnecessary bracing.
2020-07-13 07:52:19 -07:00
Nathan Sidwell
094b09111a
Merge trunk a1faa8e247
2020-07-13 07:50:49 -07:00
Nathan Sidwell
156e909b63
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-13 06:30:55 -07:00
Nathan Sidwell
7cce1e321d
Copy with ARM's poly ints
...
gcc/cp/
* modules.cc (trees_out::type_node [VECTOR_TYPE]): poly_int's
to_constant already does the checking we need.
2020-07-09 10:58:56 -07:00
Nathan Sidwell
7fd73b12b7
Generalize assembly scan
...
gcc/testsuite/
* g++.dg/modules/sym-subst-3_a.C: Adjust scan for other ABIs
2020-07-09 10:28:19 -07:00
Nathan Sidwell
8314e36e0d
aarch64 and powerpc va_lists look different
...
gcc/testuite/
* g++.dg/modules/builtin-3_[ab].C: Add va_list scans for
aarch64 and ppowerpc ABIs.
2020-07-09 09:54:51 -07:00
Nathan Sidwell
7b4cb88d27
Remove tcl 8.6ism
2020-07-08 21:06:08 +00:00
Nathan Sidwell
ccbcd56f41
Merge trunk 6bf2ff0d52
2020-07-08 11:52:01 -07:00
Nathan Sidwell
396655c25a
Merge trunk ce0f842492
2020-07-03 19:22:12 -04:00
Nathan Sidwell
60a30d9566
Fix bootstrap
...
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-03 10:43:56 -04:00
Nathan Sidwell
c4b3a5c64f
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-02 13:22:21 -07:00
Nathan Sidwell
142418ef83
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.
2020-07-01 09:55:19 -07:00
Nathan Sidwell
2a81714823
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-07-01 09:20:48 -07:00
Nathan Sidwell
c6f2727d02
A couple of function cloning tweaks
...
gcc/cp/
* class.c (copyfndecl_with_name): Drop inadvertent
DECL_CLONED_FUNCTION setting. Pass 0 for top_level to
rest_of_decl_compiulation.
2020-06-30 12:11:59 -07:00
Nathan Sidwell
fb0bb1c31d
Internal api tweak
...
gcc/cp/
* class.c (copy_fndecl_with_name): Add tree code parm. Adjust
callers.
2020-06-30 10:22:36 -07:00
Nathan Sidwell
dd50d60d60
Missed a rename
...
libcc1/
* libcp1plugin.cc (plugin_build_decl): Adjust.
2020-06-30 09:38:53 -07:00
Nathan Sidwell
84d3a3a985
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-30 08:59:44 -07:00
Nathan Sidwell
c34de11201
Merge master 9a33c41fe4
2020-06-29 14:00:35 -07:00
Nathan Sidwell
bfc221bd1a
Merge master 44492e248c
...
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-29 11:19:56 -07:00
Nathan Sidwell
a534cd6685
Fix stupid communicating server bugs.
...
gcc/cp/
* mapper-server.cc (process_server): We should Write when writing.
(server): Fix off-by-one error.
2020-06-25 20:30:29 -04:00
Nathan Sidwell
d07d094efd
Merge master 68df8e8c34
2020-06-25 13:22:51 -07:00
Nathan Sidwell
869158f027
Merge master 502d63b6d6
...
Lower VEC_COND_EXPR into internal functions. [Martin Liska]
Apply d11c9841d5 Add missing check for gassign. [Martin Liska]
Apply 9435fb9668 Fix typo in tree-ssa-reassoc.c. [Martin Liska]
2020-06-25 13:11:38 -07:00
Nathan Sidwell
0862b62421
Merge master 2021af0c23
2020-06-25 12:16:04 -07:00
Nathan Sidwell
8ad50d2855
Merge masrer 668ef28fbb.
...
c++: Clean up previous change [PR41437] [Patrick Palka]
gcc/cp/
* module.cc (trees_{in,out}::code_vals [TEMPLATE_INFO]): Adjust
access checking streaming.
2020-06-25 08:27:45 -07:00
Nathan Sidwell
390ab9b8bc
Merge master 92bed03609
...
c++: Improve access checking inside templates [PR41437]
2020-06-25 07:39:56 -07:00
Nathan Sidwell
6665d04697
Merge master a97e49a89d
2020-06-25 07:11:31 -07:00
Nathan Sidwell
6d8fa55b64
Merge master f2242ec0d3
...
Over the hump!
2020-06-24 13:43:53 -07:00
Nathan Sidwell
eb150e498d
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-24 13:35:06 -07:00
Nathan Sidwell
b27bcc6c83
Merge master b825a22890
2020-06-11 05:51:26 -07:00
Nathan Sidwell
26fd9ef073
Merge master ac9face8d2
...
PR c++/95263
gcc/cp/
* pt.c (lookup_template_class_1): Do not apply reversion
gcc/testsuite/
* g++.dg/template/pr95263.C: New (XFAIL)
2020-06-10 12:15:12 -07:00
Nathan Sidwell
3021b1cbb3
Merge master 6c8e16aea8
2020-06-10 09:39:20 -07:00
Nathan Sidwell
2d79fc0f6e
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-10 06:16:45 -07:00
Nathan Sidwell
9a42c3334f
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.
2020-06-05 15:37:00 -04:00
Nathan Sidwell
7400add66f
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-05 09:18:22 -04:00
Nathan Sidwell
d34b6baae9
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-06-02 07:32:58 -07:00
Nathan Sidwell
6036eaa98a
Merge master 149c8c7c27
2020-05-21 11:30:31 -07:00
Nathan Sidwell
ac2e10e261
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.
2020-05-21 10:46:47 -07:00
Nathan Sidwell
6b9d7a4679
Update file_find_kind names
...
libcpp/
* files.c, init.c, internal.h: Adjust file_find_kind names from trunk.
2020-05-21 09:48:57 -07:00
Nathan Sidwell
e16798eea3
Fix linemap range breakage
2020-05-21 09:19:59 -07:00
Nathan Sidwell
a2b1c78c1e
Renam cpp_read_main_file's have_preamble parm
...
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.
2020-05-20 13:04:01 -07:00
Nathan Sidwell
d714603ced
Line zero optimizing
...
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.
2020-05-20 12:44:42 -07:00
Nathan Sidwell
74963283ed
Location setting fixes
...
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-20 09:47:15 -07:00
Nathan Sidwell
8159d8db05
Use enumeration type for cpp file kind
...
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-19 13:46:19 -07:00
Nathan Sidwell
1e7d6cc63e
Darwin test fixes
...
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.
2020-05-19 12:13:57 -07:00
Nathan Sidwell
6bf96b1809
Darwin sighandler_t fix
...
gcc/cp/
* mapper-client.cc: Move fallback typedef for sighandler_t
from here ...
* mapper-client.h: ... to here.
2020-05-19 12:06:06 -07:00
Nathan Sidwell
61f1501886
Merge master ed63c387aa
2020-05-19 12:04:08 -07:00
Nathan Sidwell
4e0bf9b5d3
Clarify error message
...
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-19 09:58:50 -07:00
Nathan Sidwell
6761f494c3
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.
2020-05-15 08:41:47 -07:00
Nathan Sidwell
236e93e733
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.
2020-05-15 08:29:17 -07:00
Nathan Sidwell
09f3831f55
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-15 08:18:58 -07:00
Nathan Sidwell
79cacccce2
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.
2020-05-14 11:59:19 -07:00
Nathan Sidwell
4813653043
Merge master f497e36ae5
2020-05-14 08:13:54 -07:00
Nathan Sidwell
922db2851e
Remove FIXME
2020-05-14 07:37:39 -07:00
Nathan Sidwell
cf28ae3008
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-13 10:49:49 -07:00
Nathan Sidwell
40f639a309
Merge master 2a0225e478
2020-05-12 14:01:34 -07:00
Nathan Sidwell
354fc550ee
Merge master b224c3763e
2020-05-08 11:58:09 -07:00
Nathan Sidwell
b721297b71
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-08 06:33:04 -07:00
Nathan Sidwell
1fadf34081
Merge master ab2952c77d
2020-05-07 09:21:21 -07:00
Nathan Sidwell
136f279e5e
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.
2020-05-05 12:38:29 -07:00
Nathan Sidwell
c7c2447545
Fix eh specs
...
gcc/testsuite/
* g++.dg/eh/builtin{5,7,9,10,11}.C: Fix eh specs on __cxa fn decls.
2020-05-05 12:36:25 -07:00
Nathan Sidwell
f894ccd5cb
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-05 12:34:45 -07:00
Nathan Sidwell
64b8060630
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-04 12:37:42 -07:00
Nathan Sidwell
cb365f78e0
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-05-01 08:55:32 -07:00
Nathan Sidwell
6636864314
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.
2020-04-30 13:05:36 -07:00
Nathan Sidwell
8ba36396a8
Tweak buultin fn hack
...
gcc/cp/
* name-lookup.c (get_namespace_binding): Strip singleton overloads.
2020-04-30 13:00:52 -07:00
Nathan Sidwell
01ae956170
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-28 06:29:07 -07:00
Nathan Sidwell
6fded9a059
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.
2020-04-23 10:05:31 -07:00
Nathan Sidwell
ed1fb0809b
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-23 09:38:08 -07:00
Nathan Sidwell
27909a10f2
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-22 11:46:10 -07:00
Nathan Sidwell
1f49f4236e
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.
2020-04-21 12:19:50 -07:00
Nathan Sidwell
65a93bcc55
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-21 09:33:12 -07:00
Nathan Sidwell
88b13798f2
Merge master a28edad3da
2020-04-17 13:41:36 -07:00
Nathan Sidwell
f7908a8c38
Rename cxx-mapper
...
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.
2020-04-17 12:33:14 -07:00
Nathan Sidwell
91041d612f
Revert some abstractification
...
gcc/cp/
* module.cc (mapper_{import_export,export_done}): Revert
2020-04-13 change/
2020-04-17 12:17:34 -07:00
Nathan Sidwell
d37d255981
Break out module-mapper to separate file
...
gcc/cp/
* mapper-client.{h,cc}: New, broken out of ...
* module.cc: ... here.
* Make-lang.in: Add mapper-client.
2020-04-17 12:10:09 -07:00
Nathan Sidwell
7f9b821b82
More abstractification
...
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 ...
(module_import_export, module_export_done): ... these.
2020-04-17 11:16:51 -07:00
Nathan Sidwell
946875ee91
module_mapper field-ectomy
...
gcc/cp/
* module.cc (module_mapper::to): Drop unneeded field.
2020-04-17 09:19:24 -07:00
Nathan Sidwell
e424718753
mapper open & close
...
gcc/cp/
* module.cc (module_mapper::{open,close}): New methods, use them.
2020-04-17 08:46:24 -07:00
Nathan Sidwell
93b930f137
More mapper abstractification
...
gcc/cp/
* module.cc (module_mapper): Break more stuff out of ctor.
2020-04-17 08:46:06 -07:00
Nathan Sidwell
92649b212a
Start abstracting module mapper
...
gcc/cp/
* module.cc (module_mapper): Remove knowledge of module_state,
update all callers.
2020-04-13 10:55:15 -07:00
Nathan Sidwell
9563d7f98a
New hello-world testcase
...
gcc/testsuite/
* g++.dg/modules/hello-1_[ab].C: New.
2020-04-08 12:09:54 -07:00
Nathan Sidwell
32dc3719d7
TYPE_DECLS don't necessarily have a D_L_S
...
gcc/cp/
* module.cc (trees_in::decl_value): Need to retrofit lang for
inner.
gcc/testsuite/
* g++.dg/modules/gmf-1_[ab].C: New.
2020-04-08 12:03:52 -07:00
Nathan Sidwell
5c4ec4a8f9
More header unit checking
...
gcc/testsuite/
* g++.dg/modules/xtreme-header-[1-6]_c.C: New.
2020-04-08 09:55:34 -07:00
Nathan Sidwell
66892d570b
Avoid null derefs
...
gcc/cp/
* module.cc (trees_in::key_mergeable): Avoid null deref.
(direct_import): Create attachment table.
gcc/testsuite/
* g++.dg/modules/lambds-[23]_c.C: New.
2020-04-08 09:54:27 -07:00
Nathan Sidwell
314832b80f
Merge master 50c7853216
2020-04-08 06:43:03 -07:00
Nathan Sidwell
5e938e7912
C++20 Ranges!
...
gcc/testsuite/
* g++.dg/modules/xtreme-header-2.h: Enable in c++20 mode.
2020-04-07 12:04:07 -07:00
Nathan Sidwell
c511123b6d
Placeholder & constrained auto
...
gcc/cp/
* module.cc (trees_{in,out}::tpl_parm_value): Stream auto
placeholder & constraints.
gcc/testsuite/
* g++.dg/modules/lambda-4{,_[ab]}.[hHC]: New.
2020-04-07 11:55:58 -07:00
Nathan Sidwell
639ade0145
Lambda _FUN with recursive types
...
gcc/cp/
* module.cc (trees_out::key_mergeable): A lambda's static _FUN has
a recursive return type.
(trees_in::is_matching_decl): Likewise.
* g++.dg/modules/lambda-4{,_[ab]}.[hHC]: New.
* g++.dg/modules/concept-6_b.C: Remove xfail.
2020-04-07 08:32:23 -07:00
Nathan Sidwell
db37280772
Show NULL call arguments
...
gcc/
* print-tree.c (print_node): Explicitly show CALL_EXPR null arguments.
2020-04-07 08:28:49 -07:00
Nathan Sidwell
acda0716f3
Instantiations with requires
...
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.
2020-04-07 05:47:08 -07:00
Nathan Sidwell
836856bef4
Refactor call-expr & decltype-type comparison
...
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-07 05:27:33 -07:00
Nathan Sidwell
1fc1eeb085
Namespaces from partitions don't advertise that
...
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-06 08:28:47 -07:00
Nathan Sidwell
2c6b4bd9ab
Zap NSDMIS on as_base fields [PR94476]
...
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.
2020-04-03 12:38:25 -07:00
Nathan Sidwell
2188cea2c6
Merge master bcafd8748c
2020-04-03 12:16:06 -07:00
Nathan Sidwell
776fd9cc4a
Non Static Data Member Initializers (happy now githook?)
...
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.
2020-04-03 10:40:00 -07:00
Nathan Sidwell
3043c9fed9
Partition up stl header inclusion
...
gcc/testsuite/
* g++.dg/modules/xtreme-header-[123456]{,_[ab]}.[hHC]: New.
2020-04-03 09:51:50 -07:00
Nathan Sidwell
9a114dd344
Experimental shouting, perhaps it'll work?
...
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.
2020-04-03 08:35:16 -07:00
Nathan Sidwell
3de8f3fe67
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.
2020-04-03 08:12:01 -07:00
Nathan Sidwell
f3b2cf6b68
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-03 07:46:55 -07:00
Nathan Sidwell
2a98bb1b44
namespace decl cleanup
...
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
2020-04-02 09:59:31 -07:00
Nathan Sidwell
dcd1233dc6
Deal with namespace dependencies separately
...
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-02 09:15:39 -07:00
Nathan Sidwell
61e93aebe9
Fix broken tests
...
gcc/testsuite/
* g++.dg/modules/tpl-alias-1_[ab].[HC]: Fix unresolved tests.
* g++.dg/modules/vtt-2_b.C: Likewise.
2020-04-01 07:05:31 -07:00
Nathan Sidwell
fc7e31482b
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-04-01 06:42:14 -07:00
Nathan Sidwell
577388e0c4
Inhibit typename resolution when streaming
...
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.
2020-03-31 12:42:21 -07:00
Nathan Sidwell
9f857401a2
Create extra scope later
...
gcc/cp/
* pt.c (tsubst_lambda_expr): Set extra scope after creating the
lambda struct.
2020-03-31 10:02:38 -07:00
Nathan Sidwell
f93e7ba1b1
Templatify pendset
...
gcc/cp/
* modules.cc (template<T> uintset): New template created from ...
(pendset): ... this. Use it. Adjust all uses.
2020-03-30 08:27:12 -07:00
Nathan Sidwell
d18ba80f09
Merge master 62ede14d30
2020-03-27 06:43:17 -07:00
Nathan Sidwell
07c934bb9d
STL headers header-unity (except C++ 20 ranges)
...
gcc/testsuite/
* g++.dg/modules/xtreme-header-{,_[ab]}.[hHC]: New.
2020-03-26 13:35:50 -07:00
Nathan Sidwell
bc90e9fa5a
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.
2020-03-26 13:15:40 -07:00
Nathan Sidwell
8ca572dccd
Avoid is_mergeable streaming for instantiations
...
gcc/cp/
* module.cc (trees_{in,out}::decl_value): Instantiations are
merged things too.
2020-03-26 08:39:49 -07:00
Nathan Sidwell
45fba619d5
Refactor entity installing
...
gcc/cp/
* module.cc (trees_{in,out}::install_entity): New, broken out of ...
(trees_{in,out}::decl_value): ... here. Call them.
2020-03-26 08:24:29 -07:00
Nathan Sidwell
6a2bc22d0a
Stop morphing alias instantiation template info
...
WARNING: This breaks lots of modules tests because an inconsistent
invariant 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-25 10:22:36 -07:00
Nathan Sidwell
389fa4edcb
Avoid unnecessary work in loop.
...
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-24 10:18:55 -07:00
Nathan Sidwell
3e550ed675
no need to stream tpl-tpl-parm-contextness
...
gcc/cp/
* module.cc (trees_{in,out}::tpl_parms_fini): Determine
contextness requirement from TPI.
2020-03-23 07:36:36 -07:00
Nathan Sidwell
abd986fa1d
Merge master a3586eeb88.
2020-03-23 07:29:21 -07:00
Nathan Sidwell
47bb5db5ab
template template parm context
...
gcc/cp/
* module.cc (trees_{in,out}::tpl_parms_fini): Flag whether
tpl-tpl-parm context is non-null.
2020-03-20 10:43:38 -07:00
Nathan Sidwell
71493edf6a
Avoid instantiation when comparing duplicates
...
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.
2020-03-19 12:08:19 -07:00
Nathan Sidwell
d8d1efe361
constexprs can have error_mark_node result
...
gcc/cp/
* module.cc (trees_{in,out}::{read,write}_function_def): Potential
cexprs have result == error_mark_node.
2020-03-19 11:09:00 -07:00
Nathan Sidwell
b56ea93d7c
Inheriting template ctors
...
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.
2020-03-19 08:04:46 -07:00
Nathan Sidwell
a3718bc6ca
Merge master 3512dc0108
2020-03-19 07:02:28 -07:00
Nathan Sidwell
1b786b3c5d
Merge master 3512dc0108
2020-03-19 07:00:39 -07:00
Nathan Sidwell
232abc99a0
Merge master 3512dc0108
2020-03-19 05:36:51 -07:00
Nathan Sidwell
2d5f96b294
pmf typedefs are different to bare pmfs
...
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.
2020-03-18 11:18:41 -07:00
Nathan Sidwell
ccf1d588d4
Remove gratuitous substitition
...
gcc/cp/
* module.cc (trees_out::key_mergeable): Do not perform
requirements stubstutition.
(check_mergeable_decl): Likewise.
2020-03-18 10:07:14 -07:00
Nathan Sidwell
d54101b57a
auto return type
...
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-18 07:26:49 -07:00
Nathan Sidwell
736b82e061
Instantiated noexcept specifications
...
gcc/cp/
* module.cc (trees_in::is_matching_decl): Propagate instantiated
noexcept specifications.
gcc/testsuite/
* g++.dg/modules/except-3{,_[ab]}.[hHC]: New.
2020-03-17 13:13:31 -07:00
Nathan Sidwell
71af6e7ca3
Check recursive laziness
...
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-17 05:59:03 -07:00
Nathan Sidwell
decb4b2c81
Adjust read error detection & messages
...
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
2020-03-16 13:50:08 -07:00
Nathan Sidwell
67c341a073
Clarify a couple of newbie questions
...
gcc/cp/
* doc/invoke.texi (C++ Modules): Clarify a couple of things.
2020-03-16 05:25:39 -07:00
Nathan Sidwell
e3613c51d1
Merging pointers to member fn initializers
...
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.
2020-03-13 13:14:31 -07:00
Nathan Sidwell
37baf522a1
Some cleanups
...
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.
2020-03-13 12:22:18 -07:00
Nathan Sidwell
b7834f4aa8
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
2020-03-13 12:12:39 -07:00
Nathan Sidwell
1d379b66a7
deferredness of noexcept can differ, as can builtins
...
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.
2020-03-13 12:05:44 -07:00
Nathan Sidwell
2ee25bcbd7
PR94027 Fixette
...
gcc/cp/
* mangle.c (find_substitution): Cleanup for c++/94027 fix.
2020-03-13 08:31:00 -07:00
Nathan Sidwell
c39c0440da
New -fmodule-version-ignore option
...
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-13 08:23:55 -07:00
Nathan Sidwell
a34216a048
Bad ranges, no biscuit!
...
gcc/testsuite/
* g++.dg/modules/odr-1{,_[ab]}.[hHC]: New.
2020-03-11 04:10:17 -07:00
Nathan Sidwell
7c891deba8
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.
2020-03-10 12:29:10 -07:00
Nathan Sidwell
55faf3ea77
Merge master 3654d49d0f
2020-03-10 08:59:42 -04:00
Nathan Sidwell
9c9254107f
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.
2020-03-09 11:53:08 -07:00
Nathan Sidwell
d90b14bbba
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.
2020-03-09 10:25:53 -07:00
Nathan Sidwell
7cee441935
Chained decls read to vector
...
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.
2020-03-09 08:40:12 -07:00
Nathan Sidwell
1990415ae4
Partial specializations only added once
...
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-09 06:45:12 -07:00
Nathan Sidwell
6c40b552f7
Qualified depdent array types
...
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.
2020-03-05 04:54:21 -08:00
Nathan Sidwell
a00ae23ed4
Dependent array types
...
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-05 04:45:06 -08:00
Nathan Sidwell
17f0f914b1
Check TYPE_LANG_SPECIFIC
...
gcc/cp/
* name-lookup.c (mergeable_class_entities): Check TYPE_LANG_SPECIFIC.
2020-03-04 12:49:29 -08:00
Nathan Sidwell
a3708e8852
using decls in different namespaces
...
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.
2020-03-04 10:59:17 -08:00
Nathan Sidwell
ce9d948fe3
typedefs in cloned functions do not smell like typedefs
...
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.
2020-03-04 08:29:08 -08:00
Nathan Sidwell
2d6fad9f61
More NULL names
...
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.
2020-03-04 05:02:06 -08:00
Nathan Sidwell
a0ed30aea5
Elide merge_key streaming when possible
...
gcc/cp/
* module.cc (struct merge_key): simplify.
(trees_{in,out}::key_mergeable): Optimize merge_key streaming.
2020-03-04 04:38:17 -08:00
Nathan Sidwell
329b9d79fa
More explicit merge kind discriminators
...
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.
2020-03-03 14:42:21 -08:00
Nathan Sidwell
298855e460
Remove merge_key index as tree hack
...
gcc/cp/
* module.cc (struct merge_key): Remove index as tree hack ...
(merge_key::{read,write}): ... here.
(trees_{in,out}::key_mergeable): Adjust.
2020-03-03 10:56:11 -08:00
Nathan Sidwell
5e53a8262a
Pass merge_key around, not explicit parms
...
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.
2020-03-03 10:48:08 -08:00
Nathan Sidwell
e28d2a0f2e
Move merging to key_mergeable
...
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.
2020-03-03 09:30:01 -08:00
Nathan Sidwell
e0db44ca34
Encapsulate merge key data in a struct
...
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-03 08:06:08 -08:00
Nathan Sidwell
e08748a07a
Move mergeable getters to module.cc
...
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.
2020-03-02 12:34:38 -08:00
Nathan Sidwell
a640ac86d4
Start moving mergeable checking out of name-lookup
...
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-03-02 10:11:22 -08:00
Nathan Sidwell
613ecabf40
The note_defs hash needs to be a cache
...
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.
2020-02-28 12:23:55 -08:00
Nathan Sidwell
0a10347d04
Don'c complain about unsynthesized defaulted members
...
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.
2020-02-28 09:44:50 -08:00
Nathan Sidwell
53b027b734
Members can be overloaded on ref qualifierness
...
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.
2020-02-28 07:36:58 -08:00
Nathan Sidwell
68d6c3e2eb
Merge master 9d2d283367
2020-02-28 05:23:07 -08:00
Nathan Sidwell
037aca5849
FIELD_DCLs with template info
...
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-27 11:18:07 -08:00
Nathan Sidwell
310ae53d8e
Class-scope using-decls and dependent typename-types
...
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-26 12:47:20 -08:00
Nathan Sidwell
e6c0cbec94
<string> now buildable as a c++20 header unit
...
gcc/testsuite/
* g++.dg/modules/string-1_[ab].[CH]: Enable in c++20 mode.
2020-02-25 13:11:15 -08:00
Nathan Sidwell
cb887e2fb7
Merge with variadic template concept
...
gcc/testsuite/
* g++.dg/modules/merge-12{,_[ab]}.[hHC]: New.
2020-02-25 11:33:05 -08:00
Nathan Sidwell
7c20089e8f
Concept with argument pack
...
gcc/cp/
* typeck.c (structural_comptypes): Deal with TYPE_ARGUMENT_PACK.
gcc/testsuite/
* g++.dg/concepts/pack-1.C: New.
2020-02-25 11:13:29 -08:00
Nathan Sidwell
934fe9a30d
ICE with preprocessed header unit [93761]
...
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.
2020-02-25 08:08:23 -08:00
Nathan Sidwell
637df2e24f
Small testcase cleanups
...
* 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.
2020-02-25 06:37:17 -08:00
Nathan Sidwell
3b8d5c896f
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-25 06:22:21 -08:00
Nathan Sidwell
be0d02e585
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.
2020-02-24 09:51:55 -08:00
Nathan Sidwell
27fea4cf5a
Merge master 3841739c29
2020-02-24 08:13:45 -08:00
Nathan Sidwell
bfaad7a57e
Commonize ' & " directives-only peeking
...
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-22 18:36:46 -05:00
Nathan Sidwell
3f77ffc066
Backscanning for raw string literals
...
libcpp/
* lex.c (cp_directive_only_process): Deal with raw strings by
backtracking.
2020-02-19 21:36:49 +01:00
Nathan Sidwell
50974764f8
Support number-punctuator in directives-only
...
libcpp/
* lex.c (cpp_directive_only_process): Cope with number
punctuators.
gcc/testsuite/
* c-c++-common/cpp/dir-only-8.c: New.
2020-02-14 20:12:07 +01:00
Nathan Sidwell
fe76dae46c
Show branch name in version info
...
gcc/cp/
* Make-lang.in (MODULE_REVISION): Add branch name.
2020-02-12 09:43:24 +01:00
Nathan Sidwell
be16e6ca90
Fixup preprocessed main start
...
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.
2020-02-11 14:57:53 +01:00
Nathan Sidwell
93a35bb732
Fix preprocessed module directives
...
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.
2020-02-11 13:11:17 +01:00
Nathan Sidwell
6d5fdedadb
Merge master a6ee556c76
2020-02-11 12:29:55 +01:00
Nathan Sidwell
e812b46fa9
Better raw strings in directives-only mode
...
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-10 19:59:55 +01:00
Nathan Sidwell
ecea46a64e
Fix broken module control-lines
...
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.
2020-02-09 06:59:03 +01:00
Nathan Sidwell
b099bdbf51
change preprocess_token langhook cookie type
...
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-09 00:24:14 -05:00
Nathan Sidwell
bff1dce200
Relax raw string detection
...
libcpp/
* lex.c (cpp_directive_only_process): Relax raw string detection.
2020-02-08 15:48:01 -05:00
Nathan Sidwell
ab75be3d7d
More robust raw string literals and user-defined literals
...
libcpp/
* lex.c (cpp_directive_only_process): Re-reimplement.
2020-02-07 14:31:41 -08:00
Nathan Sidwell
51e4956fd9
Use 'module control-line' terminology
...
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.
2020-02-07 08:48:34 -08:00
Nathan Sidwell
cb5a780f16
Remove now-unused cpp_clear_if_stack
...
libcpp/
* internal/cpplib.h (cpp_clear_if_stack): Don't declare.
* directives.c (cpp_clear_if_stack): Delete.
2020-02-07 08:01:39 -08:00
Nathan Sidwell
91b4b5d6b4
Merge master 82aee6dd61
2020-02-07 07:36:56 -08:00
Nathan Sidwell
cc018da11e
Initial -fdirectives-only support
...
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.
2020-02-07 06:04:49 -08:00
Nathan Sidwell
a88e54535f
A token streamer
...
gcc/c-family/
* c-ppoutput.c (class token_streamer): New class, swallow guts of
...
(scan_translation_unit): ... this. Use it.
2020-02-07 04:49:22 -08:00
Nathan Sidwell
328c45e8f6
A single generic callback for directives-only processing
...
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.
2020-02-06 09:33:57 -08:00
Nathan Sidwell
8657d180fb
Simplify raw string lexing
...
libcpp/
* lex.c (cpp_directive_only_process): Simplify raw string lexing.
2020-02-06 05:42:14 -08:00
Nathan Sidwell
2d3fcfb453
Add raw string support [PR93606]
...
libcpp/
* lex.c (cpp_directive_only_process): Add raw string lexing.
gcc/testsuite/
* c-c++-common/cpp/dir-only-7.c: New.
2020-02-06 04:37:50 -08:00
Nathan Sidwell
ca448c6510
Merge master fa0c6e297b
2020-02-05 12:24:20 -08:00
Nathan Sidwell
a42e73f54d
Clarify comment
2020-02-05 12:04:28 -08:00
Nathan Sidwell
591f66adda
Reimplement directive-only scanning
...
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-05 12:03:47 -08:00
Nathan Sidwell
d6260ed612
Enforce preamble import restrictions
...
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.
2020-02-04 19:00:48 -05:00
Nathan Sidwell
348cfb09c6
Skip header macros when not preprocessing
...
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.
2020-02-04 13:16:05 -08:00
Nathan Sidwell
3dd4f9cc2c
Fix dependency generation
...
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
2020-02-04 12:58:17 -08:00
Nathan Sidwell
83cc972b42
MODULE_UNKNOWN_PARTITION is unneeded
...
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.
2020-02-04 12:07:45 -08:00
Nathan Sidwell
97b25844b2
Remove module_state::from_loc
...
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.
2020-02-04 11:54:01 -08:00
Nathan Sidwell
79135d7b59
Break apart direct_import
...
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.
2020-02-04 08:44:57 -08:00
Nathan Sidwell
661203d785
Final module state flag cleanup
...
gcc/cp/
* module.cc (struct module_state): Cleanly separate module kind
flags from module use flags.
2020-02-04 06:11:19 -08:00
Nathan Sidwell
a7f7873982
primary_p & from_partition_p bite the dust
...
gcc/cp/
* module.cc (struct module_state): Drop primary_p &
from_partition_p. Map uses to module_p and partition_direct_p.
2020-02-03 13:34:42 -08:00
Nathan Sidwell
3f0e7d8510
Use a load state enumeration
...
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.
2020-02-03 13:12:36 -08:00
Nathan Sidwell
208db70e10
Start rationalizing module_state flags
...
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.
2020-02-03 12:22:52 -08:00
Nathan Sidwell
badcc6b438
Diagnose poor include translation
...
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-03 05:57:11 -08:00
Nathan Sidwell
11c82aea67
include translation fixups
...
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-02-02 19:12:44 -05:00
Nathan Sidwell
3c45cc6664
Reimplement module-directive mode peeking
...
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.
2020-01-31 11:08:15 -08:00
Nathan Sidwell
eaa6e833f8
Merge master b92709388b
2020-01-31 09:37:08 -08:00
Nathan Sidwell
da94c667ad
Fixup pragma error recovery
...
gcc/cp/
* parser.c (cp_parser_skip_to_end_of_statement): Adjust pragma
skipping.
(cp_parser_skip_to_end_of_block_or_statement): Likewise.
2020-01-31 08:36:46 -08:00
Nathan Sidwell
581aa8f952
PRAGMA_EOL needs a location at the end of pragma line
...
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.
2020-01-31 07:23:06 -08:00
Nathan Sidwell
9412c7e007
Restore batched mapper communication
...
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-31 04:29:07 -08:00
Nathan Sidwell
59068038ea
p1857 parser parts
...
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
2020-01-30 08:45:53 -08:00
Nathan Sidwell
55695b9451
A few parser cleanups
...
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.
2020-01-30 08:33:53 -08:00
Nathan Sidwell
1fa99997b3
Fix PRAGMA_EOL location
...
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-30 08:04:02 -08:00
Nathan Sidwell
134f3dc4ce
Constify preprocess_token langhook
...
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.
2020-01-27 09:57:26 -08:00
Nathan Sidwell
c8e7875bdc
Merge master a1f6eff20e
2020-01-24 06:32:18 -08:00
Nathan Sidwell
c594dbeb15
Module keywords are keywords
...
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-24 04:59:04 -08:00
Nathan Sidwell
e3346f355d
preprocessor defined & has_include fixes
...
libcpp/
* expr.c (parse_defined): Fixup for modules.
(parse_has_include): Remove controlling macro nonsense.
2020-01-23 13:53:18 -08:00
Nathan Sidwell
885527c002
Implement p1857, part 1
...
Preprocessor lexes module directives as deferred pragmas. Minimal changes elsewhere.
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-23 13:49:45 -08:00
Nathan Sidwell
d2e55cb5ec
Simplify remap_module
...
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.
2020-01-21 12:09:26 -08:00
Nathan Sidwell
841308c4c5
Separate & delay cpp and c++ state reading
...
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.
2020-01-21 11:47:04 -08:00
Nathan Sidwell
f96e41419b
Encode directness in remap array
...
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-21 07:14:55 -08:00
Nathan Sidwell
db89f94f8a
Merge master 3a43459715.
...
Coroutines committed.
2020-01-20 12:37:12 -08:00
Nathan Sidwell
e2b8d17009
Merge master bf09d886a4.
2020-01-17 11:13:06 -08:00
Nathan Sidwell
a50fabeabb
Macros only for header units
...
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.
2020-01-16 13:24:59 -08:00
Nathan Sidwell
6fc5548356
Separate counts from config
...
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.
2020-01-16 12:42:40 -08:00
Nathan Sidwell
6d8ba29487
Start separating preprocessor and language reading
...
gcc/cp/
* (slurping::slurping): Set current to ~0u.
(module_state::read_{initial,preprocessor,language}): New, broken
out of ...
(module_state::read): ... here. Call them.
2020-01-16 08:25:46 -08:00
Nathan Sidwell
e7a97f52d7
Merge master.
...
gcc/cp/
* module.cc (depset::traits): Add empty_zero_p.
2020-01-15 06:28:30 -08:00
Nathan Sidwell
52ccbf1b00
Here goes nothing ...
...
gcc/cp/
* Make-lang.in (MODULE_REVISION): SVN's dead, man.
2020-01-13 05:59:09 -08:00
Nathan Sidwell
336ad859dd
Merge trunk r280131.
...
Bye bye SVN, I'm sure the farm upstate will be fine.
From-SVN: r280139
2020-01-10 20:49:35 +00:00
Nathan Sidwell
7e33753892
re PR c++/79592 (incomplete diagnostic "is not usable as a constexpr function because:")
...
PR c++/79592
* g++.dg/ubsan/vptr-4.C: Add expected error.
From-SVN: r279903
2020-01-06 15:22:54 +00:00
Nathan Sidwell
6b8c226714
Merge trunk r279868
...
From-SVN: r279901
2020-01-06 13:55:06 +00:00
Nathan Sidwell
f4dac8a04d
Header unit deduplication milestone
...
gcc/testsuite/
* g++.dg/modules/string-1_{a.H,b.C}: New.
From-SVN: r279868
2020-01-03 20:21:48 +00:00
Nathan Sidwell
1eaa0a5422
module.cc (trees_in::decl_value): Disambiguate entity_ary slots from entuty_hash slots.
...
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.
From-SVN: r279867
2020-01-03 19:56:32 +00:00
Nathan Sidwell
ff3b72cde7
Return the deduped binfo
...
gcc/cp/
* module.cc (trees_in::tree_value): Return existing.
gcc/testsuite/
* g++.dg/modules/merge-11{.h,_a.H,_b.C}: New.
From-SVN: r279865
2020-01-03 18:22:19 +00:00
Nathan Sidwell
fa2b4dcf66
anonymous bitfield merging
...
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.
From-SVN: r279864
2020-01-03 17:52:44 +00:00
Nathan Sidwell
030308ea7a
tree.h (DECL_ALIGN_RAW): New, use it in accessors.
...
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.
From-SVN: r279863
2020-01-03 15:47:33 +00:00
Nathan Sidwell
dada502000
Set returns_struct
...
gcc/cp/
* module.cc (module_state::read_cluster): Set cfun->returns_struct
approprately.
From-SVN: r279862
2020-01-03 15:08:13 +00:00
Nathan Sidwell
df1a84d95f
Allow post-streamed export lookup
...
gcc/cp/
* module.cc (import_entity_module): Cope with exported entities.
From-SVN: r279860
2020-01-03 14:30:52 +00:00
Nathan Sidwell
0a74b817a2
Fix std::align_val_t
...
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.
From-SVN: r279844
2020-01-02 19:59:20 +00:00
Nathan Sidwell
4920d278da
Binfo deduplication
...
gcc/cp/
* module.cc (nodel_decl_has): 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.
From-SVN: r279843
2020-01-02 19:26:10 +00:00
Nathan Sidwell
bd0115f848
Simplify binfo streaming.
...
gcc/cp/
* module.cc (trees_{in,out}::tree_binfo): Delete.
(trees_{in,out}::tree_node): Use binfo chain to find binfo.
From-SVN: r279842
2020-01-02 17:41:44 +00:00
Nathan Sidwell
eb690f1302
Merge trunk r279811.
...
Update all the years!
From-SVN: r279838
2020-01-02 16:33:29 +00:00
Nathan Sidwell
5ca4b1c654
Merge trunk r279809
...
That's 2019 done.
From-SVN: r279836
2020-01-02 16:07:44 +00:00
Nathan Sidwell
812831ae7b
Merge trunk r279556
...
gcc/
* diagnostic-core.h (progname): Resolve conflict.
From-SVN: r279834
2020-01-02 15:11:15 +00:00
Nathan Sidwell
b12b6c2ffe
Merge trunk r279555
...
From-SVN: r279833
2020-01-02 14:36:27 +00:00
Nathan Sidwell
df55ee6828
Merge trunk r279473
...
From-SVN: r279832
2020-01-02 14:10:09 +00:00
Nathan Sidwell
1d3fa2d6fa
Apply trunk r279473
...
gcc/cp/
* constexpr.cc (check_constexpr_fundef): Clear non-potential
result before registering.
From-SVN: r279831
2020-01-02 14:03:54 +00:00
Nathan Sidwell
8e60cdb35f
Merge trunk r279472
...
From-SVN: r279830
2020-01-02 13:06:44 +00:00
Nathan Sidwell
4cf6ceeeaa
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.
From-SVN: r279590
2019-12-19 18:41:56 +00:00
Nathan Sidwell
72172d601a
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.
From-SVN: r279589
2019-12-19 18:03:11 +00:00
Nathan Sidwell
7ce4ff2a1c
module.cc (trees_in::decl_value): Fix enum-context merging.
...
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.
From-SVN: r279586
2019-12-19 16:41:13 +00:00
Nathan Sidwell
2fed242a98
Formatting fix
...
gcc/cp/
* module.cc (trees_out::key_mergeable): Fix indentation.
From-SVN: r279585
2019-12-19 16:15:29 +00:00
Nathan Sidwell
059dbd509d
Fix ICE with merging template class member classes.
...
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.
From-SVN: r279578
2019-12-19 14:14:43 +00:00
Nathan Sidwell
7a1feda6a2
Fix implicit member parm-type thinko.
...
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.
From-SVN: r279568
2019-12-19 12:44:02 +00:00
Nathan Sidwell
05fac9fb6e
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-memner-1_[abcde].C: New.
From-SVN: r279545
2019-12-18 21:37:39 +00:00
Nathan Sidwell
9db52afe3f
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.
From-SVN: r279469
2019-12-17 20:46:11 +00:00
Nathan Sidwell
24f471755a
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.
From-SVN: r279467
2019-12-17 16:55:26 +00:00
Nathan Sidwell
3ee7ff8511
More cross-module redeclaration checks
...
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.
From-SVN: r279457
2019-12-17 12:32:57 +00:00
Nathan Sidwell
3d07d0302f
Merge trunk r279384.
...
From-SVN: r279386
2019-12-13 21:54:40 +00:00
Nathan Sidwell
c2ac89e1a0
Rename specset to pendset
...
gcc/cp/
* module.cc: Rename specset to pendset. Document.
From-SVN: r279384
2019-12-13 21:21:42 +00:00
Nathan Sidwell
4a3a6f6079
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.
From-SVN: r279382
2019-12-13 21:15:05 +00:00
Nathan Sidwell
48beb65a20
Add DECL_MODULE_ENTITY_P
...
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.
From-SVN: r279371
2019-12-13 13:20:33 +00:00
Nathan Sidwell
194cc57d53
Reserve an extra lazy index bit.
...
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.
From-SVN: r279313
2019-12-12 20:23:10 +00:00
Nathan Sidwell
23a0606245
cp-tree.h (DECL_MODULE_PARTITION_P): Update doc.
...
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.
From-SVN: r279312
2019-12-12 20:15:41 +00:00
Nathan Sidwell
0c359f2f35
Refactor tag checking function
...
gcc/cp/
* decl.c (lookup_and_check_tag): Refactor.
From-SVN: r279311
2019-12-12 20:12:09 +00:00
Nathan Sidwell
86fafd4935
ICE when dumping
...
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.
From-SVN: r279308
2019-12-12 15:39:45 +00:00
Nathan Sidwell
664f600d74
Simplify maybe_strip_cmi_prefix
...
gcc/cp/
* module.cc (maybe_strip_cmi_prefix): Simplify.
From-SVN: r279057
2019-12-06 18:04:05 +00:00
Nathan Sidwell
7bf2f5b0e4
Remove #ifdef'd code
...
gcc/cp/
* module.cc (trees_out::key_mergeable): Remove unreachable code.
From-SVN: r279056
2019-12-06 17:52:39 +00:00
Nathan Sidwell
3b1b8f59f3
Uninstantiated template friends are not special
...
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.
From-SVN: r279054
2019-12-06 17:48:35 +00:00
Nathan Sidwell
b32d9665c0
Don't mark friend specializations
...
gcc/cp/
* module.cc (trees_out::mark_class_def): No need to mark friend
specializations.
From-SVN: r279052
2019-12-06 16:56:13 +00:00
Nathan Sidwell
d5cd8e21e7
Zap copied template module info.
...
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.
From-SVN: r279051
2019-12-06 16:10:31 +00:00
Nathan Sidwell
c218eb74ee
Cluster no longer stores biased index
...
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.
From-SVN: r279048
2019-12-06 14:10:14 +00:00
Nathan Sidwell
43135f359d
module.cc (trees_out::decl_value): No need to look for dep again.
...
gcc/cp/
* module.cc (trees_out::decl_value): No need to look for dep again.
From-SVN: r279047
2019-12-06 13:49:06 +00:00
Nathan Sidwell
60e94fb89a
Cache importing indices in depset
...
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.
From-SVN: r279044
2019-12-06 13:18:35 +00:00
Nathan Sidwell
0f4a4a2e1d
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.
From-SVN: r279042
2019-12-06 12:31:13 +00:00
Nathan Sidwell
5033b29ca9
Merge trunk r279023.
...
libstdc++ c++2a is now using structured bindings, and those don't
work :(
From-SVN: r279041
2019-12-06 12:09:28 +00:00
Nathan Sidwell
0f849e09dc
module.cc (depset::hash::add_namespace_context): New.
...
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.
From-SVN: r279022
2019-12-05 21:31:03 +00:00
Nathan Sidwell
12043116d9
module.cc (depset::hash::add_dependency): Do not depend on imports.
...
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.
From-SVN: r279016
2019-12-05 19:22:58 +00:00
Nathan Sidwell
67c1da61c3
module.cc (depset::{make,add}_dependency): Drop is_import parm, update all callers.
...
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.
From-SVN: r279015
2019-12-05 18:47:53 +00:00
Nathan Sidwell
87c4e50b0c
cp-tree.h (DECL_MODULE_PARTITION_P): New.
...
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.
From-SVN: r279014
2019-12-05 18:33:17 +00:00
Nathan Sidwell
f2ddde3922
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.
From-SVN: r279011
2019-12-05 17:59:06 +00:00
Nathan Sidwell
285cf50d89
module.cc (macro_import::slot): Adjust encoding to use fewer bits.
...
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.
From-SVN: r279009
2019-12-05 17:49:07 +00:00
Nathan Sidwell
e2ec5e6536
Module index no longer on the decl itself.
...
From-SVN: r279008
2019-12-05 16:21:46 +00:00
Nathan Sidwell
80f8e7ebe8
name-lookup.h (add_imported_namespace): Origin is unsigned.
...
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.
From-SVN: r279007
2019-12-05 16:01:27 +00:00
Nathan Sidwell
9619d17ff4
cp-tree.h (get_instantiating_module_decl): Delete.
...
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.
From-SVN: r279006
2019-12-05 15:40:49 +00:00
Nathan Sidwell
d1b62c763d
module.cc (trees_in::{enum ,get_}{dup,ord}ness): 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.
From-SVN: r279005
2019-12-05 15:36:12 +00:00
Nathan Sidwell
35fb5ddc69
decl.c (duplicate_decls): Pass the old decl to module_may_redeclare.
...
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.
From-SVN: r278999
2019-12-05 13:16:24 +00:00
Nathan Sidwell
e9708070db
module.cc (trees_out::decl_node): Move is_import test into non-streaming block.
...
gcc/cp/
* module.cc (trees_out::decl_node): Move is_import test into
non-streaming block. Check the decl, not the instantiator.
From-SVN: r278997
2019-12-05 12:52:18 +00:00
Nathan Sidwell
4ce9f6875c
Elrond is dead, long live Elrond!
...
From-SVN: r278972
2019-12-04 16:51:46 +00:00
Nathan Sidwell
dff733d12f
module.cc (trees_out::decl_node): Refactor, removing duplicate code blocks.
...
gcc/cp/
* module.cc (trees_out::decl_node): Refactor, removing duplicate
code blocks.
From-SVN: r278971
2019-12-04 16:49:58 +00:00
Nathan Sidwell
0a6063ba94
Delete unreachable code
...
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.
From-SVN: r278970
2019-12-04 16:31:44 +00:00
Nathan Sidwell
b762d23483
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.
From-SVN: r278969
2019-12-04 16:11:01 +00:00
Nathan Sidwell
3661a4c90d
module.cc (dumper::impl::nested_name): Add 'template ' disambiguator.
...
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.
From-SVN: r278906
2019-12-02 17:26:56 +00:00
Nathan Sidwell
770808de05
module.cc (will_be_import): New.
...
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.
From-SVN: r278772
2019-11-27 15:05:27 +00:00
Nathan Sidwell
b97d6bcf41
module.cc (trees_out::decl_node): Untangle namespace-scope emission from class-scope.
...
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.
From-SVN: r278771
2019-11-27 14:41:00 +00:00
Nathan Sidwell
e151a14da3
module.cc (trees_out::decl_node): Refactor function scope & specialization emission.
...
gcc/cp/
* module.cc (trees_out::decl_node): Refactor function scope
& specialization emission.
From-SVN: r278769
2019-11-27 14:15:42 +00:00
Nathan Sidwell
5e5f56e05f
module.cc (trees_out::decl_node): Deal with function scope before instantiations.
...
gcc/cp/
* module.cc (trees_out::decl_node): Deal with function scope
before instantiations.
From-SVN: r278766
2019-11-27 12:25:09 +00:00
Nathan Sidwell
edfffe2c61
module.cc (trees_out::decl_node): Tag and add indirects for uninstantiated template friend.
...
gcc/cp/
* module.cc (trees_out::decl_node): Tag and add indirects for
uninstantiated template friend.
(trees_in::tree_node): Likewise.
From-SVN: r278741
2019-11-26 23:02:52 +00:00
Nathan Sidwell
d7d4ae1910
module.cc (trees_out::decl_node): Remove a scope.
...
gcc/cp/
* module.cc (trees_out::decl_node): Remove a scope.
From-SVN: r278739
2019-11-26 22:21:08 +00:00
Nathan Sidwell
6a32241a8d
module.cc (depset): Delete EK_UNNAMED, EK_MAYBE_SPEC.
...
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.
From-SVN: r278733
2019-11-26 20:17:18 +00:00
Nathan Sidwell
b044d1d554
module.cc (trees_out::decl_node): Assert more.
...
gcc/cp/
* module.cc (trees_out::decl_node): Assert more.
From-SVN: r278730
2019-11-26 18:44:20 +00:00
Nathan Sidwell
0652e05476
module.cc (module_state::check_read): Simplify to print once per import.
...
gcc/cp/
* module.cc (module_state::check_read): Simplify to print once per
import.
From-SVN: r278729
2019-11-26 18:05:45 +00:00
Nathan Sidwell
198469b348
module.cc (trees_{in,out}::core_vals): Stream _EXPR operands in forward order.
...
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.
From-SVN: r278727
2019-11-26 15:44:06 +00:00
Nathan Sidwell
9a9e2ff889
module.cc (struct unnamed_entity): Delete.
...
gcc/cp/
* module.cc (struct unnamed_entity): Delete.
From-SVN: r278706
2019-11-25 21:20:59 +00:00
Nathan Sidwell
5180db9ae1
name-lookup.h (get_imported_namespace): Don't delare.
...
gcc/cp/
* name-lookup.h (get_imported_namespace): Don't delare.
* name-lookup.c (get_imported_namespace): Delete.
From-SVN: r278705
2019-11-25 21:17:33 +00:00
Nathan Sidwell
5fabdd2c96
Namespaces are in the entity_ary
...
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.
From-SVN: r278704
2019-11-25 21:12:06 +00:00
Nathan Sidwell
4771d44b98
module.cc (tree_tag): Delete tt_namespace.
...
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.
From-SVN: r278696
2019-11-25 18:56:13 +00:00
Nathan Sidwell
4c07c7435b
module.cc (trees_out::tree_decl): Write namespaces as tt_entity.
...
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.
From-SVN: r278695
2019-11-25 18:49:53 +00:00
Nathan Sidwell
7a68fb011c
module.cc (module_state::write_namespaces): Delete TABLE arg, look at the dep[0]
...
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.
From-SVN: r278694
2019-11-25 18:26:19 +00:00
Nathan Sidwell
b25fe6214b
module.cc (trees_out::decl_node): Add namespace dependency here.
...
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.
From-SVN: r278693
2019-11-25 17:53:44 +00:00
Nathan Sidwell
5e947e4935
missed scan updates
...
From-SVN: r278691
2019-11-25 14:43:00 +00:00
Nathan Sidwell
815177fb2b
module.cc (depset::hash::make_dependency): Add context dependency when discovering a new GMF binding.
...
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.
From-SVN: r278690
2019-11-25 14:37:58 +00:00
Nathan Sidwell
bed5662d49
cxx-mapper.cc (DOT_REPLACE, [...]): New.
...
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.
From-SVN: r278646
2019-11-23 13:44:57 +00:00
Nathan Sidwell
b0e16bbf73
module.cc (depset::EK_FOR_BINDING): New.
...
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.
From-SVN: r278632
2019-11-22 21:11:12 +00:00
Nathan Sidwell
3c6ca32410
module.cc (depset::hash::find_entity): Rename to ...
...
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.
From-SVN: r278629
2019-11-22 20:06:43 +00:00
Nathan Sidwell
d957fd24d5
module.cc (depset::DB_PSEUDO_SPEC_BIT): Delete.
...
gcc/cp/
* module.cc (depset::DB_PSEUDO_SPEC_BIT): Delete.
(depset::is_pseudo_spec): Delete.
(depset::add_dependency): Don't set it.
From-SVN: r278627
2019-11-22 19:39:04 +00:00
Nathan Sidwell
c07ccf3e0c
module.cc (trees_out::decl_node): We should not meet imported internal namespaces.
...
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.
From-SVN: r278625
2019-11-22 17:54:18 +00:00
Nathan Sidwell
6a335f4b5c
module.cc (trees_in::lang_decl_bools): Don't set module_origin here.
...
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.
From-SVN: r278620
2019-11-22 15:31:37 +00:00
Nathan Sidwell
833c8c1099
cp-tree.h (DECL_MODULE_IMPORT_P): #ifdef out, not yet ready
...
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.
From-SVN: r278618
2019-11-22 15:08:45 +00:00
Nathan Sidwell
9a6989cef8
module.cc (trees_out::decl_value): Ensure we stay in the section.
...
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.
From-SVN: r278615
2019-11-22 13:33:02 +00:00
Nathan Sidwell
7acbe3c96d
name-lookup.c (lookup_enum_member): Delete.
...
gcc/cp/
* name-lookup.c (lookup_enum_member): Delete.
(get_binding_or_decl): Add missing return.
From-SVN: r278603
2019-11-21 20:55:31 +00:00
Nathan Sidwell
7f546842b1
name-lookup.c (get_binding_or_decl): Only class contexts.
...
gcc/cp/
* name-lookup.c (get_binding_or_decl): Only class contexts.
* module.cc (trees_out::decl_node): Possible fixme.
From-SVN: r278602
2019-11-21 20:52:35 +00:00
Nathan Sidwell
95c50ef084
module.cc (depset::hash): Add sections member.
...
gcc/cp/
* module.cc (depset::hash): Add sections member.
(module_state::write_cluster): Use it.
(module_state::write): Set it.
From-SVN: r278601
2019-11-21 20:37:02 +00:00
Nathan Sidwell
0406d3382c
module.cc (trees_out::decl_node): Don't strip_template checking instantiation consistency.
...
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.
From-SVN: r278600
2019-11-21 20:32:51 +00:00
Nathan Sidwell
48a1e3062e
name-lookup.c (check_local_shadow): Bail out for clones.
...
gcc/cp/
* name-lookup.c (check_local_shadow): Bail out for clones.
From-SVN: r278597
2019-11-21 20:11:11 +00:00
Nathan Sidwell
b3b3453afa
module.cc (dumper::impl:nested_name): Obnly show module on imports.
...
gcc/cp/
* module.cc (dumper::impl:nested_name): Obnly show module on imports.
gcc/testsuite/
* g++dg.modules: Anjust many scans.
From-SVN: r278595
2019-11-21 20:07:44 +00:00
Nathan Sidwell
cb93a5205e
module.cc (tree_tag): Rename tt_enum_int, add tt_enum_decl.
...
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.
From-SVN: r278524
2019-11-20 20:02:25 +00:00
Nathan Sidwell
97865b85fb
module.cc (module_state::lazy_load): Add diags arg, make index unsigned.
...
gcc/cp/
* module.cc (module_state::lazy_load): Add diags arg, make index
unsigned.
(lazy_load_specializations): Use lazy_load.
From-SVN: r278522
2019-11-20 19:15:46 +00:00
Nathan Sidwell
b6b416e217
module.cc (module_state:write_cluster): Minor cleanups
...
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.
From-SVN: r278521
2019-11-20 19:00:44 +00:00
Nathan Sidwell
6df613e319
module.cc (depset:entity_kind): Reorder.
...
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.
From-SVN: r278520
2019-11-20 18:44:27 +00:00
Nathan Sidwell
47f598b396
(class depset): Drop entity_num field.
...
gcc/cp/
* (class depset): Drop entity_num field. Adjust all users to use
cluster.
(module_state::write_cluster): Merge counting and marking loops.
From-SVN: r278508
2019-11-20 16:29:02 +00:00
Nathan Sidwell
e957eadc18
module.cc (module_state): Delete unnamed_{lwm,num}.
...
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.
From-SVN: r278507
2019-11-20 16:18:42 +00:00
Nathan Sidwell
040cd3beae
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.
From-SVN: r278506
2019-11-20 15:56:26 +00:00
Nathan Sidwell
d264896667
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.
From-SVN: r278503
2019-11-20 15:34:03 +00:00
Nathan Sidwell
7d00700c29
module.cc (module_state::{read,write}_unnamed): Specializations store entity index.
...
gcc/cp/
* module.cc (module_state::{read,write}_unnamed): Specializations
store entity index.
(lazy_load_specializations): Use the entity index.
From-SVN: r278502
2019-11-20 15:13:47 +00:00
Nathan Sidwell
4500cde80b
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.
From-SVN: r278499
2019-11-20 14:18:35 +00:00
Nathan Sidwell
f1aef0ccd0
module.cc (trees_out::decl_node): Process unnamed decls directly here.
...
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
From-SVN: r278466
2019-11-19 20:45:41 +00:00
Nathan Sidwell
a038e51369
module.cc (enum tree_tag): Kill tt_anon.
...
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.
From-SVN: r278462
2019-11-19 19:14:39 +00:00
Nathan Sidwell
f22aa9d814
cp-tree.h (lazy_load_binding): Drop final parm.
...
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.
From-SVN: r278456
2019-11-19 17:10:28 +00:00
Nathan Sidwell
8e952ad0b9
Entities are numbered (part 1)
...
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.
From-SVN: r278454
2019-11-19 16:09:58 +00:00
Nathan Sidwell
48decd0dfc
cp-tree.h (check_mergeable_specialization): Take spec_entry arg.
...
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.
From-SVN: r278263
2019-11-14 19:34:33 +00:00
Nathan Sidwell
dcde38d532
cp-tree.h (lang_decl_base): Note 8-bits.
...
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.
From-SVN: r278257
2019-11-14 17:48:29 +00:00
Nathan Sidwell
95e90a6f5a
Merge trunk r278228.
...
From-SVN: r278241
2019-11-14 15:14:08 +00:00
Nathan Sidwell
33d139a4bd
rtti.c ({push,pop}_abi_namespace): Save and restore module state.
...
gcc/cp/
* rtti.c ({push,pop}_abi_namespace): Save and restore module
state.
(build_dynamic_cast_1, tinfo_base_init): Adjust.
From-SVN: r277712
2019-11-01 15:42:36 +00:00
Nathan Sidwell
b414b63eec
module.cc (depset::hash::find_dependencies): Reach unreached specializations.
...
gcc/cp/
* module.cc (depset::hash::find_dependencies): Reach unreached
specializations.
From-SVN: r277710
2019-11-01 15:04:03 +00:00
Nathan Sidwell
a02fbe1f76
module.cc (module_state::read_cluster): Hack around cfun.
...
gcc/cp/
* module.cc (module_state::read_cluster): Hack around cfun.
From-SVN: r277665
2019-10-31 11:23:38 +00:00
Nathan Sidwell
6a7526f276
module.cc (trees_out): Clean up dead code, update instrumentation.
...
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.
From-SVN: r277574
2019-10-29 14:52:55 +00:00
Nathan Sidwell
704e330d9c
module.cc (trees_out::core_vals): Audit VAR_DECL, removing fixme.
...
gcc/cp/
* module.cc (trees_out::core_vals): Audit VAR_DECL, removing fixme.
From-SVN: r277570
2019-10-29 13:31:15 +00:00
Nathan Sidwell
6662f7e1b4
module.cc (trees_{in,out}::core_vals): Stream more block fields.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Stream more block fields.
From-SVN: r277538
2019-10-28 19:33:57 +00:00
Nathan Sidwell
eda238fc4b
module.cc (trees_{in,out}::core_vals): Stream template info's typedefs needing access checks.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Stream template info's
typedefs needing access checks.
From-SVN: r277536
2019-10-28 19:17:10 +00:00
Nathan Sidwell
e5900036fe
module.cc (depset): Correct documentation.
...
gcc/cp/
* module.cc (depset): Correct documentation.
(walk_kind_name): Delete unused.
(trees_out::get_container): Lookup for redirect.
From-SVN: r277532
2019-10-28 19:01:51 +00:00
Nathan Sidwell
07572f3cdf
module.cc (node_template_info): Type cannot be NULL.
...
gcc/cp/
* module.cc (node_template_info): Type cannot be NULL.
From-SVN: r277529
2019-10-28 17:06:09 +00:00
Nathan Sidwell
b102dc42c7
module.cc (trees_out::{fn_parms_ini,tpl_header}): Privatize, resolving fixme.
...
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.
From-SVN: r277522
2019-10-28 14:29:07 +00:00
Nathan Sidwell
9f9a88de54
Merge trunk r277514.
...
From-SVN: r277519
2019-10-28 14:06:26 +00:00
Nathan Sidwell
184cb6c77b
module.cc (trees_out::type_node): Move typdef printing after variant printing.
...
gcc/cp/
* module.cc (trees_out::type_node): Move typdef printing after
variant printing.
(trees_in::tree_node): Simplity tt_typedef_type.
From-SVN: r277460
2019-10-25 17:14:36 +00:00
Nathan Sidwell
2db7663f58
module.cc (trees_out::core_vals): Check if template parm has a canonical type before processing it.
...
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.
From-SVN: r277457
2019-10-25 16:44:44 +00:00
Nathan Sidwell
71605a44ef
module.cc (enum tree_tag): Delete tt_typename_decl.
...
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.
From-SVN: r277456
2019-10-25 15:35:18 +00:00
Nathan Sidwell
4cfb372295
module.cc (trees_out::decl_node): Fixup anonymous case.
...
gcc/cp/
* module.cc (trees_out::decl_node): Fixup anonymous case.
From-SVN: r277447
2019-10-25 12:52:37 +00:00
Nathan Sidwell
e0208fe787
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.
From-SVN: r277444
2019-10-25 12:01:54 +00:00
Nathan Sidwell
717b4e3302
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.
From-SVN: r277429
2019-10-24 23:16:49 +00:00
Nathan Sidwell
19a4d5d48c
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.
From-SVN: r277428
2019-10-24 23:10:23 +00:00
Nathan Sidwell
fa0ef83417
module.cc (trees_{in,out}::tpl_parm_value): No need to stream bound ttp's TI here.
...
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.
From-SVN: r277423
2019-10-24 20:12:38 +00:00
Nathan Sidwell
3bcf4c0d06
Merge trunk r277416.
...
From-SVN: r277418
2019-10-24 17:20:12 +00:00
Nathan Sidwell
79d79839f5
module.cc (enum ct_decl_flags): Add cdf_is_defn.
...
gcc/cp/
* module.cc (enum ct_decl_flags): Add cdf_is_defn.
(module_state::{read,write}_cluster): Don't stream definitions
separately.
From-SVN: r277357
2019-10-23 23:06:43 +00:00
Nathan Sidwell
9c3b02b7b5
module.cc (get_clone_target): Assert more.
...
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.
From-SVN: r277356
2019-10-23 22:56:28 +00:00
Nathan Sidwell
6e64034884
dumpfile.c (dump_begin): Move decls for RAII.
...
gcc/
* dumpfile.c (dump_begin): Move decls for RAII.
From-SVN: r277355
2019-10-23 22:16:48 +00:00
Nathan Sidwell
a59bd8ad23
module.cc (trees_{in,out}::tpl_parm_value): Don't stream tpi here.
...
gcc/cp/
* module.cc (trees_{in,out}::tpl_parm_value): Don't stream tpi
here.
(trees_{in,out}::tree_value): Strip now-unreachable code.
From-SVN: r277350
2019-10-23 20:31:04 +00:00
Nathan Sidwell
0d7974add8
module.cc (enum tree_tag): Add tt_tpl_parm.
...
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.
From-SVN: r277334
2019-10-23 16:03:19 +00:00
Nathan Sidwell
9f93a298de
pt.c (reduce_template_parm_level): Attach TPI to the type or decl.
...
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.
From-SVN: r277332
2019-10-23 14:37:25 +00:00
Nathan Sidwell
58b85e2635
module.cc (trees_{in,out}::tpl_parms{,_fini}): Drop outer parms, add tpl_levels.
...
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.
From-SVN: r277272
2019-10-21 23:03:47 +00:00
Nathan Sidwell
1f48f66ae7
module.cc (trees_in::back_ref): New, broken out of ...
...
gcc/cp/
* module.cc (trees_in::back_ref): New, broken out of ...
(trees_in::tree_node): ... here. Call it multiple times.
From-SVN: r277269
2019-10-21 19:48:53 +00:00
Nathan Sidwell
10349ff9c5
module.cc (trees_{in,out}::add_indirects): New, broken out of ...
...
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.
From-SVN: r277265
2019-10-21 18:37:50 +00:00
Nathan Sidwell
1fff3965bf
module.cc (trees_{in,out}::key_mergeable): Do not stream tpl header of fn parms here.
...
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.
From-SVN: r277263
2019-10-21 17:32:41 +00:00
Nathan Sidwell
f70dedf201
Merge trunk r277167.
...
From-SVN: r277195
2019-10-18 22:54:09 +00:00
Nathan Sidwell
57a2657977
module.cc (trees_out::decl_value): Excise template_parm handling.
...
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.
From-SVN: r277163
2019-10-18 18:58:31 +00:00
Nathan Sidwell
b106a456b5
module.cc (dumper::impl::nested_name): Check template_parm_p directly.
...
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.
From-SVN: r277162
2019-10-18 18:28:57 +00:00
Nathan Sidwell
2e3baac43a
module.cc (dumper::impl::nested_name): Detect template parms.
...
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.
From-SVN: r277159
2019-10-18 17:50:48 +00:00
Nathan Sidwell
4a8bb127b1
module.cc (trees_{in,out}::start): Stream code if permitted.
...
gcc/cp/
* module.cc (trees_{in,out}::start): Stream code if permitted.
Adjust callers.
From-SVN: r277152
2019-10-18 11:52:44 +00:00
Nathan Sidwell
ea031678c8
module.cc (trees_out::tpl_parms): Assert a lot.
...
gcc/cp/
* module.cc (trees_out::tpl_parms): Assert a lot.
(depset::hash::find_dependencies, module_state::write_cluster):
Mark mergeable sort-specific points.
From-SVN: r277127
2019-10-17 17:44:13 +00:00
Nathan Sidwell
df2384f4e3
module.cc (trees_out::decl_value): Stream thunks too.
...
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.
From-SVN: r277116
2019-10-17 15:18:15 +00:00
Nathan Sidwell
0f10a98c56
module.cc (trees_{in,out}::tpl_parms): Cope with non-shared 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.
From-SVN: r277109
2019-10-17 12:45:32 +00:00
Nathan Sidwell
d4a3870c8e
cp-objcp-common.c (cp_pushdecl): Set DECL_CONTEXT.
...
gcc/cp/
* cp-objcp-common.c (cp_pushdecl): Set DECL_CONTEXT.
gcc/testsuite/
* g++.dg/modules/builtin-3_[ab].C: New.
From-SVN: r277106
2019-10-17 12:38:33 +00:00
Nathan Sidwell
badc690dab
module.cc (trees_{in,out}::decl_value): Refactor some ifs.
...
gcc/cp/
* module.cc (trees_{in,out}::decl_value): Refactor some ifs.
From-SVN: r277104
2019-10-17 12:10:55 +00:00
Nathan Sidwell
5db4ba4a1f
decl.c (cp_make_fname_decl): Set context to global namespace, outside functions.
...
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.
From-SVN: r277081
2019-10-16 20:54:02 +00:00
Nathan Sidwell
5f44c9577d
rtti.c (get_tinfo_desc): Set DECL_CONTEXT.
...
gcc/cp/
* rtti.c (get_tinfo_desc): Set DECL_CONTEXT.
gcc/testsuite/
* g++.dg/modules/tinfo-1.C: New.
From-SVN: r277074
2019-10-16 16:58:42 +00:00
Nathan Sidwell
fab636d209
module.cc (enum tree_tag): Add tt_parm.
...
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.
From-SVN: r277069
2019-10-16 14:34:17 +00:00
Nathan Sidwell
ce0bab834c
module.cc (trees_out::core_vals): Don't assert template arguments visited.
...
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.
From-SVN: r277006
2019-10-15 18:33:01 +00:00
Nathan Sidwell
d3d2f001d5
module.cc (trees_out::get_container): New, broken out of ...
...
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.
From-SVN: r277004
2019-10-15 17:07:00 +00:00
Nathan Sidwell
45916f8c3d
Merge trunk r277002.
...
From-SVN: r277003
2019-10-15 15:22:25 +00:00
Nathan Sidwell
5a9248dc06
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.
From-SVN: r277002
2019-10-15 14:57:08 +00:00
Nathan Sidwell
ef5c7fa2b1
module.cc (merge_kind): Add MK_local_friend.
...
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.
From-SVN: r277001
2019-10-15 14:33:14 +00:00
Nathan Sidwell
43e296f851
Merge trunk r276888.
...
Pull in c++20 concepts.
From-SVN: r276893
2019-10-11 16:08:42 +00:00
Nathan Sidwell
2b0ffa5977
module.cc (trees_{in,out}::core_vals): Don't stream function parms here.
...
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.
From-SVN: r276884
2019-10-11 13:39:44 +00:00
Nathan Sidwell
583a504bda
module.cc (enum walk_kind): Remove WK_merge.
...
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.
From-SVN: r276883
2019-10-11 13:31:12 +00:00
Nathan Sidwell
e19d9e72d5
optimize.c (maybe_clone_body): Allow aliasing with modules.
...
gcc/cp/
* optimize.c (maybe_clone_body): Allow aliasing with modules.
From-SVN: r276881
2019-10-11 12:58:12 +00:00
Nathan Sidwell
a514ff7dcf
module.cc (enum depset::entity_kind): Remove EK_CLONE.
...
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.
From-SVN: r276880
2019-10-11 12:51:22 +00:00
Nathan Sidwell
86839701cb
Reconstruct clones on stream in
...
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.
From-SVN: r276879
2019-10-11 12:43:11 +00:00
Nathan Sidwell
f8e1cbb894
cp-tree.h (DECL_NEEDS_VTT_PARM_P): Delete.
...
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.
From-SVN: r276852
2019-10-10 20:38:32 +00:00
Nathan Sidwell
3c68293dda
class.c (maybe_add_class_template_decl_list): Don't check template-id-expr friends.
...
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.
From-SVN: r276775
2019-10-09 21:46:21 +00:00
Nathan Sidwell
0344a960c5
cp-tree.h (DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P): New.
...
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.
From-SVN: r276769
2019-10-09 19:25:17 +00:00
Nathan Sidwell
36f99a3dba
pt.c (push_template_decl_real): Always set DECL_CHAIN for non-pushed friends.
...
gcc/cp/
* pt.c (push_template_decl_real): Always set DECL_CHAIN for
non-pushed friends.
From-SVN: r276761
2019-10-09 15:03:04 +00:00
Nathan Sidwell
18eec4a374
module.cc (trees_out::decl_value): Check streaming before dump.
...
gcc/cp/
* module.cc (trees_out::decl_value): Check streaming before dump.
(module_name): Protect from not modules.
From-SVN: r276710
2019-10-08 19:36:18 +00:00
Nathan Sidwell
4366ec4e28
module.cc (enum merge_kind): Rename non->unique.
...
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.
From-SVN: r276704
2019-10-08 15:43:40 +00:00
Nathan Sidwell
46ce8ce6a7
module.cc (struct nodel_decl_hash): New.
...
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.
From-SVN: r276701
2019-10-08 14:01:00 +00:00
Nathan Sidwell
0dc19040b2
module.cc (enum walk_kind): Rename body->value, mergeable->merge.
...
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.
From-SVN: r276697
2019-10-08 12:10:23 +00:00
Nathan Sidwell
b9db16d83a
module.cc (enum trees_out::tags): Delete tag_mergeable, tag_cloned.
...
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.
From-SVN: r276677
2019-10-07 20:32:37 +00:00
Nathan Sidwell
a73cf07789
module.cc (trees_in::get_odrness): Check if overrun.
...
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.
From-SVN: r276676
2019-10-07 20:29:25 +00:00
Nathan Sidwell
2c6e1dc2f4
module.cc (trees_{in,out}::core_vals): Stream decl_non_common.result for using decls.
...
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.
From-SVN: r276666
2019-10-07 16:46:17 +00:00
Nathan Sidwell
eb9ca9da08
module.cc (enum tree_tag): Add tt_decl.
...
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.
From-SVN: r276662
2019-10-07 15:39:08 +00:00
Nathan Sidwell
6341b0dee7
module.cc (trees_out::decl_node): Refactor some instantiation discovery.
...
gcc/cp/
* module.cc (trees_out::decl_node): Refactor some instantiation
discovery.
From-SVN: r276656
2019-10-07 14:03:26 +00:00
Nathan Sidwell
2d2d01f0a3
Merge trunk r276597.
...
From-SVN: r276598
2019-10-04 19:42:21 +00:00
Nathan Sidwell
c67eeaf6a9
module.c (trees_out:decl_node): More switchification and code movement.
...
gcc/cp/
* module.c (trees_out:decl_node): More switchification and code
movement.
From-SVN: r276586
2019-10-04 15:14:06 +00:00
Nathan Sidwell
939f96284d
module.c (trees_out:decl_node): Switchify, and move some checks before template detection.
...
gcc/cp/
* module.c (trees_out:decl_node): Switchify, and move some checks
before template detection.
From-SVN: r276583
2019-10-04 14:57:00 +00:00
Nathan Sidwell
e7deb02d93
module.cc (trees_in::tree_value): Rework merge_kind switching.
...
gcc/cp/
* module.cc (trees_in::tree_value): Rework merge_kind switching.
(trees_{in,out}::key_mergeable): Likewise.
From-SVN: r276578
2019-10-04 13:48:44 +00:00
Nathan Sidwell
c50b814d3c
module.cc (enum merge_kind): Reorder.
...
gcc/cp/
* module.cc (enum merge_kind): Reorder.
From-SVN: r276573
2019-10-04 12:10:09 +00:00
Nathan Sidwell
823e32ee93
module.cc (trees_out::decl_node): Merge and reorder tinfo streaming.
...
gcc/cp/
* module.cc (trees_out::decl_node): Merge and reorder tinfo
streaming.
(trees_in::tree_node): Merge tinfo streaming.
From-SVN: r276526
2019-10-03 19:39:07 +00:00
Nathan Sidwell
ba8625fcae
module.cc (depset::hash::add_dependency): Separate EK_REDIRECT handling from EK_MAYBE_SPEC.
...
gcc/cp/
* module.cc (depset::hash::add_dependency): Separate EK_REDIRECT
handling from EK_MAYBE_SPEC.
(get_instantiating_module_decl): Reorder checks, remove fixme.
From-SVN: r276521
2019-10-03 18:49:05 +00:00
Nathan Sidwell
64ef524f15
Add module-cmi
...
From-SVN: r276520
2019-10-03 18:02:52 +00:00
Nathan Sidwell
f87cba67f6
module.cc (trees_out::decl_node): Check DECL_LANG_SPECIFIC.
...
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.
From-SVN: r276517
2019-10-03 15:59:30 +00:00
Nathan Sidwell
3ce26bd9fc
module.cc (elf_in::{defrost,begin}): Advise random seeking.
...
gcc/cp/
* module.cc (elf_in::{defrost,begin}): Advise random seeking.
From-SVN: r276514
2019-10-03 14:17:58 +00:00
Nathan Sidwell
6bf2331123
module.cc (depset::hash::add_dependency): Drop is_import arg, update callers.
...
gcc/cp/
* module.cc (depset::hash::add_dependency): Drop is_import arg,
update callers. Calculate it here.
From-SVN: r276513
2019-10-03 14:07:35 +00:00
Nathan Sidwell
ae01adcd0c
cp-tree.h (MODULE_SLOT_*): Move to ...
...
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.
From-SVN: r276509
2019-10-03 13:19:06 +00:00
Nathan Sidwell
1b28e44fd3
module.cc (trees_out::tree_ctx): Delete, forward all callers to tree_node.
...
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.
From-SVN: r276485
2019-10-02 19:48:19 +00:00
Nathan Sidwell
93fa40b795
module.cc (trees_out::tree_type): Rename to ...
...
gcc/cp/
* module.cc (trees_out::tree_type): Rename to ...
(trees_out::type_node): Drop walk_kind arg, return void. Update
callers.
From-SVN: r276483
2019-10-02 19:23:56 +00:00
Nathan Sidwell
a10daf43d5
module.cc (trees_out::tree_ctx): Drop need_contents parm.
...
gcc/cp/
* module.cc (trees_out::tree_ctx): Drop need_contents parm.
Update callers.
(trees_out::tree_{type,decl}: Likewise.
From-SVN: r276478
2019-10-02 18:41:58 +00:00
Nathan Sidwell
8322a462ef
module.cc (trees_out::tree_ctx): Drop inner_decl parm.
...
gcc/cp/
* module.cc (trees_out::tree_ctx): Drop inner_decl parm. Update
callers.
(trees_out::tree_namespace): Likewise.
From-SVN: r276477
2019-10-02 18:27:37 +00:00
Nathan Sidwell
d1f9e86750
cp-tree.h (MK_*): Document better.
...
gcc/cp/
* cp-tree.h (MK_*): Document better.
From-SVN: r276476
2019-10-02 17:48:30 +00:00
Nathan Sidwell
bf32d83a4b
cp-tree.h (MODULE_CURRENT, [...]): Delete.
...
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.
From-SVN: r276475
2019-10-02 17:36:38 +00:00
Nathan Sidwell
fdda1214b5
Don't equivocate GMF with module
...
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.
From-SVN: r276460
2019-10-02 13:50:10 +00:00
Nathan Sidwell
475d276318
cp-tree.h (set_originating_module): Add friend_p.
...
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.
From-SVN: r276400
2019-10-01 11:01:48 +00:00
Nathan Sidwell
2c7192ea60
cp-tree.h (set_module_owner): Delete.
...
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.
From-SVN: r276342
2019-09-30 16:49:01 +00:00
Nathan Sidwell
3c978b7d31
Merge trunk r276201.
...
From-SVN: r276208
2019-09-27 20:11:10 +00:00
Nathan Sidwell
972da9df5d
decl.c (fixup_anonymous_aggr): Partially revert recent change.
...
gcc/cp/
* decl.c (fixup_anonymous_aggr): Partially revert recent change.
(grokfndecl): Call set_originating_module before determining
specialization.
(grokdeclarator): Likewise.
From-SVN: r276201
2019-09-27 19:35:02 +00:00
Nathan Sidwell
b095634d58
cp-tree.h (set_{originating,instantiating}_module): Declare.
...
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.
From-SVN: r276194
2019-09-27 18:33:59 +00:00
Nathan Sidwell
dd09a5c4da
cp-tree.h (get_module_owner): Delete.
...
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.
From-SVN: r276182
2019-09-27 14:54:08 +00:00
Nathan Sidwell
3d48ab1aa4
cp-tree.h (get_declared_module_origin): 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.
From-SVN: r276181
2019-09-27 13:28:57 +00:00
Nathan Sidwell
354f7e3bc3
cp-tree.h (DECL_MODULE_OWNER): Restrict to var/fn/type/template/namespace.
...
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.
From-SVN: r276160
2019-09-26 19:03:49 +00:00
Nathan Sidwell
2d168eaba0
modules.cc (enum merge_kind): Rearrange.
...
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.
From-SVN: r276124
2019-09-25 13:39:04 +00:00
Nathan Sidwell
1a04d34b11
modules.cc (trees_out::tree_decl): RESULT and LABEL decls written by value.
...
gcc/cp/
* modules.cc (trees_out::tree_decl): RESULT and LABEL decls
written by value. Assert only expected things remain by name.
From-SVN: r276104
2019-09-24 14:51:18 +00:00
Nathan Sidwell
84e064b5fc
modules.cc (enum tree_tag): Add tt_data_member.
...
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.
From-SVN: r276101
2019-09-24 14:35:30 +00:00
Nathan Sidwell
5272490981
module.cc (depset): Add DB_BOTH_SPEC_BIT.
...
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.
From-SVN: r276066
2019-09-23 20:26:23 +00:00
Nathan Sidwell
9b0d788a82
decl.c (fixup_anonymous_aggr): Clear LAZY flags, no need to strip out fns.
...
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.
From-SVN: r276005
2019-09-20 20:14:44 +00:00
Nathan Sidwell
f03556d810
module.cc (enum merge_kind): Add MK_{decl,type}_tmpl_spec, MK_type_partual_spec.
...
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.
From-SVN: r275988
2019-09-20 02:27:00 +00:00
Nathan Sidwell
404a7ac2e8
module.cc (slurping::slurping): Init current to mostpos - 1.
...
gcc/cp/
* module.cc (slurping::slurping): Init current to mostpos - 1.
(module_state::read): Increment slurp->current when done.
From-SVN: r275987
2019-09-20 00:33:42 +00:00
Nathan Sidwell
471a100c56
module.cc (trees_in::tree_node): Check overrun more.
...
gcc/cp/
* module.cc (trees_in::tree_node): Check overrun more.
From-SVN: r275980
2019-09-19 19:58:14 +00:00
Nathan Sidwell
d05c62c7f3
module.cc (trees_in::is_matching_decl): Copy DECL_TEMPLATE_INSTANTIATED.
...
gcc/cp/
* module.cc (trees_in::is_matching_decl): Copy
DECL_TEMPLATE_INSTANTIATED.
gcc/testsuite/
* g++.dg/modules/inst-5_[ab].[CH]: New.
From-SVN: r275927
2019-09-19 02:47:12 +00:00
Nathan Sidwell
b0595774eb
module.cc (trees_in::mergeables): Vec of intptr_t.
...
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.
From-SVN: r275920
2019-09-19 00:12:40 +00:00
Nathan Sidwell
f5d6fbfc11
module.cc (trees_in): Delete skip_defns & handling.
...
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.
From-SVN: r275918
2019-09-18 23:14:43 +00:00
Nathan Sidwell
fda92b0cda
module.cc (trees_in::is_skippable_defns): Defns always complete incomplete.
...
gcc/cp/
* module.cc (trees_in::is_skippable_defns): Defns always complete
incomplete.
gcc/testsuite/
* g++.dg/modules/merge-3_[ab].[CH]: New.
From-SVN: r275835
2019-09-18 04:02:27 +00:00
Nathan Sidwell
24fe0c0d38
module.cc (depset::DB_TYPE_SPEC_BIT): New.
...
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.
From-SVN: r275767
2019-09-17 03:05:37 +00:00
Nathan Sidwell
ae7be7a931
module.cc (spec_tuple): Delete type.
...
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.
From-SVN: r275766
2019-09-17 02:37:46 +00:00
Nathan Sidwell
fabcfee5cd
cp-tree.h (check_mergeable_specialization): Declare.
...
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.
From-SVN: r275765
2019-09-17 02:32:07 +00:00
Nathan Sidwell
79ec1864a9
module.cc (enum merge_kind): Add MK_linkage.
...
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.
From-SVN: r275764
2019-09-17 02:00:51 +00:00
Nathan Sidwell
59c0ac5b08
module.cc (enum merge_kind): Add MK_linkage.
...
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.
From-SVN: r275756
2019-09-16 18:45:57 +00:00
Nathan Sidwell
d0e0ce4b53
module.cc (trees_in::chained_decls): No need to deal with clones here.
...
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.
From-SVN: r275732
2019-09-15 19:30:22 +00:00
Nathan Sidwell
a2114feb25
Merge trunk r275727.
...
From-SVN: r275728
2019-09-15 13:26:21 +00:00
Nathan Sidwell
a159438d1c
name-lookup.c (get_namespace_binding): Fish out global binding, if it's a vector.
...
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.
From-SVN: r275711
2019-09-14 01:09:00 +00:00
Nathan Sidwell
32f2cf50b0
cp-tree.h (MODULE_VECTOR_LAZY_SPEC_P): Use TREE_THIS_VOLATILE.
...
gcc/cp/
* cp-tree.h (MODULE_VECTOR_LAZY_SPEC_P): Use TREE_THIS_VOLATILE.
gcc/testsuite/
* g++.dg/modules/binding-1_[abc].[HC]: New.
From-SVN: r275710
2019-09-14 00:31:02 +00:00
Nathan Sidwell
c60bb6dace
cp-tree.def (UNBOUND_CLASS_TEMPLATE): Correct docs.
...
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.
From-SVN: r275688
2019-09-12 18:49:52 +00:00
Nathan Sidwell
e33095fafb
module.cc (trees_out::core_vals): Never write template_decl's type ...
...
gcc/cp/
* module.cc (trees_out::core_vals): Never write template_decl's
type ...
(trees_in::tree_value): .. resurrect it here instead.
From-SVN: r275687
2019-09-12 18:37:06 +00:00
Nathan Sidwell
622baed8ae
module.cc: Sort many switch stmts.
...
gcc/cp/
* module.cc: Sort many switch stmts.
From-SVN: r275686
2019-09-12 15:34:13 +00:00
Nathan Sidwell
66d30b1a8e
Merge trunk r275641.
...
From-SVN: r275658
2019-09-11 18:57:57 +00:00
Nathan Sidwell
af8dff0709
typos
...
From-SVN: r275596
2019-09-10 18:22:37 +00:00
Nathan Sidwell
02cd0c0e6f
Merge trunk r275518
...
From-SVN: r275538
2019-09-09 18:39:05 +00:00
Nathan Sidwell
ab38275e2f
module.cc (enum depset::disc_bits): Delete DB_REACHED_ONCE_BIT.
...
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.
From-SVN: r275520
2019-09-09 16:15:36 +00:00
Nathan Sidwell
b2f5eb4815
module.cc (enum depset::disc_bits): Add DB_REACHED_ONCE_BIT.
...
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.
From-SVN: r275474
2019-09-06 19:25:19 +00:00
Nathan Sidwell
5c6dbac60a
Merge trunk r275458.
...
From-SVN: r275459
2019-09-06 13:23:09 +00:00
Nathan Sidwell
d3f8b04777
concept-2_[ab].C: New.
...
gcc/testsuite/
* g++.dg/modules/concept-2_[ab].C: New.
From-SVN: r275443
2019-09-05 20:18:34 +00:00
Nathan Sidwell
781a778345
module.cc (trees_{in,out}::core_vals): Stream constraint_info.
...
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.
From-SVN: r275441
2019-09-05 20:05:48 +00:00
Nathan Sidwell
cf7bb223a2
module.cc (module_state::write_location): Check streaming here.
...
gcc/cp/
* module.cc (module_state::write_location): Check streaming here.
Adjust many callers.
From-SVN: r275425
2019-09-05 17:19:45 +00:00
Nathan Sidwell
fc7fd59b07
module.cc (trees_{in,out}::core_vals): Move some node handling into the new switch.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Move some node handling
into the new switch.
From-SVN: r275424
2019-09-05 16:51:55 +00:00
Nathan Sidwell
2494c1dc72
module.cc (trees_{in,out}::core_vals): Reorder part 7.
...
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.
From-SVN: r275423
2019-09-05 16:34:31 +00:00
Nathan Sidwell
e7a02b9bbf
module.cc (trees_{in,out}::core_vals): Reorder part 6.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Reorder part 6.
From-SVN: r275420
2019-09-05 15:18:19 +00:00
Nathan Sidwell
3fc6adf03f
module.cc (trees_{in,out}::core_vals): Reorder part 5.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Reorder part 5.
From-SVN: r275419
2019-09-05 15:13:07 +00:00
Nathan Sidwell
61a9ce640d
module.cc (trees_{in,out}::core_vals): Reorder part 4.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Reorder part 4.
From-SVN: r275418
2019-09-05 15:01:56 +00:00
Nathan Sidwell
f2cf6b97d0
module.cc (trees_{in,out}::core_vals): Reorder part 3.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Reorder part 3.
From-SVN: r275417
2019-09-05 14:51:02 +00:00
Nathan Sidwell
089e5d47a6
module.cc (trees_{in,out}::core_vals): Reorder part 2.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Reorder part 2.
From-SVN: r275416
2019-09-05 14:39:52 +00:00
Nathan Sidwell
0e3a7bb34c
module.cc (trees_{in,out}::core_vals): Reorder part 1.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Reorder part 1.
From-SVN: r275415
2019-09-05 14:26:41 +00:00
Nathan Sidwell
16e6fbbeb4
module.cc (trees_out::tree_type): There are no indescribable types.
...
gcc/cp/
* module.cc (trees_out::tree_type): There are no indescribable types.
From-SVN: r275413
2019-09-05 14:04:05 +00:00
Nathan Sidwell
8c1e90cd89
module.cc (trees_{in,out}::core_vals): Redo enum underlying type streaming.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Redo enum underlying type
streaming.
From-SVN: r275412
2019-09-05 13:58:49 +00:00
Nathan Sidwell
26373cf317
Merge trunk r275404.
...
From-SVN: r275407
2019-09-05 13:27:34 +00:00
Nathan Sidwell
19caba300d
module.cc (trees_out::tree_type): Stream ptrmemfuncs at the appropriate point.
...
gcc/cp/
* module.cc (trees_out::tree_type): Stream ptrmemfuncs at the
appropriate point.
From-SVN: r275226
2019-08-30 20:24:30 +00:00
Nathan Sidwell
b2a492d230
module.cc (trees_in::finish{,_type}): Delete.
...
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.
From-SVN: r275225
2019-08-30 20:08:22 +00:00
Nathan Sidwell
eac2d8ff16
module.cc (trees_out::tree_type): Write non-standard integer types here.
...
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.
From-SVN: r275212
2019-08-30 18:00:29 +00:00
Nathan Sidwell
f468a3e002
module.cc (trees_{in,out}::start): Refactor switch.
...
gcc/cp/
* module.cc (trees_{in,out}::start): Refactor switch.
(trees_{in,out}::core_vals): Remove first switch.
From-SVN: r275209
2019-08-30 17:15:45 +00:00
Nathan Sidwell
220a0eb8e4
module.cc (enum streamed_extensions): New.
...
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.
From-SVN: r275203
2019-08-30 16:24:51 +00:00
Nathan Sidwell
cb481848a4
module.cc (trees_{in,out}::start): Deal with OMP_CLAUSE.
...
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.
From-SVN: r275194
2019-08-30 15:08:59 +00:00
Nathan Sidwell
71ced5cec1
module.cc (friend_from_decl_list): Reimplement.
...
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.
From-SVN: r275179
2019-08-30 14:11:38 +00:00
Nathan Sidwell
5c5bc07d61
module.cc (enum tree_tag): Drop tt_mergeable, tt_clone.
...
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.
From-SVN: r275169
2019-08-30 13:47:53 +00:00
Nathan Sidwell
06389666f2
module.cc (trees_out::tree_decl): VTTs are just vtables.
...
gcc/cp/
* module.cc (trees_out::tree_decl): VTTs are just vtables.
gcc/testsuite/
* g++.dg/modules/vtt-1_[abc].C: New.
From-SVN: r275051
2019-08-29 18:52:10 +00:00
Nathan Sidwell
becc5e8e55
module.cc (trees_{in,out}::core_vals): We never see TS_CP_ARGUMENT_PACK_SELECT nodes.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): We never see
TS_CP_ARGUMENT_PACK_SELECT nodes.
From-SVN: r275048
2019-08-29 17:27:23 +00:00
Nathan Sidwell
69d91d1a29
Merge trunk r275034.
...
From-SVN: r275047
2019-08-29 15:14:45 +00:00
Nathan Sidwell
39d7025faa
module.cc (struct location_map_info): New.
...
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.
From-SVN: r275006
2019-08-28 20:16:09 +00:00
Nathan Sidwell
0c22b1b8d9
Merge trunk r274992.
...
From-SVN: r274995
2019-08-28 15:59:20 +00:00
Nathan Sidwell
7c60df6a19
module.cc (note_includes): Renamed from inform_includes.
...
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.
From-SVN: r274948
2019-08-27 11:03:01 +00:00
Nathan Sidwell
82e98476fa
module.cc (note_includes): Renamed from inform_includes.
...
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.
From-SVN: r274936
2019-08-26 20:04:20 +00:00
Nathan Sidwell
43ef2376a9
module.cc (trees_in::finish): Don't clear PENDING_TEMPLATE here.
...
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.
From-SVN: r274909
2019-08-25 15:28:46 +00:00
Nathan Sidwell
c3ce5a5dc1
module.cc (trees_out::tree_decl): Vtables are distinguished by DECL_VIRTUAL_P.
...
gcc/cp/
* module.cc (trees_out::tree_decl): Vtables are distinguished by
DECL_VIRTUAL_P.
From-SVN: r274908
2019-08-25 15:10:22 +00:00
Nathan Sidwell
aa04791a0c
Merge trunk r274867.
...
From-SVN: r274873
2019-08-23 20:11:04 +00:00
Nathan Sidwell
9b773ac6ff
module.cc (trees_out::core_bools): Don't propagate asm_written for types.
...
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.
From-SVN: r274855
2019-08-23 12:41:14 +00:00
Nathan Sidwell
bd3b1bba8f
module.cc (depset::hash::add_dependency): We should never find a redirect.
...
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.
From-SVN: r274832
2019-08-22 18:49:22 +00:00
Nathan Sidwell
0fa429d0a8
module.cc (MOD_SNAME_PFX): Resurrect initial dot.
...
gcc/cp/
* module.cc (MOD_SNAME_PFX): Resurrect initial dot.
(elf_out::strtab_write): Elide global namespace.
From-SVN: r274821
2019-08-22 14:36:37 +00:00
Nathan Sidwell
b933d2b895
module.cc (trees_in::assert_definition): Relax already-present assert.
...
gcc/cp/
* module.cc (trees_in::assert_definition): Relax already-present
assert.
From-SVN: r274811
2019-08-21 20:42:46 +00:00
Nathan Sidwell
c96fcf576a
module.cc (finish_module_processing): Protect against null filename.
...
gcc/cp/
* module.cc (finish_module_processing): Protect against null
filename.
From-SVN: r274802
2019-08-21 16:39:39 +00:00
Nathan Sidwell
f17b47937b
module.cc (elf_in::release): Reset size too.
...
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.
From-SVN: r274801
2019-08-21 16:26:17 +00:00
Nathan Sidwell
4f16704dc7
c.opt (Winclude-translate*): New family of options.
...
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.
From-SVN: r274797
2019-08-21 13:29:29 +00:00
Nathan Sidwell
3039793b79
module.cc (set_cmi_repo): NULL means default init.
...
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.
From-SVN: r274795
2019-08-21 11:27:41 +00:00
Nathan Sidwell
e4f8c1383f
module.cc (module_state::module_state): Header must be .-relative if not absolute.
...
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.
From-SVN: r274752
2019-08-20 18:03:00 +00:00
Nathan Sidwell
41e138cfb0
Merge trunk r274747.
...
From-SVN: r274750
2019-08-20 14:26:02 +00:00
Nathan Sidwell
f27682ad5a
Merge trunk r273943 (Jason's TEMPLATE_INFO changes).
...
From-SVN: r274747
2019-08-20 12:40:44 +00:00
Nathan Sidwell
a43273e38a
Merge trunk r273906 (Martin's function_decl.decl_type changes).
...
From-SVN: r274745
2019-08-20 11:49:54 +00:00
Nathan Sidwell
bdd8603c1c
Merge trunk r273771.
...
From-SVN: r274679
2019-08-19 19:22:51 +00:00
Nathan Sidwell
29d9d42f90
name-lookup.c (get_cxx_dialect_name): Make extern.
...
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.
From-SVN: r274055
2019-08-04 08:55:11 +00:00
Nathan Sidwell
fcc851e556
module.cc (module_state::deferred_macro): Emit warning if at end of TU.
...
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.
From-SVN: r273970
2019-08-01 10:30:39 +00:00
Nathan Sidwell
f5d248fe3d
module.cc (node_template_info): Enums may be function-local.
...
gcc/cp/
* module.cc (node_template_info): Enums may be function-local.
gcc/testsuite/
* g++.dg/modules/enum-7.C: New.
From-SVN: r273846
2019-07-27 23:35:56 +00:00
Nathan Sidwell
78dd9bcb3a
invoke.texi (C++ Modules): Update.
...
gcc/
* doc/invoke.texi (C++ Modules): Update.
From-SVN: r273845
2019-07-27 22:33:40 +00:00
Nathan Sidwell
b500dbeede
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.
From-SVN: r273785
2019-07-25 02:26:09 +00:00
Nathan Sidwell
5f9e9678c0
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.
From-SVN: r273784
2019-07-25 02:15:37 +00:00
Nathan Sidwell
28068e1ed2
Merge trunk r273764.
...
From-SVN: r273765
2019-07-24 17:01:08 +00:00
Nathan Sidwell
9c4b070dc4
alias-2_a.H: Add dg-module-header.
...
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.
From-SVN: r273764
2019-07-24 15:55:57 +00:00
Nathan Sidwell
b6c4971027
module.cc (trees_out::tree_decl): Cope with using decls in the binding list.
...
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.
From-SVN: r273762
2019-07-24 12:26:06 +00:00
Nathan Sidwell
6295b8d4ae
module.cc (enum merge_kind): Add MK_enum.
...
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.
From-SVN: r273760
2019-07-24 11:46:43 +00:00
Nathan Sidwell
c93d61bfb8
module.cc (depset): Rename MARKED to SPECIAL, update all users.
...
gcc/cp/
* module.cc (depset): Rename MARKED to SPECIAL, update all users.
From-SVN: r273739
2019-07-23 15:16:08 +00:00
Nathan Sidwell
173b94f0bd
Add quoting from Boris Kolpackov
...
From-SVN: r273735
2019-07-23 11:21:43 +00:00
Nathan Sidwell
c83c9a079f
parser.c (cp_parser_class_specifier_1): Fixup a template's type with a late exception specifier.
...
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.
From-SVN: r273701
2019-07-22 15:49:57 +00:00
Boris Kolpackov
aa573b96db
Make-lang.in (MODULE_REVISION): Add git rev, if it's git.
...
gcc/cp/
* Make-lang.in (MODULE_REVISION): Add git rev, if it's git.
From-SVN: r273699
2019-07-22 15:21:43 +00:00
Nathan Sidwell
994368ba58
detect git clone (from boris kolpackov)
...
From-SVN: r273565
2019-07-18 06:29:12 +00:00
Nathan Sidwell
a0b8a5f704
Fix additional options
...
From-SVN: r273532
2019-07-16 15:06:56 +00:00
Nathan Sidwell
91cfd8ec22
module.cc (module_state::read_{bindings,namespaces}): Use plain vec
...
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.
From-SVN: r273530
2019-07-16 14:47:12 +00:00
Nathan Sidwell
5774210561
module.cc (depset::hash::add_writables): 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.
From-SVN: r273528
2019-07-16 14:04:34 +00:00
Nathan Sidwell
9fbcbb023f
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.
From-SVN: r273517
2019-07-16 09:00:15 +00:00
Nathan Sidwell
ff216dad57
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.
From-SVN: r273512
2019-07-16 08:43:03 +00:00
Nathan Sidwell
7fc0f84d30
c-opts.c (c_common_handle_option): Remove {user,system}_search.
...
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.
From-SVN: r273307
2019-07-09 14:36:39 +00:00
Nathan Sidwell
ea401bcb1b
c-common.c (try_to_locate_new_include): Use strcmp and ignore zero-line maps.
...
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.
From-SVN: r273239
2019-07-08 17:18:25 +00:00
Nathan Sidwell
10a2b8be17
syncing version
...
From-SVN: r273234
2019-07-08 12:17:11 +00:00
Nathan Sidwell
d848ae7786
Merge trunk r273185.
...
From-SVN: r273186
2019-07-08 00:14:24 +00:00
Nathan Sidwell
bc1696a438
files.c (cpp_find_failed): Replace with ...
...
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.
From-SVN: r273185
2019-07-07 23:43:59 +00:00
Nathan Sidwell
f4f9311cbc
module.cc (module_state::write_cluster): Return cluster size.
...
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.
From-SVN: r273183
2019-07-07 16:49:40 +00:00
Nathan Sidwell
91530d70f9
timevar.def (TV_MODULE_{IMPORT,EXPORT,MAPPER}): Define.
...
gcc/
* timevar.def (TV_MODULE_{IMPORT,EXPORT,MAPPER}): Define.
gcc/cp/
* module.cc: Include timvar.h. Sprinkle timevar accounting throughout.
From-SVN: r273179
2019-07-07 15:51:12 +00:00
Nathan Sidwell
44981b7596
Merge trunk r273146.
...
From-SVN: r273150
2019-07-06 00:04:07 +00:00
Nathan Sidwell
fc2657e9dd
decl2.c (c_parse_final_cleanups): Don't do static init things for a header module.
...
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.
From-SVN: r273146
2019-07-05 17:43:53 +00:00
Nathan Sidwell
ac18b2fa17
iostream-1_[ab].[HC]: New.
...
gcc/testsuite/
* g++.dg/modules/iostream-1_[ab].[HC]: New.
From-SVN: r273142
2019-07-05 15:44:29 +00:00
Nathan Sidwell
c6ee590834
module.cc (module_state_config::get_opts): Drop -g* switches.
...
gcc/cp/
* module.cc (module_state_config::get_opts): Drop -g* switches.
From-SVN: r273141
2019-07-05 15:40:37 +00:00
Nathan Sidwell
309d354cdf
cp-tree.h (get_tinfo_decl_direct): Declare.
...
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.
From-SVN: r273137
2019-07-05 13:02:30 +00:00
Nathan Sidwell
6f2a78e717
module.cc (module_state::read_cluster): finalize_function may not GC.
...
gcc/cp/
* module.cc (module_state::read_cluster): finalize_function may
not GC.
From-SVN: r273094
2019-07-04 20:37:37 +00:00
Nathan Sidwell
8fbb349b19
module.cc (enum cluster_tag): Add ct_defn.
...
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..
From-SVN: r273093
2019-07-04 20:08:41 +00:00
Nathan Sidwell
0848fdc820
module.cc (trees_{in,out}::key_mergeable): Always stream context.
...
gcc/cp/
* module.cc (trees_{in,out}::key_mergeable): Always stream context.
gcc/testsuite/
* g++.dg/modules/merge-1_[ab].[HC]: New.
From-SVN: r273092
2019-07-04 19:18:53 +00:00
Nathan Sidwell
488c4ecb8d
module.cc (trees_out::key_mergeable): Return merge kind.
...
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.
From-SVN: r273085
2019-07-04 15:26:38 +00:00
Nathan Sidwell
ce3738a284
module.cc (trees_out::tree_type): Add TYPEOF_TYPE, UNDERLYING_TYPE.
...
gcc/cp/
* module.cc (trees_out::tree_type): Add TYPEOF_TYPE, UNDERLYING_TYPE.
(trees_in::tree_node): Likewise.
From-SVN: r273015
2019-07-03 17:54:35 +00:00
Nathan Sidwell
106fe4aaa3
module.cc (struct unnamed_entity): GTY it.
...
gcc/cp/
* module.cc (struct unnamed_entity): GTY it.
(unnamed_map): Not a GTY object.
From-SVN: r273014
2019-07-03 17:42:53 +00:00
Nathan Sidwell
4cddaa61d0
module.cc (trees_{in,out}::fn_parms): Rename to ...
...
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.
From-SVN: r273012
2019-07-03 16:44:07 +00:00
Nathan Sidwell
667dc8ff0e
module.cc (trees_out::tree_type): Add DECLTYPE_TYPE.
...
gcc/cp/
* module.cc (trees_out::tree_type): Add DECLTYPE_TYPE.
(trees_in::tree_node): Likewise.
From-SVN: r273010
2019-07-03 13:35:29 +00:00
Nathan Sidwell
27471cebcf
module.cc (trees_in::core_vals): Protect binfo base reading.
...
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.
From-SVN: r272945
2019-07-02 17:28:04 +00:00
Nathan Sidwell
7ef5accd5e
Rename bmi->cmi everywhere.
...
gcc/testsuite/
Rename bmi->cmi everywhere.
From-SVN: r272942
2019-07-02 15:30:28 +00:00
Nathan Sidwell
199d5b5dac
cp-tree.h (module_has_cmi_p): Renamed.
...
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.
From-SVN: r272941
2019-07-02 15:27:22 +00:00
Nathan Sidwell
347e6ebdf3
module.cc (trees_out::fn_parms): Don't use canonical type any more.
...
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.
From-SVN: r272940
2019-07-02 15:24:35 +00:00
Nathan Sidwell
aa377911c1
module.cc (trees_out::tree_decl): Write types for typedefs.
...
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.
From-SVN: r272939
2019-07-02 14:17:06 +00:00
Nathan Sidwell
0edc639154
module.cc (trees_out::tree_type): Add pack types.
...
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.
From-SVN: r272937
2019-07-02 13:30:36 +00:00
Nathan Sidwell
41c1e24961
module.cc (trees_out::tree_type): Detect bound template template parm.
...
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.
From-SVN: r272936
2019-07-02 12:59:36 +00:00
Nathan Sidwell
633f627ef3
module.cc (trees_out::tree_type): Add COMPLEX and VECTOR types.
...
gcc/cp/
* module.cc (trees_out::tree_type): Add COMPLEX and VECTOR types.
(trees_in::tree_node): ... and here.
From-SVN: r272935
2019-07-02 12:24:49 +00:00
Nathan Sidwell
17848a6f05
module.cc (trees_out::tree_decl): Deal with tinfo vars and vtables here ...
...
gcc/cp/
* module.cc (trees_out::tree_decl): Deal with tinfo vars and
vtables here ...
(trees_out::tree_node): ... not here.
From-SVN: r272934
2019-07-02 12:02:45 +00:00
Nathan Sidwell
a9d580c881
module.cc (trees_out::tree_decl): Deal with tinfo type_decls 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.
From-SVN: r272933
2019-07-02 11:59:10 +00:00
Nathan Sidwell
e76c83f702
module.cc (trees_out::tree_decl): Fix dump typo.
...
gcc/cp/
* module.cc (trees_out::tree_decl): Fix dump typo.
(trees_in::tree_value): Likewise.
(module_state::read_cluster): Show end.
From-SVN: r272910
2019-07-01 21:44:55 +00:00
Nathan Sidwell
ae69777a4c
module.cc (module_state::write): Don't stream env.
...
gcc/cp/
* module.cc (module_state::write): Don't stream env.
From-SVN: r272909
2019-07-01 21:31:03 +00:00
Nathan Sidwell
e97ba75490
module.cc (trees_in:::read_function_def): Push the template for post processing.
...
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.
From-SVN: r272895
2019-07-01 18:35:24 +00:00
Nathan Sidwell
01262014fb
module.cc (depset::hash::add_binding): Return added flag.
...
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.
From-SVN: r272892
2019-07-01 18:04:35 +00:00
Nathan Sidwell
9302b97ef6
module.cc (enum tree_tag): Add tt_clone_ref.
...
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.
From-SVN: r272888
2019-07-01 16:25:33 +00:00
Nathan Sidwell
179a13f2ef
module.cc (depset::entity_kind): Add EK_CLONE.
...
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.
From-SVN: r272775
2019-06-28 00:19:40 +00:00
Nathan Sidwell
f4a515b031
module.cc (trees_{in,out}::core_vals): Stream abstract_origin.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Stream abstract_origin.
From-SVN: r272762
2019-06-27 19:16:33 +00:00
Nathan Sidwell
636410a5a1
class.c (build_clone): Neaten and assert.
...
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.
From-SVN: r272761
2019-06-27 19:12:28 +00:00
Nathan Sidwell
0933d36ef4
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.
From-SVN: r272752
2019-06-27 13:05:53 +00:00
Nathan Sidwell
b397dfaa11
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.
From-SVN: r272724
2019-06-27 00:18:34 +00:00
Nathan Sidwell
8c57d25cd5
Merge trunk r272714.
...
From-SVN: r272716
2019-06-26 21:12:13 +00:00
Nathan Sidwell
6571868d7f
decl.c (duplicate_decls): Non-modules are ok for builtins.
...
gcc/cp/
* decl.c (duplicate_decls): Non-modules are ok for builtins.
gcc/testsuite/
* g++.dg/modules/builtin-2.C: New.
From-SVN: r272714
2019-06-26 20:43:31 +00:00
Nathan Sidwell
14a2096679
module.cc (depset::hash::add_mergeable_horcrux): Add redirect as necessary.
...
gcc/cp/
* module.cc (depset::hash::add_mergeable_horcrux): Add redirect as
necessary.
gcc/testsuite/
* g++.dg/modules/tpl-spec-7.C: New.
From-SVN: r272709
2019-06-26 19:00:39 +00:00
Nathan Sidwell
bb885bd186
module.cc (depset::hash::add_redirect): 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.
From-SVN: r272707
2019-06-26 18:50:09 +00:00
Nathan Sidwell
ad7d7da738
module.cc (finish_module_processing): Adjust failed to write error.
...
gcc/cp/
* module.cc (finish_module_processing): Adjust failed to write error.
gcc/testsuite/
* g++.dg/modules/internal-1.C: Adjust.
From-SVN: r272706
2019-06-26 18:24:47 +00:00
Nathan Sidwell
4298af52cf
module.cc (depset::entity_kind): Add EK_REDIRECT.
...
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.
From-SVN: r272705
2019-06-26 18:14:37 +00:00
Nathan Sidwell
626883fa68
module.cc (trees_{in,out}::note_definition): Rename to ...
...
gcc/cp/
* module.cc (trees_{in,out}::note_definition): Rename to ...
(trees_{in,out}::assert_definition): ... here. Update callers.
From-SVN: r272698
2019-06-26 15:56:34 +00:00
Nathan Sidwell
0a234cae43
cp-tree.h (match_mergeable_specialization): Add insert parm.
...
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.
From-SVN: r272696
2019-06-26 14:46:58 +00:00
Nathan Sidwell
f114147110
module.cc (module_state:note_cmi_name): New.
...
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.
From-SVN: r272657
2019-06-25 18:47:13 +00:00
Nathan Sidwell
63d76ba153
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.
From-SVN: r272617
2019-06-24 13:30:50 +00:00
Nathan Sidwell
0cce6e60c6
Merge trunk r272583.
...
From-SVN: r272609
2019-06-23 22:52:08 +00:00
Nathan Sidwell
41debb0329
modules.cc (depset): Add DB_OOT_SPEC_BIT.
...
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.
From-SVN: r272562
2019-06-21 19:13:13 +00:00
Nathan Sidwell
1a60f0650e
modules.cc (note_defs): New checking hash table.
...
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.
From-SVN: r272557
2019-06-21 17:37:01 +00:00
Nathan Sidwell
5a41b8d65f
modules.cc (dumper::operator ()): Print indentation level.
...
gcc/cp/
* modules.cc (dumper::operator ()): Print indentation level.
gcc/testsuite/
* g++.dg/modules/scc-1.C: Adjust dump scan.
From-SVN: r272548
2019-06-21 14:12:20 +00:00
Nathan Sidwell
7ee18e5293
modules.cc (node_template_info): Enums are awkwarder.
...
gcc/cp/
* modules.cc (node_template_info): Enums are awkwarder.
gcc/testsuite/
* g++.dg/modules/enum-4_[ab].C: New.
From-SVN: r272546
2019-06-21 13:35:38 +00:00
Nathan Sidwell
839e6349c0
module.cc (tree_out::mark_class_def): Mark bitfield's representative field.
...
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.
From-SVN: r272522
2019-06-20 20:58:09 +00:00
Nathan Sidwell
a487221d9c
module.cc (enum tree_tag): Add tt_thunk.
...
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.
From-SVN: r272521
2019-06-20 20:29:51 +00:00
Nathan Sidwell
ff6d81e3e8
parser.c (cp_lexer_tokenize): Skip pragmas.
...
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.
From-SVN: r272519
2019-06-20 19:38:34 +00:00
Nathan Sidwell
d663910d7c
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.
From-SVN: r272517
2019-06-20 18:11:41 +00:00
Nathan Sidwell
412a45a062
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.
From-SVN: r272488
2019-06-19 22:15:26 +00:00
Nathan Sidwell
d10eccc41c
Merge trunk r272419.
...
From-SVN: r272420
2019-06-18 13:40:53 +00:00
Nathan Sidwell
5a56197b26
module.cc (specialization_cmp): Deal with more equivalencies.
...
gcc/cp/
* module.cc (specialization_cmp): Deal with more equivalencies.
(depset_cmp): New, cloned and adjusted from cluster_cmp.
(depset::hash::connect): Use it.
From-SVN: r272419
2019-06-18 13:15:23 +00:00
Nathan Sidwell
5757e0421a
module.cc (trees_out::fn_parms): Stream canonical type.
...
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.
From-SVN: r272398
2019-06-17 18:59:01 +00:00
Nathan Sidwell
ce58251f90
module.cc (depset::hash::add_dependency): Don't register internal entities when in a header module.
...
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.
From-SVN: r272314
2019-06-14 21:19:40 +00:00
Nathan Sidwell
04c45fd07e
module.cc (depset::hash::add_dependency): Inhibit internal linkage setting on functions.
...
gcc/cp/
* module.cc (depset::hash::add_dependency): Inhibit internal
linkage setting on functions.
(cluster_cmp): We can meet matching using decls.
From-SVN: r272313
2019-06-14 20:45:56 +00:00
Nathan Sidwell
993696ab05
module.cc (depset::hash::add_dependency): Unnamed elaborated types have no linkage.
...
gcc/cp/
* module.cc (depset::hash::add_dependency): Unnamed elaborated
types have no linkage.
gcc/testsuite/
* g++.dg/modules/enum-5_[ab].[HC]: New.
From-SVN: r272312
2019-06-14 19:33:47 +00:00
Nathan Sidwell
303b4abb58
module.cc (module_state::{read,write}_cluster): Check stat hack is for implicit typedefs.
...
gcc/cp/
* module.cc (module_state::{read,write}_cluster): Check stat hack
is for implicit typedefs.
From-SVN: r272311
2019-06-14 18:57:55 +00:00
Nathan Sidwell
20f1424c05
module.cc (trees_out::tree_type): Simplify if-tree.
...
gcc/cp/
* module.cc (trees_out::tree_type): Simplify if-tree.
From-SVN: r272310
2019-06-14 18:41:43 +00:00
Nathan Sidwell
690d2eadc0
module.cc (trees_{in,out}::core_vals): Stream original_type of type of typedefs, not their type.
...
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.
From-SVN: r272297
2019-06-14 18:04:34 +00:00
Nathan Sidwell
d7f4c4389e
module.cc (binding_cmp): There can be an implicit and non-implicit type_decl.
...
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.
From-SVN: r272286
2019-06-14 12:35:25 +00:00
Nathan Sidwell
6bcf78c2a3
module.cc (depset::hash::add_specializations): Partial instantiations need their template.
...
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.
From-SVN: r272246
2019-06-13 14:28:31 +00:00
Nathan Sidwell
cbc8f25dfd
syncing version
...
From-SVN: r272172
2019-06-11 20:42:03 +00:00
Nathan Sidwell
446396ffea
fix typo
...
From-SVN: r272171
2019-06-11 20:41:44 +00:00
Nathan Sidwell
784c087a43
Merge trunk r272149.
...
From-SVN: r272153
2019-06-11 13:07:17 +00:00
Nathan Sidwell
bb0b8f3c3b
missed changelog
...
From-SVN: r272149
2019-06-11 12:32:12 +00:00
Nathan Sidwell
e96463943e
module.cc (module_state::read_location): Don't map UNKNOWN_LOCATION to loc.
...
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.
From-SVN: r272128
2019-06-10 20:03:21 +00:00
Nathan Sidwell
6172dc2a5f
module.cc (loc_spans::init): Correct macro range ordering.
...
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.
From-SVN: r272118
2019-06-10 13:23:13 +00:00
Nathan Sidwell
6f57f5d72b
missed changelog
...
From-SVN: r272052
2019-06-07 20:36:24 +00:00
Nathan Sidwell
fb988b5b3b
module.cc (module_state::write_env): New.
...
gcc/cp/
* module.cc (module_state::write_env): New.
(module_state::write): Call it.
From-SVN: r272049
2019-06-07 19:13:43 +00:00
Nathan Sidwell
75d2a29d53
Make-lang.in (REVISION_c): Don't test it.
...
gcc/cp/
* Make-lang.in (REVISION_c): Don't test it.
* module.cc (module_state::write_locations): Fix off-by-one thinko.
From-SVN: r272048
2019-06-07 18:35:20 +00:00
Nathan Sidwell
ffcd1dcb5b
module.cc (loc_spans::init): Add lmaps parm, separate main from forced header locs.
...
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.
From-SVN: r272042
2019-06-07 13:14:16 +00:00
Nathan Sidwell
fa038ee5eb
module.cc (dumper::MACRO): New flag.
...
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.
From-SVN: r272041
2019-06-07 12:24:26 +00:00
Nathan Sidwell
c3907a8619
module.cc (bytes_out::print_time): New.
...
gcc/cp/
* module.cc (bytes_out::print_time): New.
(module_state::write_readme): Dump some environmental data.
From-SVN: r272039
2019-06-07 12:13:38 +00:00
Nathan Sidwell
7a1a5f3c44
syncing version
...
From-SVN: r272015
2019-06-06 18:02:35 +00:00
Nathan Sidwell
ea30e72655
Tweak svnversion
...
From-SVN: r272014
2019-06-06 17:06:51 +00:00
Nathan Sidwell
78270d26a6
Fixup revision setting
...
From-SVN: r272008
2019-06-06 15:14:25 +00:00
Nathan Sidwell
0f7acae37e
Make-lang.in (MODULE_REVISION): Read from Changelog.modules.
...
gcc/cp/
* Make-lang.in (MODULE_REVISION): Read from Changelog.modules.
From-SVN: r272004
2019-06-06 14:52:57 +00:00
Nathan Sidwell
dd5992f3c5
module.cc (dumper::MAPPER): New flag.
...
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.
From-SVN: r271973
2019-06-05 18:59:27 +00:00
Nathan Sidwell
ac4c63f30f
module.cc (trees_out::tree_type): We can meet ttps here.
...
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.
From-SVN: r271972
2019-06-05 18:40:51 +00:00
Nathan Sidwell
9408c11acd
module.cc (trees_out::core_vals): Template type parms are their own canonical.
...
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.
From-SVN: r271962
2019-06-05 13:38:27 +00:00
Nathan Sidwell
c4815c2e20
module.cc (global_tree_arys): Add c_global_trees.
...
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.
From-SVN: r271956
2019-06-05 12:05:41 +00:00
Nathan Sidwell
92314963e5
Merge trunk r271953.
...
From-SVN: r271955
2019-06-05 11:50:04 +00:00
Nathan Sidwell
e68775bfa3
tree-core.h (enum tree_index): Add TI_MODULE_HWM.
...
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.
From-SVN: r271953
2019-06-05 10:39:28 +00:00
Nathan Sidwell
5e722ecf5c
class.c (maybe_add_class_template_decl): Mark (some) local templates.
...
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.
From-SVN: r271924
2019-06-04 18:47:16 +00:00
Nathan Sidwell
de7fd0b983
tpl-friend-5_[ab].C: New.
...
gcc/testsuite/
* g++.dg/modules/tpl-friend-5_[ab].C: New.
From-SVN: r271923
2019-06-04 17:23:19 +00:00
Nathan Sidwell
3541a28521
name-lookup.c (lookup_type_scope_1): Look in imported slots too.
...
gcc/cp/
* name-lookup.c (lookup_type_scope_1): Look in imported slots too.
gcc/testsuite/
* g++.dg/modules/class-8_[ab].C: New.
From-SVN: r271922
2019-06-04 17:01:28 +00:00
Nathan Sidwell
7e87e9f49e
name-lookup.c (lookup_type_scope_1): Reimplement, handle local and namespace scopes separately.
...
gcc/cp/
* name-lookup.c (lookup_type_scope_1): Reimplement, handle local
and namespace scopes separately.
From-SVN: r271911
2019-06-04 15:16:54 +00:00
Nathan Sidwell
0cf0ada9f9
module.cc (friend_from_decl_list): New.
...
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.
From-SVN: r271882
2019-06-03 19:29:36 +00:00
Nathan Sidwell
bf24ad34b5
Template friends of templates.
...
gcc/testsuite/
* g++.dg/modules/tpl-tpl-friend-1_[ab].C: New.
From-SVN: r271880
2019-06-03 18:41:06 +00:00
Nathan Sidwell
ed6c098d21
Non-template friends of templates.
...
gcc/testsuite/
* g++.dg/modules/tpl-friend-4_[ab].C: New.
From-SVN: r271879
2019-06-03 18:36:27 +00:00
Nathan Sidwell
0704afc24b
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.
From-SVN: r271878
2019-06-03 18:29:16 +00:00
Nathan Sidwell
1692b6f689
Merge trunk r271874.
...
From-SVN: r271875
2019-06-03 17:08:03 +00:00
Nathan Sidwell
9d1f0afc4d
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.
From-SVN: r271874
2019-06-03 15:36:51 +00:00
Nathan Sidwell
7a8dc3649b
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.
From-SVN: r271809
2019-05-31 11:00:59 +00:00
Nathan Sidwell
85476fad7e
decl.c (duplicate_decls): Remove duplicate assert.
...
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.
From-SVN: r271745
2019-05-29 16:27:33 +00:00
Nathan Sidwell
7e9e2b43f5
module.cc (maybe_add_bmi_prefix): Replace FORCE with LEN_P.
...
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.
From-SVN: r271742
2019-05-29 14:55:34 +00:00
Nathan Sidwell
6d6f1822d1
decl.c (duplicate_decls): Assert a template newdecl has no specializations.
...
* decl.c (duplicate_decls): Assert a template newdecl has no
specializations.
From-SVN: r271714
2019-05-28 17:05:22 +00:00
Nathan Sidwell
2164265365
Revert inadvertent commits.
...
gcc/cp/
* pt.c (push_template_decl_real): Here.
* decl.c (duplicate_decls): Here.
From-SVN: r271711
2019-05-28 15:06:49 +00:00
Nathan Sidwell
4684777be2
Merge trunk r271702.
...
From-SVN: r271709
2019-05-28 14:19:17 +00:00
Nathan Sidwell
762c582bea
module.cc (loc_spans): Make spans a vec.
...
gcc/cp/
* module.cc (loc_spans): Make spans a vec.
(module_state::{read,write}_locations): Use vec.
From-SVN: r271581
2019-05-23 20:51:38 +00:00
Nathan Sidwell
7258717682
module.cc (trees_in): Replace auto_vec with vec.
...
gcc/cp/
* module.cc (trees_in): Replace auto_vec with vec.
From-SVN: r271579
2019-05-23 20:43:28 +00:00
Nathan Sidwell
0fac6831b9
Template template parms, and a bunch of other stuff
...
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.
From-SVN: r271578
2019-05-23 20:37:41 +00:00
Nathan Sidwell
045fa6bebe
module.cc (dumper::impl::nested_name): Cope with TTPs.
...
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.
From-SVN: r271551
2019-05-23 11:16:16 +00:00
Nathan Sidwell
aa6ee0cd0f
module.cc (depset::hash::hash): Create worklist.
...
gcc/cp/
* module.cc (depset::hash::hash): Create worklist.
(depset::tarjan::tarjan): Create stack.
(depset::depset): Create deps.
From-SVN: r271519
2019-05-22 19:03:44 +00:00
Nathan Sidwell
e7ddc4f7d8
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.
From-SVN: r271518
2019-05-22 18:58:17 +00:00
Nathan Sidwell
3a42b90dcc
module.cc (trees_out::mark_declaration): Add do_defn parm, mark definition if set.
...
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.
From-SVN: r271481
2019-05-21 18:56:49 +00:00
Nathan Sidwell
176bc67c7a
Merge trunk r271478.
...
From-SVN: r271480
2019-05-21 18:31:03 +00:00
Nathan Sidwell
ee60276eab
Merge trunk r271467.
...
From-SVN: r271478
2019-05-21 17:37:03 +00:00
Nathan Sidwell
e8cd1617dd
Merge trunk r271420.
...
From-SVN: r271426
2019-05-20 16:44:51 +00:00
Nathan Sidwell
b92822cfc9
Merge trunk r271338.
...
From-SVN: r271347
2019-05-17 19:29:40 +00:00
Nathan Sidwell
f0f1d00906
module.cc (trees_out::mark_class_member): Add do_defn parm.
...
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.
From-SVN: r271337
2019-05-17 17:55:39 +00:00
Nathan Sidwell
d53b438cf1
module.cc (trees_out::mark_node): Drop OUTERMOST parm.
...
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.
From-SVN: r271333
2019-05-17 17:16:27 +00:00
Nathan Sidwell
8235c316a9
module.cc (trees_{in,out}::tpl_parms): Rename to ...
...
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.
From-SVN: r271332
2019-05-17 16:56:29 +00:00
Nathan Sidwell
24abd06faa
module.cc (dumper::operator ()): Add null check.
...
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.
From-SVN: r271288
2019-05-16 13:08:07 +00:00
Nathan Sidwell
87947cc4f8
module.cc (depset::DB_HIDDEN_BIT): New, add accessors.
...
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.
From-SVN: r271214
2019-05-15 15:03:06 +00:00
Nathan Sidwell
3c595fb47d
module.cc (trees_in::tree_value): New, broken out of ...
...
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.
From-SVN: r271188
2019-05-14 19:27:22 +00:00
Nathan Sidwell
68528ea4b3
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.
From-SVN: r271187
2019-05-14 18:53:22 +00:00
Nathan Sidwell
77f9e67e98
decl.c (duplicate_decls): Don't check moduleness on friend decl.
...
gcc/cp/
* decl.c (duplicate_decls): Don't check moduleness on friend decl.
* pt.c (tsubst_friend_function): Set module ownership.
From-SVN: r271072
2019-05-10 18:56:39 +00:00
Nathan Sidwell
28c2c14231
module.cc (trees_{in,out}::{read,write}_function_def): Serialize FRIEND_CONTEXT.
...
gcc/cp/
* module.cc (trees_{in,out}::{read,write}_function_def): Serialize
FRIEND_CONTEXT.
(trees_{in,out}::{read,write}_class_def): Reattach befriending classes.
From-SVN: r271071
2019-05-10 18:35:38 +00:00
Nathan Sidwell
a33b0b13dd
decl.c (duplicate_decls): Check and adjust anticipated builtin decls.
...
gcc/cp/
* decl.c (duplicate_decls): Check and adjust anticipated builtin
decls.
* friend.c (do_friend): Set module ownership.
* module.cc (tree_{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.
From-SVN: r271068
2019-05-10 17:53:14 +00:00
Nathan Sidwell
932bd31ce9
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.
From-SVN: r271067
2019-05-10 15:14:00 +00:00
Nathan Sidwell
c0440f6bd3
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.
From-SVN: r271041
2019-05-09 19:41:38 +00:00
Nathan Sidwell
4dc260a470
Atomically mark template's DECL_TEMPLATE_RESULT, IMPLICIT_TYPEDEF's type
...
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.
From-SVN: r271040
2019-05-09 18:28:47 +00:00
Nathan Sidwell
e7166810f7
pr39425.C: Adjust errors.
...
gcc/testsuite/
* g++.dg/template/pr39425.C: Adjust errors.
* g++.old-deja/g++.pt/spec20.C: Adjust errors.
From-SVN: r270980
2019-05-07 19:46:02 +00:00
Nathan Sidwell
9388a87902
Merge trunk r270943.
...
From-SVN: r270979
2019-05-07 18:57:23 +00:00
Nathan Sidwell
207936eba2
mkdeps.h: Rename struct mrules to struct mkdeps.
...
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.
From-SVN: r270923
2019-05-06 21:14:34 +00:00
Nathan Sidwell
88ed7e7d78
module.cc (enum tree_tag): Delete tt_builtin.
...
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.
From-SVN: r270922
2019-05-06 19:53:45 +00:00
Nathan Sidwell
33ececd4be
cp-tree.h (global_purview_p): New.
...
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.
From-SVN: r270920
2019-05-06 17:30:27 +00:00
Nathan Sidwell
6c95795c31
cp-tree.h (spec_entry): Moved from pt.c.
...
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.
From-SVN: r270821
2019-05-02 19:26:41 +00:00
Nathan Sidwell
5bf72297fd
module.cc (depset): Add DB_PARTIAL_BIT, is_partial_specialization, set_implicit_specialization.
...
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.
From-SVN: r270782
2019-05-01 23:18:06 +00:00
Nathan Sidwell
4aeef1729c
pt.c (get_specializations): Adjust type template checking.
...
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.
From-SVN: r270781
2019-05-01 21:49:25 +00:00
Nathan Sidwell
a231906c89
module.cc (set_module_owner): Deal with specializations.
...
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.
From-SVN: r270772
2019-05-01 15:48:41 +00:00
Nathan Sidwell
57abf5c7c1
parser.c (cp_parser_explicit_instantiation): Correctl unwind state.
...
gcc/cp/
* parser.c (cp_parser_explicit_instantiation): Correctl unwind state.
* decl.c (grokfndecl): Set module ownership after specializationness
is known.
From-SVN: r270771
2019-05-01 15:30:39 +00:00
Nathan Sidwell
0bfa294358
macro.c (_cpp_new_macro): memset before initing.
...
libcpp/
* macro.c (_cpp_new_macro): memset before initing.
From-SVN: r270769
2019-05-01 14:28:26 +00:00
Nathan Sidwell
9a1b29d399
module.cc (module_state:write_bindings): Iterate over sccs array, not hash table.
...
gcc/cp/
* module.cc (module_state:write_bindings): Iterate over sccs
array, not hash table.
(module_state::write): Adjust.
From-SVN: r270768
2019-05-01 14:21:38 +00:00
Nathan Sidwell
eb8ee5ceb9
macro.c (_cpp_new_macro): Initialize imported field.
...
libcpp/
* macro.c (_cpp_new_macro): Initialize imported field.
From-SVN: r270767
2019-05-01 14:12:06 +00:00
Nathan Sidwell
a730352e3b
Merge trunk r270765.
...
From-SVN: r270766
2019-05-01 13:51:24 +00:00
Nathan Sidwell
a47a770f80
cp-tree.h (module_normal_import_p): Declare.
...
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
From-SVN: r270708
2019-04-30 17:50:41 +00:00
Nathan Sidwell
32283aa5fe
tpl-spec-2_[abc].C: New.
...
gcc/testsuite/
* tpl-spec-2_[abc].C: New.
From-SVN: r270707
2019-04-30 17:32:48 +00:00
Nathan Sidwell
38a941c78f
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.
From-SVN: r270706
2019-04-30 16:55:36 +00:00
Nathan Sidwell
0e1957bb53
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.
From-SVN: r270663
2019-04-29 21:34:45 +00:00
Nathan Sidwell
1ce0952a84
Merge trunk r270644. (GCC 10)
...
From-SVN: r270645
2019-04-29 11:22:46 +00:00
Nathan Sidwell
9af40c5e05
modules.cc (depset::hash::add_depednency): More STRIP_TEMPLATE.
...
gcc/cp/
* modules.cc (depset::hash::add_depednency): More STRIP_TEMPLATE.
From-SVN: r270644
2019-04-29 10:54:25 +00:00
Nathan Sidwell
aec57f39de
cp-tree.h (get_specializations_for_module): Declare.
...
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.
From-SVN: r270584
2019-04-25 18:49:48 +00:00
Nathan Sidwell
a78d967de4
cp-tree.h (DECL_TEMPLATE_LAZY_SPECIALIZATIONS_P): New.
...
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.
From-SVN: r270555
2019-04-24 20:19:59 +00:00
Nathan Sidwell
be11483861
Merge trunk r270543.
...
From-SVN: r270546
2019-04-24 14:21:18 +00:00
Nathan Sidwell
e88b0e49e0
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.
From-SVN: r270543
2019-04-24 13:01:39 +00:00
Nathan Sidwell
a11a2ae3b6
cp-tree.h (module_name): New overload.
...
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.
From-SVN: r270519
2019-04-23 20:47:19 +00:00
Nathan Sidwell
427b477a37
module.cc (trees_{in,out}::tree_mergeable): Stream more for specializations.
...
gcc/cp/
* module.cc (trees_{in,out}::tree_mergeable): Stream more for
specializations.
From-SVN: r270517
2019-04-23 18:52:58 +00:00
Nathan Sidwell
e6468b82d7
module.cc (trees_{in,out}::core_vals): Don't stream template instantiations.
...
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.
From-SVN: r270516
2019-04-23 18:38:24 +00:00
Nathan Sidwell
994b4e1e31
Make-lang.in: Wedge revision number into REVISISON_s.
...
gcc/cp/
* Make-lang.in: Wedge revision number into REVISISON_s.
From-SVN: r270508
2019-04-23 12:47:14 +00:00
Nathan Sidwell
58c90f922f
Function instantiation merging
...
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.
From-SVN: r270507
2019-04-23 12:46:32 +00:00
Nathan Sidwell
dad12fbb88
Make-lang.in (MODULE_REVISION): New.
...
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.
From-SVN: r270325
2019-04-12 18:03:15 +00:00
Nathan Sidwell
00c28486ba
module.cc (dumper::impl::nested_name): Remove namespace owner fiddling.
...
gcc/cp/
* module.cc (dumper::impl::nested_name): Remove namespace owner
fiddling.
* name-lookup.c (make_namespace): Don't set owner. Adjust callers.
From-SVN: r270312
2019-04-12 11:51:21 +00:00
Nathan Sidwell
4edbc4c435
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.
From-SVN: r270311
2019-04-12 11:41:44 +00:00
Nathan Sidwell
b02ca4a23e
mangle.c (decl_is_template_id): Rename to ...
...
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.
From-SVN: r270290
2019-04-11 18:57:23 +00:00
Nathan Sidwell
66036b6f7f
module.cc (module_for_{ordinary,macro}_loc): New.
...
gcc/cp/
* module.cc (module_for_{ordinary,macro}_loc): New.
(module_state::{read,write}_location): Deal with imported locations.
From-SVN: r270285
2019-04-11 14:30:04 +00:00
Nathan Sidwell
ea6d7d26ff
module.cc (depset::entity_kind_name): Tweak.
...
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.
From-SVN: r270283
2019-04-11 14:01:35 +00:00
Nathan Sidwell
f0e3f45c31
module.cc (loc_kind): New.
...
gcc/cp/
* module.cc (loc_kind): New.
(module_state::{read,write}_location): Use tagging, compress macro
& adhoc better.
From-SVN: r270282
2019-04-11 13:58:55 +00:00
Nathan Sidwell
88730fedea
module.cc (loc_spans): Main span is all but reserved.
...
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.
From-SVN: r270281
2019-04-11 13:40:35 +00:00
Nathan Sidwell
f12d92379c
module.cc (module_preprocess): Module partitions always produce a BMI.
...
gcc/cp/
* module.cc (module_preprocess): Module partitions always produce
a BMI.
gcc/testsuite/
* g++.dg/modules/dep-2.C: New.
From-SVN: r270261
2019-04-10 15:36:08 +00:00
Nathan Sidwell
63428ba45d
module.cc (module_state::write_cluster): Remove unnecessary check & FIXME.
...
gcc/cp/
* module.cc (module_state::write_cluster): Remove unnecessary
check & FIXME.
From-SVN: r270256
2019-04-10 14:37:30 +00:00
Nathan Sidwell
3d5e4fc8bb
module.cc (trees_out::depending_p): Delete.
...
gcc/cp/
* module.cc (trees_out::depending_p): Delete.
(trees_out::tree_decl): Refactor asserts.
(module_state::write_cluster): Refactor initial scan.
From-SVN: r270255
2019-04-10 14:28:33 +00:00
Nathan Sidwell
d4ae24566c
mkdeps.c (deps_add_module): Swap primary & module args.
...
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.
From-SVN: r270252
2019-04-10 12:26:27 +00:00
Nathan Sidwell
0afed47af4
module.cc (slurping): Move {ordinary,macro}_locs to ..
...
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.
From-SVN: r270242
2019-04-09 20:21:31 +00:00
Nathan Sidwell
d4b26417f0
module.cc (get_module): Add parent option, use it.
...
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.
From-SVN: r270235
2019-04-09 18:41:48 +00:00
Nathan Sidwell
6b4d396c13
module.cc (depset::is_imported_entity): New.
...
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.
From-SVN: r270232
2019-04-09 16:01:44 +00:00
Nathan Sidwell
9e12215923
mkdeps (munge): Quote ':'.
...
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.
From-SVN: r270230
2019-04-09 13:39:03 +00:00
Nathan Sidwell
3c5ef6cce2
mkdeps (mkrules::~mkrules): Use free appropriately.
...
libcpp/
* mkdeps (mkrules::~mkrules): Use free appropriately.
gcc/
* doc/invoke.texi (C++ Module Mapper): Fix markup.
From-SVN: r270228
2019-04-09 12:46:17 +00:00
Nathan Sidwell
8822a1013c
cp-tree.h (language_function): Remove x_auto_return_pattern.
...
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.
From-SVN: r270227
2019-04-09 12:39:26 +00:00
Nathan Sidwell
da2a1ce97f
module.cc (unnamed_ary, [...]): New.
...
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.
From-SVN: r270213
2019-04-08 17:56:40 +00:00
Nathan Sidwell
71218c59dc
cp-tree.h (struc mc_slot): Move to ...
...
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.
From-SVN: r270211
2019-04-08 14:58:50 +00:00
Nathan Sidwell
b6e2fa23ce
module.cc (dumper): Add CLUSTER.
...
gcc/cp/
* module.cc (dumper): Add CLUSTER.
(module_state::write): Dump cluster information.
From-SVN: r270130
2019-04-03 16:07:44 +00:00
Nathan Sidwell
72c633d8c6
module.cc (node_template_info): Move earlier, protect from partial read in.
...
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.
From-SVN: r270128
2019-04-03 15:36:58 +00:00
Nathan Sidwell
f7c4c77ba3
module.cc (module_state::write_cluster): Refactor.
...
gcc/cp/
* module.cc (module_state::write_cluster): Refactor.
From-SVN: r270127
2019-04-03 13:18:15 +00:00
Nathan Sidwell
138f3409bc
module.cc (cluster_tag): Remove ct_defn.
...
gcc/cp/
* module.cc (cluster_tag): Remove ct_defn.
(module_state::{read,write}_cluster): Definitions marked via flag.
From-SVN: r270125
2019-04-03 13:05:12 +00:00
Nathan Sidwell
8628504b5e
module.cc (depset::hash): Rename mergeables flag to mergeable_dep.
...
gcc/cp/
* module.cc (depset::hash): Rename mergeables flag to mergeable_dep.
From-SVN: r270124
2019-04-03 12:53:50 +00:00
Nathan Sidwell
dc15f2553b
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.
From-SVN: r270107
2019-04-02 20:09:57 +00:00
Nathan Sidwell
90feea63ef
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.
From-SVN: r270106
2019-04-02 19:48:41 +00:00
Nathan Sidwell
166185fcdd
module.cc (depset): Add EK_UNNAMED.
...
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.
From-SVN: r270103
2019-04-02 17:25:46 +00:00
Ben Boeckel
9abdb7a846
mkdeps.c (mrules): Rename is_legacy to is_header_init, adjust uses.
...
libcpp/
* mkdeps.c (mrules): Rename is_legacy to is_header_init, adjust uses.
(deps_add_module): Correctly duplicate and use strings.
Co-Authored-By: Nathan Sidwell <nathan@acm.org >
From-SVN: r270094
2019-04-02 15:38:14 +00:00
Nathan Sidwell
edc4dc7b3f
module.cc (depset::add_dependency): Drop maybe_using arg.
...
gcc/cp/
* module.cc (depset::add_dependency): Drop maybe_using arg.
Adjust callers.
(dumper::operator()): Overloads have a name.
(has_definition): Adjust.
From-SVN: r270093
2019-04-02 15:24:49 +00:00
Nathan Sidwell
20886e31e6
module.cc (depset): Move flags into discriminator field.
...
gcc/cp/
* module.cc (depset): Move flags into discriminator field. Adjust uses.
From-SVN: r270067
2019-04-01 20:04:45 +00:00
Nathan Sidwell
f18eb8e774
module.cc (depset): Replace key wih entity/discriminator tuple.
...
gcc/cp/
* module.cc (depset): Replace key wih entity/discriminator tuple.
Add entity_kind and disc_bits enums. Adjust hashing &
construction routines.
From-SVN: r270063
2019-04-01 17:07:15 +00:00
Nathan Sidwell
02d8687e67
module.cc (depset): Entity keying uses unique entity.
...
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.
From-SVN: r270058
2019-04-01 14:58:53 +00:00
Nathan Sidwell
e3e00e67c6
cp-tree.h (saved_scope): Remove this_module field.
...
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.
From-SVN: r270018
2019-03-29 14:54:34 +00:00
Nathan Sidwell
9ff2773a29
pt.c: Comment some structures.
...
gcc/cp/
* pt.c: Comment some structures.
From-SVN: r269993
2019-03-28 14:25:25 +00:00
Nathan Sidwell
ed2d6b09d7
invoke.texi (C++ Modules): Update.
...
gcc/
* doc/invoke.texi (C++ Modules): Update.
From-SVN: r269989
2019-03-28 13:35:49 +00:00
Nathan Sidwell
5c3ed9d552
Merge trunk r269975.
...
From-SVN: r269988
2019-03-28 11:55:29 +00:00
Nathan Sidwell
4ae801b63e
invoke.texi (C++ Modules): Update.
...
gcc/
* doc/invoke.texi (C++ Modules): Update.
From-SVN: r269974
2019-03-27 19:13:18 +00:00
Nathan Sidwell
e206a204a8
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.
From-SVN: r269973
2019-03-27 18:53:10 +00:00
Nathan Sidwell
6681bbff73
Expunge header name quoting in mapper
...
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.
From-SVN: r269968
2019-03-27 16:49:16 +00:00
Nathan Sidwell
efd079f064
Header unit names lack quotes
...
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.
From-SVN: r269966
2019-03-27 16:13:49 +00:00
Nathan Sidwell
fa7e225f49
Header unit names are strings
...
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.
From-SVN: r269963
2019-03-27 13:13:28 +00:00
Nathan Sidwell
7ad3e652a2
c-opts.c (c_common_post_options): Invert sense of cpp_read_main_file arg.
...
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.
From-SVN: r269955
2019-03-26 20:17:19 +00:00
Nathan Sidwell
39a54be1fb
Header units disambiguated by originating header path
...
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.
From-SVN: r269950
2019-03-26 15:47:19 +00:00
Nathan Sidwell
85d18f6c28
files.c (struct _cpp_file): Make bools bitfields, add header_unit flag.
...
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.
From-SVN: r269844
2019-03-21 18:29:26 +00:00
Nathan Sidwell
8b85ef4aa1
Merge trunk r269839.
...
From-SVN: r269840
2019-03-21 15:31:58 +00:00
Nathan Sidwell
98c80272f9
gcc.c (execute): Frob argv[0] to show spawning from driver.
...
gcc/
* gcc.c (execute): Frob argv[0] to show spawning from driver.
(process_command): Don't check input file exists here.
From-SVN: r269839
2019-03-21 15:01:41 +00:00
Nathan Sidwell
dbc1a921e5
gcc.c (execute): Frob argv[0] to show spawning from driver.
...
gcc/
* gcc.c (execute): Frob argv[0] to show spawning from driver.
(process_command): Don't check input file exists here.
From-SVN: r269833
2019-03-21 11:45:27 +00:00
Nathan Sidwell
bc43c9c9e3
module.cc (trees_out::mark_class_def): Skip friends in decl_list.
...
gcc/cp/
* module.cc (trees_out::mark_class_def): Skip friends in decl_list.
From-SVN: r269825
2019-03-20 16:02:04 +00:00
Nathan Sidwell
772de12369
module.cc (module_state::read_namespaces): Module-linkage namespaces are visible in the module itself.
...
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.
From-SVN: r269824
2019-03-20 15:46:44 +00:00
Nathan Sidwell
edfbd9ff45
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.
From-SVN: r269822
2019-03-20 15:04:35 +00:00
Nathan Sidwell
609acdc0d7
Enum members of templates.
...
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.
From-SVN: r269821
2019-03-20 14:00:35 +00:00
Nathan Sidwell
1f07d4ec78
module.cc (depset::hash::find_dependencies): It might be a fixed tree.
...
gcc/cp/
* module.cc (depset::hash::find_dependencies): It might be a fixed
tree.
gcc/testsuite/
* g++.dg/modules/stdns_[ab].C: New.
From-SVN: r269810
2019-03-19 18:42:30 +00:00
Nathan Sidwell
e9a6dab33f
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.
From-SVN: r269806
2019-03-19 17:33:14 +00:00
Nathan Sidwell
df0f4e522b
using-3.C: New.
...
gcc/testsuite/
* g++.dg/modules/using-3.C: New.
From-SVN: r269805
2019-03-19 17:10:13 +00:00
Nathan Sidwell
30b9e7ddab
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.
From-SVN: r269803
2019-03-19 17:02:04 +00:00
Nathan Sidwell
96df6ff310
name-lookup.c (do_nonmember_using_decl): Cleanups.
...
gcc/cp/
* name-lookup.c (do_nonmember_using_decl): Cleanups.
(finish_nonmember_using_decl): Likewise.
From-SVN: r269798
2019-03-19 14:27:36 +00:00
Nathan Sidwell
9b842b4490
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.
From-SVN: r269774
2019-03-18 18:25:55 +00:00
Nathan Sidwell
2c59f7dc96
module.cc (module_state::{read,write}_locations): Cope with trailing empty expansions.
...
gcc/cp/
* module.cc (module_state::{read,write}_locations): Cope with
trailing empty expansions.
From-SVN: r269773
2019-03-18 18:23:13 +00:00
Nathan Sidwell
6fbf6d226a
module.cc (module_state::{read,write}_locations): Macro maps can have embedded zeroes.
...
gcc/cp/
* module.cc (module_state::{read,write}_locations): Macro maps can
have embedded zeroes.
From-SVN: r269768
2019-03-18 17:01:21 +00:00
Nathan Sidwell
7ec6aa514c
name-lookup.c (do_nonmember_using_decl): Add install & fn_scope args.
...
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.
From-SVN: r269767
2019-03-18 16:21:16 +00:00
Nathan Sidwell
d07b25ea84
name-lookup.c (do_nonmember_using_decl): Have lookup passed in.
...
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.
From-SVN: r269714
2019-03-15 18:52:47 +00:00
Nathan Sidwell
596478979d
name-lookup.h (finish_nonmember_using_decl): Drop LOOKUP parm.
...
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.
From-SVN: r269711
2019-03-15 16:44:47 +00:00
Nathan Sidwell
8df20b9d9a
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.
From-SVN: r269705
2019-03-15 12:55:17 +00:00
Nathan Sidwell
4c4d38c246
backport: name-lookup.c (finish_nonmember_using_decl): New, merged from ...
...
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.
From-SVN: r269693
2019-03-14 20:14:58 +00:00
Nathan Sidwell
14ee6cf798
Drop cp_binding_level::usings
...
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.
From-SVN: r269689
2019-03-14 17:25:02 +00:00
Nathan Sidwell
185689391c
name-lookup.c (validate_nonmember_using_decl): Drop DR 36 case.
...
gcc/cp/
* name-lookup.c (validate_nonmember_using_decl): Drop DR 36 case.
gcc/testsuite/
* g++.dg/lookup/using53.C: Permit DR 36 case.
From-SVN: r269686
2019-03-14 16:03:04 +00:00
Nathan Sidwell
52f258b8e7
Merge trunk r269682.
...
From-SVN: r269685
2019-03-14 14:33:46 +00:00
Nathan Sidwell
7665fe6f9f
Start doing something with using decls
...
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.
From-SVN: r269657
2019-03-13 19:14:31 +00:00
Nathan Sidwell
2b95910389
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.
From-SVN: r269654
2019-03-13 17:19:28 +00:00
Nathan Sidwell
878edb8187
typedef struct {} foo; part 2
...
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.
From-SVN: r269653
2019-03-13 16:54:17 +00:00
Nathan Sidwell
410e860f50
module.cc (trees_out::tree_decl): Refactor named decl streaming.
...
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.
From-SVN: r269649
2019-03-13 13:52:29 +00:00
Nathan Sidwell
25146f8bcc
module.cc (trees_out::tree_node): Refactor.
...
gcc/cp/
* module.cc (trees_out::tree_node): Refactor.
(module_state::write_cluster): Prefer non-anonymous name.
From-SVN: r269626
2019-03-12 18:56:30 +00:00
Nathan Sidwell
b8e6e1a709
typedef struct {} foo;
...
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.
From-SVN: r269621
2019-03-12 17:06:12 +00:00
Nathan Sidwell
b7d3611843
decl.c (fndecl_declared_return_type): Remove BMI FIXME.
...
gcc/cp/
* decl.c (fndecl_declared_return_type): Remove BMI FIXME.
* module.cc (trees_{in,out}::lang_decl_vals): Stream
saved_auto_return_type.
From-SVN: r269617
2019-03-12 15:30:31 +00:00
Nathan Sidwell
cf446185f3
tree.c (ovl_splice): Delete.
...
gcc/cp/
* tree.c (ovl_splice): Delete.
From-SVN: r269615
2019-03-12 15:09:49 +00:00
Nathan Sidwell
4e6a491d2d
Kill DECL_SAVED_FUNCTION_DATA part 1
...
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.
From-SVN: r269614
2019-03-12 15:09:15 +00:00
Nathan Sidwell
39dbb42cd5
module.cc (writable_cmp): New.
...
gcc/cp/
* module.cc (writable_cmp): New.
(depset::hash::add_writables): Sort the hash before inserting.
From-SVN: r269610
2019-03-12 12:59:07 +00:00
Nathan Sidwell
959c6fba9e
decl.c (fndecl_declared_return_type): Extend BMI hack.
...
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 #.
From-SVN: r269609
2019-03-12 12:41:36 +00:00
Nathan Sidwell
161c01072e
avoid spurious error
...
From-SVN: r269593
2019-03-11 17:55:32 +00:00
Nathan Sidwell
f8ca116fbe
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.
From-SVN: r269590
2019-03-11 17:16:00 +00:00
Nathan Sidwell
5b6706bd46
tree.h (make_anon_name): Drop optional parm.
...
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.
From-SVN: r269589
2019-03-11 16:45:39 +00:00
Nathan Sidwell
b9078b1565
name-lookup.h (extract_module_binding): Return binding, not name.
...
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.
From-SVN: r269498
2019-03-08 15:55:50 +00:00
Nathan Sidwell
27020aa92c
cp-tree.h (ovl_sort): Delete.
...
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.
From-SVN: r269496
2019-03-08 15:21:19 +00:00
Nathan Sidwell
736df565ab
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.
From-SVN: r269490
2019-03-08 12:32:27 +00:00
Nathan Sidwell
9e3484d867
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.
From-SVN: r269466
2019-03-07 18:15:30 +00:00
Nathan Sidwell
eeef66eefd
Refactor all the things!
...
gcc/cp/
* module.cc: Tighten up access.
From-SVN: r269439
2019-03-06 19:43:57 +00:00
Nathan Sidwell
226bf5f2ed
module.cc (module_state): Reorder member fn definitions.
...
Refactor.
gcc/cp/
* module.cc (module_state): Reorder member fn definitions.
From-SVN: r269438
2019-03-06 19:35:33 +00:00
Nathan Sidwell
ded9e97b0d
module.cc (module_state::is_matching_decl): Moved to ...
...
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.
From-SVN: r269437
2019-03-06 19:29:07 +00:00
Nathan Sidwell
3c25ac9d61
module.cc (module_state::read_definition): Moved to ...
...
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.
From-SVN: r269436
2019-03-06 19:11:47 +00:00
Nathan Sidwell
cedae516af
module.cc (module_state::{write,mark}_definition): Move to ...
...
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.
From-SVN: r269435
2019-03-06 18:51:33 +00:00
Nathan Sidwell
30e6874ffc
module.cc (module_state::{add_writables,find_dependencies}): Move to ...
...
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.
From-SVN: r269432
2019-03-06 18:22:27 +00:00
Nathan Sidwell
b732f7efd0
GMF pruning, Part 2
...
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.
From-SVN: r269431
2019-03-06 18:01:24 +00:00
Nathan Sidwell
093af63697
module.cc (trees_out::trees_out): Add depset::hash parm.
...
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.
From-SVN: r269430
2019-03-06 17:07:05 +00:00
Nathan Sidwell
d34d579b9d
Linkage promotion ban GMF pruning, Part 1
...
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.
From-SVN: r269425
2019-03-06 14:35:13 +00:00
Nathan Sidwell
712c899f52
module.cc (depset::hash::add_binding): Ignore internal-linkage entities.
...
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.
From-SVN: r269400
2019-03-05 19:48:47 +00:00
Nathan Sidwell
32596325f8
module.cc (depset::add_dependency): Drop kind arg, return void.
...
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.
From-SVN: r269397
2019-03-05 17:48:00 +00:00
Nathan Sidwell
c6b84af365
module.cc (depset): Add refs_internal field.
...
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.
From-SVN: r269395
2019-03-05 16:44:10 +00:00
Nathan Sidwell
1574453f6a
Merge trunk r269375.
...
From-SVN: r269377
2019-03-04 22:59:11 +00:00
Nathan Sidwell
e17a95cad8
Merge trunk r269375.
...
From-SVN: r269376
2019-03-04 22:58:49 +00:00
Nathan Sidwell
7e89ef6593
GMF content locations
...
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.
From-SVN: r269375
2019-03-04 20:53:15 +00:00
Nathan Sidwell
58df4b11dd
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.
From-SVN: r269373
2019-03-04 20:18:21 +00:00
Nathan Sidwell
d0495cc99f
cpplib.h (struct cpp_hashnode): Drop C compatibility macros.
...
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.
From-SVN: r269370
2019-03-04 17:42:40 +00:00
Nathan Sidwell
20869ca8a1
module.cc (declare_module): Deal with de-GMFing here, get name of implicit header module.
...
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.
From-SVN: r269369
2019-03-04 17:39:20 +00:00
Nathan Sidwell
a39a7395c1
Merge trunk r269321.
...
From-SVN: r269323
2019-03-01 17:55:50 +00:00
Nathan Sidwell
49837c4a7d
Merge trunk r269078 (metadata update).
...
From-SVN: r269321
2019-03-01 16:39:06 +00:00
Nathan Sidwell
69dd4456b3
Apply trunk r269078.
...
gcc/cp/
* module.cc (module_state::{read,write}_function_def): Adjust.
From-SVN: r269320
2019-03-01 16:34:49 +00:00
Nathan Sidwell
bcaf28b18d
cp-tree.h (struct constexpr_fundef): Moved from constexpr.c.
...
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.
From-SVN: r269316
2019-03-01 14:22:02 +00:00
Nathan Sidwell
ec8bd3709c
Merge trunk r269077.
...
From-SVN: r269310
2019-03-01 13:46:08 +00:00
Nathan Sidwell
fd7f592ed4
parser.c (cp_lexer_set_source_position_from_token): Revert.
...
gcc/cp/
* parser.c (cp_lexer_set_source_position_from_token): Revert.
From-SVN: r269306
2019-03-01 12:51:04 +00:00
Nathan Sidwell
4ebef46785
module & import-semi lexing rules
...
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.
From-SVN: r269284
2019-02-28 19:31:23 +00:00
Nathan Sidwell
348c719f8e
Remove eof_token
...
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.
From-SVN: r269279
2019-02-28 13:33:34 +00:00
Nathan Sidwell
314f0f37eb
__import in extern "C"
...
__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.
From-SVN: r269261
2019-02-27 18:26:43 +00:00
Nathan Sidwell
a966ed3bf4
cp-tree.h (import_module): Return bool.
...
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.
From-SVN: r269257
2019-02-27 15:29:33 +00:00
Nathan Sidwell
dd2acf6a68
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.
From-SVN: r269231
2019-02-26 21:02:08 +00:00
Nathan Sidwell
80b046381a
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.
From-SVN: r269228
2019-02-26 20:03:43 +00:00
Nathan Sidwell
a2e74eee5a
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.
From-SVN: r269225
2019-02-26 18:49:34 +00:00
Nathan Sidwell
921577aedf
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.
From-SVN: r269223
2019-02-26 18:08:34 +00:00
Nathan Sidwell
680f8b6f1b
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.
From-SVN: r269215
2019-02-26 15:30:38 +00:00
Nathan Sidwell
6dcef32638
invoke.texi: Update modules documentation.
...
gcc/
* doc/invoke.texi: Update modules documentation.
From-SVN: r269147
2019-02-23 02:35:12 +00:00
Nathan Sidwell
99679bed65
mkdeps.h (deps_write): Add phony arg.
...
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.
From-SVN: r269146
2019-02-23 02:04:15 +00:00
Nathan Sidwell
ef2904ca0c
cp-tree.h (init_module_processing): Add arg.
...
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.
From-SVN: r269128
2019-02-22 18:29:12 +00:00
Nathan Sidwell
4dcc1c0fae
mkdeps.c (deps_add_module): Allow empty bmi name.
...
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.
From-SVN: r269126
2019-02-22 17:54:10 +00:00
Nathan Sidwell
6b2ca38c1b
c.opt: Rename fmodule-legacy to fmodule-header
...
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.
From-SVN: r269092
2019-02-22 01:24:43 +00:00
Nathan Sidwell
fedfa06cb8
langhooks.h (struct lang_hooks): Adjust preprocess_token API.
...
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.
From-SVN: r269076
2019-02-21 20:53:53 +00:00
Nathan Sidwell
46d51789a5
REVISION: Add [].
...
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.
From-SVN: r269051
2019-02-20 20:21:25 +00:00
Nathan Sidwell
92577f23eb
Merge trunk r268782.
...
From-SVN: r268794
2019-02-12 13:46:25 +00:00
Nathan Sidwell
2a6bf78629
Make dependencies
...
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.
From-SVN: r268782
2019-02-11 20:38:49 +00:00
Nathan Sidwell
f95467a7ec
mkdeps.c (struct deps): Make more C++y.
...
libcpp/
* mkdeps.c (struct deps): Make more C++y. Update all uses.
From-SVN: r268703
2019-02-08 15:40:42 +00:00
Nathan Sidwell
350b3f1aea
module.cc (module_mapper::module_mapper): Fix local socket creation.
...
gcc/cp/
* module.cc (module_mapper::module_mapper): Fix local socket creation.
From-SVN: r268641
2019-02-07 14:52:32 +00:00
Nathan Sidwell
0c8ec7dd9d
c++-mapper.cc (module2bmi): Do not map dir separators.
...
gcc/cp/
* c++-mapper.cc (module2bmi): Do not map dir separators.
gcc/testsuite/
* g+.dg/modules/modules.exp (decode_mod_spec): Likewise.
From-SVN: r268616
2019-02-07 13:24:38 +00:00
Nathan Sidwell
ac3f39bbcc
module.cc (create_dirs): New.
...
gcc/cp/
* module.cc (create_dirs): New.
(maybe_add_bmi_prefix): Add FORCE parm, adjust.
(finish_module_parse): Try and create intermediate dirs.
From-SVN: r268615
2019-02-07 13:03:11 +00:00
Nathan Sidwell
70cd6925c0
prefix mismatch to dump file
...
From-SVN: r268577
2019-02-06 12:46:19 +00:00
Nathan Sidwell
e7642770e3
name-lookup.c (finish_namespace_using_decl): Add assert + FIXME.
...
gcc/cp/
* name-lookup.c (finish_namespace_using_decl): Add assert + FIXME.
From-SVN: r268549
2019-02-05 17:10:52 +00:00
Nathan Sidwell
dde51bb05f
cxx-mapper.cc (client::action): Add mapper agent.
...
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.
From-SVN: r268548
2019-02-05 16:59:53 +00:00
Nathan Sidwell
b0bb86d3bf
module.cc (module_state::read_locations): Make wanring development-only.
...
gcc/cp/
* module.cc (module_state::read_locations): Make wanring
development-only.
From-SVN: r268538
2019-02-05 14:48:25 +00:00
Nathan Sidwell
3663899cf1
module.cc (get_module_slot): New broken out of ...
...
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. 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.
From-SVN: r268535
2019-02-05 14:29:43 +00:00
Nathan Sidwell
83d7176282
Merge trunk r268456.
...
From-SVN: r268457
2019-02-01 21:01:45 +00:00
Nathan Sidwell
5eb5a3f722
indent
...
From-SVN: r268456
2019-02-01 20:58:03 +00:00
Nathan Sidwell
ee75767dbc
decl.c (duplicate_decls): Accomodate anticipated fns.
...
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.
From-SVN: r268454
2019-02-01 17:59:28 +00:00
Nathan Sidwell
4cc495496b
module.cc (try_increase_lazy): Fix setrlimit call.
...
gcc/cp/
* module.cc (try_increase_lazy): Fix setrlimit call.
(init_module_processing): Fix getrlimit call.
From-SVN: r268423
2019-01-31 14:43:42 +00:00
Nathan Sidwell
48df08ee81
module.cc (init_module_processing): Dump even more config.
...
gcc/cp/
* module.cc (init_module_processing): Dump even more config.
Tweak lazy limit.
From-SVN: r268421
2019-01-31 13:42:39 +00:00
Nathan Sidwell
b201fbc904
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.
From-SVN: r268420
2019-01-31 12:57:47 +00:00
Nathan Sidwell
10323633c0
ADL part 2
...
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.
From-SVN: r268401
2019-01-30 20:38:28 +00:00
Nathan Sidwell
7b3dfc8207
ADL part 1
...
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.
From-SVN: r268399
2019-01-30 17:42:03 +00:00
Nathan Sidwell
40bcebefe7
name-lookup.c (name_lookup::adl_namespace_only): Delete.
...
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.
From-SVN: r268395
2019-01-30 15:29:54 +00:00
Iain Sandoe
3ccfaa402e
module.cc: Reorder includes.
...
gcc/cp/
* module.cc: Reorder includes.
* cxx-mapper.cc: Likewise.
From-SVN: r268387
2019-01-30 12:25:22 +00:00
Iain Sandoe
b02aa56a34
fn-inline-1_{bc}.C: Adjust weak scan.
...
gcc/testsuite/
* g++.dg/modules/fn-inline-1_{bc}.C: Adjust weak scan.
From-SVN: r268386
2019-01-30 12:03:32 +00:00
Nathan Sidwell
fe7848b86c
invoke.texi (C++ Modules): Add submenu.
...
gcc/
* doc/invoke.texi (C++ Modules): Add submenu.
From-SVN: r268385
2019-01-30 12:00:41 +00:00
Nathan Sidwell
41dfd13ea0
module.cc (init_module_processing): Dump more config.
...
gcc/cp/
* module.cc (init_module_processing): Dump more config.
From-SVN: r268364
2019-01-29 13:32:11 +00:00
Nathan Sidwell
e7b08c11b9
module.cc (MAPPED_READING, [...]): 0 or 1
...
gcc/cp/
* module.cc (MAPPED_READING, MAPPED_WRITING): 0 or 1
(init_module_processing): Dump mapping behaviour.
From-SVN: r268363
2019-01-29 12:59:03 +00:00
Nathan Sidwell
ad4d4f6512
module.cc (module_mapper::make): Drop options arg, look at CXX_MODULE_MAPPER.
...
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.
From-SVN: r268340
2019-01-28 18:47:37 +00:00
Nathan Sidwell
cad26d5035
module.cc (trees_{in,out}::core_vals): Lambda location.
...
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.
From-SVN: r268339
2019-01-28 18:12:27 +00:00
Nathan Sidwell
23fd81f8f2
Merge trunk r268337.
...
From-SVN: r268338
2019-01-28 16:50:45 +00:00
Nathan Sidwell
639a13481e
More fixme reformatting
...
From-SVN: r268227
2019-01-24 00:30:43 +00:00
Nathan Sidwell
303f8733c1
Reformat FIXMEs
...
From-SVN: r268226
2019-01-24 00:17:02 +00:00
Nathan Sidwell
cc8c93090b
module.cc (trees_{in,out}::core_vals): Stream expression locii.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Stream expression locii.
From-SVN: r268222
2019-01-23 23:17:45 +00:00
Nathan Sidwell
c5c761a75d
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 tcc_statement.
From-SVN: r268221
2019-01-23 23:05:31 +00:00
Nathan Sidwell
cf0b8150a7
cp-objcp-common.c (cp_common_init_ts): MARK_TS_EXP for scope_ref & noexcept_expr.
...
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.
From-SVN: r268220
2019-01-23 22:54:43 +00:00
Nathan Sidwell
19549423da
module.cc (trees_{in,out}::core_vals): Adjust expression streaming.
...
gcc/cp/
* module.cc (trees_{in,out}::core_vals): Adjust expression streaming.
From-SVN: r268218
2019-01-23 22:42:22 +00:00
Nathan Sidwell
a71b42a283
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.
From-SVN: r268217
2019-01-23 22:19:32 +00:00
Nathan Sidwell
4385532f1f
module.cc (trees_{in,out}::core_vals): Clean up enumeral type handling.
...
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.
From-SVN: r268206
2019-01-23 20:53:13 +00:00
Nathan Sidwell
019fec68e1
module.cc (tree_tag): Add tt_enum_int.
...
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.
From-SVN: r268196
2019-01-23 19:40:33 +00:00
Nathan Sidwell
f63dc19d3f
module.cc (trees_in::finish_type): Don't speciual case TYPE_PACKs.
...
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.
From-SVN: r268194
2019-01-23 18:59:19 +00:00
Nathan Sidwell
e6b2e9ff5f
cp-objcp-common.c (cp_common_init_ts): Set TYPE_PACK_EXPANSION and TYPE_ARGUMENT_PACK correctly.
...
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.
From-SVN: r268171
2019-01-22 23:58:11 +00:00
Nathan Sidwell
a0f65afcfa
module.cc (tree_tag): Add tt_ptrmem_type.
...
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.
From-SVN: r268169
2019-01-22 22:42:42 +00:00
Nathan Sidwell
a19f26e866
module.cc (trees_{in,out}::core_vals): Stream tcc_reference, baselink, static_assert, trait_expr.
...
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.
From-SVN: r268078
2019-01-18 14:23:44 +00:00
Nathan Sidwell
284bf9e027
module.cc (trees_{in,out}::core_vals): Stream tcc_reference, baselink, static_assert, trait_expr.
...
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.
From-SVN: r268074
2019-01-18 12:39:20 +00:00
Nathan Sidwell
3da1800b6e
module.cc (module_state::{read,write}_locations): Fix macro expansion compression.
...
gcc/cp/
* module.cc (module_state::{read,write}_locations): Fix macro
expansion compression.
From-SVN: r268073
2019-01-18 12:37:19 +00:00
Nathan Sidwell
abd3e0919e
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.
From-SVN: r268040
2019-01-17 16:58:47 +00:00
Nathan Sidwell
f0f13f827c
module.cc (trees_{in,out}::fn_parms): New.
...
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.
From-SVN: r268039
2019-01-17 16:49:09 +00:00
Nathan Sidwell
7bbc69c239
module.cc (trees_{in,out}::tree_mergeable): Allow non-implicit typedefs.
...
gcc/cp/
* module.cc (trees_{in,out}::tree_mergeable): Allow non-implicit
typedefs.
gcc/testsuite/
* g++.dg/modules/leg-merge-9_[abc].[HC]: New.
From-SVN: r267990
2019-01-16 22:56:04 +00:00
Nathan Sidwell
d035d32af8
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.
From-SVN: r267988
2019-01-16 22:35:30 +00:00
Nathan Sidwell
d1ee5e53da
module.cc (dumper::GM): Rename to MERGE.
...
gcc/cp/
* module.cc (dumper::GM): Rename to MERGE. Update uses.
From-SVN: r267982
2019-01-16 18:16:48 +00:00
Nathan Sidwell
fb95135d25
cp-tree.h (module_name): Replace FULL parm with primary pointer.
...
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.
From-SVN: r267981
2019-01-16 18:14:26 +00:00
Nathan Sidwell
eacd1d2c32
cp-tree.h (module_name): Add FULL parm.
...
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.
From-SVN: r267977
2019-01-16 15:58:35 +00:00
Nathan Sidwell
82cdbd898a
Merge trunk r267946.
...
From-SVN: r267947
2019-01-15 20:17:22 +00:00
Nathan Sidwell
59877906f3
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.
From-SVN: r267945
2019-01-15 18:58:21 +00:00
Nathan Sidwell
9cfc4be642
tree.h (cache_integer_cst): Add defaulted small parm.
...
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.
From-SVN: r267919
2019-01-14 15:03:33 +00:00
Nathan Sidwell
9ab9abbc96
module.cc (trees_out::start): Catch POLY_INT_CST, adjust VECTOR_CST.
...
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.
From-SVN: r267918
2019-01-14 13:37:39 +00:00
Nathan Sidwell
aed4f51ab8
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.
From-SVN: r267857
2019-01-11 20:36:21 +00:00
Nathan Sidwell
7e39994e30
Reals & Complex
...
Reals & Complex
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.
From-SVN: r267856
2019-01-11 20:21:37 +00:00
Nathan Sidwell
5283d2b1f1
module.cc (get_module): Fix partition parsing.
...
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.
From-SVN: r267853
2019-01-11 19:16:01 +00:00
Nathan Sidwell
c6b110ddac
cp-tree.h (module_not_legacy_p): New.
...
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.
From-SVN: r267813
2019-01-10 15:48:47 +00:00
Nathan Sidwell
d38cefbdd5
module.cc (finish_module_parse): Better location info on errors.
...
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.
From-SVN: r267807
2019-01-10 12:35:36 +00:00
Nathan Sidwell
9bd3deff8b
module.cc (module_state::read_partitions): New.
...
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.
From-SVN: r267782
2019-01-09 20:38:06 +00:00
Nathan Sidwell
8dec5c04fa
module.cc (module_state::read_partitions): New.
...
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.
From-SVN: r267780
2019-01-09 19:56:45 +00:00
Nathan Sidwell
e64aacbe18
module.cc (module_state::from_partition_p): New field.
...
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.
From-SVN: r267777
2019-01-09 17:37:14 +00:00
Nathan Sidwell
baab95c119
missed checkin
...
From-SVN: r267737
2019-01-08 20:28:08 +00:00
Nathan Sidwell
0f0ebbad70
cxx-mapper.cc (module2bmi): Update mapping
...
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.
From-SVN: r267736
2019-01-08 20:16:30 +00:00
Nathan Sidwell
52ce475262
module.cc (module_state::{interface_p,is_interface}): New.
...
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.
From-SVN: r267733
2019-01-08 18:55:41 +00:00
Nathan Sidwell
2686e405b2
module.cc (bytes_out::set_crc): Only set if crc_ptr != 0.
...
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.
From-SVN: r267730
2019-01-08 15:42:25 +00:00
Nathan Sidwell
e29a29fdbb
module.cc (module_state::direct_import): Add LAZY parm, use it rather than legacy_p.
...
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.
From-SVN: r267729
2019-01-08 14:55:04 +00:00
Nathan Sidwell
e5d618176e
cp-tree.h (module_has_bmi_p): New.
...
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.
From-SVN: r267727
2019-01-08 14:27:32 +00:00
Nathan Sidwell
daa60bdd32
cp-tree.h (module_export_depth, [...]): Replace with ...
...
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.
From-SVN: r267724
2019-01-08 12:52:00 +00:00
Nathan Sidwell
e649824165
cxx-mapper.cc (module2bmi): Don't map ':'.
...
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 ':'
From-SVN: r267659
2019-01-07 20:22:30 +00:00
Nathan Sidwell
1500f4c1e6
name-lookup.h (match_global_decl): Rename to ...
...
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.
From-SVN: r267561
2019-01-03 18:21:44 +00:00
Nathan Sidwell
2b57d22567
name-lookup.c (module_binding_slot): Break apart to ...
...
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.
From-SVN: r267554
2019-01-03 15:03:03 +00:00
Nathan Sidwell
4e0fcebd25
name-lookup.c (module_binding_slot): Use FIXED parm.
...
gcc/cp/
* name-lookup.c (module_binding_slot): Use FIXED parm.
From-SVN: r267530
2019-01-02 20:36:14 +00:00
Nathan Sidwell
9347e70a4e
more sensible parm ordering
...
From-SVN: r267529
2019-01-02 20:27:45 +00:00
Nathan Sidwell
dc5338d75a
name-lookup.c (module_binding_slot): Add FIXED parm, adjust all callers.
...
gcc/cp/
* name-lookup.c (module_binding_slot): Add FIXED parm, adjust all
callers.
From-SVN: r267527
2019-01-02 19:49:48 +00:00
Nathan Sidwell
80486f45a7
module.cc: Rename gme -> mme, because partitions.
...
gcc/cp/
* module.cc: Rename gme -> mme, because partitions.
From-SVN: r267525
2019-01-02 19:10:15 +00:00
Nathan Sidwell
5d89f69864
cp-tree.h (DECL_MODULE_PURVIEW_P): Delete.
...
gcc/cp/
* cp-tree.h (DECL_MODULE_PURVIEW_P): Delete.
(MAYBE_DECL_MODULE_PURVIEW_P): Delete.
* mangle.c (maybe_write_module): Adjust.
From-SVN: r267524
2019-01-02 18:53:29 +00:00
Nathan Sidwell
fecf9a164c
legacy-8_[abcde].[CH]: New.
...
gcc/testsuite/
* g++.dg/modules/legacy-8_[abcde].[CH]: New.
From-SVN: r267523
2019-01-02 18:45:57 +00:00
Nathan Sidwell
943e880d1b
re PR c++/88664 (False positive -Waddress-of-packed-member)
...
gcc/cp/
* cxx-mapper.cc (server): Workaround PR c++/88664.
From-SVN: r267516
2019-01-02 15:23:56 +00:00
Nathan Sidwell
e7acf9612a
Merge trunk r267509.
...
* module.cc, cxx-mapper.cc: Update copyright years.
From-SVN: r267514
2019-01-02 14:59:37 +00:00
Nathan Sidwell
f58c351b4e
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.
From-SVN: r267311
2018-12-20 19:14:37 +00:00
Nathan Sidwell
3bd761bef1
module.cc (module_state::check_read): Fix bogus note.
...
gcc/cp/
* module.cc (module_state::check_read): Fix bogus note.
gcc/testsuite/
* g++.dg/modules/indirect-1_c.C: Add bogus note test.
From-SVN: r267310
2018-12-20 19:11:02 +00:00
Nathan Sidwell
03e91ef2d8
module.cc (module_state::remap): New member var.
...
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.
From-SVN: r267300
2018-12-20 14:47:38 +00:00
Nathan Sidwell
2f1ac0bb75
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.
From-SVN: r267269
2018-12-19 14:44:15 +00:00
Nathan Sidwell
84df79b99a
cp-tree.h (get_module): Add partition arg.
...
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.
From-SVN: r267243
2018-12-18 20:44:04 +00:00
Nathan Sidwell
d641a8cccc
cp-tree.h (get_module): Default NULL parent.
...
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.
From-SVN: r267242
2018-12-18 19:53:50 +00:00
Nathan Sidwell
b7194ae846
module.cc (trees_out::tree_decl): Remove some remaining non-atomic template hacks.
...
gcc/cp/
* module.cc (trees_out::tree_decl): Remove some remaining
non-atomic template hacks.
From-SVN: r267241
2018-12-18 18:53:33 +00:00
Nathan Sidwell
53a49b6a17
module.cc (module_state::write): Sort dependency table.
...
gcc/cp/
* module.cc (module_state::write): Sort dependency table.
From-SVN: r267240
2018-12-18 18:47:20 +00:00
Nathan Sidwell
00c04f31d8
module.cc (module_cpp_undef): Don't zap undef hook if we don't own it.
...
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.
From-SVN: r267233
2018-12-18 13:57:03 +00:00
Nathan Sidwell
fbb306e144
Merge trunk r267229.
...
From-SVN: r267231
2018-12-18 13:32:58 +00:00
Nathan Sidwell
60e871169d
module.cc (trees_out::{write,mark}_template_def): Delete.
...
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.
From-SVN: r267218
2018-12-17 21:36:27 +00:00
Nathan Sidwell
de8fb4cf1b
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.
From-SVN: r267217
2018-12-17 21:32:02 +00:00
Nathan Sidwell
6f890569fa
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.
From-SVN: r267211
2018-12-17 21:24:47 +00:00
Nathan Sidwell
21f892e82f
Intermediate step to atomic TEMPLATE_DECL + DECL_TEMPLATE_RESULT.
...
Breaks leg-merge-7_c.C,
gcc/cp/
* module.c (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.
From-SVN: r267205
2018-12-17 16:55:00 +00:00
Nathan Sidwell
7aab222631
module.cc (trees_out::node_template_info): New, broken out of ...
...
gcc/cp/
* module.cc (trees_out::node_template_info): New, broken out of
...
(trees_out::tree_decl): ... here. Use it.
From-SVN: r267140
2018-12-14 19:18:58 +00:00
Nathan Sidwell
82faacf1c7
module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access.
...
gcc/cp/
* module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access.
From-SVN: r267139
2018-12-14 18:46:13 +00:00
Nathan Sidwell
6b4442fd28
Function template deduping
...
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.
From-SVN: r267110
2018-12-13 20:55:24 +00:00
Nathan Sidwell
0a873b629b
module.cc (slurping::remap): Heap allocate.
...
gcc/cp/
* module.cc (slurping::remap): Heap allocate.
(gt_pch_nx): Delete hacks.
From-SVN: r266814
2018-12-05 02:23:35 +00:00
Nathan Sidwell
2a812ddd13
module.cc (tree_tag): Replace tt_named_type with tt_{primary,secondary}_type.
...
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.
From-SVN: r266802
2018-12-04 22:38:19 +00:00
Nathan Sidwell
2bd52d9f6c
Class deduping
...
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.
From-SVN: r266800
2018-12-04 22:12:46 +00:00
Nathan Sidwell
ba05fa80f5
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.
From-SVN: r266797
2018-12-04 20:54:35 +00:00
Nathan Sidwell
f46b60b2f4
module.c (module_state::{read,write,mark}_enum): Take DECL.
...
gcc/cp/
* module.c (module_state::{read,write,mark}_enum): Take DECL.
(module_state::{read,write,mark}_definition): Adjust.
From-SVN: r266791
2018-12-04 18:04:56 +00:00
Nathan Sidwell
8db16f3cd3
class.c (layout_class_type): Base type has same module as owner.
...
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.
From-SVN: r266790
2018-12-04 18:00:42 +00:00
Nathan Sidwell
62fb31f235
class.c (build_base_field_1): Refactor.
...
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.
From-SVN: r266789
2018-12-04 17:39:16 +00:00
Nathan Sidwell
4c65fd4b39
module.cc (trees_in): Rename bad_decls to skip_defns.
...
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.
From-SVN: r266778
2018-12-04 13:23:25 +00:00
Nathan Sidwell
7b01562cbb
Merge trunk r266680.
...
From-SVN: r266681
2018-11-30 20:02:13 +00:00
Nathan Sidwell
49034139b0
module.cc: Fix enums with trailing commas.
...
gcc/cp/
* module.cc: Fix enums with trailing commas.
* name-lookup.c (match_global_decl): Avoid unused arg warning.
From-SVN: r266679
2018-11-30 18:50:23 +00:00
Nathan Sidwell
05a3404e10
module.cc (module_state::write_binfos): Binfo was not visited.
...
gcc/cp/
* module.cc (module_state::write_binfos): Binfo was not visited.
From-SVN: r266676
2018-11-30 16:41:53 +00:00
Nathan Sidwell
734f6391ec
module.cc (module_state::write_binfos): Always write number of vbases.
...
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.
From-SVN: r266675
2018-11-30 16:34:14 +00:00
Nathan Sidwell
8ba50616ca
class.c (fixup_type_variants): Copy TYPE_SIZE & TYPE_SIZE_UNIT.
...
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.
From-SVN: r266670
2018-11-30 15:48:46 +00:00
Nathan Sidwell
120a966312
module.cc (trees_in): Add bad_decls and post_decls.
...
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.
From-SVN: r266669
2018-11-30 15:43:11 +00:00
Nathan Sidwell
d148c88a0c
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.
From-SVN: r266643
2018-11-29 21:20:09 +00:00
Nathan Sidwell
3718e2186e
modules.cc (module_state::check_read): Adjust, print inform of outer location.
...
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.
From-SVN: r266642
2018-11-29 21:03:21 +00:00
Nathan Sidwell
f1c25f2869
Fixing GME classes
...
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.
From-SVN: r266639
2018-11-29 20:14:43 +00:00
Nathan Sidwell
33b8e3aff6
Some ODR checking of GMEs
...
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.
From-SVN: r266629
2018-11-29 17:03:34 +00:00
Nathan Sidwell
d2f39fedb2
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.
From-SVN: r266626
2018-11-29 15:34:26 +00:00
Nathan Sidwell
ca9a8bb144
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.
From-SVN: r266623
2018-11-29 15:10:47 +00:00
Nathan Sidwell
f190073977
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.
From-SVN: r266589
2018-11-28 21:20:30 +00:00
Nathan Sidwell
6b36d7be1e
modules.cc (trees_{in,out}::tree_node_bools): Break out tree_node_specific.
...
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.
From-SVN: r266580
2018-11-28 20:02:59 +00:00
Nathan Sidwell
8f87c1ad93
modules.cc (trees_{in,out}::tree_node_raw): Bifurcate to ...
...
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.
From-SVN: r266479
2018-11-26 20:29:32 +00:00
Nathan Sidwell
9f45de6c9f
modules.cc (trees_out::tree_ref): Rename to ...
...
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.
From-SVN: r266476
2018-11-26 19:30:00 +00:00
Nathan Sidwell
f04c95414a
modules.cc (trees_out::walk_kind): New enum.
...
gcc/cp/
* modules.cc (trees_out::walk_kind): New enum.
(trees_out::tree_ref): Return it.
(trees_out::tree_{ctx,decl,node}): Use it.
From-SVN: r266475
2018-11-26 18:33:35 +00:00
Nathan Sidwell
1fe194e0a3
modules.cc (trees_out::ref_force_{lwm.hwm}): New ref values.
...
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.
From-SVN: r266474
2018-11-26 18:24:48 +00:00
Nathan Sidwell
c66affd04e
modules.cc (dumper): Rename dump flags.
...
gcc/cp/
* modules.cc (dumper): Rename dump flags. Adjust throughout.
From-SVN: r266324
2018-11-20 17:26:58 +00:00
Nathan Sidwell
07e801d065
module.cc (handle_module_option): Handle OPT_fmodule_legacy.
...
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.
From-SVN: r266283
2018-11-19 20:22:46 +00:00
Nathan Sidwell
854342c3c4
Merge trunk r266271.
...
From-SVN: r266273
2018-11-19 13:56:35 +00:00
Nathan Sidwell
83c7b55fbf
Merge trunk r266161.
...
From-SVN: r266191
2018-11-15 17:25:22 +00:00
Nathan Sidwell
3b595d9a8e
invoke.texi: Rename cookie->ident, people read too much into 'cookie'.
...
gcc/
* doc/invoke.texi: Rename cookie->ident, people read too much into
'cookie'.
From-SVN: r266189
2018-11-15 16:04:38 +00:00
Nathan Sidwell
b0d59a42dd
parser.c (cp_parser_translation_unit): Refactor.
...
gcc/cp/
* parser.c (cp_parser_translation_unit): Refactor.
From-SVN: r265907
2018-11-08 03:41:47 +00:00
Nathan Sidwell
4c645696da
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.
From-SVN: r265905
2018-11-08 03:25:47 +00:00
Nathan Sidwell
9d94d3fa2e
cp-tree.h (module_gmf_p): 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.
From-SVN: r265883
2018-11-07 18:38:03 +00:00
Nathan Sidwell
1680f7c06d
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.
From-SVN: r265779
2018-11-04 21:14:23 +00:00
Nathan Sidwell
11e6f415b0
modules.c (module_state::read): Interface can be lazy too.
...
gcc/cp/
* modules.c (module_state::read): Interface can be lazy too.
From-SVN: r265754
2018-11-02 17:49:06 +00:00
Nathan Sidwell
4abd8c3652
name-lookup.c (STAT_EXPORTS): Rename to ...
...
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.
From-SVN: r265753
2018-11-02 17:47:14 +00:00
Nathan Sidwell
90b6ad4130
cp-tree.h (module_may_redeclare): Declare.
...
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.
From-SVN: r265752
2018-11-02 17:43:11 +00:00
Nathan Sidwell
2bbc1ae543
module.cc (module_state::read_cluster): Preserve export_tail.
...
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.
From-SVN: r265750
2018-11-02 15:40:31 +00:00
Nathan Sidwell
f229dde02a
decl.c (duplicate_decls): Refactor export check.
...
gcc/cp/
* decl.c (duplicate_decls): Refactor export check.
gcc/testsuite/
* g++.dg/modules/export-1.C: New.
From-SVN: r265746
2018-11-02 13:35:27 +00:00
Nathan Sidwell
c02dc66f04
decl.c (duplicate_decls): Refactor checks.
...
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.
From-SVN: r265731
2018-11-01 20:10:24 +00:00
Nathan Sidwell
8c22ebb3ad
Merge trunk r265714.
...
Move to autoconf 2.69.
From-SVN: r265718
2018-11-01 11:58:49 +00:00
Nathan Sidwell
af3ec4196f
module.cc (module_state::read): Don't read macros for preprocessed innput.
...
gcc/cp/
* module.cc (module_state::read): Don't read macros for
preprocessed innput.
(module_state::set_import): Adjust legacy test.
From-SVN: r265712
2018-11-01 11:09:23 +00:00
Nathan Sidwell
d07061a786
module.cc (module_state::check_not_purview): Check name.
...
gcc/cp/
* module.cc (module_state::check_not_purview): Check name.
(mangle_mondule, module_name): Likewise.
(declare_module): Set parent, not alias.
From-SVN: r265699
2018-10-31 19:48:35 +00:00
Nathan Sidwell
422b84c0a2
Merge trunk r265692.
...
From-SVN: r265694
2018-10-31 15:33:14 +00:00
Nathan Sidwell
b00a830393
Merge trunk r265679.
...
From-SVN: r265682
2018-10-31 13:11:56 +00:00
Nathan Sidwell
b75e475c45
cp-tree.h (OVL_EXPORT_P): Delete.
...
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.
From-SVN: r265671
2018-10-31 11:25:37 +00:00
Nathan Sidwell
08e39eb508
Module interface gets own mod number
...
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.
From-SVN: r265643
2018-10-30 20:13:18 +00:00
Nathan Sidwell
e205126cdb
cp-tree.h (OVL_HAS_USING_P): Rename to ...
...
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.
From-SVN: r265642
2018-10-30 20:07:05 +00:00
Nathan Sidwell
567d0d4ff7
Less ordered overloads
...
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.
From-SVN: r265630
2018-10-30 15:31:19 +00:00
Nathan Sidwell
8933fb8cb1
cp-tree.h (ovl_insert): Drop export_tail parm.
...
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.
From-SVN: r265597
2018-10-29 17:42:12 +00:00
Nathan Sidwell
b460c8b6fd
module.cc (module_state::read_imports): Do in one pass.
...
gcc/cp/
* module.cc (module_state::read_imports): Do in one pass.
From-SVN: r265592
2018-10-29 14:32:37 +00:00
Nathan Sidwell
2537f5fb21
module.cc (module_state::direct_import): Drop DEFERRABLE arg.
...
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.
From-SVN: r265589
2018-10-29 14:11:44 +00:00
Nathan Sidwell
06f6e8f887
Merge trunk r265554.
...
From-SVN: r265560
2018-10-27 20:57:40 +00:00
Nathan Sidwell
02fb5f5a85
Anon namespaces
...
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.
From-SVN: r265540
2018-10-26 18:30:33 +00:00
Nathan Sidwell
1dc5389ef2
Statics on bindings
...
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.
From-SVN: r265536
2018-10-26 17:31:35 +00:00
Nathan Sidwell
318f05b158
cp-tree.h (module_purview): Declare.
...
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.
From-SVN: r265530
2018-10-26 13:39:55 +00:00
Nathan Sidwell
1299d08f39
p1103 no implicit namespace export
...
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.
From-SVN: r265529
2018-10-26 13:11:05 +00:00
Nathan Sidwell
2f324aac6f
Rationalize bool ok == true
...
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.
From-SVN: r265504
2018-10-25 19:26:13 +00:00
Nathan Sidwell
9a038d3360
module.cc (module_state::write_readme): Tidy.
...
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.
From-SVN: r265501
2018-10-25 18:18:10 +00:00
Nathan Sidwell
329f657f95
module.cc (enum tree_tag): Add tt_namespace.
...
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.
From-SVN: r265468
2018-10-24 18:39:55 +00:00
Nathan Sidwell
7fa0e4d562
module.cc (trees_out::{tree_{decl,type}): Drop owner arg.
...
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.
From-SVN: r265466
2018-10-24 17:47:15 +00:00
Nathan Sidwell
8c0bb64033
module.cc: Add dumper::TREES to tree streamers.
...
gcc/cp/
* module.cc: Add dumper::TREES to tree streamers.
gcc/testsuite/
* g++.dg/modules/: Add -uid to several lang dumps.
From-SVN: r265435
2018-10-23 18:06:00 +00:00
Nathan Sidwell
3887c46291
module.cc (slurping::remap_module): New.
...
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.
From-SVN: r265434
2018-10-23 17:38:41 +00:00
Nathan Sidwell
c4f79b6c9d
cp-tree.h (module_exporting_level): Delete.
...
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.
From-SVN: r265394
2018-10-22 14:47:37 +00:00
Nathan Sidwell
96e69857f3
lex.c (module_preprocess_token): Fix padding/comment states.
...
gcc/cp/
* lex.c (module_preprocess_token): Fix padding/comment states.
* parser.c (cp_parser_tokenize): Reduce is_decl states.
From-SVN: r265384
2018-10-22 11:28:30 +00:00
Nathan Sidwell
d5a15b13d4
Merge trunk r265362.
...
From-SVN: r265367
2018-10-22 01:29:35 +00:00
Nathan Sidwell
c4b93105ff
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.
From-SVN: r265361
2018-10-21 22:31:41 +00:00
Nathan Sidwell
1e66ee3211
lex.c (module_preprocessing_token): Pay attention to braces.
...
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.
From-SVN: r265355
2018-10-21 19:28:53 +00:00
Nathan Sidwell
70b01eb74e
parser.c (cp_parser_diagnose_invalid_type_name): Use C_RID_CODE more.
...
gcc/cp/
* parser.c (cp_parser_diagnose_invalid_type_name): Use C_RID_CODE more.
From-SVN: r265354
2018-10-21 18:44:09 +00:00
Nathan Sidwell
2ab2a56c2f
parser.c (cp_parser_tokenize): Don't stop after nested module/import decl.
...
gcc/cp/
* parser.c (cp_parser_tokenize): Don't stop after nested
module/import decl.
From-SVN: r265328
2018-10-19 21:44:10 +00:00
Nathan Sidwell
c8e29f81fc
parser.c (cp_parser_translation_unit): Adjust GMF deferred imports.
...
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.
From-SVN: r265299
2018-10-18 23:45:49 +00:00
Nathan Sidwell
1bf6d8496b
parser.c (cp_parser_translation_unit): Process deferred imports here ...
...
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.
From-SVN: r265298
2018-10-18 23:31:26 +00:00
Nathan Sidwell
566f8f346e
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.
From-SVN: r265292
2018-10-18 21:53:27 +00:00
Nathan Sidwell
b51b6105ab
modules.exp (mode-list): Delete.
...
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.
From-SVN: r265289
2018-10-18 20:42:16 +00:00
Nathan Sidwell
b61c4b968b
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.
From-SVN: r265282
2018-10-18 19:07:52 +00:00
Nathan Sidwell
861f12b441
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.
From-SVN: r265280
2018-10-18 18:32:18 +00:00
Nathan Sidwell
7f9f78a1af
Preamble on module
...
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.
From-SVN: r265279
2018-10-18 18:14:07 +00:00
Nathan Sidwell
678cf35731
No export { import x; }
...
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.
From-SVN: r265278
2018-10-18 18:01:57 +00:00
Nathan Sidwell
e72fdf3200
No atom preamble in non-module
...
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.
From-SVN: r265269
2018-10-18 15:31:16 +00:00
Nathan Sidwell
c14e05ef47
err-2_[ab].*: Move to ...
...
gcc/testsuite/
* g++.dg/modules/err-2_[ab].*: Move to ...
* g++.dg/modules/cpp-5_[ab].*: ... here.
* g++.dg/modules/cpp5_c.C: New.
From-SVN: r265258
2018-10-18 04:02:39 +00:00
Nathan Sidwell
d695de064d
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.
From-SVN: r265256
2018-10-18 00:52:35 +00:00
Nathan Sidwell
0cf81d5c41
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.
From-SVN: r265230
2018-10-17 03:38:17 +00:00
Nathan Sidwell
0543a9b26a
module.cc (module_purview): New.
...
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.
From-SVN: r265229
2018-10-17 03:00:53 +00:00
Nathan Sidwell
d11439a99d
macloc-1_[abcd].C: No longer atom-specific.
...
gcc/testsuite/
* g++.dg/modules/macloc-1_[abcd].C: No longer atom-specific.
From-SVN: r265222
2018-10-17 00:02:33 +00:00
Nathan Sidwell
9cf5bed662
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.
From-SVN: r265221
2018-10-16 23:58:36 +00:00
Nathan Sidwell
40f1895868
dumpfile.c (dump_switch_p_1): Don't let a '-' filename fool the option machinery.
...
gcc/
* dumpfile.c (dump_switch_p_1): Don't let a '-' filename fool the
option machinery.
From-SVN: r265220
2018-10-16 23:34:52 +00:00
Nathan Sidwell
76ad592023
Legacy importing during -E
...
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.
From-SVN: r265219
2018-10-16 22:49:17 +00:00
Nathan Sidwell
0ba2999325
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.
From-SVN: r265217
2018-10-16 21:23:56 +00:00
Nathan Sidwell
1650e24fb5
Uncommitted tests
...
From-SVN: r265216
2018-10-16 21:16:57 +00:00
Nathan Sidwell
02b0993280
*.H: Drop unnecessary -fmodules-atom option.
...
gcc/testsuite/
* g++.dg/modules/*.H: Drop unnecessary -fmodules-atom option.
From-SVN: r265214
2018-10-16 20:57:43 +00:00
Nathan Sidwell
7a5205cf8b
Reimplement preamble peeking
...
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.
From-SVN: r265213
2018-10-16 20:44:26 +00:00
Nathan Sidwell
3bcda11dec
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.
From-SVN: r265209
2018-10-16 17:24:53 +00:00
Nathan Sidwell
efc2b73d25
Remove preamble peeking
...
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.
From-SVN: r265208
2018-10-16 17:11:58 +00:00
Nathan Sidwell
8a7846ccad
Common tokenizer for atom & ts
...
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
From-SVN: r265207
2018-10-16 17:10:53 +00:00
Nathan Sidwell
fdc0841a38
Common tokenizer for atom & ts
...
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
From-SVN: r265206
2018-10-16 16:48:36 +00:00
Nathan Sidwell
8625c76d82
cp-tree.h (process_deferred_imports): Drop location arg.
...
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
From-SVN: r265201
2018-10-16 15:53:31 +00:00
Nathan Sidwell
58fbbb0659
parser.c (cp_parser_translation_unit): Detect GMF here ...
...
gcc/cp/
* parser.c (cp_parser_translation_unit): Detect GMF here ...
(cp_parser_module_declaration): ... not here.
From-SVN: r265196
2018-10-16 14:35:31 +00:00
Nathan Sidwell
11b06e13df
cp-tree.h ({import,declare}_module): Return adjustment.
...
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.
From-SVN: r265184
2018-10-16 00:32:20 +00:00
Nathan Sidwell
1cce6582a2
lang-specs.h: Fix .s elision with legacy modules.
...
gcc/cp/
* lang-specs.h: Fix .s elision with legacy modules.
From-SVN: r265176
2018-10-15 19:37:02 +00:00
Nathan Sidwell
dbdad8e2ea
langhooks.h (struct lang_hooks): Adjust preprocess_main_file signature.
...
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.
From-SVN: r265174
2018-10-15 17:49:49 +00:00
Nathan Sidwell
fffe126027
cp-tree.h (process_deferred_imports): New.
...
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.
From-SVN: r265173
2018-10-15 17:22:12 +00:00
Nathan Sidwell
9d868e6610
module.cc (module_state::direct_import): New.
...
gcc/cp/
* module.cc (module_state::direct_import): New.
({import,declare}_module): Call it.
(module_state::preamble_load): Likewise.
From-SVN: r265170
2018-10-15 16:20:31 +00:00
Nathan Sidwell
f5fbc61a5f
lex.c (cpp_peek_token_with_location): Fix pragma rewinding.
...
libcpp/
* lex.c (cpp_peek_token_with_location): Fix pragma rewinding.
gcc/cp/
* parser.c (cp_parser_initial_pragma): Peek at first token.
From-SVN: r265134
2018-10-12 21:18:11 +00:00
Nathan Sidwell
c9ce90a301
Merge trunk r265127.
...
From-SVN: r265128
2018-10-12 18:51:32 +00:00
Nathan Sidwell
afbedd82db
parser.c (cp_parser_{module,import}_declaration): Remove temp hacks.
...
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.
From-SVN: r265124
2018-10-12 18:04:43 +00:00
Nathan Sidwell
601962c1f5
parser.c (cp_parser_translation_unit): Deal with one level of export block here.
...
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.
From-SVN: r265123
2018-10-12 17:45:49 +00:00
Nathan Sidwell
755e116b27
parser.c (cp_parser_translation_unit): Detect module and import declarations here.
...
gcc/cp/
* parser.c (cp_parser_translation_unit): Detect module and import
declarations here.
From-SVN: r265114
2018-10-12 16:35:02 +00:00
Nathan Sidwell
c63997ab5b
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.
From-SVN: r265104
2018-10-12 14:45:28 +00:00
Nathan Sidwell
128447fbff
Merge trunk r265055.
...
From-SVN: r265057
2018-10-11 19:04:52 +00:00
Nathan Sidwell
7f81cebb79
Kill proclaiming decls
...
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.
From-SVN: r265045
2018-10-11 16:52:52 +00:00
Nathan Sidwell
83d23cb763
Macro locations!
...
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.
From-SVN: r265043
2018-10-11 15:35:01 +00:00
Nathan Sidwell
ebc987cf16
Merge trunk r265037.
...
From-SVN: r265039
2018-10-11 13:14:06 +00:00
Nathan Sidwell
6e67aae285
module.cc (loc_spans::close): Close the current last map.
...
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.
From-SVN: r265023
2018-10-10 16:44:06 +00:00
Nathan Sidwell
c76ed612b7
module.cc (pending_imports): New.
...
gcc/
* module.cc (pending_imports): New.
({import,declare}_module): Use it.
(module_from_cmp): Delete.
(module_state::preamble_load): Use pending_imports array.
From-SVN: r265022
2018-10-10 15:49:57 +00:00
Nathan Sidwell
af9a599036
invoke.texi (fmodule-legacy): Augment syntax.
...
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.
From-SVN: r265018
2018-10-10 14:43:01 +00:00
Nathan Sidwell
6da37d1077
module.cc (module_state::controlling_macro): Delete.
...
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.
From-SVN: r265016
2018-10-10 13:15:58 +00:00
Nathan Sidwell
ebacb5661b
module.cc (module_state::{read,write}_defines): Rename to ...
...
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.
From-SVN: r265015
2018-10-10 12:08:43 +00:00
Nathan Sidwell
e086cf4eb5
Lazy macro table loading
...
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.
From-SVN: r264998
2018-10-09 23:18:31 +00:00
Nathan Sidwell
0debbe53d0
Controlling macros & alias detection
...
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.
From-SVN: r264997
2018-10-09 21:16:39 +00:00
Nathan Sidwell
b4935ffb77
module.cc (module_state::deferred_macro): Print macro definition.
...
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.
From-SVN: r264885
2018-10-05 18:49:09 +00:00
Nathan Sidwell
b071dd56b0
module.cc (module_state): Add controlling_macro, unionize slurp with alias.
...
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.
From-SVN: r264878
2018-10-05 16:53:11 +00:00
Nathan Sidwell
ad55fdc542
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.
From-SVN: r264873
2018-10-05 15:12:26 +00:00
Nathan Sidwell
5bb46ac836
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.
From-SVN: r264870
2018-10-05 13:58:37 +00:00
Nathan Sidwell
9aae012981
Dump command line macros, better command line locs
...
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.
From-SVN: r264854
2018-10-04 19:45:50 +00:00
Nathan Sidwell
6959ba5e58
Merge trunk r264769.
...
Slip in module.c -> module.cc rename
From-SVN: r264770
2018-10-01 19:50:18 +00:00
Nathan Sidwell
9c9e83ee33
Merge trunk r264765.
...
From-SVN: r264768
2018-10-01 17:16:57 +00:00
Nathan Sidwell
d50914c164
lang-specs.h: Error out on -fcoroutines.
...
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.
From-SVN: r264765
2018-10-01 16:10:52 +00:00
Nathan Sidwell
33c74848f2
Avoid UB type punning union shenanigans
...
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.
From-SVN: r264763
2018-10-01 15:46:19 +00:00
Nathan Sidwell
d83f99cbdd
AdHoc locations
...
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.
From-SVN: r264743
2018-10-01 11:25:02 +00:00
Nathan Sidwell
88cf0cde4a
module.c (module_state::deferred_macro): Fix undef hiding logic.
...
gcc/cp/
* module.c (module_state::deferred_macro): Fix undef hiding logic.
gcc/testsuite/
* g++.dg/modules/macro-4*: New.
From-SVN: r264700
2018-09-28 20:51:53 +00:00
Nathan Sidwell
18dc9790ac
No speculative undefs.
...
gcc/cp/
* module.c (maybe_add_macro): Simplify.
(module_state::undef_macro): Only add undef for a deferred macro.
From-SVN: r264672
2018-09-27 15:38:50 +00:00
Nathan Sidwell
6286335648
fix typo.
...
From-SVN: r264671
2018-09-27 14:55:18 +00:00
Nathan Sidwell
df62d620b3
Add -fforce-module-macros
...
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.
From-SVN: r264670
2018-09-27 14:54:38 +00:00
Nathan Sidwell
a58c76e653
Add deferred cpp_hashnode field.
...
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.
From-SVN: r264662
2018-09-27 04:12:31 +00:00
Nathan Sidwell
b509bc44ae
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.
From-SVN: r264654
2018-09-26 20:57:31 +00:00
Nathan Sidwell
39f5ffe4a0
modules (module_state): Add legacies bitmap.
...
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.
From-SVN: r264517
2018-09-23 17:08:47 +00:00
Nathan Sidwell
dc091b0758
invoke.texi (C++ Modules): Update mapper protocol.
...
gcc/
* doc/invoke.texi (C++ Modules): Update mapper protocol.
* cxx-mapper.c (client): Remove bewait, forget members.
(client::action): Remove BYIMPORT, BEWAIT & RESET.
From-SVN: r264348
2018-09-16 14:09:00 +00:00
Nathan Sidwell
25e5695385
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.
From-SVN: r264347
2018-09-16 14:01:37 +00:00
Nathan Sidwell
2faf245da1
langhooks.h (preprocess_main_file): Drop index arg.
...
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.
From-SVN: r264321
2018-09-14 15:57:30 +00:00
Nathan Sidwell
11d8450c81
A grand renaming
...
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.
From-SVN: r264314
2018-09-14 13:44:41 +00:00
Nathan Sidwell
1103fd4652
Expunge the spewer
...
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.
From-SVN: r264311
2018-09-14 12:49:17 +00:00
Nathan Sidwell
ef660b1f8c
Expunge old location scheme
...
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.
From-SVN: r264310
2018-09-14 12:31:37 +00:00
Nathan Sidwell
e669b19d44
New locations working
...
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.
From-SVN: r264309
2018-09-14 12:22:38 +00:00
Nathan Sidwell
d09c3ceb89
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.
From-SVN: r264289
2018-09-13 20:17:37 +00:00
Nathan Sidwell
6cfa701876
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.
From-SVN: r264284
2018-09-13 18:22:49 +00:00
Nathan Sidwell
712e258ffd
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.
From-SVN: r264272
2018-09-13 13:56:09 +00:00
Nathan Sidwell
41720e0d4a
Refactor location spans
...
Refactor location spans
gcc/cp/
* module.c (class loc_spans): New. Absorb ...
({open,close,ordinary,macro}_interval): ... these. Update all uses.
From-SVN: r264269
2018-09-13 12:03:07 +00:00
Nathan Sidwell
c2d95cd0f7
Adding location spans
...
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.
From-SVN: r264252
2018-09-12 19:25:39 +00:00
Nathan Sidwell
ffc9daa086
parser.c (cp_parser_get_module_preamble_tokens): Don't read past EOF.
...
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.
From-SVN: r264242
2018-09-12 14:36:17 +00:00
Nathan Sidwell
9d9de35620
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.
From-SVN: r264240
2018-09-12 13:54:15 +00:00
Nathan Sidwell
39e61e5dbb
diagnostic.c (diagnostic_report_current_module): Do not line break after module name.
...
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.
From-SVN: r264190
2018-09-10 07:20:13 +00:00
Nathan Sidwell
e68c900521
c.opt (fmodule-only): Set flag.
...
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.
From-SVN: r264144
2018-09-06 07:41:16 +00:00
Nathan Sidwell
7b5e7691b0
Add -fmodule-only, rename -fmodules-legacy
...
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.
From-SVN: r264140
2018-09-06 07:21:02 +00:00
Nathan Sidwell
237c80469f
configure.ac (checkfuncs, [...]): Add pipe2.
...
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.
From-SVN: r264018
2018-08-31 14:13:18 +00:00
Nathan Sidwell
8ecf52e2ab
AIXify tests fcc/testsuite/
...
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.
From-SVN: r264002
2018-08-30 21:41:58 +00:00
Nathan Sidwell
58bbdfab5b
Fix AIX
...
Fix AIX
gcc/cp/
* cxx-mapper.cc (buffer::get_request): Reinit pos.
From-SVN: r263998
2018-08-30 20:36:42 +00:00
Nathan Sidwell
3b33cb575c
Fix --enable-checking=release.
...
gcc/cp/
* name-lookup.c (set_module_binding): Add static cast.
From-SVN: r263996
2018-08-30 20:05:53 +00:00
Nathan Sidwell
480a532292
Fix more GC
...
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.
From-SVN: r263995
2018-08-30 19:47:57 +00:00
Nathan Sidwell
e405162d40
AIX build
...
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.
From-SVN: r263984
2018-08-30 14:58:54 +00:00
Nathan Sidwell
93907de55e
* Merge trunk r263974.
...
From-SVN: r263975
2018-08-30 12:23:46 +00:00
Nathan Sidwell
ff85d84ef1
module.c (atom_cpp_undef): location_t arg is unused.
...
gcc/cp/
* module.c (atom_cpp_undef): location_t arg is unused.
From-SVN: r263961
2018-08-29 15:36:07 +00:00
Nathan Sidwell
5a85780040
module.c (module_state::{read,write}_define): Add NUL terminators to CPP_TOKEN_FLD_STR elements.
...
gcc/cp/
* module.c (module_state::{read,write}_define): Add NUL
terminators to CPP_TOKEN_FLD_STR elements.
From-SVN: r263956
2018-08-29 12:39:15 +00:00
Nathan Sidwell
9f049b4e6e
lex.c (cpp_alloc_token_string): Don't clobber ending NUL.
...
libcpp/
* lex.c (cpp_alloc_token_string): Don't clobber ending NUL.
From-SVN: r263951
2018-08-29 12:03:32 +00:00
Nathan Sidwell
e8aac46da4
cp-lang.c (LANG_HOOKS_PREPROCESS_UNDEF): Override.
...
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.
From-SVN: r263932
2018-08-28 20:28:26 +00:00
Nathan Sidwell
2982e99ef9
Sorted macros
...
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.
From-SVN: r263929
2018-08-28 19:19:13 +00:00
Nathan Sidwell
2b2dae3856
Macro define locations
...
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.
From-SVN: r263927
2018-08-28 18:33:23 +00:00
Nathan Sidwell
3d3f97f14e
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.
From-SVN: r263926
2018-08-28 17:02:44 +00:00
Nathan Sidwell
d8655a0f9d
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.
From-SVN: r263919
2018-08-28 13:37:15 +00:00
Nathan Sidwell
8bcd4fe221
Merge trunk r263897.
...
From-SVN: r263898
2018-08-27 22:13:02 +00:00
Nathan Sidwell
13ee363fef
module.c (module_state): Remove depth.
...
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.
From-SVN: r263897
2018-08-27 21:17:58 +00:00
Nathan Sidwell
bc41258a85
module.c (module_state::check_not_purview): New.
...
gcc/cp/
* module.c (module_state::check_not_purview): New.
(module_state::read_imports,import_module): Use it.
From-SVN: r263895
2018-08-27 20:06:27 +00:00
Nathan Sidwell
a86bf07345
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.
From-SVN: r263893
2018-08-27 19:43:25 +00:00
Nathan Sidwell
846b3cc8e8
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.
From-SVN: r263892
2018-08-27 19:13:26 +00:00
Nathan Sidwell
4cf98010d2
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.
From-SVN: r263889
2018-08-27 16:14:43 +00:00
Nathan Sidwell
668499eda8
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.
From-SVN: r263883
2018-08-27 13:45:47 +00:00
Nathan Sidwell
cb89a1901c
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.
From-SVN: r263823
2018-08-23 23:24:56 +00:00
Nathan Sidwell
116c1274ae
Kill N: prefix notation
...
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.
From-SVN: r263812
2018-08-23 13:05:06 +00:00
Nathan Sidwell
590bce27e4
%M formatter
...
%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.
From-SVN: r263779
2018-08-22 15:58:14 +00:00
Nathan Sidwell
abc6abad07
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.
From-SVN: r263777
2018-08-22 13:43:05 +00:00
Nathan Sidwell
fbfe859a1d
Fix GTY
...
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.
From-SVN: r263775
2018-08-22 13:21:36 +00:00
Nathan Sidwell
db585e2c26
cp-tree.h (declare_module, [...]): Separate name from location.
...
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.
From-SVN: r263748
2018-08-21 18:13:55 +00:00
Nathan Sidwell
4a6628459d
module.c (module_mapper::divert_include): Don't append export attrib.
...
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.
From-SVN: r263746
2018-08-21 16:54:22 +00:00
Nathan Sidwell
220324eef2
module.c (module_state::get_module): Lose dflt & insert args.
...
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.
From-SVN: r263740
2018-08-21 15:33:19 +00:00
Nathan Sidwell
630fdc5ccc
module.c (module_state::is_mapping): Rename to ...
...
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.
From-SVN: r263705
2018-08-21 14:13:45 +00:00
Nathan Sidwell
e73f417376
pex-unix.c (IS_FAKE_VFORK): Rename to VFORK_IS_FORK.
...
libiberty/
* pex-unix.c (IS_FAKE_VFORK): Rename to VFORK_IS_FORK.
(pex_unix_exec_child): Avoid spuros clobber warning, use stdio
when forking.
From-SVN: r263704
2018-08-21 14:11:05 +00:00
Nathan Sidwell
b7b25d8e7c
Merge trunk r263679.
...
From-SVN: r263684
2018-08-21 00:26:53 +00:00
Nathan Sidwell
9507acab94
Merge trunk r263673.
...
From-SVN: r263674
2018-08-20 20:23:03 +00:00
Nathan Sidwell
052da585c1
Revert r263619 2018-08-17 Nathan Sidwell <nathan@acm.org> Revert r263597...
...
Revert r263619 2018-08-17 Nathan Sidwell <nathan@acm.org >
Revert r263597 2018-08-16 Nathan Sidwell <nathan@acm.org >
They break GTY strangely.
From-SVN: r263673
2018-08-20 19:49:07 +00:00
Nathan Sidwell
4f9491d50c
module.c (module_state::is_detached): New.
...
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.
From-SVN: r263619
2018-08-17 13:12:23 +00:00
Nathan Sidwell
3eed57f321
modules.exp (dg-module-pre-prune): Delete
...
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.
From-SVN: r263599
2018-08-16 19:01:57 +00:00
Nathan Sidwell
a6e2cbe7ad
cp-tree.h (class module_state): Forward declare.
...
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.
From-SVN: r263597
2018-08-16 18:51:36 +00:00
Nathan Sidwell
ac589de58e
Merge trunk r263429.
...
From-SVN: r263431
2018-08-08 19:33:14 +00:00
Nathan Sidwell
dd6ea0f635
Merge trunk r263272.
...
From-SVN: r263276
2018-08-02 20:25:52 +00:00
Nathan Sidwell
68bf538f62
cpplib.h (cpp_clear_if_stack): Renamed from cpp_pop_directives.
...
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.
From-SVN: r262594
2018-07-12 14:11:18 +00:00
Nathan Sidwell
aa5b71ef7c
c.opt (fmodule-preamble): Alias fmodule-preamble=
...
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.
From-SVN: r262593
2018-07-12 13:38:20 +00:00
Nathan Sidwell
ae2917b615
Hide NT_MACRO
...
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.
From-SVN: r262592
2018-07-12 13:33:48 +00:00
Nathan Sidwell
76b367c3b7
modules.exp: Restore g++-dg-prune after test.
...
gcc/testsuite/
* g++.dg/modules/modules.exp: Restore g++-dg-prune after test.
* g++.dg/modules/legacy-5_c.C: Fix scan-lang-dump.
From-SVN: r262478
2018-07-06 14:43:07 +00:00
Nathan Sidwell
c1f45e4923
No ALIASes for IMPORTS
...
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.
From-SVN: r262450
2018-07-05 18:06:47 +00:00
Nathan Sidwell
77317a8b43
Legacy header warning
...
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.
From-SVN: r262449
2018-07-05 17:41:55 +00:00
Nathan Sidwell
51cbdcc2e9
Legacy header aliasing
...
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.
From-SVN: r262441
2018-07-05 15:09:59 +00:00
Nathan Sidwell
06b6cb5bac
backport: invoke.texi (C++ Modules): Adjust.
...
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.
From-SVN: r262356
2018-07-03 19:13:59 +00:00
Nathan Sidwell
651ccaf2ee
Explicit user/system legacy headers
...
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.
From-SVN: r262355
2018-07-03 18:03:15 +00:00
Nathan Sidwell
13a14c25f6
Diverted header column preservation
...
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.
From-SVN: r262259
2018-06-29 20:06:15 +00:00
Nathan Sidwell
41db2dbfef
Diverted include line numbering
...
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
From-SVN: r262256
2018-06-29 17:42:19 +00:00
Nathan Sidwell
540eb3a7ec
modules.exp (dg-module-pre-prunes): Renamed.
...
gcc/testsuite/
* g++.dg/modules/modules.exp (dg-module-pre-prunes): Renamed.
From-SVN: r262253
2018-06-29 14:44:00 +00:00
Nathan Sidwell
f4a86773b9
directives.c (do_include_common): Include diverter will push buffer.
...
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.
From-SVN: r262252
2018-06-29 14:34:29 +00:00
Nathan Sidwell
39af15a3d3
legacy-3*: New.
...
gcc/testsuite/
* g++.dg/modules/legacy-3*: New.
From-SVN: r262235
2018-06-28 21:06:54 +00:00
Nathan Sidwell
f802b4e39e
modules.exp: Fix execution tests.
...
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.
From-SVN: r262233
2018-06-28 20:30:51 +00:00
Nathan Sidwell
1f00e190b1
(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.
From-SVN: r262229
2018-06-28 19:07:07 +00:00
Nathan Sidwell
bc33e2e808
(Beginnings of) Legacy importing
...
(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.
From-SVN: r262187
2018-06-27 14:46:32 +00:00
Nathan Sidwell
dbea8969da
(Beginnings of) Legacy header modules
...
(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.
From-SVN: r262183
2018-06-27 12:05:47 +00:00
Nathan Sidwell
36b0f6f555
Merge trunk r262148.
...
From-SVN: r262151
2018-06-26 14:31:59 +00:00
Nathan Sidwell
4489b4ee94
configure.ac: Fix AF_INET6 & accept4 tests.
...
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.
From-SVN: r262148
2018-06-26 13:34:13 +00:00
Nathan Sidwell
6692af0529
cxx-module.cc (kill_signal): New.
...
gcc/cp/
* cxx-module.cc (kill_signal): New.
(server): Fixup inet_ntop use.
From-SVN: r262019
2018-06-25 14:47:29 +00:00
Nathan Sidwell
1e5bfe6116
configure.ac: Check for inet_ntop.
...
gcc/
* configure.ac: Check for inet_ntop.
* configure, config.in: Rebuilt.
gcc/cp/
* cxx-mapper.cc (server): Use inet_ntop when available.a
From-SVN: r262018
2018-06-25 13:13:51 +00:00
Nathan Sidwell
172c473884
cxx-mapper.cc: BMI->GCC
...
gcc/cp/
* cxx-mapper.cc: BMI->GCC
* module.c: Likewise.
gcc/
* doc/invoke.texi: Likewise.
From-SVN: r261996
2018-06-24 15:03:56 +00:00
Nathan Sidwell
3572c5ba3f
cxx-mapper.cc (struct netmask): New.
...
gcc/cp/
* cxx-mapper.cc (struct netmask): New.
(server): Validate connection addresses.
(accept_from): New.
(process_args): Add -a arg.
From-SVN: r261993
2018-06-24 01:12:37 +00:00
Nathan Sidwell
ebae4682fa
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.
From-SVN: r261987
2018-06-23 23:33:46 +00:00
Nathan Sidwell
a0b17abcec
A proper server
...
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.
From-SVN: r261986
2018-06-23 20:08:27 +00:00
Nathan Sidwell
25f3198d17
module.c (module_mapper::send_command): Fix off-by-one.
...
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.
From-SVN: r261889
2018-06-22 13:12:26 +00:00
Nathan Sidwell
747350a736
configure.ac: Check select, accept4.
...
gcc/
* configure.ac: Check select, accept4.
* config.in, configure: Rebuilt.
From-SVN: r261887
2018-06-22 12:32:02 +00:00
Nathan Sidwell
4a2623caab
c.opt: Add -fmodule-header.
...
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.
From-SVN: r261862
2018-06-21 20:04:36 +00:00
Nathan Sidwell
a12bfc32cc
Use getaddrinfo, not gethostbyname2
...
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.
From-SVN: r261852
2018-06-21 16:43:43 +00:00
Nathan Sidwell
79a84edce9
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.
From-SVN: r261747
2018-06-19 15:11:51 +00:00
Nathan Sidwell
412b9ca98e
loc-2_[a-f].C: New.
...
gcc/testsuite/
* g++.dg/modules/loc-2_[a-f].C: New.
From-SVN: r261701
2018-06-18 14:19:33 +00:00
Nathan Sidwell
693ce46d3f
configure.ac: Detect epoll & pselect.
...
gcc/
* configure.ac: Detect epoll & pselect.
* configure, config.in: Rebuilt.
From-SVN: r261691
2018-06-17 20:42:35 +00:00
Nathan Sidwell
e289a38232
module.c (module_mapper::module_mapper): Fixup length errors.
...
gcc/cp/
* module.c (module_mapper::module_mapper): Fixup length errors.
From-SVN: r261690
2018-06-17 18:23:06 +00:00
Nathan Sidwell
e4fbddce07
cxx-module-mapper.sh: Remove recompilation capability.
...
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.
From-SVN: r261689
2018-06-17 18:18:01 +00:00
Nathan Sidwell
d7b179ec6b
diagnostic.c (diagnostic_report_current_module): Starting location could be a module.
...
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.
From-SVN: r261669
2018-06-15 23:14:04 +00:00
Nathan Sidwell
630361e3cf
cp-tree.h (make_module_loc): Delete.
...
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.
From-SVN: r261667
2018-06-15 21:46:51 +00:00
Nathan Sidwell
2c2b15bf34
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.
From-SVN: r261652
2018-06-15 19:51:08 +00:00
Nathan Sidwell
a838847239
line-map.h (IS_ORDINARY_LOC, [...]): 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.
From-SVN: r261651
2018-06-15 19:49:11 +00:00
Nathan Sidwell
47f9ef48d2
diagnostic.c (diagnostic_report_current_module): Fixup include stack messages.
...
gcc/
* diagnostic.c (diagnostic_report_current_module): Fixup include
stack messages.
gcc/testsuite/
* lib/prune.exp (prune_gcc_output): Adjust include stack regexps.
From-SVN: r261650
2018-06-15 19:46:15 +00:00
Nathan Sidwell
677caa2b9d
module.c (spewer::linemaps): Return mask.
...
gcc/cp/
* module.c (spewer::linemaps): Return mask.
(module_state::{find,write}_locations): Use mask.
(module_state::read_locations): Implement.
From-SVN: r261628
2018-06-15 13:49:06 +00:00
Nathan Sidwell
d2c838639c
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.
From-SVN: r261627
2018-06-15 13:31:18 +00:00
Nathan Sidwell
d6fbd62bef
module.c (bytes_{in,out}::align): New.
...
gcc/cp/
* module.c (bytes_{in,out}::align): New.
(bytes_{in,out}::buf): Use it.
From-SVN: r261625
2018-06-15 12:27:40 +00:00
Nathan Sidwell
be1d228db3
line-map.c (linemap_init): Set default allocator here.
...
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
From-SVN: r261624
2018-06-15 12:25:49 +00:00
Nathan Sidwell
e8828e4109
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.
From-SVN: r261600
2018-06-14 16:39:35 +00:00
Nathan Sidwell
3a4a4caf81
Fix section alignment.
...
gcc/cp/
* module.c (elf_out::grow): Fix padding calc.
(elf_out::add): Assert aligned.
From-SVN: r261599
2018-06-14 15:39:20 +00:00
Nathan Sidwell
16145d49b4
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.
From-SVN: r261598
2018-06-14 15:29:58 +00:00
Nathan Sidwell
2afb723635
module.c (struct slurping): New, broken out of ...
...
gcc/cp/
* module.c (struct slurping): New, broken out of ...
(struct module_state): ... here. Move loading data there and
adjust all users.
From-SVN: r261590
2018-06-14 11:37:17 +00:00
Nathan Sidwell
c9e6b5c24c
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.
From-SVN: r261573
2018-06-13 21:19:00 +00:00
Nathan Sidwell
febab22ba5
Better socket handling.
...
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.
From-SVN: r261513
2018-06-12 16:51:12 +00:00
Nathan Sidwell
198c62f0a7
configure.ac: Rename HOST_HAS_AF_$FOO to HAVE_AF_$FOO.
...
gcc/
* configure.ac: Rename HOST_HAS_AF_$FOO to HAVE_AF_$FOO.
* configure, config.in: Rebuilt.
gcc/cp/
* module.c: Adjust.
From-SVN: r261492
2018-06-12 11:16:35 +00:00
Nathan Sidwell
2c22aece84
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.
From-SVN: r261473
2018-06-12 00:53:34 +00:00
Nathan Sidwell
e13a0f64c3
MMAP writing
...
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.
From-SVN: r261468
2018-06-11 22:27:57 +00:00
Nathan Sidwell
5995dc71ad
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.
From-SVN: r261437
2018-06-11 16:35:05 +00:00
Nathan Sidwell
3d7733d3be
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.
From-SVN: r261358
2018-06-09 06:19:23 +00:00
Nathan Sidwell
3f927e6544
module.c (elf): Replace FILE *stream with int fd.
...
gcc/cp/
* module.c (elf): Replace FILE *stream with int fd. Update uses.
From-SVN: r261345
2018-06-08 19:12:22 +00:00
Nathan Sidwell
895f037429
module.c (bytes::begin): Add CRC parm.
...
gcc/cp/
* module.c (bytes::begin): Add CRC parm.
(elf_in): Read buffers, adjust.
From-SVN: r261342
2018-06-08 18:54:45 +00:00
Nathan Sidwell
3328b019f5
module.c (elf_out): Track file position directly.
...
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.
From-SVN: r261341
2018-06-08 17:46:16 +00:00
Nathan Sidwell
594c200a7d
module.c (elf): Add hdr member.
...
gcc/cp/
* module.c (elf): Add hdr member.
(elf_in::begin): Adjust.
(elf_out::{begin,end}): Adjust.
From-SVN: r261334
2018-06-08 15:22:54 +00:00
Nathan Sidwell
8779f0f60c
module.c (data::printf): Moved from ...
...
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.
From-SVN: r261330
2018-06-08 15:06:37 +00:00
Nathan Sidwell
bc7b42f152
module.c (bytes::calc_crc): Take length parm.
...
gcc/cp/
* module.c (bytes::calc_crc): Take length parm. Adjust callers.
(elf_out::strtab): Reimplement.
(elf_out::add): Use buffer pos for length.
From-SVN: r261294
2018-06-07 19:41:03 +00:00
Nathan Sidwell
c5b0ec7959
module.c (struct data): Resurrect.
...
gcc/cp/
* module.c (struct data): Resurrect. Move buffer extension here.
Update users.
(class bytes): Derive from data.
From-SVN: r261292
2018-06-07 18:48:46 +00:00
Nathan Sidwell
82ed44e186
module.c (struct data): Delete.
...
gcc/cp/
* module.c (struct data): Delete. Move into ...
(struct bytes): ... here. Update uses.
From-SVN: r261279
2018-06-07 14:23:32 +00:00
Nathan Sidwell
925d264aec
module.c (struct data): Make buffer a pointer.
...
gcc/cp/
* module.c (struct data): Make buffer a pointer. Redo interface.
From-SVN: r261274
2018-06-07 13:48:51 +00:00
Nathan Sidwell
259bd8e666
Change integer on-disk format.
...
gcc/cp/
* module.c (bytes_{in,out}::{i,u,wi}): Reimplement.
(make_bmi_path): Don't prefix absolute paths.
From-SVN: r261271
2018-06-07 11:36:13 +00:00
Nathan Sidwell
88b039a0f9
BMI repo directory
...
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.
From-SVN: r261265
2018-06-07 08:11:08 +00:00
Nathan Sidwell
08fb292ffb
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.
From-SVN: r261236
2018-06-06 14:50:38 +00:00
Nathan Sidwell
01ea6fd01e
module.c (module_mapper::module_mapper): Ignore sigpipe.
...
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.
From-SVN: r261230
2018-06-06 12:56:04 +00:00
Nathan Sidwell
d567ecd87b
invoke.texi (C++ Modules): Clarify and extend.
...
gcc/
* doc/invoke.texi (C++ Modules): Clarify and extend.
From-SVN: r261182
2018-06-05 06:19:25 +00:00
Nathan Sidwell
d44d2034f2
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.
From-SVN: r261170
2018-06-04 20:36:00 +00:00
Nathan Sidwell
b612969469
Cookies for mapping files
...
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.
From-SVN: r261149
2018-06-04 13:58:45 +00:00
Nathan Sidwell
6ec2b0b310
diagnostic.c (diagnostic_report_current_module): Don't claim module was imported.
...
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.
From-SVN: r261126
2018-06-03 10:36:07 +00:00
Nathan Sidwell
fc427595a4
module.c (module_mapper): Robustify.
...
gcc/cp/
* module.c (module_mapper): Robustify.
From-SVN: r261076
2018-06-01 18:21:52 +00:00
Nathan Sidwell
bbd26cb7a5
cpp.c (cb_file_change): Adjust for line map inclusion changes.
...
gcc/fortran/
* cpp.c (cb_file_change): Adjust for line map inclusion changes.
From-SVN: r261074
2018-06-01 16:16:47 +00:00
Nathan Sidwell
f7f05e5abb
Fix formatting
...
From-SVN: r261071
2018-06-01 15:05:15 +00:00
Nathan Sidwell
0a1dc4634b
fix typo
...
From-SVN: r261070
2018-06-01 14:52:15 +00:00
Nathan Sidwell
575c78ea5b
Module mapping file is back
...
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.
From-SVN: r261069
2018-06-01 14:49:53 +00:00
Nathan Sidwell
220228d7e5
invoke.texi (C++ Modules): Show mapper cookie.
...
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.
From-SVN: r261053
2018-06-01 01:12:36 +00:00
Nathan Sidwell
fcfbdfedd6
invoke.texi (C++ Modules): Rename -fmodule-server to -fmodule-mapper.
...
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.
From-SVN: r261052
2018-06-01 00:58:19 +00:00
Nathan Sidwell
5d4324c792
Merge trunk r261033.
...
From-SVN: r261035
2018-05-31 19:31:22 +00:00
Nathan Sidwell
bdbddca312
module.c (bytes_in::begin): Add location_t arg.
...
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.
From-SVN: r261033
2018-05-31 19:15:50 +00:00
Nathan Sidwell
3c4c38e045
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
From-SVN: r261032
2018-05-31 19:01:26 +00:00
Nathan Sidwell
41fa9be2c3
Module location
...
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.
From-SVN: r260955
2018-05-30 15:17:29 +00:00
Nathan Sidwell
e25c5000e7
module.c (struct module_state): Replace loc with imp_loc & self_loc.
...
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.
From-SVN: r260953
2018-05-30 11:43:48 +00:00
Nathan Sidwell
46aed83060
Included from index becomes included_at location
...
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.
From-SVN: r260904
2018-05-29 19:36:39 +00:00
Nathan Sidwell
0b718d65e3
line-map.h (enum lc_reason): Add LC_HWM, LC_CXX_MODULE.
...
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.
From-SVN: r260898
2018-05-29 15:38:58 +00:00
Nathan Sidwell
fe7ac3b36b
cxx-module-server.sh: Add batching and ASYNC support.
...
gcc/cp/
* cxx-module-server.sh: Add batching and ASYNC support.
gcc/
* doc/invoke.texi (C++ Modules): More protocol explanation
From-SVN: r260897
2018-05-29 14:51:28 +00:00
Nathan Sidwell
f21d10fe75
Server protocol batching
...
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.
From-SVN: r260779
2018-05-25 20:41:36 +00:00
Nathan Sidwell
9126f24a4e
Merge trunk r260753.
...
From-SVN: r260755
2018-05-25 11:38:00 +00:00
Nathan Sidwell
40e65748e1
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.
From-SVN: r260752
2018-05-25 11:09:08 +00:00
Nathan Sidwell
a77f090960
name-lookup.c (extract_module_decls): Don't strip template of result.
...
gcc/cp/
* name-lookup.c (extract_module_decls): Don't strip template of
result.
gcc/
* doc/invoke.texi (C++ Modules): Consider batching.
From-SVN: r260699
2018-05-24 23:37:15 +00:00
Nathan Sidwell
f202f3075e
invoke.texi (C++ ModuleS): Update server docs.
...
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.
From-SVN: r260680
2018-05-24 17:44:45 +00:00
Nathan Sidwell
710c7351f7
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.
From-SVN: r260679
2018-05-24 17:41:46 +00:00
Nathan Sidwell
648ea5e549
diagnostic-code.h (fullname): Delete.
...
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.
From-SVN: r260611
2018-05-23 14:52:03 +00:00
Nathan Sidwell
3cc90ebb99
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.
From-SVN: r260607
2018-05-23 13:02:12 +00:00
Nathan Sidwell
28cf4b7259
cxx-module-server.sh: Remove --no-default.
...
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.
From-SVN: r260602
2018-05-23 11:08:56 +00:00
Nathan Sidwell
f0ed9e2769
cxx-module-server.sh: Add --no-compile, --no-default and --mapping options.
...
gcc/cp/
* cxx-module-server.sh: Add --no-compile, --no-default and
--mapping options.
From-SVN: r260557
2018-05-22 20:50:24 +00:00
Nathan Sidwell
6cddd66a51
module.c (depset::defn_key): Add is_def parm.
...
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.
From-SVN: r260554
2018-05-22 19:51:30 +00:00
Nathan Sidwell
cc76fbdc42
Revert lazy definition patches.
...
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.
From-SVN: r260545
2018-05-22 18:26:28 +00:00
Nathan Sidwell
0983d83fa9
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.
From-SVN: r260542
2018-05-22 17:46:27 +00:00
Nathan Sidwell
91b1da9c17
module.c (trees_out::seed): Reimplement mechanim.
...
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.
From-SVN: r260505
2018-05-22 12:44:25 +00:00
Nathan Sidwell
4751aa9760
directives.c (struct if_stack): Add hash_loc field.
...
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.
From-SVN: r260498
2018-05-22 00:55:05 +00:00
Nathan Sidwell
41be7e117e
cp-tree.h (HAS_DECL_MODULE_LAZY_DEFN_P): 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.
From-SVN: r260484
2018-05-21 20:08:21 +00:00
Nathan Sidwell
e32b3703d9
Write lazy decls (no reading yet)
...
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.
From-SVN: r260473
2018-05-21 15:20:23 +00:00
Nathan Sidwell
b560fccfca
internal.h (_cpp_handle_directive): Add HASH_LOC arg.
...
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.
From-SVN: r260426
2018-05-20 23:05:33 +00:00
Nathan Sidwell
6c09266f2c
Import peeking
...
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.
From-SVN: r260425
2018-05-20 18:52:41 +00:00
Nathan Sidwell
a7cec387e3
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.
From-SVN: r260421
2018-05-20 14:35:16 +00:00
Nathan Sidwell
e73b6e460a
Parse after tokenizing
...
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.
From-SVN: r260403
2018-05-19 20:23:42 +00:00
Nathan Sidwell
d1e670b753
module.c (trees_out::maybe_insert_typeof): New.
...
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.
From-SVN: r260375
2018-05-18 18:49:36 +00:00
Nathan Sidwell
49bf756d92
module.c (module_state::write_cluster): Break apart unnamed numbering from marking.
...
gcc/cp/
* module.c (module_state::write_cluster): Break apart unnamed
numbering from marking.
(module_state::write): Break apart cluster sizing from section
numbering.
From-SVN: r260368
2018-05-18 15:40:40 +00:00
Nathan Sidwell
e961bbec63
module.c (trees_out::mark_node): Lose walk_into parm.
...
gcc/cp/
* module.c (trees_out::mark_node): Lose walk_into parm. Adjust
all callers.
(module_state::write_cluster): Assert binding already marked.
From-SVN: r260367
2018-05-18 15:30:36 +00:00
Nathan Sidwell
65313e56cd
module.c (module_state::mark_definition): Remove include_decl parm.
...
gcc/cp/
* module.c (module_state::mark_definition): Remove include_decl
parm.
(module_state::mark_{template,function,var,class,enum}_def): Likewise.
From-SVN: r260366
2018-05-18 14:21:58 +00:00
Nathan Sidwell
e3f06a88ce
module.c (trees_in::{preseed,seed}): New.
...
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.
From-SVN: r260364
2018-05-18 13:19:24 +00:00
Nathan Sidwell
709c63f289
module.c (depset::hash::add_definition): Add DEFERRABLE parm.
...
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.
From-SVN: r260360
2018-05-18 12:55:41 +00:00
Nathan Sidwell
3553f5c515
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.
From-SVN: r260356
2018-05-18 11:37:09 +00:00
Nathan Sidwell
e5276184e9
cp-tree.h (ovl_op_flags, [...]): Reindent.
...
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.
From-SVN: r260355
2018-05-18 11:32:36 +00:00
Nathan Sidwell
af817e67f1
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.
From-SVN: r260293
2018-05-16 15:02:48 +00:00
Nathan Sidwell
40de5561b3
Detect cpp directives at end of preamble
...
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.
From-SVN: r260268
2018-05-15 19:54:23 +00:00
Nathan Sidwell
bacd73bd51
cpplib.h (cpp_in_macro_expansion_p): Declare.
...
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.
From-SVN: r260267
2018-05-15 17:15:01 +00:00
Nathan Sidwell
ed44286d86
langhooks.h (struct lang_hooks): Adjust preprocess_preamble.
...
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.
From-SVN: r260265
2018-05-15 16:11:23 +00:00
Nathan Sidwell
7df8a2e301
Make-lang.in: Dont sed server version
...
gcc/cp/
* Make-lang.in: Dont sed server version
* module.c: Use fixed server version.
* cxx-module-server.sh: Likewise.
From-SVN: r260262
2018-05-15 14:21:53 +00:00
Nathan Sidwell
35e6a6f67a
module.c (trees_out::dep_walk_p): Replace with ...
...
gcc/cp/
* module.c (trees_out::dep_walk_p): Replace with ...
(trees_out::{streaming,depending}_p): ... these. Update callers.
From-SVN: r260261
2018-05-15 14:16:40 +00:00
Nathan Sidwell
bd297aa6f5
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.
From-SVN: r260235
2018-05-14 16:40:30 +00:00
Nathan Sidwell
275c0c3cf0
invoke.texi (C++ Modules): Clarify server docs.
...
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.
From-SVN: r260225
2018-05-14 11:53:22 +00:00
Nathan Sidwell
82c7c22ebb
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.
From-SVN: r260217
2018-05-13 22:15:45 +00:00
Nathan Sidwell
f8ce9741d2
module.c (module_server): Make pointer to non-const.
...
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.
From-SVN: r260201
2018-05-12 21:48:50 +00:00
Nathan Sidwell
8c143867bc
Rename oracle->server, thanks Richard Smith
...
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.
From-SVN: r260200
2018-05-12 21:30:52 +00:00
Nathan Sidwell
9d44b6ca29
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.
From-SVN: r260199
2018-05-12 21:13:22 +00:00
Nathan Sidwell
b86f7e4ca6
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.
From-SVN: r260189
2018-05-11 21:38:16 +00:00
Nathan Sidwell
484acf33ea
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.
From-SVN: r260188
2018-05-11 21:16:28 +00:00
Nathan Sidwell
170a5a26a8
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.
From-SVN: r260187
2018-05-11 21:10:54 +00:00
Nathan Sidwell
94f9a05537
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.
From-SVN: r260185
2018-05-11 20:27:04 +00:00
Nathan Sidwell
344cd94c53
Make-lang.in (cxx-module-oracle): Sed version.
...
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.
From-SVN: r260184
2018-05-11 20:16:15 +00:00
Nathan Sidwell
b517e6bc17
A more conventional protocol
...
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.
From-SVN: r260183
2018-05-11 19:54:46 +00:00
Nathan Sidwell
1a6bded3c7
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.
From-SVN: r260178
2018-05-11 18:26:27 +00:00
Nathan Sidwell
1f35b25295
config.in: Rebuilt too.
...
gcc/c
* config.in: Rebuilt too.
From-SVN: r260177
2018-05-11 18:15:55 +00:00
Nathan Sidwell
9c727609e6
diagnostic-core.h (fullname): Declare.
...
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.
From-SVN: r260173
2018-05-11 17:43:05 +00:00
Nathan Sidwell
eb99e474b3
configure.ac: Check for AF_UNIX and AF_INET6.
...
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}.
From-SVN: r260164
2018-05-11 15:36:40 +00:00
Nathan Sidwell
e77f781514
module.c: Include socket headers.
...
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.
From-SVN: r260152
2018-05-11 04:15:24 +00:00
Nathan Sidwell
f22c96561c
module.c (module_prefix): Delete.
...
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
From-SVN: r260148
2018-05-11 00:42:28 +00:00
Nathan Sidwell
df456c5afd
Make-lang.in (cxx-module-oracle): New rule.
...
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.
From-SVN: r260142
2018-05-11 00:06:22 +00:00
Nathan Sidwell
87ea734144
module.c (module_state::get_module): Add insert arg.
...
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.
From-SVN: r260098
2018-05-09 21:57:32 +00:00
Nathan Sidwell
e809bac59e
Add -EE
...
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.
From-SVN: r260095
2018-05-09 20:35:30 +00:00
Nathan Sidwell
078aae37b0
parser.c (module_preamble_end_loc): New var.
...
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.
From-SVN: r260084
2018-05-09 15:49:04 +00:00
Nathan Sidwell
fe8ad2822d
parser.c (cp_parser_module_preamble): Check for macros
...
gcc/cp/
* parser.c (cp_parser_module_preamble): Check for macros
gcc/testsuite/
* g++.dg/modules/atom-preamble-3.C: New.
From-SVN: r260064
2018-05-09 00:27:19 +00:00
Nathan Sidwell
5a055838ea
parser.c (cp_parser_module_preamble): 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.
From-SVN: r260059
2018-05-09 00:07:07 +00:00
Nathan Sidwell
54e18b16be
module.c (depset): Add is_unnamed and refs_unnamed flags.
...
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.
From-SVN: r260016
2018-05-07 23:15:33 +00:00
Nathan Sidwell
15b74ca364
module.c (depset::tarjan::connect): Use section==0 for done, not top bit of cluster.
...
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.
From-SVN: r260014
2018-05-07 21:52:05 +00:00
Nathan Sidwell
c135d18247
module.c (FIXED_LIMIT): Remove.
...
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.
From-SVN: r259980
2018-05-06 18:52:26 +00:00
Nathan Sidwell
41e56c3c6f
module.c (trees_out::maybe_tag_decl_type): New, broken out of ...
...
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.
From-SVN: r259956
2018-05-04 18:56:42 +00:00
Nathan Sidwell
d6497afa81
ptree.c (cxx_print_decl): Show module.
...
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.
From-SVN: r259951
2018-05-04 18:04:50 +00:00
Nathan Sidwell
912099f99b
module.c (module_state::mark_definition): Add include_decl arg.
...
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.
From-SVN: r259933
2018-05-04 13:41:42 +00:00
Nathan Sidwell
81dfe8bba3
c-cppbuiltin.c (c_cpp_builtins): Update __cpp_modules value, define __cpp_modules_{ts,atom} as selected.
...
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.
From-SVN: r259908
2018-05-03 20:03:22 +00:00
Nathan Sidwell
0ae5a0e09d
module.c (cluster_size): Delete.
...
gcc/cp/
* module.c (cluster_size): Delete.
(module_state::write_{cluster,namespaces,bindings}): Adjust.
(module_state::write): Precalculate section numbers.
From-SVN: r259905
2018-05-03 19:53:27 +00:00
Nathan Sidwell
d9fc5786a3
cxx-module-wrapper.sh: Require bash.
...
gcc/cp/
* cxx-module-wrapper.sh: Require bash.
From-SVN: r259870
2018-05-02 23:48:38 +00:00
Nathan Sidwell
2c6a0d6fdf
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.
From-SVN: r259869
2018-05-02 23:45:54 +00:00
Nathan Sidwell
0cc4985577
module.c (depset::tarjan): Replace binds, spaces & defs fields with plain result field.
...
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.
From-SVN: r259841
2018-05-02 14:50:45 +00:00
Nathan Sidwell
185740cd54
module.c (trees_out::tree_{type,decl,ctx}): Separate need_body and owner args.
...
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.
From-SVN: r259804
2018-05-01 17:50:05 +00:00
Nathan Sidwell
df7dc01b86
module.c (trees_out::tree_decl): Write innermost args.
...
gcc/cp/
* module.c (trees_out::tree_decl): Write innermost args.
gcc/testsuite/
* g++.dg/modules/indirect-4_[abc].C: New.
From-SVN: r259798
2018-05-01 14:23:02 +00:00
Nathan Sidwell
76d79f2b6d
module.c (module_state::occupy): Do not set filename here.
...
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.
From-SVN: r259794
2018-05-01 13:21:17 +00:00
Nathan Sidwell
70d3357617
Make-lang.in (c++.install-common): Install wrapper into libexecsubdir.
...
gcc/cp/
* Make-lang.in (c++.install-common): Install wrapper into
libexecsubdir.
From-SVN: r259792
2018-05-01 12:25:07 +00:00
Nathan Sidwell
5be54af24b
Merge trunk r184995.
...
From-SVN: r259791
2018-05-01 12:13:25 +00:00
Nathan Sidwell
bb7520fad2
module.c (trees_out::tree_decl): Adjust for member templates.
...
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.
From-SVN: r259776
2018-04-30 19:37:11 +00:00
Nathan Sidwell
458e983aec
Merge trunk r259710.
...
From-SVN: r259715
2018-04-27 15:41:00 +00:00
Nathan Sidwell
0814464474
cp-tree.h (DECL_TEMPLATE_INFO): Correct comment.
...
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.
From-SVN: r259673
2018-04-26 12:55:33 +00:00
Nathan Sidwell
0e457bc3e2
module.c (maybe_get_template): Delete.
...
gcc/cp/
* module.c (maybe_get_template): Delete.
(trees_out::tree_decl): Move dependency building into named-decl
handling. Don't walk into namespaces.
From-SVN: r259653
2018-04-25 15:19:51 +00:00
Nathan Sidwell
2c97a830e8
module.c (trees_out::tree_node): Reorder.
...
gcc/cp/
* module.c (trees_out::tree_node): Reorder.
From-SVN: r259652
2018-04-25 15:09:03 +00:00
Nathan Sidwell
dd2dff5b2a
module.c (trees_out::tree_decl): Deal with templated types.
...
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.
From-SVN: r259618
2018-04-24 21:04:25 +00:00
Nathan Sidwell
6258bc9377
module.c (enum tree_tag): Add tt_template.
...
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.
From-SVN: r259616
2018-04-24 20:01:18 +00:00
Nathan Sidwell
f3c5a93379
module.c (trees_out::core_vals): Check module of type context.
...
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.
From-SVN: r259615
2018-04-24 17:55:59 +00:00
Nathan Sidwell
e66221bfb9
indirect-1_[abc].C: Add exported constant.
...
gcc/testsuite/
* g++.dg/modules/indirect-1_[abc].C: Add exported constant.
From-SVN: r259583
2018-04-23 21:59:16 +00:00
Nathan Sidwell
53e2feb9c5
name-lookup.c (lookup_by_ident): Look in enumerals.
...
gcc/cp/
* name-lookup.c (lookup_by_ident): Look in enumerals.
gcc/testsuite/
* g++.dg/modules/indirect-1_[abc].C: Add enum.
From-SVN: r259581
2018-04-23 21:12:53 +00:00
Nathan Sidwell
75fa50ebbe
module.c (trees_{in,out}::core_vals): More FUNCTION_DECL fields.
...
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.
From-SVN: r259573
2018-04-23 20:13:28 +00:00
Nathan Sidwell
a81bad5c89
Fix regexp
...
From-SVN: r259569
2018-04-23 18:49:59 +00:00
Nathan Sidwell
adfa8fea1b
module.c (dumper::pop): Don't print trailing line.
...
gcc/cp/
* module.c (dumper::pop): Don't print trailing line.
From-SVN: r259568
2018-04-23 18:47:56 +00:00
Nathan Sidwell
68dcc2e478
module.c (trees_{in,out}::core_vals): Allow NULL-context VAR_DECLS.
...
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.
From-SVN: r259567
2018-04-23 18:41:11 +00:00
Nathan Sidwell
e46102bcbf
module.c (enum tree_tag): Remove tt_namespace.
...
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.
From-SVN: r259566
2018-04-23 17:53:52 +00:00
Nathan Sidwell
f653d828b5
module.c (module_state::importing): 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.
From-SVN: r259560
2018-04-23 13:28:33 +00:00
Nathan Sidwell
3ad20118db
c-lex.c (c_lex_with_flags): Check C_LEX_FILENAME.
...
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.
From-SVN: r259331
2018-04-11 20:08:08 +00:00
Nathan Sidwell
f20b266ab1
module.c (module_state::lazy_depth): Remove.
...
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.
From-SVN: r259328
2018-04-11 18:15:49 +00:00
Nathan Sidwell
6928c7acb7
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.
From-SVN: r259297
2018-04-10 19:52:02 +00:00
Nathan Sidwell
b04261be89
parser.c (cp_parser_declaration_seq_opt): Remove ATOM handling here.
...
gcc/cp/
* parser.c (cp_parser_declaration_seq_opt): Remove ATOM handling here.
From-SVN: r259295
2018-04-10 18:05:28 +00:00
Nathan Sidwell
56f93b6057
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.
From-SVN: r259293
2018-04-10 17:58:30 +00:00
Nathan Sidwell
fd7e642ed0
parser.c (cp_lexer_new_main): Replace with ...
...
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.
From-SVN: r259251
2018-04-09 19:35:51 +00:00
Nathan Sidwell
79d33f1627
parser.c (cp_lexer_get_preprocessor_token): Take cpp-flags directly.
...
gcc/cp/
* parser.c (cp_lexer_get_preprocessor_token): Take cpp-flags
directly.
(cp_lexer_new_main, cp_parser_initial_pragma): Adjust.
From-SVN: r259248
2018-04-09 18:08:53 +00:00
Nathan Sidwell
9b84a0a22b
cp-tree.h (modules_p, [...]): New predicates.
...
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.
* optmize.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.
From-SVN: r259246
2018-04-09 17:52:15 +00:00
Nathan Sidwell
ebaa09e3d4
module.c (init_module_processing): Disallow PCH.
...
gcc/cp/
* module.c (init_module_processing): Disallow PCH.
gcc/c-family/
* c-pch.c (c_common_valid_pch): Never valid with modules.
From-SVN: r259245
2018-04-09 17:08:13 +00:00
Nathan Sidwell
2f702c9350
module.c (module_state::{read,write}_config): Check ATOM/TS matches.
...
gcc/cp/
* module.c (module_state::{read,write}_config): Check ATOM/TS
matches.
gcc/testsuite/
* g++.dg/modules/atom-check-1_[ab].C: New.
From-SVN: r259243
2018-04-09 16:03:44 +00:00
Nathan Sidwell
d33214adac
module.c (module_state::write_readme): 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.
From-SVN: r259242
2018-04-09 15:56:07 +00:00
Nathan Sidwell
7301320baf
module.c (module_state::release): Simplify.
...
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.
From-SVN: r259241
2018-04-09 15:33:37 +00:00
Nathan Sidwell
0456ff13e8
module.c (module_state::read): Allocate elf_in here.
...
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.
From-SVN: r259235
2018-04-09 14:42:45 +00:00
Nathan Sidwell
7d3acce1a6
module.c (trees_out::tree_node): Avoid uninitialized false positive.
...
gcc/cp/
* module.c (trees_out::tree_node): Avoid uninitialized false
positive.
From-SVN: r259232
2018-04-09 11:27:11 +00:00
Nathan Sidwell
40c28b84f3
Merge trunk r259189.
...
From-SVN: r259197
2018-04-06 22:38:12 +00:00
Nathan Sidwell
f9a1ba9bab
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.
From-SVN: r259189
2018-04-06 19:37:28 +00:00
Nathan Sidwell
af0db6abc7
module.c (elf::E_BAD_LAZY): New error.
...
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.
From-SVN: r259180
2018-04-06 17:23:32 +00:00
Nathan Sidwell
166cd09228
module.c (elf_in::keep_sections): New.
...
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.
From-SVN: r259176
2018-04-06 15:09:56 +00:00
Nathan Sidwell
2a87dcaf24
module.c (trees_{in,out}, depset): Reorder definitions.
...
gcc/cp/
* module.c (trees_{in,out}, depset): Reorder definitions.
From-SVN: r259175
2018-04-06 13:53:37 +00:00
Nathan Sidwell
b541938459
module.c (module_state::{read,write}_binfos): Merge loops.
...
gcc/cp/
* module.c (module_state::{read,write}_binfos): Merge loops.
From-SVN: r259174
2018-04-06 13:38:36 +00:00
Nathan Sidwell
a85bdfd1dd
modules.c (trees_{in,out}::tree_binfo): Delete.
...
gcc/cp/
* modules.c (trees_{in,out}::tree_binfo): Delete.
(module_state::{read,write}_binfos): New.
(module_state::{read,write}_class_def): Use them.
From-SVN: r259170
2018-04-06 13:18:31 +00:00
Nathan Sidwell
97efb6eb2e
invoke.texi (C++ Modules): New section.
...
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.
From-SVN: r259154
2018-04-05 21:03:34 +00:00
Nathan Sidwell
e90a8fbb38
module.c (module_state::tng_*): Rename.
...
gcc/cp/
* module.c (module_state::tng_*): Rename.
From-SVN: r259151
2018-04-05 18:45:51 +00:00
Nathan Sidwell
e49b9c0f23
module.c (enum tree_tag): Delete tt_definition, tt_binding.
...
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.
From-SVN: r259148
2018-04-05 18:30:55 +00:00
Nathan Sidwell
1e5321ce86
module.c (module_state::write_namespace): Delete.
...
gcc/cp/
* module.c (module_state::write_namespace): Delete.
(module_state::{write_bindings,read_bindings}): Likewise.
From-SVN: r259144
2018-04-05 18:21:25 +00:00
Nathan Sidwell
7e16c39dca
module.c (TNG): Delete.
...
gcc/cp/
* module.c (TNG): Delete.
(module_state::{tng_read_bindings,write): Constant fold TNG.
(trees_out::tree_node, trees_in::finish_type): Likewise.
From-SVN: r259143
2018-04-05 18:16:56 +00:00
Nathan Sidwell
a780f851b7
module.c (refs_tng): Replace with TNG.
...
gcc/cp/
* module.c (refs_tng): Replace with TNG.
From-SVN: r259142
2018-04-05 18:12:34 +00:00
Nathan Sidwell
17708cb962
Switch over to new binding scheme.
...
gcc/cp/
* module.c (TNG): Enable.
From-SVN: r259141
2018-04-05 17:57:31 +00:00
Nathan Sidwell
1b68817d9a
module.c (module_state::{read,write,mark}_template_def): Deal with CLASSTYPE_DECL_LIST.
...
gcc/cp/
* module.c (module_state::{read,write,mark}_template_def): Deal
with CLASSTYPE_DECL_LIST.
(trees_out::tree_node): Check implicit TEMPLATE_DECLs.
From-SVN: r259139
2018-04-05 17:29:51 +00:00
Nathan Sidwell
71a1a1c825
module.c (trees_out::tree_node): Reorder by-name checks.
...
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.
From-SVN: r259131
2018-04-05 15:45:50 +00:00
Nathan Sidwell
e39c76629f
module.c (module_state::{read,write,mark}_template_def): New.
...
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.
From-SVN: r259102
2018-04-04 19:39:16 +00:00
Nathan Sidwell
4137ba72a9
module.c (module_state::{read,write}_class_def}): Fixup vptr-containing logic.
...
gcc/cp/
* module.c (module_state::{read,write}_class_def}): Fixup
vptr-containing logic.
(trees_in::tree_binfo): Forward walk.
From-SVN: r259095
2018-04-04 17:06:51 +00:00
Nathan Sidwell
f9a77777e8
module.c (enum tree_tag): Replace tt_tinfo_pseudo with tt_tinfo_typedef.
...
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.
From-SVN: r259086
2018-04-04 15:46:01 +00:00
Nathan Sidwell
4a0bf2e4a5
module.c (module_state::read_definition): New.
...
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.
From-SVN: r259081
2018-04-04 14:12:27 +00:00
Nathan Sidwell
326ccacb78
module.c (module_state::write_var_def): Write definition.
...
gcc/cp/
* module.c (module_state::write_var_def): Write definition.
From-SVN: r259079
2018-04-04 14:01:39 +00:00
Nathan Sidwell
c2fa008ce2
module.c (trees_out::mark_node): Allow preseeding.
...
gcc/cp/
* module.c (trees_out::mark_node): Allow preseeding.
(trees_out::tree_node): Fix as_base.
From-SVN: r259078
2018-04-04 13:50:25 +00:00
Nathan Sidwell
3d9cf8d0da
module.c (tt_type_name, tt_named): Rename to ...
...
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.
From-SVN: r259054
2018-04-03 19:38:17 +00:00
Nathan Sidwell
ac376b8485
module.c (bytes_in::{use,i,u,wi,str}): Use set_overrun.
...
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.
From-SVN: r259045
2018-04-03 17:43:12 +00:00
Nathan Sidwell
82d5d5099b
Reorder for better logging
...
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.
From-SVN: r259035
2018-04-03 15:06:33 +00:00
Nathan Sidwell
427ffd419f
Fix enum types, more globals
...
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.
From-SVN: r259028
2018-04-03 13:21:59 +00:00
Nathan Sidwell
5d819c0f65
Read new .bindings section
...
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.
From-SVN: r259013
2018-04-02 16:28:21 +00:00
Nathan Sidwell
3349b9f298
Kill old .bindings section
...
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_namepace): Public namespaces are exported.
(push_namespace): Adjust.
From-SVN: r259010
2018-04-02 15:08:03 +00:00
Nathan Sidwell
0060a23b3d
module.c (trees_{in,out}::define_class): Check refs_tng.
...
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.
From-SVN: r259008
2018-04-02 12:45:52 +00:00
Nathan Sidwell
d339a79c03
module.c (trees_{in,out}::tree_binfo): Serialize entire path.
...
gcc/cp/
* module.c (trees_{in,out}::tree_binfo): Serialize entire path.
(trees_{in,out}::tree_node): Adjust.
-- This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/module.c
From-SVN: r259005
2018-04-02 11:24:40 +00:00
Nathan Sidwell
b2ff215988
module.c (has_definition): VAR_DECLs too.
...
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.
From-SVN: r258979
2018-03-30 16:03:14 +00:00
Nathan Sidwell
c2a68e6ec4
module.c (maybe_get_template): New.
...
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.
From-SVN: r258922
2018-03-28 13:47:45 +00:00
Nathan Sidwell
d69bac2c41
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.
From-SVN: r258891
2018-03-27 16:32:44 +00:00
Nathan Sidwell
a866845eba
module.c (hash_definition): 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.
From-SVN: r258888
2018-03-27 15:36:59 +00:00
Nathan Sidwell
9df26320f9
module.c (depset::traits): Hash & compare using name too.
...
gcc/cp/
* module.c (depset::traits): Hash & compare using name too.
From-SVN: r258880
2018-03-27 13:14:15 +00:00
Nathan Sidwell
4912622649
module.c (refs_tng): Temporary modal hack.
...
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.
From-SVN: r258878
2018-03-27 12:48:02 +00:00
Nathan Sidwell
359d2b709d
module.c (depset::table): Rename to ...
...
gcc/cp/
* module.c (depset::table): Rename to ...
(depset::hash): ... here.
(trees_out::deps_only): Rename to ...
(trees_out::dep_walk_p): ... here.
From-SVN: r258863
2018-03-26 19:25:45 +00:00
Nathan Sidwell
9a730f78a0
module.c (depset::table::find_exports): Renamed ...
...
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.
From-SVN: r258862
2018-03-26 19:08:53 +00:00
Nathan Sidwell
33fe57484e
scanlang.exp (scan-lang-dump-not): new.
...
gcc/testsuite/
* lib/scanlang.exp (scan-lang-dump-not): new.
From-SVN: r258861
2018-03-26 18:44:50 +00:00
Nathan Sidwell
a7007fa0a1
module.c (depset::visited): Use depset::cluster.
...
gcc/cp/
* module.c (depset::visited): Use depset::cluster. Adjust users.
From-SVN: r258860
2018-03-26 16:59:51 +00:00
Nathan Sidwell
f5222315d7
module.c (elf_out::strtab::named_decl): Cope with TYPE constext.
...
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.
From-SVN: r258858
2018-03-26 16:03:34 +00:00
Nathan Sidwell
f910de9768
module.c (elf_out::strtab): Add name-by-decl.
...
gcc/cp/
* module.c (elf_out::strtab): Add name-by-decl.
(module_state::write_cluster): Find naming decl, and use it.
From-SVN: r258857
2018-03-26 14:57:08 +00:00
Nathan Sidwell
c0b34001cf
module.c (class depset): Make a class, add accessors.
...
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.
From-SVN: r258855
2018-03-26 14:27:13 +00:00
Nathan Sidwell
bbae241447
Add depset analysis (incomplete)
...
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.
From-SVN: r258853
2018-03-26 12:03:53 +00:00
Nathan Sidwell
dbe8a375ad
Allow dump '-'
...
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.
From-SVN: r258806
2018-03-23 14:07:22 +00:00
Nathan Sidwell
30fe466fe6
rename tests
...
From-SVN: r258600
2018-03-16 17:28:21 +00:00
Nathan Sidwell
0e9aad7352
Remove -fmodules, forcing -fmodules-{ts,atom}
...
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.
From-SVN: r258598
2018-03-16 15:49:15 +00:00
Nathan Sidwell
17ba69c224
missed changelog
...
From-SVN: r258597
2018-03-16 15:46:24 +00:00
Nathan Sidwell
629e899389
Implement Atom module & import placement
...
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.
From-SVN: r258573
2018-03-15 19:52:48 +00:00
Nathan Sidwell
6f702e9b9a
Implement p0713 - identifiying module source
...
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.
From-SVN: r258558
2018-03-15 15:22:41 +00:00
Nathan Sidwell
645b78f080
module.c (add_module_mapping): Fix double increment.
...
gcc/cp/
* module.c (add_module_mapping): Fix double increment.
From-SVN: r258104
2018-03-01 16:32:43 +00:00
Nathan Sidwell
72038ba204
Merge trunk r258084.
...
From-SVN: r258088
2018-02-28 21:50:54 +00:00
Nathan Sidwell
37e9408873
Makefile.in (REVISION_c): Don't exec REVISION.
...
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.
From-SVN: r258084
2018-02-28 21:01:46 +00:00
Nathan Sidwell
1742e520c5
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.
From-SVN: r258083
2018-02-28 20:35:16 +00:00
Nathan Sidwell
dd7641c8e9
Makefile.in: Exec REVISION maybe.
...
gcc/
* Makefile.in: Exec REVISION maybe.
* REVISION: New.
gcc/cp/
* Make-lang.in: Directly set MODULE_STAMP.
From-SVN: r258072
2018-02-28 16:14:25 +00:00
Nathan Sidwell
a9964db717
Map tag recognised in and out of comments
...
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.
From-SVN: r258065
2018-02-28 13:55:56 +00:00
Nathan Sidwell
732173bd94
module.c (version_string): Rename.
...
gcc/cp/
* module.c (version_string): Rename.
(module_state::write_context): Write compiler version.
From-SVN: r258032
2018-02-27 12:50:36 +00:00
Nathan Sidwell
f3a1ebeed0
Use TREE_VISITED
...
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.
From-SVN: r257749
2018-02-16 17:42:08 +00:00
Nathan Sidwell
f5ca048020
module.c: More commenting.
...
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.
From-SVN: r257733
2018-02-16 12:41:31 +00:00
Nathan Sidwell
281cbeae77
Module ownership on containers
...
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.
From-SVN: r257708
2018-02-15 20:28:48 +00:00
Nathan Sidwell
a6c53ec363
module.c (trees_out::tree_node): Reorder.
...
gcc/cp/
* module.c (trees_out::tree_node): Reorder.
From-SVN: r257694
2018-02-15 15:59:58 +00:00
Nathan Sidwell
3b3a3633d5
module.c: Commenting and a few cleanups.
...
gcc/cp/
* module.c: Commenting and a few cleanups.
From-SVN: r257693
2018-02-15 15:32:53 +00:00
Nathan Sidwell
0c154178c4
module.c (elf): Make more constants private.
...
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.
From-SVN: r257689
2018-02-15 14:11:39 +00:00
Nathan Sidwell
26de8c61c5
Module map files have more syntax
...
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.
From-SVN: r257688
2018-02-15 13:26:24 +00:00
Nathan Sidwell
10f44c52f5
Module path is for mapping files.
...
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.
From-SVN: r257652
2018-02-14 02:51:41 +00:00
Nathan Sidwell
8381951985
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.
From-SVN: r257595
2018-02-12 18:08:35 +00:00
Nathan Sidwell
03ac6da6ef
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.
From-SVN: r257592
2018-02-12 17:36:26 +00:00
Nathan Sidwell
3987b40362
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.
From-SVN: r257589
2018-02-12 16:56:28 +00:00
Nathan Sidwell
224994bdfe
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.
From-SVN: r257570
2018-02-11 21:18:42 +00:00
Nathan Sidwell
e76f8845b1
Keep module-file map in module hash
...
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.
From-SVN: r257569
2018-02-11 20:09:55 +00:00
Nathan Sidwell
819b67030d
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.
From-SVN: r257561
2018-02-11 15:15:56 +00:00
Nathan Sidwell
999664b4e3
Move module option processing out of c-common.
...
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.
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.
From-SVN: r257560
2018-02-11 14:56:19 +00:00
Nathan Sidwell
df267409c3
module.c: Update more comments.
...
gcc/cp/
* module.c: Update more comments.
From-SVN: r257532
2018-02-09 17:42:50 +00:00
Nathan Sidwell
2fc50cf0de
module.c: Update a lot of comments.
...
gcc/cp/
* module.c: Update a lot of comments.
From-SVN: r257530
2018-02-09 16:18:18 +00:00
Nathan Sidwell
6f9d9ad90e
module.c (trees_in::tree_node): Absorb ...
...
gcc/cp/
* module.c (trees_in::tree_node): Absorb ...
(trees_in::tree_node_special): ... this.
From-SVN: r257449
2018-02-07 12:29:16 +00:00
Nathan Sidwell
eccd4bfe0b
module.c (trees_in::tree_node_special): Deserialize tt_node here ...
...
gcc/cp/
* {trees_in::tree_node_special): Deserialize tt_node here ...
(trees_in::tree_node): ... not here.
From-SVN: r257448
2018-02-07 12:22:56 +00:00
Nathan Sidwell
eed40d4c2d
module.c (trees_out::tree_node_special): Move into tree_node.
...
gcc/cp/
* module.c (trees_out::tree_node_special): Move into tree_node.
From-SVN: r257428
2018-02-06 19:48:31 +00:00
Nathan Sidwell
d772730223
module.c (trees_{in,out}::core_vals): Serialize decl name & context here.
...
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.
From-SVN: r257427
2018-02-06 19:17:34 +00:00
Nathan Sidwell
270e68000c
Remove old import machinery.
...
gcc/cp/
* module.c (trees_in::tree_node_raw): Set module owner.
(trees_{in,out}::tree_node): Remove importing here.
From-SVN: r257426
2018-02-06 19:04:30 +00:00
Nathan Sidwell
a26fd6b0a6
Imports use special tags
...
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.
From-SVN: r257425
2018-02-06 18:45:29 +00:00
Nathan Sidwell
d5abe33049
Kill namespace module slot hackery
...
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.
From-SVN: r257423
2018-02-06 17:43:21 +00:00
Nathan Sidwell
de648a0708
Namespaces use special tags
...
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.
From-SVN: r257421
2018-02-06 17:16:40 +00:00
Nathan Sidwell
122e39232d
Less implicit tree numbering, negative indices for back refs
...
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.
From-SVN: r257418
2018-02-06 16:33:22 +00:00
Nathan Sidwell
95eaf6bb17
decl2 (c_parse_final_cleanups): Only finish_module if we started it.
...
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.
From-SVN: r257396
2018-02-05 21:00:38 +00:00
Nathan Sidwell
4103006ce7
Fix bootstrap
...
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.
From-SVN: r257391
2018-02-05 17:49:47 +00:00
Nathan Sidwell
854d1fafd7
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.
From-SVN: r257381
2018-02-05 03:02:52 +00:00
Nathan Sidwell
fc91e75d38
name-lookup.c (make_namespace_finish): Always create the scope.
...
gcc/cp/
* name-lookup.c (make_namespace_finish): Always create the scope.
(add_imported_namespace): Check namespace inlineness here.
From-SVN: r257380
2018-02-05 02:29:04 +00:00
Nathan Sidwell
bf24b8d6d8
module.c (decl_set_module): Set DECL_MODULE_OWNER.
...
gcc/cp/
* module.c (decl_set_module): Set DECL_MODULE_OWNER.
* rtti.c (tinfo_base_init): Clear DECL_MODULE_OWNER.
From-SVN: r257369
2018-02-04 23:52:07 +00:00
Nathan Sidwell
d9360032bb
decl.c (grokfndecl): Protect decl_set_module call.
...
gcc/cp/
* decl.c (grokfndecl): Protect decl_set_module call.
* name-lookup,c (do_pushtag): Likewise.
* module.c (decl_set_module): Assert namespace context.
From-SVN: r257368
2018-02-04 23:41:37 +00:00
Nathan Sidwell
9169f1c33e
cp-tree.h: Adjust comments.
...
gcc/cp/
* cp-tree.h: Adjust comments.
* module.c (module_purview_p, module_interface_p): Adjust.
From-SVN: r257359
2018-02-03 23:37:55 +00:00
Nathan Sidwell
049563cdcb
Deserializing uses an array (Nathan is a dumbass)
...
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.
From-SVN: r257358
2018-02-03 23:13:39 +00:00
Nathan Sidwell
718b488d96
module.c (nodel_ptr_hash): New.
...
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.
From-SVN: r257352
2018-02-02 22:13:37 +00:00
Nathan Sidwell
aa4d14d760
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.
From-SVN: r257351
2018-02-02 21:39:05 +00:00
Nathan Sidwell
884f5d6c88
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.
From-SVN: r257349
2018-02-02 20:29:11 +00:00
Nathan Sidwell
6b42c381bd
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.
From-SVN: r257347
2018-02-02 19:30:35 +00:00
Nathan Sidwell
35ffb8ac04
Rename MODULE_INDEX->MODULE_OWNER
...
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.
From-SVN: r257346
2018-02-02 18:43:29 +00:00
Nathan Sidwell
92ed9ea863
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.
From-SVN: r257345
2018-02-02 18:24:50 +00:00
Nathan Sidwell
670e2c615b
Fix circularity detection, and other errors
...
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.
From-SVN: r257332
2018-02-02 14:17:34 +00:00
Nathan Sidwell
8ca150c404
Alloc a slot for global module
...
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.
From-SVN: r257317
2018-02-01 22:10:19 +00:00
Nathan Sidwell
d4a642ea89
Alloc aslot for global module
...
Alloc aslot 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.
From-SVN: r257316
2018-02-01 21:34:19 +00:00
Nathan Sidwell
7d6c6d504f
Bindings point to decls
...
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.
From-SVN: r257309
2018-02-01 19:37:41 +00:00
Nathan Sidwell
5fe9df591a
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.
From-SVN: r257306
2018-02-01 18:29:55 +00:00
Nathan Sidwell
0e0b7d01da
name-lookup.h (extract_module_decls): Renamed from extract_module_bindings.
...
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.
From-SVN: r257297
2018-02-01 14:43:13 +00:00
Nathan Sidwell
037887476b
Merge trunk r257292.
...
From-SVN: r257295
2018-02-01 13:11:41 +00:00
Nathan Sidwell
d5c5f1d8ad
module.c (cpms_{in,out}): Rename to ...
...
gcc/cp/
* module.c (cpms_{in,out}): Rename to ...
(trees_in, trees_out): ... here.
From-SVN: r257276
2018-01-31 23:53:13 +00:00
Nathan Sidwell
6037ce045c
module.c (module_state::global_{trees,vec,crc}): New, moved from ...
...
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.
From-SVN: r257269
2018-01-31 21:18:02 +00:00
Nathan Sidwell
8750806684
Derive cpm_{in,out} from bytes_{in,out}
...
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.
From-SVN: r257267
2018-01-31 20:55:06 +00:00
Nathan Sidwell
f047b78c97
Kill cpm_stream.
...
gcc/cp/
* module.c (class cpm_stream): Delete.
(class cpms_{in,out}): Adjust.
From-SVN: r257263
2018-01-31 20:45:40 +00:00
Nathan Sidwell
371a089802
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.
From-SVN: r257261
2018-01-31 20:22:04 +00:00
Nathan Sidwell
c8b562a93b
Add module_stat read & write
...
Add module_stat read & write
gcc/cp/
* module.c (module_state::{read,write}): New.
(cpms_in::read): Adjust.
(do_import_module, finish_module): Adjust.
From-SVN: r257259
2018-01-31 19:52:55 +00:00
Nathan Sidwell
a9852d55fd
module.c: Move cpm_stream, cpms_in, cpms_out earlier.
...
gcc/cp/
* module.c: Move cpm_stream, cpms_in, cpms_out earlier.
From-SVN: r257257
2018-01-31 19:43:19 +00:00
Nathan Sidwell
7ea36a9b68
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.
From-SVN: r257256
2018-01-31 19:28:55 +00:00
Nathan Sidwell
740cc1273e
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.
From-SVN: r257255
2018-01-31 19:04:32 +00:00
Nathan Sidwell
27baa1bfe7
Move global tree init.
...
gcc/cp/
* module.c (module_state::lazy_init): New, swallow ...
(cpm_serial::lazy_globals): ... this. Adjust callers.
From-SVN: r257251
2018-01-31 18:51:05 +00:00
Nathan Sidwell
107828d16f
Reorder class declarations
...
Reorder class declarations
gcc/cp/
* module.c (bytes, bytes_in, bytes_out): Move before module_state.
From-SVN: r257246
2018-01-31 18:09:46 +00:00
Nathan Sidwell
283230aba6
Simplify import interface
...
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.
From-SVN: r257245
2018-01-31 17:50:44 +00:00
Nathan Sidwell
0dfb816e35
Module_state owns elf and elf owns stream
...
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.
From-SVN: r257244
2018-01-31 17:02:23 +00:00
Nathan Sidwell
03a88b6d1f
Commonize module location
...
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.
From-SVN: r257241
2018-01-31 16:02:36 +00:00
Nathan Sidwell
b57a84551b
Staticize instrumentation
...
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.
From-SVN: r257239
2018-01-31 15:09:57 +00:00
Nathan Sidwell
dfe4e1f8b6
Separate dumper object
...
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.
From-SVN: r257236
2018-01-31 14:44:47 +00:00
Nathan Sidwell
e2b29f51f7
Start refactoring cpm_serial
...
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.
From-SVN: r257231
2018-01-31 12:11:57 +00:00
Nathan Sidwell
152e2388c3
module.c (data::release): Return NULL, update users.
...
gcc/cp/
* module.c (data::release): Return NULL, update users.
(cpms_in::{mod_ix,crc}): Delete, adjust users.
From-SVN: r257201
2018-01-30 19:29:31 +00:00
Nathan Sidwell
c7e8d635cb
Reorder source
...
Reorder source
gcc/cp/
* module.c (struct data): First.
(class elf, elf_in & elf_out): Next.
From-SVN: r257200
2018-01-30 19:10:39 +00:00
Nathan Sidwell
eab54b2ad2
module.c (module_state): Remove name_hash, crc_known, set_crc, set_location.
...
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.
From-SVN: r257198
2018-01-30 19:01:38 +00:00
Nathan Sidwell
00f9ca5209
Push remaps as they happen.
...
gcc/cp/
* module.c (cpms_{in,out}::imports): Write in ascending order.
From-SVN: r257197
2018-01-30 18:33:01 +00:00
Nathan Sidwell
9e69db3cd9
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.
From-SVN: r257196
2018-01-30 18:23:52 +00:00
Nathan Sidwell
77fb822160
module.c (bytes_out::end): Create PROGBITS or STRTAB.
...
gcc/cp/
* module.c (bytes_out::end): Create PROGBITS or STRTAB.
(cpms_out::write): README is a STRTAB.
From-SVN: r257192
2018-01-30 17:21:55 +00:00
Nathan Sidwell
97c9bbe2a8
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.
From-SVN: r257191
2018-01-30 16:51:56 +00:00
Nathan Sidwell
936de93203
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.
From-SVN: r257189
2018-01-30 16:47:14 +00:00
Nathan Sidwell
1188296cbe
Config in header
...
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.
From-SVN: r257187
2018-01-30 14:04:36 +00:00
Nathan Sidwell
9f6a5ff969
Globals in header
...
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.
From-SVN: r257185
2018-01-30 13:42:47 +00:00
Nathan Sidwell
cb214728d2
Import table is separate section
...
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.
From-SVN: r257162
2018-01-29 20:56:41 +00:00
Nathan Sidwell
678d4e1076
Header is separate section
...
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): Repimlement.
(cpms_in::read, cpms_out::write): Adjust.
From-SVN: r257157
2018-01-29 17:07:14 +00:00
Nathan Sidwell
a6716a1a68
Remove string-literal module names :(
...
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.
From-SVN: r257153
2018-01-29 15:30:53 +00:00
Nathan Sidwell
5252341951
{read,write}_module become member fns
...
{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.
From-SVN: r257151
2018-01-29 15:12:49 +00:00
Nathan Sidwell
db6e851467
README section
...
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.
From-SVN: r257148
2018-01-29 14:34:04 +00:00
Nathan Sidwell
d10c4838b4
Fix layering violation
...
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.
From-SVN: r257140
2018-01-29 12:01:19 +00:00
Nathan Sidwell
09d2950be3
Simplify buffer filling & drainging
...
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.
From-SVN: r257106
2018-01-26 20:36:49 +00:00
Nathan Sidwell
0fabc76b1e
CRC at section level
...
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).
From-SVN: r257103
2018-01-26 18:40:22 +00:00
Nathan Sidwell
05143ffa2e
BMI is ELF
...
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.
From-SVN: r257099
2018-01-26 16:25:28 +00:00
Nathan Sidwell
bb667da354
comments
...
From-SVN: r257026
2018-01-24 17:59:50 +00:00
Nathan Sidwell
41d56717cf
Global tree via crc
...
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.
From-SVN: r257024
2018-01-24 16:40:52 +00:00
Nathan Sidwell
50356907cb
module.c (module_state): Replace direct_import with imported & exported flags.
...
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.
From-SVN: r257015
2018-01-24 12:21:44 +00:00
Nathan Sidwell
d2fb4f2cbb
Static bindings not visible in imports
...
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.
From-SVN: r256992
2018-01-23 17:52:53 +00:00
Nathan Sidwell
8919cd65dc
tree.c (ovl_insert): No need to sort by USING_P.
...
gcc/cp/
* tree.c (ovl_insert): No need to sort by USING_P.
(ovl_iterator::reveal_node): Likewise.
From-SVN: r256962
2018-01-22 20:45:19 +00:00
Nathan Sidwell
ae3cc5e68d
Broken
...
From-SVN: r256950
2018-01-22 15:11:02 +00:00
Nathan Sidwell
1ac6195f3b
Update bug reporting instructions
...
Update bug reporting instructions
gcc/
* configure.ac (ACX_BUGURL): Set new url
* diagnostic.c (diagnostic_action_after_output): Special ICE
instructions.
* configure: Rebuilt.
From-SVN: r256946
2018-01-22 14:48:51 +00:00
Nathan Sidwell
a15e60ea47
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.
From-SVN: r256901
2018-01-19 21:29:20 +00:00
Nathan Sidwell
a743efc3e8
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.
From-SVN: r256900
2018-01-19 21:07:09 +00:00
Nathan Sidwell
8c8388f02f
module.c (cpms_{in.out}::tree_node_special): New, broken out of ...
...
gcc/cp/
* module.c (cpms_{in.out}::tree_node_special): New, broken out of ...
(cpms_{in,out}::tree_node): ... here. Call them.
From-SVN: r256898
2018-01-19 19:50:57 +00:00
Nathan Sidwell
6c66698e0a
Merge trunk r256894.
...
From-SVN: r256897
2018-01-19 18:52:46 +00:00
Nathan Sidwell
9ccd7ea09b
Make-lang.in: Set MODULE_STAMP if non-branch experimental.
...
gcc/cp/
* Make-lang.in: Set MODULE_STAMP if non-branch experimental.
From-SVN: r256893
2018-01-19 16:06:49 +00:00
Nathan Sidwell
51067667ab
Beginnings of global module correctness
...
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.
From-SVN: r256892
2018-01-19 16:05:49 +00:00
Nathan Sidwell
b7530dc806
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.
From-SVN: r256843
2018-01-18 11:56:45 +00:00
Nathan Sidwell
c96a4298d2
Merge trunk r256078.
...
From-SVN: r256080
2018-01-02 16:50:44 +00:00
Nathan Sidwell
9f97937f5f
decl.c (grokdeclarator): Set typedef's module/export.
...
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.
From-SVN: r256078
2018-01-02 16:28:38 +00:00
Nathan Sidwell
d57b5c2ab4
tdef-1_[ab].C: New.
...
gcc/testsuite/
* g++.dg/modules/tdef-1_[ab].C: New.
From-SVN: r256077
2018-01-02 15:36:43 +00:00
Nathan Sidwell
deee8a1718
decl.c (grokvardecl): Set exporting.
...
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.
From-SVN: r255903
2017-12-20 21:09:21 +00:00
Nathan Sidwell
588b1919e1
module.c (module_state::set_name): Don't deal with crc.
...
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.
From-SVN: r255897
2017-12-20 16:44:12 +00:00
Nathan Sidwell
3c16940325
Merge trunk r255836.
...
From-SVN: r255838
2017-12-19 20:20:10 +00:00
Nathan Sidwell
595f797500
Merge trunk r255166.
...
From-SVN: r255168
2017-11-27 14:09:37 +00:00
Nathan Sidwell
ed8512b419
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.
From-SVN: r255060
2017-11-22 14:07:31 +00:00
Nathan Sidwell
ebe5a3f87e
Member types
...
Member types
gcc/testsuite/
* g++.dg/modules/nested-2_[ab].C: New
From-SVN: r255015
2017-11-21 16:51:06 +00:00
Nathan Sidwell
5477b59fe3
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
From-SVN: r255014
2017-11-21 16:30:00 +00:00
Nathan Sidwell
37479f2394
Merg trunk r254959.
...
From-SVN: r254962
2017-11-20 18:02:29 +00:00
Nathan Sidwell
328625fc42
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.
From-SVN: r254959
2017-11-20 16:28:38 +00:00
Nathan Sidwell
34f712760a
module.c (cpms_out::tree_node): Fix conv-op identifiers.
...
gcc/cp/
* module.c (cpms_out::tree_node): Fix conv-op identifiers.
gcc/testsuite/
* g++.dg/modules/convop-1_[ab].C: New.
From-SVN: r254891
2017-11-17 18:38:07 +00:00
Nathan Sidwell
01cabaf626
cp-tree.h (check_constexpr_fundef, [...]): Declare.
...
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.
From-SVN: r254841
2017-11-16 18:44:23 +00:00
Nathan Sidwell
200d92b986
Merge trunk r254823.
...
From-SVN: r254824
2017-11-16 15:09:10 +00:00
Nathan Sidwell
a7efb6655a
Merge trunk r254819.
...
From-SVN: r254822
2017-11-16 14:47:33 +00:00
Nathan Sidwell
e87c7f0382
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.
From-SVN: r254399
2017-11-03 20:59:40 +00:00
Nathan Sidwell
bcd2f9cb7b
module.c (module_state): Add filename & loc.
...
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.
From-SVN: r254107
2017-10-26 15:37:20 +00:00
Nathan Sidwell
9643841fc6
cxx-module-wrapper.sh: Cleanups.
...
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
From-SVN: r254048
2017-10-24 15:38:16 +00:00
Nathan Sidwell
163682c195
Wrapper program
...
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.
From-SVN: r254023
2017-10-23 19:19:38 +00:00
Nathan Sidwell
10504718bb
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.
From-SVN: r253963
2017-10-20 22:28:56 +00:00
Nathan Sidwell
bdc335392e
Early CRC not time stamps.
...
gcc/cp/
* decl.c (xref_tag_1): Don't decl_set_module here.
* 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.
From-SVN: r253962
2017-10-20 22:22:34 +00:00
Nathan Sidwell
579d1325de
Merge trunk r253954.
...
From-SVN: r253957
2017-10-20 19:29:31 +00:00
Nathan Sidwell
f6b53630bd
tree.h (MARK_TS_TYPE_NON_COMMON): New.
...
Templates!
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.
From-SVN: r253722
2017-10-13 11:56:31 +00:00
Nathan Sidwell
bc312c35ae
cp-tree.h (TS_CP_BINDING, [...]): Delete.
...
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++.
From-SVN: r253689
2017-10-12 17:43:13 +00:00
Nathan Sidwell
3e328935bb
Module name can be a string const (-fmodules++)
...
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.
From-SVN: r253683
2017-10-12 15:32:28 +00:00
Nathan Sidwell
96d02bc2b1
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.
From-SVN: r253675
2017-10-12 11:13:15 +00:00
Nathan Sidwell
b6128ea03d
Merge trunk r253654.
...
From-SVN: r253655
2017-10-11 18:46:53 +00:00
Nathan Sidwell
41dce3cc0f
restore acceidentally reverted fragment
...
From-SVN: r253596
2017-10-10 16:56:51 +00:00
Nathan Sidwell
254f64988f
Revert unintented partial commit
...
From-SVN: r253592
2017-10-10 16:43:04 +00:00
Nathan Sidwell
c91bb177e8
Merge trunk r253585.
...
From-SVN: r253588
2017-10-10 15:58:00 +00:00
Nathan Sidwell
adc3e2d5a8
c_common_handle_option: Handle fmodules++.
...
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.
From-SVN: r253180
2017-09-25 23:41:24 +00:00
Nathan Sidwell
1361ebf680
Merge trunk 252831.
...
From-SVN: r252844
2017-09-15 20:11:07 +00:00
Boris Kolpackov
c9d956f552
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.
From-SVN: r250389
2017-07-20 14:26:42 +00:00
Nathan Sidwell
39dd9e4067
Merge trunk r250272.
...
From-SVN: r250273
2017-07-17 12:19:29 +00:00
Nathan Sidwell
e8ad501a6d
Merge trunk r250159.
...
From-SVN: r250186
2017-07-13 15:18:27 +00:00
Nathan Sidwell
79f74f570d
cp-tree.h (CLASSTYPE_CONSTRUCTORS, [...]): Use lookup_fnfields_slot_nolazy.
...
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.
From-SVN: r249937
2017-07-03 19:29:52 +00:00
Nathan Sidwell
2476f920c9
class.c (type_has_user_declared_move_constructor, [...]): Delete, replace with:
...
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.
From-SVN: r249936
2017-07-03 18:47:30 +00:00
Nathan Sidwell
d96559a024
class.c (maybe_warn_about_overly_private_class): Ignore copy/move ctors.
...
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.
From-SVN: r249932
2017-07-03 17:52:03 +00:00
Nathan Sidwell
42cfd553fe
module.c (cpms_{out,in}::start): Don't deal with identifiers here.
...
gcc/cp/
* module.c (cpms_{out,in}::start): Don't deal with identifiers
here.
(cpms_{out,in}::tree_node): Deal with identifiers specially.
From-SVN: r249921
2017-07-03 14:07:20 +00:00
Nathan Sidwell
c41a54ce0f
Merge trunk r249852.
...
From-SVN: r249910
2017-07-03 13:26:06 +00:00
Nathan Sidwell
9f555fc654
Merge trunk r249835.
...
From-SVN: r249837
2017-06-30 12:17:47 +00:00
Nathan Sidwell
12bdfdeabc
Merge trunk r249794.
...
From-SVN: r249796
2017-06-29 15:24:04 +00:00
Nathan Sidwell
f240af2a4c
cp-tree.h (class_method_index_for_fn): Delete.
...
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.
From-SVN: r249793
2017-06-29 15:13:27 +00:00
Nathan Sidwell
d114f65c55
Merge trunk r249779.
...
From-SVN: r249781
2017-06-29 11:43:58 +00:00
Nathan Sidwell
5b548b799b
class.c (finish_struct): Use OVL_P.
...
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.
From-SVN: r249779
2017-06-29 11:08:58 +00:00
Nathan Sidwell
b1fa94f301
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.
From-SVN: r249765
2017-06-28 22:37:15 +00:00
Nathan Sidwell
cd98475286
Merge trunk r249746.
...
From-SVN: r249747
2017-06-28 16:38:09 +00:00
Nathan Sidwell
4d6547528c
cp-tree.h (SET_CLASS_TYPE_P): Use RECORD_OR_UNION_CHECK.
...
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.
From-SVN: r249746
2017-06-28 16:33:11 +00:00
Nathan Sidwell
411ea20f1d
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
From-SVN: r249705
2017-06-27 18:16:07 +00:00
Nathan Sidwell
11692a542d
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/c-family/c-common.h
M gcc/c-family/c-common.c
M gcc/c/c-decl.c
M gcc/c/c-lang.h
M gcc/cp/ptree.c
M gcc/cp/cp-tree.h
M gcc/cp/name-lookup.c
M gcc/cp/name-lookup.h
M gcc/cp/module.c
M gcc/cp/decl.c
M gcc/cp/class.c
M gcc/cp/search.c
From-SVN: r249666
2017-06-26 19:52:37 +00:00
Nathan Sidwell
b42ddf51d9
Start moving class name lookup around
...
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.
((--This line, and those below, will be ignored--
M gcc/cp/name-lookup.h
M gcc/cp/class.c
M gcc/cp/search.c
M gcc/cp/cp-tree.h
M gcc/cp/name-lookup.c
M ChangeLog.modules
From-SVN: r249661
2017-06-26 17:42:46 +00:00
Nathan Sidwell
a9cf7782f6
Merge trunk r249657.
...
From-SVN: r249658
2017-06-26 16:51:14 +00:00
Nathan Sidwell
5eb957a398
cp-tree.h (lang_decl_fn): Remove assignment_operator_p field.
...
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.
From-SVN: r249654
2017-06-26 14:46:43 +00:00
Nathan Sidwell
9491b1d747
delete
...
From-SVN: r249653
2017-06-26 14:44:54 +00:00
Nathan Sidwell
c966f92798
Makefile.in (MODULE_STAMP): Set here
...
gcc/
* Makefile.in (MODULE_STAMP): Set here
(REVISION, REVISION_c): Override.
gcc/cp/
* Make-lang.in (MODULE_STAMP): Not here.
From-SVN: r249652
2017-06-26 14:44:27 +00:00
Nathan Sidwell
1a3e85ce84
missed changelog
...
From-SVN: r249646
2017-06-26 12:32:10 +00:00
Nathan Sidwell
f8ac9f9c33
cp-tree.h (DECL_COMPLETE_CONSTRUCTOR_P): Directly compare identifier.
...
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.
From-SVN: r249587
2017-06-23 12:29:19 +00:00
Nathan Sidwell
3dd962a721
Merge trunk r249572.
...
From-SVN: r249573
2017-06-22 19:02:58 +00:00
Nathan Sidwell
1f0a82ed14
Reorder IDENTIFIER flags
...
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.
From-SVN: r249570
2017-06-22 17:47:39 +00:00
Nathan Sidwell
ef36381f21
Merge trunk r249464.
...
From-SVN: r249465
2017-06-21 17:50:30 +00:00
Nathan Sidwell
ece30ddd03
c-ada-spec.c (decl_sloc): Ignore builtin fields.
...
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.
From-SVN: r249464
2017-06-21 16:54:25 +00:00
Nathan Sidwell
cadc8fe889
Merge trunk r249268.
...
From-SVN: r249269
2017-06-16 15:55:37 +00:00
Nathan Sidwell
ec1b8da11f
Merge trunk r249217.
...
libcc1/
* libcp1plugin.c (supplement_binding): Don't call
maybe_remove_implicit_alias.
From-SVN: r249218
2017-06-15 12:31:24 +00:00
Nathan Sidwell
1bc969cd7a
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.
From-SVN: r249216
2017-06-15 12:02:31 +00:00
Nathan Sidwell
f235906370
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.
From-SVN: r249205
2017-06-14 19:36:49 +00:00
Nathan Sidwell
8f78d25e6c
Merge trunk r249076.
...
From-SVN: r249118
2017-06-12 11:17:23 +00:00
Nathan Sidwell
5d5fd93e59
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.
From-SVN: r249076
2017-06-09 19:36:55 +00:00
Nathan Sidwell
a48e9755dc
Typeinfo streaming
...
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.
From-SVN: r249065
2017-06-09 17:08:40 +00:00
Nathan Sidwell
5745e25416
module.c (cpms_in::read_item, [...]): More diagnostics.
...
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.
From-SVN: r249021
2017-06-08 15:16:01 +00:00
Nathan Sidwell
1ae7e42233
module.c: Implement dump printf.
...
gcc/cp/
* module.c: Implement dump printf.
From-SVN: r249011
2017-06-08 12:50:53 +00:00
Nathan Sidwell
3b331161cc
Merge trunk r248972.
...
From-SVN: r248973
2017-06-07 14:18:47 +00:00
Nathan Sidwell
ffc3321c3e
module.c (cpms_{out,in}::core_vals): Stream block vars & abstract origin.
...
gcc/cp/
* module.c (cpms_{out,in}::core_vals): Stream block vars &
abstract origin.
From-SVN: r248972
2017-06-07 13:48:40 +00:00
Nathan Sidwell
47f0631554
Inline ctors/dtors
...
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.
From-SVN: r248937
2017-06-06 22:31:08 +00:00
Nathan Sidwell
6eb646424c
Member functions
...
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.
From-SVN: r248933
2017-06-06 20:47:22 +00:00
Nathan Sidwell
7bfad527f7
More PoD struct
...
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.
From-SVN: r248928
2017-06-06 17:58:00 +00:00
Nathan Sidwell
66d5fe8a6b
More Pod struct
...
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.
From-SVN: r248882
2017-06-05 17:31:26 +00:00
Nathan Sidwell
7fcbdccad8
Pod struct
...
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.
From-SVN: r248840
2017-06-02 16:52:13 +00:00
Nathan Sidwell
310ab7528f
Merge r248828.
...
From-SVN: r248829
2017-06-02 14:16:31 +00:00
Nathan Sidwell
dc311b5ba5
modules.c (cpms_out::core_vals, [...]): Don't stream structure fields etc.
...
gcc/cp/
* modules.c (cpms_out::core_vals, cpms_in::core_vals): Don't
stream structure fields etc.
From-SVN: r248828
2017-06-02 13:29:20 +00:00
Nathan Sidwell
8038f6e12a
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.
From-SVN: r248797
2017-06-01 17:40:46 +00:00
Nathan Sidwell
4167fe4f2d
* module.c: Instrumentation.
...
From-SVN: r248761
2017-05-31 19:14:48 +00:00
Nathan Sidwell
0bd22cf3aa
Merge trunk r248748.
...
From-SVN: r248750
2017-05-31 17:40:32 +00:00
Nathan Sidwell
e5ca94a1ce
Merge trunk r248694.
...
From-SVN: r248697
2017-05-30 19:46:34 +00:00
Nathan Sidwell
1361d1c421
Merge trunk r248694.
...
From-SVN: r248696
2017-05-30 19:38:29 +00:00
Nathan Sidwell
89e27a4737
module.c (cpms_out::tag_binding, [...]): Mark type too.
...
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.
From-SVN: r248690
2017-05-30 17:13:53 +00:00
Nathan Sidwell
25c9ee3443
cp-tree.h (lang_decl_base): Lose decomposition_p flag.
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/decl.c
M gcc/cp/cp-tree.h
M gcc/cp/module.c
M gcc/cp/lex.c
From-SVN: r248689
2017-05-30 15:41:37 +00:00
Nathan Sidwell
e751f7a436
REVISION: Add file.
...
gcc/
* REVISION: Add file.
gcc/c-family/
* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_modules=201704.
From-SVN: r248682
2017-05-30 11:42:46 +00:00
Nathan Sidwell
70d964ea98
Merge trunk r248578.
...
From-SVN: r248579
2017-05-29 20:10:47 +00:00
Nathan Sidwell
e624170cb6
Merge trunk r248574.
...
From-SVN: r248575
2017-05-29 15:35:32 +00:00
Nathan Sidwell
9ee9e034a6
Merge trunk r248571.
...
From-SVN: r248572
2017-05-29 13:32:27 +00:00
Nathan Sidwell
1de0e4e2ef
cp-tree.h: Comment cleanup.
...
gcc/cp/
* cp-tree.h: Comment cleanup.
* name-lookup.c: Likewise.
* tree.c: Likewise.
From-SVN: r248516
2017-05-26 14:51:38 +00:00
Nathan Sidwell
1ab3c0972e
Merge trunk 248485.
...
gcc/cp/
* lex.c (maybe_retrofit_lang_decl): Add sel parm.
From-SVN: r248509
2017-05-26 13:09:37 +00:00
Nathan Sidwell
d5c1fa2f56
cp-tree.h (ovl_iterator): Make unduplicatable.
...
gcc/cp/
* cp-tree.h (ovl_iterator): Make unduplicatable.
(ovl_iterator::pop): New.
(lkp_iterator::operator++): Adjust.
From-SVN: r248459
2017-05-25 14:27:05 +00:00
Nathan Sidwell
cdf1ecb779
Merge trunk r248454.
...
From-SVN: r248455
2017-05-25 11:09:12 +00:00
Nathan Sidwell
e9425553af
Merge trunk r248436.
...
From-SVN: r248453
2017-05-25 10:59:02 +00:00
Nathan Sidwell
9ec17a4e43
name-lookup.c (lookup_name): Reimplement state preservation and restoration.
...
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.
From-SVN: r248436
2017-05-24 23:21:25 +00:00
Nathan Sidwell
f9d60b967b
Merge trunk r248406.
...
From-SVN: r248409
2017-05-24 12:33:52 +00:00
Nathan Sidwell
945dff4cfe
call.c (build_operator_new_call, [...]): Open code ADL lookup.
...
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.
From-SVN: r248405
2017-05-24 11:25:52 +00:00
Nathan Sidwell
46050cb1d9
Merge trunk r248389.
...
From-SVN: r248391
2017-05-23 23:02:53 +00:00
Nathan Sidwell
9c1f94d4d7
name-lookup.c (name_lookup::name_lookup): Lose F parm.
...
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.
From-SVN: r248389
2017-05-23 21:39:42 +00:00
Nathan Sidwell
39745f2fc7
Merge trunk r248377.
...
From-SVN: r248378
2017-05-23 17:29:42 +00:00
Nathan Sidwell
fb0ad78e68
Merge trunk r248365.
...
From-SVN: r248367
2017-05-23 14:12:54 +00:00
Nathan Sidwell
452e24013c
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.
From-SVN: r248340
2017-05-22 16:37:30 +00:00
Nathan Sidwell
9cf247f54b
config-lang.in: Update.
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/name-lookup.c
M gcc/cp/config-lang.in
From-SVN: r248338
2017-05-22 16:02:39 +00:00
Nathan Sidwell
e4fc10e1c6
Merge trunk r248329.
...
From-SVN: r248331
2017-05-22 12:15:52 +00:00
Nathan Sidwell
e5aad7415c
re PR c++/80830 (ICE in tsubst_copy, at cp/pt.c:14569)
...
gcc/testsuite/
PR c++/80830
* g++.dg/lookup/friend20.C: New testcase.
From-SVN: r248329
2017-05-22 12:05:41 +00:00
Nathan Sidwell
c0d77de7f4
Merge trunk r248295.
...
From-SVN: r248296
2017-05-19 17:29:54 +00:00
Nathan Sidwell
c043f3de66
cp-tree.h: Misc cleanups.
...
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.
From-SVN: r248292
2017-05-19 15:37:34 +00:00
Nathan Sidwell
4605ee6961
Merge trunk r248285.
...
From-SVN: r248286
2017-05-19 14:28:46 +00:00
Nathan Sidwell
4555531fc1
Merge trunk r248271.
...
From-SVN: r248272
2017-05-19 13:22:09 +00:00
Nathan Sidwell
1fd80386f3
context.h (context::set_passes): New.
...
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.
From-SVN: r248203
2017-05-18 14:12:48 +00:00
Nathan Sidwell
ea28945915
cp-tree.h (lookup_add, [...]): Swap args.
...
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.
(--This line, and those below, will be ignored--
M gcc/cp/tree.c
M gcc/cp/cp-tree.h
M gcc/cp/pt.c
M gcc/cp/name-lookup.c
M ChangeLog.modules
From-SVN: r248196
2017-05-18 12:32:24 +00:00
Nathan Sidwell
abbf6a30a9
Merge trunk r248192.
...
From-SVN: r248194
2017-05-18 11:10:48 +00:00
Nathan Sidwell
a9d9f8c660
Merge trunk r248159.
...
From-SVN: r248162
2017-05-17 17:02:19 +00:00
Nathan Sidwell
384fca9cec
Merge trunk r248151.
...
* cp-tree.h (ovl_insert): Swap first two args. Update all uses.
From-SVN: r248154
2017-05-17 14:02:12 +00:00
Nathan Sidwell
28731428a1
Merge trunk r248144.
...
From-SVN: r248145
2017-05-17 11:26:55 +00:00
Nathan Sidwell
c42dff058d
Merge trunk r248126.
...
From-SVN: r248127
2017-05-16 19:41:37 +00:00
Nathan Sidwell
5a933bc12f
Merge trunk r248121.
...
From-SVN: r248126
2017-05-16 19:33:55 +00:00
Nathan Sidwell
69bdfcb892
Merge trunk r248116.
...
From-SVN: r248118
2017-05-16 16:01:13 +00:00
Nathan Sidwell
d3b7edd474
Merge trunk r248109.
...
From-SVN: r248116
2017-05-16 15:35:32 +00:00
Nathan Sidwell
530121e5b0
Merge trunk r248059.
...
From-SVN: r248061
2017-05-15 13:27:06 +00:00
Nathan Sidwell
ebecdad087
module.c (cpms_in::tag_definition): Robustify.
...
gcc/cp/
* module.c (cpms_in::tag_definition): Robustify.
From-SVN: r248059
2017-05-15 12:26:34 +00:00
Nathan Sidwell
88023d1c88
module.c (cpms_{in,out}): Rename {read,write}_tree to tree_node.
...
gcc/cp/
* module.c (cpms_{in,out}): Rename {read,write}_tree to tree_node.
From-SVN: r247990
2017-05-12 18:46:52 +00:00
Nathan Sidwell
977cb87fce
module.c (cpms_{in,out}): Rename read/write fns.
...
gcc/cp/
* module.c (cpms_{in,out}): Rename read/write fns.
From-SVN: r247989
2017-05-12 18:44:30 +00:00
Nathan Sidwell
1ab346a40b
More inline bodies
...
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.
From-SVN: r247987
2017-05-12 18:28:02 +00:00
Nathan Sidwell
96beb6a27e
Inline function bodies
...
Inline function bodies
gcc/cp/
* module.c (cpms_out::write_tree, cpms_in::read_tree): Read/write
exprs
(cpms_in::tag_definition): Insert inline function.
gcc/testsuite/
* g++.dg/modules/fn-inline-1_[ab].C: New.
From-SVN: r247983
2017-05-12 17:05:57 +00:00
Nathan Sidwell
64f4de7946
Merge trunk r247968.
...
From-SVN: r247982
2017-05-12 17:05:27 +00:00
Nathan Sidwell
f66a048a5b
module.c (cpm_reader::read_tree): Change interface, adjust callers.
...
gcc/cp/
* module.c (cpm_reader::read_tree): Change interface, adjust
callers.
From-SVN: r247968
2017-05-12 12:53:31 +00:00
Nathan Sidwell
0db20e1273
module.c (cpm_writer): Instrument bool distribution.
...
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.
From-SVN: r247965
2017-05-12 11:56:29 +00:00
Nathan Sidwell
7c50ce43b2
Merge trunk r247911.
...
From-SVN: r247912
2017-05-11 15:29:58 +00:00
Nathan Sidwell
9ea9003325
Merge trunk r247864.
...
From-SVN: r247865
2017-05-10 21:43:22 +00:00
Nathan Sidwell
580f14ba91
Merge trunk r247834.
...
From-SVN: r247846
2017-05-10 16:56:08 +00:00
Nathan Sidwell
de6dc88a58
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.
From-SVN: r247811
2017-05-09 19:36:13 +00:00
Nathan Sidwell
265a96c8c4
module.c (cpms_in::finish): Merge global decls.
...
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.
From-SVN: r247809
2017-05-09 17:43:39 +00:00
Nathan Sidwell
9fb501c112
tree.h (TREE_CHECK6, [...]): Delete.
...
gcc/
* tree.h (TREE_CHECK6, tree_check6): Delete.
From-SVN: r247802
2017-05-09 15:44:18 +00:00
Nathan Sidwell
e8badd9900
Merge trunk r247787.
...
gcc/cp/
* tree.c (type_has_nontrivial_copy_init): Use ovl_iterator.
From-SVN: r247788
2017-05-09 11:51:51 +00:00
Nathan Sidwell
f929e308a3
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.
From-SVN: r247787
2017-05-09 11:35:27 +00:00
Nathan Sidwell
f19e591a7d
Merge trunk r247749.
...
From-SVN: r247751
2017-05-08 17:44:58 +00:00
Nathan Sidwell
4bcf7e8331
Implement 'export module foo;'
...
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.
From-SVN: r247749
2017-05-08 17:26:06 +00:00
Nathan Sidwell
832e0e7e4e
Implement DR2061
...
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.
From-SVN: r247740
2017-05-08 13:56:14 +00:00
Nathan Sidwell
d3e3dd49ca
cp-tree.h, [...]: Rename ovl2_iterator to lkp_iterator.
...
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.
From-SVN: r247736
2017-05-08 11:11:28 +00:00
Nathan Sidwell
318f1d4246
name-lookup.h (push_namespace): Return int.
...
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.
From-SVN: r247735
2017-05-08 11:07:06 +00:00
Nathan Sidwell
924e0eb5d9
Merge trunk r247654.
...
From-SVN: r247656
2017-05-05 20:14:29 +00:00
Nathan Sidwell
402cf7223e
Merge trunk r247646.
...
From-SVN: r247651
2017-05-05 17:46:35 +00:00
Nathan Sidwell
48423d1e63
Merge trunk r247636.
...
From-SVN: r247637
2017-05-05 15:04:35 +00:00
Nathan Sidwell
1b6eaa318a
Indirect import lookup by tagging
...
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.
From-SVN: r247636
2017-05-05 14:50:44 +00:00
Nathan Sidwell
8b99b4e2a2
Merge trunk r247612.
...
gcc/testsuite/
* g++.dg/lookup/using17.C: Adjust error message.
From-SVN: r247616
2017-05-04 18:54:54 +00:00
Nathan Sidwell
046c9c5bd9
Overload bindings
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/name-lookup.c
M gcc/cp/name-lookup.h
M gcc/cp/module.c
M gcc/testsuite/g++.dg/modules/mod-impl-1_a.C
M gcc/testsuite/g++.dg/modules/mod-impl-1_b.C
M gcc/testsuite/g++.dg/modules/mod-impl-1_c.C
M gcc/testsuite/g++.dg/modules/mod-impl-1_d.C
From-SVN: r247611
2017-05-04 17:59:55 +00:00
Nathan Sidwell
f3917f0de3
Merge trunk r247593.
...
From-SVN: r247595
2017-05-04 13:05:14 +00:00
Nathan Sidwell
e60010ec61
cp-tree.h (LOOKUP_SEEN_P): Map to TREE_VISITED.
...
gcc/cp/
* cp-tree.h (LOOKUP_SEEN_P): Map to TREE_VISITED.
(LOOKUP_FOUND_P, OVL_LOOKUP_P): Move to lang_flag_4
From-SVN: r247593
2017-05-04 12:44:40 +00:00
Nathan Sidwell
92a0efd3d3
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.
From-SVN: r247568
2017-05-03 20:39:41 +00:00
Nathan Sidwell
4ec0aa9a73
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.
((--This line, and those below, will be ignored--
M gcc/cp/name-lookup.c
M gcc/cp/module.c
M gcc/cp/parser.c
M gcc/cp/cp-tree.h
M gcc/testsuite/g++.dg/modules/mod-sym-1.C
M gcc/testsuite/g++.dg/modules/mod-sym-2.C
M gcc/testsuite/g++.dg/modules/mod-sym-3.C
M gcc/testsuite/g++.dg/modules/mod-impl-1_a.C
M ChangeLog.modules
From-SVN: r247567
2017-05-03 20:30:40 +00:00
Nathan Sidwell
395d5f4405
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.
From-SVN: r247565
2017-05-03 19:29:12 +00:00
Nathan Sidwell
bb051f869d
Merge trunk r247550.
...
From-SVN: r247551
2017-05-03 15:21:21 +00:00
Nathan Sidwell
92e6d5994e
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/cp-tree.h
M gcc/cp/name-lookup.c
M gcc/cp/module.c
M gcc/cp/tree.c
M gcc/cp/ptree.c
From-SVN: r247549
2017-05-03 14:02:16 +00:00
Nathan Sidwell
c2fb763c13
cp-tree.h (saved_scope): Add this_module.
...
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.
From-SVN: r247511
2017-05-02 16:06:00 +00:00
Nathan Sidwell
b47d070228
invoke.texi (-fdump-front-end): Document.
...
gcc/doc/
* invoke.texi (-fdump-front-end): Document.
From-SVN: r247500
2017-05-02 14:52:43 +00:00
Nathan Sidwell
3142930726
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 (write_module_namespace): Declare.
* name-lookup.c (write_module_namespace): New.
From-SVN: r247499
2017-05-02 14:42:05 +00:00
Nathan Sidwell
f8a6f2f19b
Read/write direct namespace bindings
...
Read/write direct namespace bindings
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.
From-SVN: r247496
2017-05-02 12:45:48 +00:00
Nathan Sidwell
fa5197daa4
augment comment
...
From-SVN: r247454
2017-05-01 23:35:22 +00:00
Nathan Sidwell
0825e35b2a
tree.c (type_hash_default): Adjust ARRAY_TYPE hash.
...
gcc/
* tree.c (type_hash_default): Adjust ARRAY_TYPE hash.
From-SVN: r247451
2017-05-01 23:20:47 +00:00
Nathan Sidwell
1e7d43535f
Import timestamp & crc
...
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.
From-SVN: r247442
2017-05-01 17:48:35 +00:00
Nathan Sidwell
ca120352cb
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.
From-SVN: r247437
2017-05-01 13:01:54 +00:00
Nathan Sidwell
f6d09c360e
cp-tree.h (struct_lang_base): Add module_index.
...
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.
From-SVN: r247396
2017-04-28 18:59:12 +00:00
Nathan Sidwell
b3d14ad561
Module indices and separated import/export info
...
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.
(--This line, and those below, will be ignored--
M gcc/cp/module.c
M gcc/cp/parser.c
M gcc/cp/cp-tree.h
M gcc/testsuite/g++.dg/modules/mod-decl-5_b.C
M ChangeLog.modules
From-SVN: r247392
2017-04-28 14:56:52 +00:00
Nathan Sidwell
98c9c55edf
Kill rt_import popping madness
...
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.
From-SVN: r247348
2017-04-27 17:33:18 +00:00
Nathan Sidwell
22e8865ec0
Kill walk_namespaces
...
Kill walk_namespaces
gcc/cp/
* cp-tree.h (walk_namespaces): Delete.
* decl.c (walk_namespaces_r, walk_namespaces): Delete.
From-SVN: r247345
2017-04-27 15:04:19 +00:00
Nathan Sidwell
f0b7c7bbaf
Rework module namespace walking
...
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.
From-SVN: r247344
2017-04-27 15:02:11 +00:00
Nathan Sidwell
e9187e4200
Refix unhidden extern C Revert 2017-04-26 extern_c_slot patch.
...
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.
From-SVN: r247336
2017-04-27 13:44:32 +00:00
Nathan Sidwell
8d7efa7ef2
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.
From-SVN: r247325
2017-04-27 12:16:23 +00:00
Nathan Sidwell
2102e57e2d
name-lookup.c (extern_c_slot): New.
...
gcc/cp/
* name-lookup.c (extern_c_slot): New.
(check_extern_c_conflict): Use it.
(unhidden_extern_c): New.
(do_puhdecl): Call it.
From-SVN: r247280
2017-04-26 16:44:33 +00:00
Nathan Sidwell
d6768188fa
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.
From-SVN: r247278
2017-04-26 14:09:56 +00:00
Nathan Sidwell
fffa8f684c
name-lookup.c (find_namespace_binding): Return slot pointer.
...
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.
From-SVN: r247255
2017-04-25 16:15:41 +00:00
Nathan Sidwell
3476928127
name-lookup.c (extern_c_fns): New hash.
...
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.
From-SVN: r247245
2017-04-25 14:30:46 +00:00
Nathan Sidwell
a323be85cc
Namespace stat hack via special overload
...
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.
((--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/name-lookup.c
From-SVN: r247185
2017-04-25 11:02:34 +00:00
Nathan Sidwell
f939909286
name-lookup.c (add_local_decl): Delete.
...
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.
From-SVN: r247112
2017-04-24 20:35:40 +00:00
Nathan Sidwell
7da6084ad9
name-lookup.c (do_nonmember_using_decl): Pass in pointers to value and type nodes.
...
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.
From-SVN: r247106
2017-04-24 17:03:09 +00:00
Nathan Sidwell
7b72950993
name-lookup.c (diagnose_name_conflict): Check decl context.
...
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,
From-SVN: r247100
2017-04-24 14:16:34 +00:00
Nathan Sidwell
534f7d8bbc
cp-tree.h (SET_IDENTIFIER_GLOBAL_VALUE): Update.
...
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.
From-SVN: r247096
2017-04-24 13:00:20 +00:00
Nathan Sidwell
6813379fbf
cp-tree.h (ovl_lookup_keep, [...]): Rename to ...
...
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.
From-SVN: r247013
2017-04-20 06:55:21 +00:00
Nathan Sidwell
853ad69d56
Keep overloads correctly ordered
...
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.
From-SVN: r247012
2017-04-20 06:33:21 +00:00
Nathan Sidwell
761e550abc
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.
From-SVN: r246931
2017-04-14 21:02:39 +00:00
Nathan Sidwell
810dfd85ff
backport: name-lookup.c (add_namespace_decl): Delete.
...
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.
From-SVN: r246928
2017-04-14 11:44:27 +00:00
Nathan Sidwell
5dbb7fbad9
lex.c (unqualified_name_lookup_error): Use pushdecl.
...
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.
From-SVN: r246920
2017-04-13 20:30:56 +00:00
Nathan Sidwell
4c5bc6f9fc
Unify binding push part 7
...
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.
From-SVN: r246916
2017-04-13 18:58:46 +00:00
Nathan Sidwell
71b63835b7
Cleanup pushdecl interface
...
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.
From-SVN: r246915
2017-04-13 18:17:59 +00:00
Nathan Sidwell
377d8946dd
Some cleanups
...
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.
From-SVN: r246913
2017-04-13 17:37:50 +00:00
Nathan Sidwell
0dc1f35119
Unifying binding push part 5
...
Unifying binding push part 5
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.
From-SVN: r246912
2017-04-13 17:17:17 +00:00
Nathan Sidwell
23bc933bdf
Unifying binding push part 5
...
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.
From-SVN: r246905
2017-04-13 14:17:44 +00:00
Nathan Sidwell
6f5b99c355
Unifying binding push part 4
...
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.
From-SVN: r246895
2017-04-12 19:26:49 +00:00
Nathan Sidwell
327cbef4e7
Separating namespace bindings part 18
...
Separating namespace bindings part 18
gcc/cp/
* name-lookup.c (create_local_binding) New.
(do_local_push_overload): Turn into ...
(local_push_binding): ... this.
(do_pushdecl): Adjust.
From-SVN: r246878
2017-04-12 15:39:09 +00:00
Nathan Sidwell
4cc4d77d7d
Separating namespace bindings part 17
...
Separating namespace bindings part 17
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
From-SVN: r246872
2017-04-12 13:23:13 +00:00
Nathan Sidwell
17b2e5f7be
Separating namespace bindings part 16
...
Separating namespace bindings part 16
gcc/cp/
* name-lookup.c (do_pusdecl): Skip using decls. Retain namespace.
From-SVN: r246870
2017-04-12 11:31:10 +00:00
Nathan Sidwell
56c5e38777
Separating namespace bindings part 15
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/testsuite/g++.dg/parse/ctor9.C
A gcc/testsuite/g++.dg/lookup/extern-redecl1.C
M gcc/cp/cp-tree.h
M gcc/cp/name-lookup.c
M gcc/cp/lex.c
M gcc/cp/name-lookup.h
From-SVN: r246852
2017-04-11 17:54:10 +00:00
Nathan Sidwell
1f7da887cf
Separating namespace bindings part 14
...
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.
From-SVN: r246841
2017-04-11 14:36:55 +00:00
Nathan Sidwell
4f3bce8e57
Separating namespace bindings part 12
...
Separating namespace bindings part 12
gcc/cp/
* name-lookup.c (do_pushdecl): Move overload pushing next to
non-overload pushing.
From-SVN: r246836
2017-04-11 11:17:29 +00:00
Nathan Sidwell
c48a58d497
Separating namespace bindings part 11
...
Separating namespace bindings part 11
gcc/cp/
* name-lookup.c (check_local_shadow): Move lookup code to here ...
(do_pushdecl): ... from here.
From-SVN: r246822
2017-04-10 20:24:44 +00:00
Nathan Sidwell
be1946ecc8
Separating namespace bindings part 10
...
Separating namespace bindings part 10
gcc/cp/
* name-lookup.c (do_pushdecl): Reorder & delete more obsolete code.
From-SVN: r246821
2017-04-10 20:02:22 +00:00
Nathan Sidwell
5b6b46ea07
Separating namespace bindings part 9
...
Separating namespace bindings part 9
gcc/cp/
* name-lookup.c (do_pushdecl): Delete a tonne of obsolete code.
From-SVN: r246815
2017-04-10 18:00:54 +00:00
Nathan Sidwell
62132f560d
Fix bogus scope handling
...
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.
From-SVN: r246771
2017-04-07 17:57:25 +00:00
Nathan Sidwell
bc22b5b765
Separating namespace bindings part 8
...
Separating namespace bindings part 8
gcc/cp/
* name-lookup.c (do_pushdecl): Kill obsolete C-era code!
From-SVN: r246740
2017-04-06 18:55:26 +00:00
Nathan Sidwell
5a451db8ed
Separating namespace bindings part 6
...
Separating namespace bindings part 6
gcc/cp/
* name-lookup.c (check_local_shadow, set_decl_context_in_fn):
Break
out and simplify from ...
(do_pushdecl): ... here. Call them.
From-SVN: r246736
2017-04-06 17:16:41 +00:00
Nathan Sidwell
e66251710d
Separating namespace bindings part 6
...
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.
From-SVN: r246727
2017-04-06 12:19:24 +00:00
Nathan Sidwell
a44a61a8c3
Separating namespace bindings part 5
...
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.
From-SVN: r246718
2017-04-05 19:11:34 +00:00
Nathan Sidwell
cb9e3b43ff
Separating namespace bindings part 4
...
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.
From-SVN: r246709
2017-04-05 15:39:48 +00:00
Nathan Sidwell
a08ab803c9
Separating namespace bindings part 3
...
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.
From-SVN: r246705
2017-04-05 14:47:32 +00:00
Nathan Sidwell
20436d4091
Separating namespace bindings part 2
...
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.
From-SVN: r246704
2017-04-05 14:26:23 +00:00
Nathan Sidwell
4f4e53d0dd
name-lookup.h (get_global_value_if_present) is_typename_at_global_scope): Delete.
...
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.
From-SVN: r246692
2017-04-04 18:56:47 +00:00
Nathan Sidwell
efc9fd75f9
cp-tree.h (CPTI_INIT_LIST_IDENTIFIER, [...]): New.
...
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.
From-SVN: r246687
2017-04-04 17:53:59 +00:00
Nathan Sidwell
3864609ddb
Separating namespace bindings part 1
...
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.
From-SVN: r246685
2017-04-04 17:24:32 +00:00
Nathan Sidwell
1395cb732a
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.
From-SVN: r246649
2017-04-03 15:39:39 +00:00
Nathan Sidwell
6e529924ba
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.
((--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/decl.c
M gcc/cp/tree.c
M gcc/cp/cp-tree.h
M gcc/cp/name-lookup.c
M gcc/cp/name-lookup.h
From-SVN: r246647
2017-04-03 11:23:16 +00:00
Nathan Sidwell
811cb44e3e
Reimplement unqualified namespace lookup
...
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.
((--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/name-lookup.c
A gcc/testsuite/g++.dg/lookup/lambda1.C
From-SVN: r246623
2017-03-31 18:49:12 +00:00
Nathan Sidwell
49e67a014c
name-lookup.c (name_lookup::scopes): Make static.
...
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.
From-SVN: r246615
2017-03-31 12:49:23 +00:00
Nathan Sidwell
be149ec9e5
dump.c (cp_dump_tree): Allow nested overloads.
...
gcc/cp/
* dump.c (cp_dump_tree): Allow nested overloads.
From-SVN: r246593
2017-03-30 17:57:42 +00:00
Nathan Sidwell
66596af6a4
Add SCOPE_DEPTH
...
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.
From-SVN: r246592
2017-03-30 17:57:17 +00:00
Nathan Sidwell
ab7d9531a8
Reimplement qualified namespace lookup
...
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.
From-SVN: r246591
2017-03-30 15:25:26 +00:00
Nathan Sidwell
1c074986ac
pt.c (determine_specialization): Use 2-d iterator
...
gcc/cp/
* pt.c (determine_specialization): Use 2-d iterator
From-SVN: r246590
2017-03-30 15:24:43 +00:00
Nathan Sidwell
8627712c3d
cp-tree.h (LOOKUP_MARKED_P, [...]): Rename to ...
...
gcc/cp/
* cp-tree.h (LOOKUP_MARKED_P, RECORD_MARKED_P): Rename to ...
(LOOKUP_SEEN_P, LOOKUP_FOUND_P): ... here. Update everywhere.
From-SVN: r246571
2017-03-29 14:44:48 +00:00
Nathan Sidwell
39aad24534
name-lookup.c (arg_assoc::assoc_expr): Refactor.
...
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.
From-SVN: r246568
2017-03-29 12:57:02 +00:00
Nathan Sidwell
1278c39cde
Kill DECL_NAMESPACE_ASSOCATIONS
...
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.
From-SVN: r246565
2017-03-29 12:01:27 +00:00
Nathan Sidwell
764954a3eb
lambda.c (maybe_add_lambda_conv_op): Use namespace_bindings_p.
...
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.
From-SVN: r246564
2017-03-29 10:36:40 +00:00
Nathan Sidwell
3af6140de8
name-lookup.h (finish_namespace_using_directive): Rename from ...
...
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.
From-SVN: r246562
2017-03-29 10:21:12 +00:00
Nathan Sidwell
a4aea4c7c6
Cleanup pushdecl_top_level
...
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.
(--This line, and those below, will be ignored--
M gcc/cp/name-lookup.h
M gcc/cp/pt.c
M gcc/cp/cp-tree.h
M gcc/cp/decl.c
M gcc/cp/rtti.c
M gcc/cp/name-lookup.c
M gcc/cp/decl2.c
M ChangeLog.modules
From-SVN: r246552
2017-03-28 19:16:21 +00:00
Nathan Sidwell
4203e66ad5
Cleanup pushdecl
...
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.
From-SVN: r246551
2017-03-28 18:47:14 +00:00
Nathan Sidwell
c47cda83ac
Cleanup namespace push/pop part 2
...
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.
From-SVN: r246544
2017-03-28 16:52:42 +00:00
Nathan Sidwell
88434e14d1
Cleanup namespace push/pop
...
Cleanup namespace push/pop
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.
((((--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/name-lookup.h
M gcc/cp/cp-tree.h
M gcc/cp/decl.c
M gcc/cp/name-lookup.c
From-SVN: r246539
2017-03-28 15:24:20 +00:00
Nathan Sidwell
cddc4035a9
Cleanup using-directives
...
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.
(--This line, and those below, will be ignored--
M gcc/testsuite/g++.dg/lookup/strong-using-6.C
M gcc/cp/tree.c
M gcc/cp/cp-tree.h
M gcc/cp/pt.c
M gcc/cp/name-lookup.c
M gcc/cp/name-lookup.h
M gcc/cp/parser.c
M ChangeLog.modules
From-SVN: r246535
2017-03-28 14:17:06 +00:00
Nathan Sidwell
d5716a7681
Kill strong using
...
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.
From-SVN: r246531
2017-03-28 11:53:51 +00:00
Nathan Sidwell
2d2dab31cd
Simplify ADL part 2
...
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.
From-SVN: r246501
2017-03-27 14:01:01 +00:00
Nathan Sidwell
9d61795051
tree.h (TREE_CHECK6): New.
...
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.
From-SVN: r246466
2017-03-24 17:46:11 +00:00
Nathan Sidwell
51565f2112
cp-tree.h (ovl2_iterator::operator++): Tweak.
...
gcc/cp/
* cp-tree.h (ovl2_iterator::operator++): Tweak.
From-SVN: r246465
2017-03-24 16:58:44 +00:00
Nathan Sidwell
0b4796777d
Tweak
...
From-SVN: r246464
2017-03-24 16:46:15 +00:00
Nathan Sidwell
08fa8ee703
Simplify ADL part 1
...
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.
From-SVN: r246463
2017-03-24 16:45:05 +00:00
Nathan Sidwell
d74e0ac93d
Fixup transient_p bug
...
Fixup transient_p bug
gcc/cp/
* tree.c (ovl_add): Set TRANSIENT_P here.
(ovl_add_transient): Not here.
From-SVN: r246432
2017-03-24 02:10:16 +00:00
Nathan Sidwell
f1f91f036b
cp-tree.h (type_unknown_p): Make inline.
...
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.
From-SVN: r246427
2017-03-23 20:23:21 +00:00
Nathan Sidwell
f066562ac5
cp-tree.h (OVL_P, [...]): New.
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/cp-tree.h
M gcc/cp/name-lookup.c
From-SVN: r246421
2017-03-23 17:18:12 +00:00
Nathan Sidwell
ebd076f807
Two dimensional OVERLOADs
...
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.
From-SVN: r246420
2017-03-23 16:47:17 +00:00
Nathan Sidwell
744509bac9
add comment
...
From-SVN: r246393
2017-03-22 17:30:57 +00:00
Nathan Sidwell
ada2f51267
name-lookup.c (lookup_qualified_name): Unwrap singleton overload.
...
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.
From-SVN: r246390
2017-03-22 16:29:00 +00:00
Nathan Sidwell
29524cc00a
name-lookup.c (lookup_name_real_1): Don's skip hidden here.
...
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.
From-SVN: r246344
2017-03-22 02:41:37 +00:00
Nathan Sidwell
c49455c0c2
Refactor lookup part 1
...
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.
From-SVN: r246338
2017-03-21 23:58:56 +00:00
Nathan Sidwell
3d134dc800
Keep hidden overloads at start of list
...
Keep hidden overloads at start of 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.
(--This line, and those below, will be ignored--
A gcc/testsuite/g++.dg/lookup/friend19.C
A gcc/testsuite/g++.dg/lookup/using56.C
M gcc/cp/pt.c
M gcc/cp/cp-tree.h
M gcc/cp/decl.c
M gcc/cp/name-lookup.c
M gcc/cp/tree.c
From-SVN: r246332
2017-03-21 18:37:35 +00:00
Nathan Sidwell
be271c2922
New OVERLOAD representation part 6
...
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.
From-SVN: r246198
2017-03-16 14:40:26 +00:00
Nathan Sidwell
14e655206c
New OVERLOAD representation part 5
...
New OVERLOAD representation part 5
gcc/cp/
* cp-tree.h (OVL_NEXT): Delete. Update uses.
(OVL_CHAIN): Check for overload.
From-SVN: r246195
2017-03-16 13:57:17 +00:00
Nathan Sidwell
3e775337d3
New OVERLOAD representation part 4
...
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.
From-SVN: r246194
2017-03-16 13:31:42 +00:00
Nathan Sidwell
65369f7a1e
New OVERLOAD representation part 3
...
New OVERLOAD representation part 3
gcc/cp/
* cp-tree.h: Remove OVLNEW pieces.
* tree.c: Likewise.
From-SVN: r246193
2017-03-16 13:05:45 +00:00
Nathan Sidwell
9121170048
New OVERLOAD representation part 2
...
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.
From-SVN: r246192
2017-03-16 12:50:55 +00:00
Nathan Sidwell
87e9483105
New OVERLOAD representation part 1
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/tree.c
M gcc/cp/cp-tree.h
From-SVN: r246172
2017-03-15 19:38:07 +00:00
Nathan Sidwell
f061d25698
Vectorize OVERLOAD part 9
...
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.
From-SVN: r246171
2017-03-15 18:40:14 +00:00
Nathan Sidwell
2a3c375552
Vectorize OVERLOAD part 8
...
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.
From-SVN: r246169
2017-03-15 17:13:38 +00:00
Nathan Sidwell
715d46e75b
Vectorize OVERLOAD part 7
...
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.
From-SVN: r246164
2017-03-15 14:35:02 +00:00
Nathan Sidwell
bd628b05a9
Vectorize OVERLOAD part 6
...
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.
From-SVN: r246159
2017-03-15 12:47:37 +00:00
Nathan Sidwell
774664816a
Add OVERLOAD iterator part 8
...
Add OVERLOAD iterator part 8
gcc/cp/
* name-lookup.c (do_nonmember_using_decl): Use iterators
From-SVN: r246158
2017-03-15 12:01:48 +00:00
Nathan Sidwell
16a74d2d8c
Add OVERLOAD iterator part 6
...
Add OVERLOAD iterator part 6
gcc/cp/
* name-lookup.c (pushdecl_maybe_friend_1): Use OVL_FIRST.
(push_overloaded_decl_1): Use iterators.
(consider_binding_level): Use OVL_FIRST.
From-SVN: r246157
2017-03-15 11:35:15 +00:00
Nathan Sidwell
8e03e2876d
Add OVERLOAD iterator part 6
...
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.
From-SVN: r246141
2017-03-14 20:33:37 +00:00
Nathan Sidwell
3a1ebda2c2
Vectorize OVERLOAD part 5
...
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.
From-SVN: r246140
2017-03-14 19:50:31 +00:00
Nathan Sidwell
3b2cfc7e53
Vectorize OVERLOAD part 5
...
Vectorize OVERLOAD part 5
* 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.
From-SVN: r246139
2017-03-14 17:57:25 +00:00
Nathan Sidwell
0a12cc87c9
Add OVERLOAD iterator part 5
...
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.
From-SVN: r246136
2017-03-14 16:15:58 +00:00
Nathan Sidwell
2703163e54
Change add_method signature
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/semantics.c
M gcc/cp/lambda.c
M gcc/cp/cp-tree.h
M gcc/cp/class.c
M gcc/cp/method.c
From-SVN: r246123
2017-03-14 13:36:43 +00:00
Nathan Sidwell
ed16a4f609
Kill get_first_fn part 3
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/tree.c
M gcc/cp/typeck.c
M gcc/cp/pt.c
M gcc/cp/cp-tree.h
From-SVN: r246104
2017-03-13 18:24:18 +00:00
Nathan Sidwell
2474ff1496
Kill get_first_fn part 2
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/lambda.c
M gcc/cp/semantics.c
M gcc/cp/name-lookup.c
M gcc/cp/tree.c
M gcc/cp/mangle.c
M gcc/cp/search.c
M gcc/cp/typeck2.c
M gcc/cp/constexpr.c
M gcc/cp/error.c
M gcc/cp/parser.c
M gcc/cp/cp-tree.h
From-SVN: r246102
2017-03-13 17:52:38 +00:00
Nathan Sidwell
e635900fff
Kill get_first_fn part 1
...
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.
From-SVN: r246099
2017-03-13 16:30:24 +00:00
Nathan Sidwell
03becee564
Kill get_fns
...
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.
From-SVN: r246097
2017-03-13 15:22:08 +00:00
Nathan Sidwell
d1567b5046
Kill ovl_cons
...
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.
From-SVN: r246095
2017-03-13 14:43:52 +00:00
Nathan Sidwell
e363f1042d
Kill build_overload
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/cp-tree.h
M gcc/cp/name-lookup.c
M gcc/cp/class.c
M gcc/cp/tree.c
M gcc/cp/pt.c
M gcc/cp/constraint.cc
From-SVN: r246094
2017-03-13 14:19:37 +00:00
Nathan Sidwell
9152fd207f
Rename OVL_USED
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/class.c
M gcc/cp/tree.c
M gcc/cp/cp-tree.h
M gcc/cp/search.c
M gcc/cp/name-lookup.c
From-SVN: r246093
2017-03-13 13:42:00 +00:00
Nathan Sidwell
3384344885
Add OVERLOAD iterator part 4
...
Add OVERLOAD iterator part 4
gcc/cp/
* tree.c (cp_tree_equal): Use ovl_iterator.
From-SVN: r246092
2017-03-13 13:20:10 +00:00
Nathan Sidwell
0c118822f5
Vectorize OVERLOAD part 4
...
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.
From-SVN: r246086
2017-03-13 12:51:48 +00:00
Nathan Sidwell
160e6d485f
Add OVERLOAD iterator part 6
...
Add OVERLOAD iterator part 6
gcc/cp/
* search.c (lookup_field_fuzzy_info::fuzzy_lookup_fn)
lookup_conversion_operator, lookup_fnfields_idx_nolazy,
lookup_conversions_r): Use new accessors.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/search.c
From-SVN: r246057
2017-03-10 20:44:02 +00:00
Nathan Sidwell
d723447607
Add OVERLOAD iterator part 5
...
Add OVERLOAD iterator part 5
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.
((--This line, and those below, will be ignored--
M gcc/cp/parser.c
M gcc/cp/ptree.c
M gcc/cp/error.c
M gcc/cp/dump.c
M gcc/cp/decl2.c
M gcc/cp/init.c
M gcc/cp/pt.c
M ChangeLog.modules
From-SVN: r246056
2017-03-10 20:31:46 +00:00
Nathan Sidwell
ef4e9096ea
Add OVERLOAD iterator part 4
...
Add OVERLOAD iterator part 4
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.
(((--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/mangle.c
M gcc/cp/cp-tree.h
M gcc/cp/typeck.c
M gcc/cp/class.c
M gcc/cp/decl.c
M gcc/cp/method.c
M gcc/cp/cxx-pretty-print.c
M gcc/cp/parser.c
M gcc/cp/call.c
From-SVN: r246050
2017-03-10 19:29:25 +00:00
Nathan Sidwell
e3a5c1af37
Makefile-supplied timestamp.
...
gcc/cp
* Make-lang.in: Provide MODULE_STAMP.
* module.c (cpm_stream::version): Use MODULE_STAMP, not __DATE__ &
__TIME__.
From-SVN: r246048
2017-03-10 19:23:36 +00:00
Nathan Sidwell
5e2a84cd17
Add OVERLOAD iterator part 3
...
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.
((--This line, and those below, will be ignored--
M gcc/cp/pt.c
M gcc/cp/name-lookup.c
M ChangeLog.modules
From-SVN: r246041
2017-03-10 16:28:56 +00:00
Nathan Sidwell
2705f9bd91
Add OVERLOAD iterator part 2
...
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.
(--This line, and those below, will be ignored--
M gcc/cp/typeck.c
M gcc/cp/class.c
M gcc/cp/semantics.c
M gcc/cp/decl2.c
M gcc/cp/parser.c
M ChangeLog.modules
From-SVN: r246033
2017-03-10 15:25:34 +00:00
Nathan Sidwell
c4482ae71e
Add OVERLOAD iterator, part 1 Add MAYBE_BASELINK_FUNCTIONS
...
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.
((((--This line, and those below, will be ignored--
M gcc/cp/parser.c
M gcc/cp/cp-tree.h
M gcc/cp/lambda.c
M gcc/cp/semantics.c
M gcc/cp/name-lookup.c
M gcc/cp/tree.c
M gcc/cp/search.c
M gcc/cp/typeck.c
M gcc/cp/call.c
M gcc/cp/method.c
M ChangeLog.modules
From-SVN: r246031
2017-03-10 14:37:21 +00:00
Nathan Sidwell
b6b84b649e
cp-tree.h (NAMESPACE_CHECK): Delete.
...
gcc/cp/
* gcc/cp/cp-tree.h (NAMESPACE_CHECK): Delete.
(MODULE_NAMESPACE_P, GLOBAL_MODULE_NAMESPACE)
NAMESPACE_INLINE_P): Adjust.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/cp-tree.h
From-SVN: r246030
2017-03-10 14:32:56 +00:00
Nathan Sidwell
4416f027e4
modules.exp: Protect DEFAULT_CXXFLAGS.
...
gcc/testsuite/
* g++.dg/modules/modules.exp: Protect DEFAULT_CXXFLAGS.
From-SVN: r246028
2017-03-10 14:25:09 +00:00
Nathan Sidwell
887d73bb72
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.
From-SVN: r245920
2017-03-06 13:14:42 +00:00
Nathan Sidwell
20589ff6be
Optimize crc.
...
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.
From-SVN: r245902
2017-03-05 17:22:30 +00:00
Nathan Sidwell
603a379c42
Redo bool read/write
...
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.
From-SVN: r245899
2017-03-05 02:03:34 +00:00
Nathan Sidwell
ab634a905a
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.
From-SVN: r245898
2017-03-05 01:56:42 +00:00
Nathan Sidwell
8dd29152f7
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.
From-SVN: r245884
2017-03-03 20:11:45 +00:00
Nathan Sidwell
f5d82a3eaf
Renaming stuff.
...
gcc/cp/
* module.c: Remove anon namespace, rename seriator, reader,
writer, streamer, in & out.
From-SVN: r245881
2017-03-03 17:05:36 +00:00
Nathan Sidwell
7a1e9ceaf0
Black triangle achieved
...
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.
From-SVN: r245829
2017-03-02 04:08:48 +00:00
Nathan Sidwell
fbc745958b
module.c (in::finish_type): New.
...
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.
From-SVN: r245551
2017-02-17 20:38:55 +00:00
Nathan Sidwell
6b0c005087
Canonicalize canonical type hashing
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/c-family/c-common.c
M gcc/tree.c
M gcc/tree.h
From-SVN: r245550
2017-02-17 20:31:08 +00:00
Nathan Sidwell
35a9915049
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.
From-SVN: r245519
2017-02-16 20:59:42 +00:00
Nathan Sidwell
93f99ba8f1
Some actual tree writing & reading
...
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.
From-SVN: r245512
2017-02-16 16:51:03 +00:00
Nathan Sidwell
4301521a67
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.
From-SVN: r245506
2017-02-16 12:59:03 +00:00
Nathan Sidwell
037c4bb6a7
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
A gcc/testsuite/g++.dg/modules/mod-exp-1_a.C
A gcc/testsuite/g++.dg/modules/mod-exp-1_b.C
M gcc/testsuite/g++.dg/modules/mod-sym-1.C
M gcc/cp/cp-tree.h
M gcc/cp/module.c
M gcc/cp/parser.c
From-SVN: r245487
2017-02-15 16:56:41 +00:00
Nathan Sidwell
c97a03f7a6
Make-lang.in (CFLAGS-cp/module.o): New var.
...
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
From-SVN: r245433
2017-02-14 15:38:35 +00:00
Nathan Sidwell
670ace869f
Start actually writing & reading module files.
...
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.
From-SVN: r245347
2017-02-10 21:11:41 +00:00
Nathan Sidwell
e86b6262fe
gengtype-lex.l (<in_struct>): Add '/'.
...
gcc/
* gengtype-lex.l (<in_struct>): Add '/'.
From-SVN: r245346
2017-02-10 21:07:43 +00:00
Nathan Sidwell
92ddc50544
Dump file
...
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.
From-SVN: r245313
2017-02-09 19:28:41 +00:00
Nathan Sidwell
60811f7a8f
cp-tree.h (DECL_CHECK): New.
...
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.
From-SVN: r245308
2017-02-09 16:02:45 +00:00
Nathan Sidwell
c51761ad72
name-lookup.c (is_ancestor): Pop from module namespace root.
...
gcc/cp/
* name-lookup.c (is_ancestor): Pop from module namespace root.
gcc/testsuite/
* g++.dg/modules/mod-sym-3.C: New.
From-SVN: r245283
2017-02-08 19:48:29 +00:00
Nathan Sidwell
0238e4b100
Module namespaces
...
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/cp-tree.h
M gcc/cp/module.c
M gcc/cp/parser.c
M gcc/testsuite/g++.dg/modules/mod-decl-1.C
A gcc/testsuite/g++.dg/modules/mod-sym-1.C
A gcc/testsuite/g++.dg/modules/mod-sym-2.C
From-SVN: r245282
2017-02-08 18:51:31 +00:00
Nathan Sidwell
2c7be4a684
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.
From-SVN: r245281
2017-02-08 18:20:04 +00:00
Nathan Sidwell
6f44c46971
PR c++/79369 inline namespaces
...
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.
From-SVN: r245252
2017-02-07 18:02:05 +00:00
Nathan Sidwell
4cba0e0761
Module files open/closed.
...
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
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/testsuite/g++.dg/modules/mod-decl-0.C
M gcc/testsuite/g++.dg/modules/modules.exp
M gcc/testsuite/g++.dg/modules/mod-decl-1.C
M gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
D gcc/testsuite/g++.dg/modules/mod-decl-3_a.C
M gcc/testsuite/g++.dg/modules/proclaim-1.C
A + gcc/testsuite/g++.dg/modules/mod-decl-3.C
D gcc/testsuite/g++.dg/modules/mod-decl-3_b.C
D gcc/testsuite/g++.dg/modules/mod-decl-4.C
M gcc/testsuite/g++.dg/modules/mod-decl-5_a.C
M gcc/testsuite/g++.dg/modules/mod-decl-5_b.C
M gcc/cp/module.c
From-SVN: r245163
2017-02-03 19:05:25 +00:00
Nathan Sidwell
e7e77c41b4
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.
From-SVN: r245150
2017-02-03 12:55:45 +00:00
Nathan Sidwell
d8f7cc0bd2
cp-tree.h: Adjust module interface fns.
...
[[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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
M gcc/testsuite/g++.dg/modules/mod-decl-3_a.C
M gcc/testsuite/g++.dg/modules/proclaim-1.C
A gcc/testsuite/g++.dg/modules/mod-decl-4.C
M gcc/cp/cp-tree.h
M gcc/cp/module.c
M gcc/cp/parser.c
From-SVN: r245133
2017-02-02 17:42:11 +00:00
Nathan Sidwell
ce007f1016
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.
From-SVN: r244994
2017-01-27 20:04:07 +00:00
Nathan Sidwell
87738c6872
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.
(--This line, and those below, will be ignored--
M ChangeLog.modules
M gcc/cp/cp-tree.h
M gcc/cp/module.c
M gcc/cp/parser.c
M gcc/testsuite/g++.dg/dg.exp
A gcc/testsuite/g++.dg/modules/modules.exp
A gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
A gcc/testsuite/g++.dg/modules/mod-decl-2_b.C
A gcc/testsuite/g++.dg/modules/mod-decl-3_a.C
A gcc/testsuite/g++.dg/modules/mod-decl-3_b.C
From-SVN: r244992
2017-01-27 18:50:06 +00:00
Nathan Sidwell
02ac5dbe0f
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.
From-SVN: r244906
2017-01-25 17:51:53 +00:00
Nathan Sidwell
3ddaae627a
New flag & keywords, etc
...
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.
From-SVN: r244899
2017-01-25 14:39:49 +00:00
Nathan Sidwell
7d57a2193a
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.
From-SVN: r244883
2017-01-24 19:37:45 +00:00
Nathan Sidwell
e913cbc601
Branch creation.
...
From-SVN: r244829
2017-01-23 19:35:58 +00:00