mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 12:00:03 -05:00
gcc/cp/ * module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access. From-SVN: r267139
8496 lines
282 KiB
Plaintext
8496 lines
282 KiB
Plaintext
2018-12-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc (trees_out::tree_decl): Adjust TEMPLATE_INFO access.
|
|
|
|
2018-12-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Function template deduping
|
|
gcc/cp/
|
|
* module.cc (trees_{in,out}::tpl_parms): New.
|
|
(trees_out::mark_gme): Mark template result too.
|
|
(trees_{in,out}::tree_gme): Do templates.
|
|
(module_state::write_cluster): Any decl can be a GME.
|
|
* name-lookup.c (match_global_decl): Do template matching.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-7_[abc].[HC]: New.
|
|
|
|
2018-12-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc (slurping::remap): Heap allocate.
|
|
(gt_pch_nx): Delete hacks.
|
|
|
|
gcc/cp/
|
|
* module.cc (tree_tag): Replace tt_named_type with
|
|
tt_{primary,secondary}_type.
|
|
(trees_out::tree_type): Not recursive.
|
|
(trees_in::tree_node): Adjust tt_named_type case.
|
|
|
|
Class deduping
|
|
gcc/cp/
|
|
* module.cc (trees_in::tree_node): Record defn to skip.
|
|
(trees_in::is_skip{,pable}_defn): Fix int/long ptr const.
|
|
(module_state::read_{function,var,class}_def): Add skip checking.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-6_[abc].[HC]: New.
|
|
|
|
TYPE streamed with its implicit typedef.
|
|
gcc/cp/
|
|
* module.cc (trees_in::reserve_gmes): Only 2 per.
|
|
(trees_in::{set,get}_backref_gme): Delete.
|
|
(trees_in::existing_gme): Rename to ...
|
|
(trees_in::is_existing_gme): ... this. Return bool.
|
|
(trees_out::mark_gme): Adjust assert.
|
|
(trees_in::insert): Add assert.
|
|
(trees_out::tree_type): Always look at typedef.
|
|
(trees_out::tree_value): Stream type with its decl.
|
|
(trees_in::tree_node): Likewise.
|
|
(trees_{in,out}::tree_gme): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write,mark}_enum): Take DECL.
|
|
(module_state::{read,write,mark}_definition): Adjust.
|
|
|
|
gcc/cp/
|
|
* class.c (layout_class_type): Base type has same module as owner.
|
|
* module.c (module_state::{read,write,mark}_class): Take DECL.
|
|
(module_state::{read,write,mark}_definition): Adjust.
|
|
(topmost_decl, get_module_owner): Don't look at TYPE_CONTEXT.
|
|
|
|
gcc/cp/
|
|
* class.c (build_base_field_1): Refactor.
|
|
(layout_class_type): Give as_base type a name.
|
|
* decl.c (initialize_predefined_identifiers): Make as_base name
|
|
unpronouncable.
|
|
* module.cc (tree_tag): Delete tt_as_base.
|
|
(trees_out::mark_node): Don't expect fake base here.
|
|
(trees_out::tree_decl): Write fake base as pseudo-named.
|
|
(trees_out::tree_type): Don't handle fake base specially here.
|
|
(trees_in::tree_node): Read fake base as pseudo-named. Delete
|
|
tt_as_base handling.
|
|
(module_state::mark_class_def): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.cc (trees_in): Rename bad_decls to skip_defns.
|
|
(trees_in::{record,is}_bad_decl): Delete.
|
|
(trees_in::{record,is,any}_skip_defn): New.
|
|
(module_state::is_ignorable_defn): Rename to ...
|
|
(module_state::is_skippable_defn): Key off namespace-scope decl.
|
|
(topmost_decl): New.
|
|
(module_state::read_function_def): Adjust.
|
|
|
|
2018-11-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r266680.
|
|
|
|
gcc/cp/
|
|
* module.cc: Fix enums with trailing commas.
|
|
* name-lookup.c (match_global_decl): Avoid unused arg warning.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::write_binfos): Binfo was not visited.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::write_binfos): Always write number of
|
|
vbases.
|
|
(module_state::read_binfos): Don't smash the type here.
|
|
(module_state:{read,write}_class_def): Adjust binfo serializing.
|
|
|
|
gcc/cp/
|
|
* class.c (fixup_type_variants): Copy TYPE_SIZE & TYPE_SIZE_UNIT.
|
|
(finish_struct): Use fixup_type_variants for template.
|
|
* module.cc (trees_{in.out}::core_vals): Don't serialize TYPE_SIZE
|
|
and TYPE_SIZE_UNIT for classes.
|
|
(trees_in::finish_type): Don't layout clesses here.
|
|
(module_state::{read,write}_class_def): Do it here.
|
|
|
|
gcc/cp/
|
|
* module.cc (trees_in): Add bad_decls and post_decls.
|
|
(trees_in::{record,is}_bad_decl): New.
|
|
(trees_in::post_process): New.
|
|
(module_state::is_{matching_decl,ignorable_defn}): New.
|
|
(trees_in::tree_node): Use former.
|
|
(module_state::read_function_def): Use latter. Register for
|
|
post-processig.
|
|
(module_state::read_cluster): Post process.
|
|
|
|
2018-11-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge global module function definitions.
|
|
gcc/cp/
|
|
* modules.cc (module_state::write_function_def): Don't rely on
|
|
decl's form.
|
|
(module_state::read_function_def): Allow multiple decls.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-5_[abc].[CH]: New.
|
|
|
|
gcc/cp/
|
|
* modules.cc (module_state::check_read): Adjust, print inform of
|
|
outer location.
|
|
(module_state::write_cluster): defns are decls too.
|
|
(lazy_load_binding): Don't inform here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-4_c.C: Adjust regexps.
|
|
|
|
Fixing GME classes
|
|
gcc/cp
|
|
* module.cc (trees_in::tree_node_vals): Add specific bool arg,
|
|
adjust.
|
|
(trees_in::existing_gme): Return cookie.
|
|
(trees_in::{get,set}_backref_gme): New.
|
|
(trees_out::mark_gme): Mark typedef target.
|
|
(trees_out::tree_type): Don't be fooled by GME TYPE_NAME.
|
|
(trees_out::tree_value): Write GME type code.
|
|
(trees_in::tree_node): Use backref channel for typedefs.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-4_c.C: Adjust.
|
|
|
|
Some ODR checking of GMEs
|
|
gcc/cp/
|
|
* module.cc (trees_in::tree_node): Check type of matched GME.
|
|
(lazy_load_binding): Add note if diagnostics emitted.
|
|
* name-lookup.c (name_lookup::search_namespace_only): Forward
|
|
iterate over slots.
|
|
(match_global_decl): Return close matches.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-4_[abc].[CH]: New.
|
|
|
|
Global module var declaration merging.
|
|
gcc/cp/
|
|
* module.cc (trees_in::reserve_gmes): Add headroom.
|
|
(trees_{in,out}::tree_gme): Deal with VAR_DECLs.
|
|
(module_state::write_cluster): Likewise.
|
|
* name-lookup.c (match_global_decl): Likewise.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-3_[abcd].[CH]: New.
|
|
|
|
Global module class declaration merging.
|
|
gcc/cp/
|
|
* module.cc (trees_in::start): Check code & category.
|
|
(trees_in::tree_node): Allow gme types. Refactor gme/node
|
|
reading.
|
|
(trees_{in,out}::tree_gme): Allow implicit typedefs.
|
|
(module_state::write_cluster): GME Implicit typedefs too.
|
|
* name-lookup.c (match_global_decl): Match TYPE_DECLs too.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-2_[abc].[CH]: New.
|
|
|
|
2018-11-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Global module function declaration merging.
|
|
gcc/cp
|
|
* module.cc (tree_tag): Add tt_gme.
|
|
(trees_in::gmes): New data member.
|
|
(trees_in::tree_node_specific): Add no-alloc flag.
|
|
(trees_in::{tree_gme,reserve_gmes,existing_gme}): New.
|
|
(trees_out::walk_kind): Add WK_gme.
|
|
(trees_out::{mark,tree}_gme): New.
|
|
(trees_out::{ref_node,insert}): Deal with WK_gme walk.
|
|
(trees_out::tree_{decl,value}): Likewise.
|
|
(trees_in::tree_node): Add tt_gme support.
|
|
(cluster_tag): Add ct_gme.
|
|
(module_state::{read,write}_cluster): Add gme support.
|
|
* name-lookup.h (match_global_decl): Declare.
|
|
(add_module_decl): Declare.
|
|
* name-lookup.c (match_global_decl): New.
|
|
(set_module_binding): Don't dedup here.
|
|
(add_module_decl): New.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/leg-merge-1_[abcd].[CH]: New.
|
|
|
|
gcc/cp/
|
|
* modules.cc (trees_{in,out}::tree_node_bools): Break out
|
|
tree_node_specific.
|
|
(trees_out::ref_force_{lwm.hwm}): Delete.
|
|
(trees_out::gme_lwm): New.
|
|
(trees_out::insert): Change force to walk_kind.
|
|
(trees_out::mark_node): Drop walk_kind arg.
|
|
(trees_out::{,un}mark_trees): Adjust.
|
|
(trees_out::{mark_node,insert}): Adjust.
|
|
(trees_out::start): Drop CODE parm.
|
|
(trees_out::{ref_node,tree_ctx}): Adjust.
|
|
(trees_out::tree_value): Adjust.
|
|
(trees_{in,out}::tree_node): Likewise.
|
|
(module_state::write_binfos): Likewise.
|
|
(module_state::mark_{class,enum}_def): Adjust.
|
|
(module_state::{read,write}_cluster): Adjust.
|
|
(module_state::find_dependencies): Adjust.
|
|
|
|
2018-11-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* modules.cc (trees_{in,out}::tree_node_raw): Bifurcate to ...
|
|
(trees_{in,out}::tree_node_{bools,vals}): ... these.
|
|
(trees_out::tree_value): Adjust.
|
|
(trees_in::tree_node): Likewise.
|
|
|
|
gcc/cp/
|
|
* modules.cc (trees_out::tree_ref): Rename to ...
|
|
(trees_out::ref_node): ... this.
|
|
(trees_out::tree{value,decl,type,namespace}): Replace FORCE
|
|
paramenter with walk_kind.
|
|
(trees_out::tree_node): Adjust.
|
|
(module_state::mark_{class,enum,template}_def): Adjust.
|
|
(module_state::write_cluster): Adjust.
|
|
(module_state::find_dependencies): Adjust.
|
|
|
|
gcc/cp/
|
|
* modules.cc (trees_out::walk_kind): New enum.
|
|
(trees_out::tree_ref): Return it.
|
|
(trees_out::tree_{ctx,decl,node}): Use it.
|
|
|
|
gcc/cp/
|
|
* modules.cc (trees_out::ref_force_{lwm.hwm}): New ref values.
|
|
(trees_out::{,un}mark_trees): Use them.
|
|
(trees_out::{mark_node,tree_ref}): Likewise.
|
|
|
|
2018-11-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* modules.cc (dumper): Rename dump flags. Adjust throughout.
|
|
|
|
2018-11-19 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc (handle_module_option): Handle OPT_fmodule_legacy.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Insert /./ in legacy names.
|
|
* g++.dg/modules/*.H: Adjust as necessary.
|
|
|
|
Merge trunk r266271.
|
|
|
|
2018-11-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r266161.
|
|
|
|
gcc/
|
|
* doc/invoke.texi: Rename cookie->ident, people read too much into
|
|
'cookie'.
|
|
|
|
2018-11-07 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_translation_unit): Refactor.
|
|
|
|
Implement d0924r1 (to be written).
|
|
gcc/cp/
|
|
* lex.c (init_reswords): Set D_CXX_MODULES mask.
|
|
* module.cc (declare_module): Check purview state.
|
|
* parser.c (cp_parser_translation_unit): Module and import are
|
|
always conditional.
|
|
(cp_parser_tokenize): Likewise.
|
|
gcc/
|
|
* doc/invoke.texi (fno-module-keywords): Delete.
|
|
gcc/c-family/
|
|
* c-common.c (c_common_reswords): Don't mark import, module for CXXWARN.
|
|
* c.opt (fmodule-keywords): Delete.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-decl-1.C: Delete.
|
|
* g++.dg/modules/keyword-1_[ab].C: Adjust.
|
|
g++.dg/modules/mod-decl-[13].C: Adjust.
|
|
g++.dg/modules/p0713-3.C: Adjust.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (module_gmf_p): Adjust.
|
|
(not_module_p): New.
|
|
* module.cc (declare_module): Don't deal with starting GMF.
|
|
* parser.c (cp_parser_translation_unit): Adjust module_purview
|
|
values.
|
|
|
|
2018-11-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Implement Bjarne's suggested solution.
|
|
gcc/cp/
|
|
* parser.cc (cp_parser_translation_unit): No tentative parsing.
|
|
Look for following ::.
|
|
(cp_parser_module_{name,declaration,import}): Adjust.
|
|
(cp_parser_tokenize): Adjust, tokenize more.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Update.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-5_b.C: Update.
|
|
* g++.dg/modules/keyword-1_[ab].C: Likewise.
|
|
|
|
2018-11-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* modules.c (module_state::read): Interface can be lazy too.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (STAT_EXPORTS): Rename to ...
|
|
(STAT_VISIBLE): ... this.
|
|
(name_lookup::search_namespace_only, name_lookup::add_module_fns)
|
|
(check_module_override, set_module_binding): Adjust.
|
|
* module.cc (module_state::read_cluster): Likewise.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (module_may_redeclare): Declare.
|
|
* decl.c (duplicate_decls): Check moduleness.
|
|
* module.cc (module_state::read_cluster): Adjust export tail.
|
|
(module_may_redeclare): New.
|
|
* name-lookup.c (name_lookup::search_namespace_only): Check
|
|
STAT_TYPE_VISIBLE_P.
|
|
(update_binding): Allow NULL LEVEL.
|
|
(check_module_override): New.
|
|
(do_pushdecl): Deal with module overrides.
|
|
(set_module_binding): Adjust. Don't push interface bindings.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/ambig-1_[ab].C: New.
|
|
* g++.dg/modules/macro-4_e.C: Avoid error.
|
|
* g++.dg/modules/namespace-2_b.C: Remove xfail.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::read_cluster): Preserve export_tail.
|
|
* name-lookup.c (STAT_HACK_TYPE_VISIBILE_P): New.
|
|
(name_lookup::process_module_binding): Reimplement.
|
|
(name_lookp::search_namespace_only): Likewise.
|
|
(set_module_binding): Adjust when STAT_HACK_EXPORTS is set.
|
|
|
|
gcc/cp/
|
|
* decl.c (duplicate_decls): Refactor export check.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/export-1.C: New.
|
|
|
|
gcc/cp/
|
|
* decl.c (duplicate_decls): Refactor checks.
|
|
* name-lookup.c (name_lookup::process_module_binding): Only pubic
|
|
namespaces are shared.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/crash6.C: Adjust error
|
|
* g++.dg/parse/crash38.C: Likewise.
|
|
|
|
2018-11-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r265714.
|
|
Move to autoconf 2.69.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::read): Don't read macros for
|
|
preprocessed innput.
|
|
(module_state::set_import): Adjust legacy test.
|
|
|
|
2018-10-31 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::check_not_purview): Check name.
|
|
(mangle_module, module_name): Likewise.
|
|
(declare_module): Set parent, not alias.
|
|
|
|
Merge trunk r265692.
|
|
|
|
Merge trunk r265679.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_EXPORT_P): Delete.
|
|
(OVL_DEDUP_P): Move to lang flag 0.
|
|
* module.cc (module_state::read_cluster): Don't set OVL_EXPORT_P.
|
|
* tree.c (ovl_copy): Don't copy OVL_EXPORT_P.
|
|
|
|
2018-10-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Module interface gets own mod number
|
|
gcc/cp/
|
|
* cp-tree.g (ovl_iterator::set_dedup): New.
|
|
* module.cc (module_state::{interface_p,is_interface}): New.
|
|
(module_state::check_not_purview): Adjust.
|
|
(mangle_module, module_name): Likewise.
|
|
(module_state::read_cluster): Adjust.
|
|
(module_state::read): Adjust.
|
|
(module_state::{set_import,direct_import}): Adjust import setting.
|
|
(declare_module): Module interface gets number.
|
|
* name-lookup.h (set_module_binding): Add iface parameter.
|
|
* name-lookup.c (name_lookup::search_namespace): Fix indexing.
|
|
(set_module_binding): Insert interface decls.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/namespace-4_b.C: Remove xfails.
|
|
* g++.dg/modules/static-1_b.C: Remove xfails.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_HAS_USING_P): Rename to ...
|
|
(OVL_DEDUP_P): ... here.
|
|
* name-lookup.c (name_lookup::add_overload)
|
|
(get_class_binding_direct): Adjust.
|
|
* tree.c (ovl_make, ovl_copy, ovl_insert, lookup_maybe_add): Adjust.
|
|
|
|
Less ordered overloads
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_sort): Declare.
|
|
* name-lookup.h (extract_module_binding): Binding is reference.
|
|
* tree.c (ovl_insert): Don't sort non-hidden members.
|
|
(ovl_splice, ovl_sort): New.
|
|
* name-lookup.c (extract_module_binding): Binding is reference.
|
|
Sort the binding.
|
|
* ptree.c (cxx_print_xnode): Print MODULE_VEC name.
|
|
* module.cc (module_state::add_writables): Binding is reference.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/friend21.C: New.
|
|
|
|
2018-10-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_insert): Drop export_tail parm.
|
|
* name-lookup.c (update_binding): No need to track export_tail.
|
|
* tree.c (ovl_insert): Drop export_tail parm.
|
|
* ptree.c (cxx_print_xnode): Output formatting.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::read_imports): Do in one pass.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::direct_import): Drop DEFERRABLE arg.
|
|
({import,declare}_module): Deal with deferring here.
|
|
(process_deferred_imports): Adjust direct_import call.
|
|
|
|
2018-10-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r265554.
|
|
|
|
2018-10-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Anon namespaces
|
|
gcc/cp/
|
|
* module.cc (elf_out::strtab_write): Fallback to assembler name.
|
|
(elf_out::name): Allow 0 name.
|
|
(dumper::impl::nested_name): Fallback to assembler name.
|
|
(module_state::{read,write}_namespaces): Write assembler name for
|
|
anons.
|
|
* name-lookup.h (add_imported_namespace): add anon-name arg.
|
|
* name-lookup.c (get_imported_namespace): Look in current slot
|
|
too.
|
|
(make_namespace): Add anon-name arg, calculate as necessary.
|
|
(add_imported_namespace): add anon-name arg.
|
|
gcc/testsuite/
|
|
* gcc/testsuite/g++.dg/modules/namespace-4_[abc].C: New.
|
|
|
|
Statics on bindings
|
|
gcc/cp/
|
|
* module.cc (depset::hash::add_binding): Take overload and type
|
|
values, do pruning here.
|
|
(module_state::write_cluster): Reorder binding emission.
|
|
(module_state::read_cluster): Determine export_tail here.
|
|
(module_state::add_writables): Adjust.
|
|
* cp-tree.h (ovl_iterator::export_tail): Delete.
|
|
* name-lookup.h (extract_module_decls): Rename to ...
|
|
(extract_module_binding): ... here. Return overload set.
|
|
* name-lookup.c ( (extract_module_decls): Rename to ...
|
|
(extract_module_binding): ... here. Don't prune here.
|
|
(set_module_binding): Simplify.
|
|
(lookup_by_ident, get_lookup_ident): Simplify.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/static-1_b.C: XFAIL error
|
|
* gcc/testsuite/g++.dg/modules/unnamed-1_[ab].C: Adjust scans.
|
|
* gcc/testsuite/g++.dg/modules/unnamed-2.C: Likewise.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (module_purview): Declare.
|
|
(module_purview_p, module_interface_p, module_gmf_p): Inline
|
|
predicates.
|
|
* module.cc (module_purview): Extern.
|
|
(module_purview_p, module_interface_p): Delete.
|
|
|
|
p1103 no implicit namespace export
|
|
gcc/cp/
|
|
* module.cc (trees_out::mark_node): Allow namespace marking.
|
|
(trees_out::tree_ctx): Namespaces may be forced.
|
|
(trees_out::tree_namespace): Reimplement.
|
|
(trees_out::tree_{type,decl}): Adjust tree_ctx calls.
|
|
(module_state::write_cluster): Likewise.
|
|
(module_state::{read,write}_namespace): Adjust.
|
|
(module_state::find_dependencies): Also walk namespaces.
|
|
* name-lookup.c (name_lookup::process_binding): Fixup hidden
|
|
namespaces.
|
|
(implicitly_export_namespace): New.
|
|
(do_pushdecl, push_namespace): Call it.
|
|
(add_imported_namespace): Add export_p arg, adjust.
|
|
* name-lookup.h (add_imported_namespace): Add export_p arg.
|
|
* ptree.c (cxx_print_node): Adjust MODULE_VEC printing.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_b.C: Adjust scans.
|
|
* g++.dg/modules/namespace-[23].C: Split to ...
|
|
* g++.dg/modules/namespace-[23]_[ab].C: ... these.
|
|
|
|
2018-10-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Rationalize bool ok == true
|
|
gcc/cp/
|
|
* module.cc (elf::has_error): Rename to ...
|
|
(elf::get_error): ... this. Update all callers.
|
|
(elf::end): Return true == ok. Update (indirect) callers.
|
|
(module_state::check_read): Likewise. Update callers.
|
|
(module_state::lazy_load): Zap slot on failure.
|
|
* name-lookup.c (get_binding_or_decl): No need to assert here.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::write_readme): Tidy.
|
|
(module_state::{add_writables,find_dependencies): Dump
|
|
DEPENDENCIES.
|
|
(module_state::direct_import): Always pop dump.
|
|
* ptree.c (cxx_print_decl): Print DECL_MODULE_EXPORT_P.
|
|
gcc/c-family/
|
|
* c-ppoutput.c (scan_translation_unit): Remove unused var.
|
|
|
|
2018-10-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc (enum tree_tag): Add tt_namespace.
|
|
(trees_out::tree_namespace): Use it.
|
|
(trees_in::tree_node): Grok it.
|
|
* name-lookup.h (get_imported_namespace): Declare.
|
|
* name-lookup.c (get_imported_namespace): New.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_c.C: Adjust.
|
|
|
|
gcc/cp/
|
|
* module.cc (trees_out::{tree_{decl,type}): Drop owner arg.
|
|
(trees_out::tree_namespace): New.
|
|
(trees_out::ctx): Take owning-decl arg, use tree_namespace.
|
|
(trees_out::{core_vals,tree_binfo}): Adjust.
|
|
(trees_out::{read,write}_cluster): Adjust.
|
|
|
|
2018-10-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc: Add dumper::TREES to tree streamers.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/: Add -uid to several lang dumps.
|
|
|
|
gcc/cp/
|
|
* module.cc (slurping::remap_module): New.
|
|
(depset::hash::add_binding): Don't deal with namespaces here.
|
|
(module_state::write_namespaces): No longer static. Write
|
|
locations.
|
|
(module_state::read_namespaces): Read locations.
|
|
(module_state::add_writables): Deal with namespaces here.
|
|
(module_state::find_dependencies): Don't walk namespaces.
|
|
* name-lookup.h (get_lookup_ident, find_by_ident): Reorder args,
|
|
update callers.
|
|
(add_imported_namespace): Add location arg.
|
|
* name-lookup.c (module_binding_slot): Fix initial alloc.
|
|
(extract_module_decls): Return namespace.
|
|
(get_binding_or_decl, lookup_by_ident, get_lookup_ident): Reorder
|
|
args.
|
|
(make_namespace): Add loc & module args.
|
|
(push_namespace): Adjust.
|
|
(add_imported_namespace): Adjust.
|
|
* ptree.c (cxx_print_decl): Avoid final linefeed.
|
|
(cxx_print_xnode): Adjust MODULE_VEC
|
|
gcc/
|
|
* doc/invoke.texi: Document -fdump-lang-module options.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/namespace-2.C: Adjust.
|
|
|
|
2018-10-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (module_exporting_level): Delete.
|
|
(module_export_depth): Declare.
|
|
(module_exporting_p): New.
|
|
({push,pop}_module_export): Adjust, make inline.
|
|
* module.cc (export_depth): Replace with ...
|
|
(module_exporting_level): ... this.
|
|
({push,pop}_module_export): Delete.
|
|
(set_module_owner, import_module, module_begin_main_file)
|
|
(finish_module_parse): Adjust.
|
|
* parser.cc (cp_parser_module_export): Adjust.
|
|
|
|
gcc/cp/
|
|
* lex.c (module_preprocess_token): Fix padding/comment states.
|
|
* parser.c (cp_parser_tokenize): Reduce is_decl states.
|
|
|
|
2018-10-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r265362.
|
|
|
|
Add -fno-module-keywords.
|
|
gcc/
|
|
* doc/invoke.text (fmodule-keywords): Document.
|
|
gcc/cp/
|
|
* lex.c (init_reswords): Don't add module keywords if
|
|
fno-module-keywords.
|
|
*module_preprocess_token): Adjust.
|
|
* module.cc (module_State_config:get_opts): Drop fmodule-keywords.
|
|
* parser.c (cp_parser_import_declaration): Allow to be tentative.
|
|
(cp_parser_translation_unit): Allow module & import to not be
|
|
keywords. Tentatively parse import declaration.
|
|
(cp_parser_module_keyword): Commit to tentative parse.
|
|
(cp_parser_tokenize): Allow import to not be a keyword.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/keywords-1_[ab].C: New.
|
|
|
|
gcc/cp/
|
|
* lex.c (module_preprocessing_token): Pay attention to braces.
|
|
* parser.c (cp_parser_tokenize): Return ptr to stopping import.
|
|
Pay attention to CPP_HEADER tokenization.
|
|
(cp_parser_translation_unit): Adjust.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_diagnose_invalid_type_name): Use C_RID_CODE
|
|
more.
|
|
|
|
2018-10-19 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_tokenize): Don't stop after nested
|
|
module/import decl.
|
|
|
|
2018-10-18 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_translation_unit): Adjust GMF deferred
|
|
imports.
|
|
(cp_parser_tokenize): Only pay attention to module/export at start
|
|
of decl.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_translation_unit): Process deferred imports
|
|
here ...
|
|
(cp_parser_tokenize): ... not here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macloc-1_d.C: Correct regexp.
|
|
|
|
Expunge -fmodules-atom as a thing.
|
|
gcc/
|
|
* doc/invoke.texi (fmodules-atom): Delete.
|
|
gcc/cp/
|
|
* cp-tree.h (modules_legacy_p): Adjust.
|
|
* module.cc: Expunge OPT_fmodules-atom.
|
|
gcc/c-family/
|
|
* c.opt (fmodules-ts): Adjust.
|
|
(fmodules-atom): Alias fmodules-ts
|
|
(fmodule-legacy*): Adjust.
|
|
|
|
gcc/testuite/
|
|
* g++.dg/modules/modules.exp (mode-list): Delete.
|
|
(main): Don't use mode-list.
|
|
* g++.dg/modules/: Add -fmodules-ts to many tests.
|
|
|
|
Remove ATOM as a distinction.
|
|
gcc/c-family/
|
|
* c-cppbuiltin.c (c_cpp_builtins): Remove __cpp_modules_{atom,ts}.
|
|
* c.opt (fmodules-ts): Adjust.
|
|
gcc/cp/
|
|
* cp-tree.h (modules_atom_p): Delete.
|
|
* module.cc (module_state::write_readme): Drop ATOM distinction.
|
|
(module_state::{read,write}_config): Likewise.
|
|
(init_module_processing): Drop atom distinction.
|
|
(handle_module_option): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/: Drop -fmodules-atom from all tests.
|
|
|
|
Simplify translate-include hook.
|
|
libcpp/
|
|
include/cpplib.h (cpp_translate_include_t): Delete.
|
|
(struct cpp_calbacks): Adjust translate_include decl.
|
|
gcc/
|
|
* langhooks.h (struct lang_hooks): Adjust preprocess_translate_include.
|
|
gcc/c-family
|
|
* c-opts.c (c_common_post_options): Adjust.
|
|
gcc/cp/
|
|
* cp-tree.h (maybe_import_include): Replace by ...
|
|
(module_translate_include): ... this.
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_TRANSLATE_INCLUDE): Adjust.
|
|
* module.c (module_state::do_import): Check read on all top level
|
|
imports.
|
|
(do_translate_include): Rename to ...
|
|
(module_translate_include): ... this. Explicitly turn off.
|
|
(maybe_import_include): Delete.
|
|
|
|
Preamble on module
|
|
gcc/cp/
|
|
* parser.c (cp_parser_import_declaration): Always check past_preamble.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-norescan-1.C: Delete.
|
|
* g++.dg/modules/atom-pragma-1.C: Not atom-specific.
|
|
* g++.dg/modules/atom-pragma-3.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-1.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-2_a.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-2_b.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-2_c.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-2_d.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-2_e.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-3.C: Likewise.
|
|
* g++.dg/modules/atom-preamble-4.C: Likewise.
|
|
* g++.dg/modules/mod-indirect-1_b.C: Adjust.
|
|
|
|
No export { import x; }
|
|
gcc/cp/
|
|
* parser.c (cp_parser_tokenize): Drop nested arg, adjust.
|
|
(cp_parser_translation_unit): Don't deal with outermost export { block.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/err-1_a.C: Adjust.
|
|
* g++.dg/modules/err-1_c.C: Adjust.
|
|
* g++.dg/modules/import-1_c.C: Adjust.
|
|
* g++.dg/modules/mod-decl-1.C: Adjust.
|
|
|
|
|
|
No atom preamble in non-module
|
|
gcc/cp/
|
|
* parser.c (cp_parser_translation_unit): Preamble is tristate.
|
|
(cp_parser_module_name): Add FOR_MODULE arg, issue error.
|
|
(cp_parser_module_declaration): Adjust.
|
|
(cp_parser_import_declaration): Adjust twice.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-decl-[23].C: Adjust.
|
|
* g++.dg/modules/legacy-6_f.C: Remove XFAIL.
|
|
|
|
2018-10-17 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/err-2_[ab].*: Move to ...
|
|
* g++.dg/modules/cpp-5_[ab].*: ... here.
|
|
* g++.dg/modules/cpp5_c.C: New.
|
|
|
|
Robustify parse errors on module/import decls.
|
|
gcc/cp/
|
|
* parser.c (cp_parser_consume_semicolon_at_end_of_statement):
|
|
Return void.
|
|
(cp_parser_translation_unit): Adjust.
|
|
(cp_parser_{module,import}_declaration): Don't try and resync
|
|
here.
|
|
(cp_parser_tokenize): Deal with unprocessed incoming tokens.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/err-2_[ab].*: New.
|
|
|
|
2018-10-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Remove some atom/ts differences.
|
|
gcc/cp/
|
|
* module.cc (declare_module): Copy always.
|
|
* parser.c (cp_parser_translation_unit): Allo GMF under atom.
|
|
(cp_parser_module_name): Allow legacy name under ts
|
|
(cp_parser_initial_pragma): Fix from trunk.
|
|
gcc/testsuite/
|
|
* g++.dg/modules: Many changes.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_purview): New.
|
|
(module_purview_p, module_interface_p): Use it.
|
|
(module_maybe_interface_p): New.
|
|
(module_state::direct_import): Use it.
|
|
(process_deferred_imports): Likewise.
|
|
(declare_module): Set it.
|
|
* parser.c (cp_parser_translation_unit): Inform modules of GMF.
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macloc-1_[abcd].C: No longer atom-specific.
|
|
|
|
Locations for everyone!
|
|
gcc/cp/
|
|
* module.cc (loc_spans::{init,open,close}): Dump info.
|
|
(module_state::{read,write}_location): No longer atom-specific.
|
|
(module_state::{read,write}): Locations for everyone.
|
|
(process_deferred_imports): Open and close spans correctly.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/adhoc-1_[ab].C: No longer atom-specific.
|
|
* g++.dg/modules/loc-1_[abc].C: Likewise.
|
|
* g++.dg/modules/loc-2_[abcdef].C: Likewise.
|
|
|
|
gcc/
|
|
* dumpfile.c (dump_switch_p_1): Don't let a '-' filename fool the
|
|
option machinery.
|
|
|
|
Legacy importing during -E
|
|
gcc/c-family/
|
|
* c-lex.c (init_c_lex): Don't use lang_hooks here.
|
|
* c-opts.c (c_common_init): Set them here.
|
|
gcc/cp/
|
|
* lex.c (module_preprocess_token): Enable legacy importing.
|
|
* module.cc (module_state::read): Skip items when preprocessing
|
|
only.
|
|
(module_cpp_undef): Adjust unsetting.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-2_c.C: Adjust.
|
|
|
|
Remove token peeking & preamble related infrastructure.
|
|
libcpp/
|
|
* include/cpplib.h (cpp_relocate_peeked_tokens): Delete.
|
|
(cpp_peek_token_with_location): Delete.
|
|
(cpp_in_macro_expansion_p): Delete.
|
|
* directives-only.c (_cpp_preprocess_dir_only): Adjust
|
|
_cpp_handle_directive call.
|
|
* directives.c (struct if_stack): Drop hash_loc.
|
|
(PEEK_INVISIBLE): Delete.
|
|
(linemarker_dir): Adjust.
|
|
(_cpp_handle_directive): Drop hash_loc arg. dont set it.
|
|
(push_conditional): Drop hash_loc.
|
|
* init.c (read_original_filename): Adjust _cpp_handle_directive
|
|
call.
|
|
* internal.h (struct cpp_reader): Delete peeked_directive field.
|
|
(_cpp_handl_directive): Drop hash_loc arg.
|
|
* lex.c (cpp_relocate_peeked_tokens): Delete.
|
|
(cpp_peek_token): Swallow ...
|
|
(cpp_peek_token_with_location): ... this. Delete.
|
|
(_cpp_lex_token): Adjust _cpp_handle_directive call.
|
|
* macro.c (cpp_in_macro_expansion_p): Rename to ...
|
|
(cpp_in_macro_expansion): ... this. Make static.
|
|
* traditional.c (_cpp_scan_out_logical_line): Adjust
|
|
_cpp_handle_directive call.
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/*.H: Drop unnecessary -fmodules-atom option.
|
|
|
|
Reimplement preamble peeking
|
|
gcc/
|
|
* doc/invoke.texi (fmodule-preamble): Delete.
|
|
* langhooks-def.h (LANG_HOOKS_PREPROCESS_PREAMBLE): Replace with ...
|
|
(LANG_HOOKS_PREPROCESS_TOKEN): ... this.
|
|
* langhooks.h (struct lang_hooks): Replace preprocess_preamble
|
|
with preprocess_token.
|
|
c-family/
|
|
* c-ppoutput.c (scan_translation_unit): Adjust preprocess lang
|
|
hook.
|
|
* c.opt (fmodule-preamble, fmodule-preamble=): Delete.
|
|
gcc/cp/
|
|
* cp-lang.c (module_preamble_fsm): Delete.
|
|
(LANG_HOOKS_PREPROCESS_PREAMBLE): Delete.
|
|
(LANG_HOOKS_PREPROCESS_TOKEN): Override.
|
|
* cp-tree.h (enum module_preamble_state): Delete.
|
|
(module_preamble_prefix_{peek,next}): Delete.
|
|
(module_preprocess_token): Declare.
|
|
* lex.c (module_preamble_prefix_{peek,next}): Delete.
|
|
(module_preprocess_token): New.
|
|
* module.c (init_module_processing, handle_module_option): Drop
|
|
preamble option handling.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/*: Many changes.
|
|
|
|
Remove preamble repeating.
|
|
gcc/cp/
|
|
* cp-tree.h (maybe_repeat_preamble): Delete.
|
|
* module.c (maybe_repeat_preamble): Delete.
|
|
* parser.c (cp_parser_initial_pragma): Revert to trunk.
|
|
* lex.c (modle_preamble_prefix_peek): Don't repeat preamble.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-preamble-1.C: Adjust.
|
|
* g++.dg/modules/atom-preamble-1.C: Is now well formed.
|
|
|
|
Remove preamble peeking
|
|
gcc/cp/
|
|
* cp-tree.h ({import,declare}_module): return void.
|
|
(process_deferred_imports): Return void.
|
|
(module_state::direct_import): Return void, deferrable is
|
|
tristate. Push onto pending_import vector if permitted.
|
|
({import,declare}_module): Don't return adjustment, use
|
|
direct_import always.
|
|
(process_deferred_imports): Don't return adjustment.
|
|
* parser.c (cp_parser_module_declaration): Return void, drop first
|
|
arg.
|
|
(cp_parser_import_declaration): Return void.
|
|
(cp_parser_module_export): Don't deal with module declaration
|
|
here.
|
|
(cp_parser_get_module_preamble_tokens)
|
|
(cp_parser_parse_module_preamble): Delete.
|
|
(cp_parser_tokenize): Delete #ifdef'd adjustment code.
|
|
(c_parse_file): Don't peek preamble.
|
|
libcpp/
|
|
* line-map.c (linemap_module_restore): Don't calculate adjustment.
|
|
* include/line-map.h (linemap_module_restore): Return void.
|
|
|
|
Common tokenizer for atom & ts
|
|
gcc/cp/
|
|
* module.cc ({import,declare}_module): Don't defer legacy modules.
|
|
* parser.c (cp_parser_translation_unit): Deal with atom preamble.
|
|
(cp_parser_module_declaration): No need to check if first.
|
|
(cp_parser_tokenize): Enable filename token as needed.
|
|
(c_parse_file): Disable preamble scan.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/alias-1_b.C: Adjust.
|
|
* g++.dg/modules/atom-pragma-1.C: Adjust
|
|
* g++.dg/modules/atom-pragma-2.C: Delete.
|
|
* g++.dg/modules/atom-preamble-2_e.C: Copy from 2_f.C
|
|
* g++.dg/modules/atom-preamble-2_f.C: Delete.
|
|
* g++.dg/modules/atom-preamble-[34].C: Adjust.
|
|
* g++.dg/modules/atom-rescan-1.C: Delete.
|
|
* g++.dg/modules/ice-1.C: Adjust
|
|
* g++.dg/modules/macro-2_c.H: Adjust
|
|
* g++.dg/modules/macro-3_b.H: Adjust
|
|
* g++.dg/modules/macro-3_c.C: Adjust
|
|
* g++.dg/modules/macro-6_b.C: Adjust
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (process_deferred_imports): Drop location arg.
|
|
* modules.cc ({import,declare}_module): Disable eager imports.
|
|
(process_deferred_imports): Drop location arg, take it from the
|
|
deferred imports.
|
|
* parser.c (cp_parser_translation_unit): Process deferred imports.
|
|
(cp_parser_tokenize): Correct close-brace handling. Process
|
|
deferred imports.
|
|
(c_parse_file): Adjust prcess_deferred_imports call.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-preamble-1.C: More workarounds
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_translation_unit): Detect GMF here ...
|
|
(cp_parser_module_declaration): ... not here.
|
|
|
|
2018-10-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h ({import,declare}_module): Return adjustment.
|
|
* module.c (module_state::direct_import): Preserve line table,
|
|
return adjustment.
|
|
* parser.c (cp_parser_fill_main): Delete.
|
|
(cp_parser_tokenize): Take cp_token pointer, reorder check & push.
|
|
(cp_parser_translation_unit): Take cp_token pointer, call
|
|
cp_parser_tokenize.
|
|
(c_parse_file): Don't tokenize here.
|
|
|
|
gcc/cp/
|
|
* lang-specs.h: Fix .s elision with legacy modules.
|
|
|
|
gcc/
|
|
* langhooks.h (struct lang_hooks): Adjust preprocess_main_file
|
|
signature.
|
|
gcc/c-family/
|
|
* c-opts.c (push_command_line_include): Adjust
|
|
preprocess_main_file hook call.
|
|
(cb_file_change): Likewise.
|
|
gcc/cp/
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE): Adjust.
|
|
* cp-tree.h (module_note_main_file): Rename to ...
|
|
(module_begin_main_file): ... here.
|
|
(maybe_begin_legacy_module): Delete.
|
|
* module.cc (declare_module): Remove legacy handling here.
|
|
(module_note_main_file): Rename to ...
|
|
(module_begin_main_file): ... here. Swallow ...
|
|
(maybe_begin_legacy_module): ... this.
|
|
(process_deferred_imports): We're already exporting for legacy
|
|
headers.
|
|
* parser.c (c_parse_file): Don't call maybe_begin_legacy_module.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (process_deferred_imports): New.
|
|
(module_preamble_load): Delete.
|
|
* module.cc (module_state::direct_import): Fatal error here.
|
|
(module_state::preamble_load): Delete, move into ...
|
|
(process_deferred_imports): ... here. Subsume ...
|
|
(module_preamble_load): ... this.
|
|
* parser.c (c_parse_file): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-inc-1.C: Delete.
|
|
* g++.dg/modules/atom-inc-1_[abc].*: New.
|
|
* g++.dg/modules/import-2.C: Adjust.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::direct_import): New.
|
|
({import,declare}_module): Call it.
|
|
(module_state::preamble_load): Likewise.
|
|
|
|
2018-10-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
libcpp/
|
|
* lex.c (cpp_peek_token_with_location): Fix pragma rewinding.
|
|
gcc/cp/
|
|
* parser.c (cp_parser_initial_pragma): Peek at first token.
|
|
|
|
Merge trunk r265127.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_{module,import}_declaration): Remove temp hacks.
|
|
(cp_parser_translation_unit, cp_parser_parse_module_preamble): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-decl-1.C: Adjust errors.
|
|
* g++.dg/modules/atom-preamble-1.C: Likewise. XFAIL.
|
|
* g++.dg/modules/mod-decl-1.C: Likewise,
|
|
* g++.dg/modules/p0713-[23].C: Likewise.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_translation_unit): Deal with one level of
|
|
export block here.
|
|
(check_module_outermost): Delete.
|
|
(cp_parser_{module,import}_declaration): Don't call it.
|
|
(cp_parser_declaration): Don't deal with module or import decls.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-[13].C: Adjust errors.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_translation_unit): Detect module and import
|
|
declarations here.
|
|
|
|
Start breaking out toplevel parsing.
|
|
gcc/c-family/
|
|
* c.opt (Wlegacy-header): Delete.
|
|
gcc/
|
|
* doc/invoke.texi (Wlegacy-header): Delete.
|
|
gcc/cp/
|
|
* cp-lang.c (module_preamble_fsm): Don't call atom_preamble_end.
|
|
* cp-tree.h (atom_preamble_end): Delete.
|
|
* lex.c (module_preamble_prefix_peek): Drop Wlegacy_header check.
|
|
* module.cc (module_preamble_end_loc): Delete.
|
|
(do_translate_include): Always translate.
|
|
(maybe_import_include): Drop Wlegacy_header check.
|
|
(atom_preamble_end): Delete.
|
|
* parser.h (cp_parser): Drop implicit_extern_c.
|
|
* parser.c (cp_parser_tokenize): New.
|
|
(cp_debug_parser): Drop implicit_extern_c.
|
|
(cp_parser_new): Likewise.
|
|
(cp_parser_translation_unit): Move global module detectin here.
|
|
(module_preamble_end_loc): Delete declaration.
|
|
(in_preamble): Temp hack.
|
|
(cp_parser_{import,module}_declaration): A couple of temp hacks.
|
|
(cp_parser_parse_module_preamble): Manipulate in_preamble.
|
|
(cp_parser_toplevel_declaration): New, broken out of ...
|
|
(cp_parser_declaration_seq_opt): ... here, call it. Drop top_level arg.
|
|
(c_parse_file): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-decl-[23].C: Adjust diags.
|
|
* g++.dg/modules/atom-preamble-[13].C: Likewise.
|
|
* g++.dg/modules/legacy-6_[df].C: Likewise.
|
|
|
|
2018-10-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r265055.
|
|
|
|
Kill proclaiming decls
|
|
gcc/cp/
|
|
* cp-tree.h (push_module_export): Drop proclaiming arg.
|
|
* module.c (proclaimer): Delete.
|
|
({push,pop}_module_export): Adjust.
|
|
(maybe_begin_legacy_module, module_preamble_load): Adjust.
|
|
* parser.c (cp_parser_module_export): Adjust error.
|
|
(cp_parser_module_proclamation): Delete.
|
|
(cp_parser_declaration): Don't call it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/proclaim-1.C: Delete.
|
|
|
|
Macro locations! (ATOM only)
|
|
libcpp/
|
|
* internal.h (linemap_enter_macro): Move declaration to ...
|
|
* include/cpplib.h (linemap_enter_macro): ... here.
|
|
(linemap_lookup_macro_index): Declare.
|
|
* line-map.c (linemap_lookup_macro_index): Break out of ...
|
|
(linemap_macro_map_lookup): ... this. Use it.
|
|
gcc/cp/
|
|
* module.cc (loc_spans): Record macro spans.
|
|
(module_state::write_readme): Record controlling macro.
|
|
(module_state::{read,write}_location{s,}): Stream macro locations.
|
|
(module_state::write_readme): Move later.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macloc-1_[abcd].C: New.
|
|
|
|
Merge trunk r265037.
|
|
|
|
2018-10-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc (loc_spans::close): Close the current last map.
|
|
(module_state::prepare_locations): Adjust.
|
|
(module_state::preamble_load): Adjust span closing.
|
|
(finish_module_parse): Likewise.
|
|
|
|
gcc/cp/
|
|
* module.cc (pending_imports): New.
|
|
({import,declare}_module): Use it.
|
|
(module_from_cmp): Delete.
|
|
(module_state::preamble_load): Use pending_imports array.
|
|
|
|
gcc/
|
|
* doc/invoke.texi (fmodule-legacy): Augment syntax.
|
|
gcc/cp/
|
|
* module.cc (module_controlling_macro): Replace with ...
|
|
(module_legacy_macro): ... this.
|
|
(module_state::{read,write}_config): Controlling macros only for
|
|
legacy mode.
|
|
(set_module_legacy_name): New.
|
|
(maybe_begin_legacy_module, handle_module_option): Use it.
|
|
(init_module_processing, finish_module_parse): Adjust.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-macro): Delete.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/alias-1_a.H: Fix.
|
|
* g++.dg/modules/legacy=0[ab].H: Adjust.
|
|
* g++.dg/modules/alias-2_*: New.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::controlling_macro): Delete.
|
|
(module_state_config): New struct.
|
|
(module_state::{read,write}_config): Wrap args in a struct.
|
|
(get_option_string): Move into module_state_config.
|
|
(module_state::write_macros): Adjust.
|
|
(module_state::{read,write}): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::{read,write}_defines): Rename to ...
|
|
(module_state::{read,write}_macros): ... here.
|
|
(module_state::{read,write}): Cope with legacy aliases.
|
|
(finish_module_parse): Install initialized controlling macro.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/alias-1_[cdef].C: New.
|
|
|
|
2018-10-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Lazy macro table loading
|
|
gcc/cp/
|
|
* module.cc (struct slurping): Add macro_tbl, rename macros to
|
|
macros_def.
|
|
(slurping::~slurping): Release macro_tbl.
|
|
(module_state::{read,write}_config): Replace macro count with
|
|
boolean.
|
|
(module_state::{import,install}_defines): New.
|
|
(module_state::read_defines): Map in the table, don't read it.
|
|
(module_state::{check_read,freeze_an_elf}): Adjust.
|
|
(import_module, module_state::preamble_load): Use install_defines.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-6_[abc].*: New.
|
|
|
|
Controlling macros & alias detection
|
|
gcc/cp/
|
|
* module.cc (cpp_node, identifier): Conversions between
|
|
cpp_hashnode and IDENTIFIER. Use them.
|
|
(data_in::no_more): Seek end.
|
|
(module_state::{resolve,is}_alias): New.
|
|
(module_state::read): Return alias.
|
|
(module_state::read_config): Initialize controlling macro,
|
|
determine alias.
|
|
(module_state::{read,write}_define): Allow unlocated macros.
|
|
(module_controlling_macro): New switch.
|
|
(module_state::{read_imports,do_import}): Deal with aliases.
|
|
(module_state::write_config): Write controlling macro.
|
|
(module_state::write_defines): Deal with controlling macro.
|
|
(module_state::preamble_load): Deal with aliases.
|
|
(finish_module_parse): Process explicit controlling macro.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/alias-1*: New.
|
|
* g++.dg/modules/macro-[234]*: Adjust.
|
|
* g++.dg/modules/only-[23].C: Adjust.
|
|
libcpp/
|
|
* include/cpplib.h (HT_NODE,NODE_LEN,NODE_NAME): Adjust.
|
|
(cpp_set_deferred_macro): Add defaulted forced arg.
|
|
|
|
2018-10-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state::deferred_macro): Print macro
|
|
definition.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-2_d.C: Adjust regexps.
|
|
* g++.dg/modules/macro-4_[de].C: Likewise.
|
|
* g++.dg/modules/macro-5_c.C: Likewise.
|
|
libcpp/
|
|
* include/cpplib.h (cpp_macro_definition): Add overload.
|
|
(cpp_macro_definition_location): Make inline, adjust.
|
|
* macro.c (get_deferred_or_lazy_macro): New, broken out of ...
|
|
(_cpp_notify_macro_use): ... here. Call it.
|
|
(warn_of_redefinition): Call it.
|
|
(cpp_macro_definition): Split into two overloads. Deal with
|
|
deferred macros.
|
|
(cpp_macro_definition_location): Delete.
|
|
|
|
gcc/cp/
|
|
* module.cc (module_state): Add controlling_macro, unionize slurp
|
|
with alias. Add accessors. Use them.
|
|
(module_state::{read,do_import,read_config}): Drop check_crc arg.
|
|
(module_state::read_imports): Zap direct_p before importing.
|
|
|
|
Use 'include translation' terminology.
|
|
gcc/c-family/
|
|
* c-opts.c (c_common_post_options): Adjust.
|
|
gcc/cp/
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_TRANSLATE_INCLUDE): Override.
|
|
* cp-tree.h (maybe_import_include): Adjust return type.
|
|
* module.cc (module_mapper::translate_include): Replace ...
|
|
(module_mapper::divert_include): ... this.
|
|
(do_translate_include): Replace ...
|
|
(do_divert_include): ... this.
|
|
(maybe_import_include, atom_preamble_end): Adjust.
|
|
gcc/
|
|
* langhooks-def.h (LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE): Replace
|
|
with ...
|
|
(LANG_HOOKS_PREPROCESS_TRANSLATE_INCLUDE): ... this.
|
|
* langhooks.h (struct lang_hooks): Replace
|
|
preprocess_divert_include with preprocess_translate_include.
|
|
libcpp/
|
|
* directives.c (do_include_common): Adjust.
|
|
* include/cpplib.h (cpp_divert_include_t): Rename to ...
|
|
(cpp_translate_include_t): ... this.
|
|
(struct cpp_callbacks): Replace divert_include with translate_include.
|
|
|
|
Mainfile loc has no line number.
|
|
libcpp/
|
|
* internal.h (_cpp_stack_file): Add line_one_p arg.
|
|
* files.c (_cpp_stack_file): Likewise. Use it.
|
|
* include/cpplib.h (cpp_read_main_file): Add line_one_p arg.
|
|
* init.c (cpp_read_main_file): Likewise, use it.
|
|
gcc/c-family/
|
|
* c-opts.c (c_common_post_options): Start main file on line zero.
|
|
(push_command_line_include): Call preprocess_main_file hook here ...
|
|
(cb_file_change): ... except when reading preprocessed source.
|
|
* c.opt: Add full stops.
|
|
gcc/cp/
|
|
* module.cc (module_note_main_file): Remove fixmes fixed yesterday.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-4_[de].C: Adjust regexp.
|
|
* g++.dg/modules/macro-5_c.C: Likewise.
|
|
* lib/options.exp (check_for_options): Fix comment typos.
|
|
|
|
2018-10-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Dump command line macros, better command line locs
|
|
libcpp/
|
|
* include/cpplib.h (cpp_force_token_locations): Take location, not
|
|
pointer.
|
|
* internal.h (cpp_reader): Replace forced_token_location_p with
|
|
forced_token_location.
|
|
* init.c (cpp_create_reader): Adjust.
|
|
* lex.c (_cpp_lex_direct, cpp_force_token_locations): Adjust.
|
|
(cpp_stop_forcing_token_locations): Adjust.
|
|
gcc/c-family/
|
|
* c-opts.c (c_finish_options): Force command line locations.
|
|
gcc/cp/
|
|
* module.cc (loc_spans::init): Add fixed and cmd line locs.
|
|
(loc_spans::SPAN_*): New.
|
|
(loc_spans::cmd_line): New.
|
|
(module_state::read_location): Adjust, return module loc for
|
|
UNKNOWN.
|
|
(module_state::{prepare,read,write}_locations): Adjust.
|
|
(maybe_add_macro): Write cmd_line macros.
|
|
(load_macros): Location is main source file.
|
|
gcc/fortran/
|
|
* cpp.c (gfc_cpp_init): Adjust token forcing.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-4_[de].C: Adjust regexp.
|
|
* g++.dg/modules/macro-5_*: New.
|
|
|
|
2018-10-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r264769.
|
|
Slip in module.c -> module.cc rename
|
|
|
|
Merge trunk r264765.
|
|
|
|
gcc/cp/
|
|
* lang-specs.h: Error out on -fcoroutines.
|
|
|
|
From c++-coroutines branch:
|
|
2018-10-01 Iain Sandoe <iain@sandoe.co.uk>
|
|
gcc/c-family/
|
|
* c-common.h (RID_CO_AWAIT, RID_CO_YIELD, RID_CO_RETURN,
|
|
D_CXX_COROUTINES, D_CXX_COROUTINES_FLAGS): New.
|
|
* c-common.c (c_common_reswords): co_await, co_yield,
|
|
co_return New keywords.
|
|
gcc/cp/
|
|
* lex.c (init_reswords): Handle flag_coroutines.
|
|
gcc/c-family/
|
|
* c.opt (fcoroutines, fcoroutines-ts): New.
|
|
|
|
Avoid UB type punning union shenanigans
|
|
gcc/cp/
|
|
* module.c (macro_import::slot): Explicitly code bit
|
|
manipulation. Update all users.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/adhoc-1_b.C: Adjust regexp for wierd dejagnu/TCL bug.
|
|
|
|
AdHoc locations
|
|
gcc/cp/
|
|
* modules.c (dumper): Add LOCATIONS, flags.
|
|
(dumper::operator()): Add default arg.
|
|
(dumper::push): Set flags.
|
|
(module_state::{read,write}_location): Serialize adhoc locs.
|
|
(module_state::deferred_macro): Optimize current TU undef case.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/adhoc-1_[ab].C: New.
|
|
|
|
2018-09-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::deferred_macro): Fix undef hiding logic.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-4*: New.
|
|
|
|
2018-09-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
No speculative undefs.
|
|
gcc/cp/
|
|
* module.c (maybe_add_macro): Simplify.
|
|
(module_state::undef_macro): Only add undef for a deferred macro.
|
|
|
|
Add -fforce-module-macros
|
|
libcpp/
|
|
* include/cpplib.h (get_deferred_macro): Declare.
|
|
* macro.c (undefer_macro): Rename to ...
|
|
(get_deferred_macro): ... here. Adjust callers.
|
|
gcc/
|
|
* doc/invoke.texi (fforce-module-macros): Document.
|
|
gcc/c-family/
|
|
* c.opt (fforce-module-macros): New.
|
|
gcc/cp/
|
|
* module.c (get_option_string): Prune more options.
|
|
(load_macros): New.
|
|
(finish_module_parse): Walk identifiers, if forcing macros.
|
|
|
|
2018-09-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Add deferred cpp_hashnode field. Replace macro_imports hash table
|
|
with vector and refactor.
|
|
libcpp/
|
|
* include/cpplib.h (NODE_DEFERRED_MACRO): Delete.
|
|
(cpp_hashnode): Reduce flags width. Add deferred field.
|
|
(cpp_deferred_macro_p): Delete.
|
|
(cpp_set_deferred_macro): Don't set flag.
|
|
* directives.c (do_undef): Adjust deferred check.
|
|
* macro.c (undefer_macro): Adjust.
|
|
gcc/cp/
|
|
* module.c (macro_export): Drop node field. Add ctor.
|
|
(macro_import): Rename one to struct slot. Add ctors, type
|
|
erase. Delete struct traits.
|
|
(macro_imports): Change to vec type.
|
|
(macro_import::{append,exported}): Adjust.
|
|
(get_macro_{imports,exports}): Allocate node deferred index,
|
|
adjust.
|
|
(maybe_add_macro): Add to macros vector, check unexported undefs
|
|
here.
|
|
(macro_loc_cmp): Reimplement.
|
|
(module_state::{read,write}_macros): Adjust.
|
|
(module_state::{undef,deferred}_macro): Likewise.
|
|
(finish_module_parse): Adjust deallocation.
|
|
|
|
Macro import and export (corrected).
|
|
libcpp/
|
|
* include/cpplib.h (cpp_callbacks): Add user_deferred_macro.
|
|
(NODE_DEFERRED_MACRO): New.
|
|
(cpp_hashnode): Increase flags size.
|
|
(cpp_deferred_macro_p, cpp_set_deferred_macro): New.
|
|
(cpp_compare_macros): Take two macros.
|
|
* internal.h (_cpp_notify_macro_use): Take source location, return bool.
|
|
(_cpp_maybe_notify_macro_use): Likewise.
|
|
* directives.c (do_undef): Don't warn about unresolved deferred
|
|
macros.
|
|
(do_ifdef, do_ifndef): Cope with deferred macros evaporating.
|
|
* expr.c (parse_defined): Likewise.
|
|
* macro.c (undefer_macro): New.
|
|
(enter_macro_context): Adjust notify call.
|
|
(cpp_get_token_1): Deal with deferred nodes.
|
|
(warn_of_redefinition): Node extraction of compare, call ...
|
|
(cpp_compare_macros): ... this to compare two macros.
|
|
(cpp_create_definition): Adjust compare call.
|
|
(_cpp_notify_macro_use): Deal with deferred macros.
|
|
gcc/
|
|
* langhooks-def.h (LANG_HOOKS_PREPROCESS_DEFERRED_MACRO): New.
|
|
* langhooks.h (struct langhooks): Add preprocess_deferred_macro.
|
|
gcc/c-family/
|
|
* c-lex.c (init_c_lex): Register deferred_macro hook.
|
|
gcc/cp/
|
|
* cp-tree.h (module_cpp_deferred_macro): Declare.
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_DEFERRED_MACRO): Override.
|
|
* module.c (bytes_in::random_access): New.
|
|
(elf_in::{preserve,release}): New.
|
|
(slurping::{legacies,macros}): New fields.
|
|
(slurping::close): New.
|
|
(module_state::legacies): Remove field.
|
|
(module_state::slurper): Delete.
|
|
(module_state::{read,write}_config): Add number of macros.
|
|
(module_state::{read,write}_define{,s}): Reimplement.
|
|
(module_state::{undef,deferred}_macro): New.
|
|
(cpp_undefs): Delete.
|
|
(struct macro_export, struct macro_import): New.
|
|
(get_macro_{export,import}): New.
|
|
(maybe_add_macro,macro_loc_cmp): Adjust.
|
|
(module_state::{read,write}): Adjust.
|
|
(module_state::check_read): Adjust.
|
|
(module_state::set_import): Adjust.
|
|
(module_state::freeze_an_elf): Preserve macros.
|
|
(import_module): Update legacies bitmap.
|
|
(module_cpp_undef): Call module_state::undef_macro.
|
|
(module_cpp_deferred_macro): New.
|
|
(finish_module_parse): Free macro state.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-2_*: Adjust tests.
|
|
* g++.dg/modules/macro-3_*: Likewise.
|
|
|
|
2018-09-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* modules (module_state): Add legacies bitmap.
|
|
(module_state::write): Write README later.
|
|
(module_state::read): Set legacies bit.
|
|
(module_state::set_import): Update legacies.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/unnamed-1_b.C: Update.
|
|
|
|
2018-09-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Update mapper protocol.
|
|
* cxx-mapper.c (client): Remove bewait, forget members.
|
|
(client::action): Remove BYIMPORT, BEWAIT & RESET.
|
|
|
|
Remove BYIMPORT, BEWAIT.
|
|
gcc/cp/
|
|
* module.c (module_mapper::uncork): Send blank command.
|
|
(module_mapper::imex_query): Take exported_p bool.
|
|
(module_mapper::bewait_{cmd,response}): Delete.
|
|
(module_mapper::send_command): Don't shortcut blank format.
|
|
(module_state::preamble_load): Avoid async commands.
|
|
|
|
2018-09-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* langhooks.h (preprocess_main_file): Drop index arg.
|
|
gcc/c-family/
|
|
* c-opts.c (cb_file_change): Adjust preprocess_main_file hook.
|
|
gcc/cp/
|
|
* cp-tree.h (module_node_main_file): Drop index parm.
|
|
* module.c (loc_spans::init_p, ): New.
|
|
(loc_spans::init_once): Rename to ...
|
|
(loc_spans::init): ... here.
|
|
(loc_spans::main_start): New.
|
|
(prefix_line_maps_hwm, prefix_locations_hwm): Delete.
|
|
(maybe_add_macro, declare_module, do_divert_include)
|
|
(module_note_main_file, maybe_begin_legacy_module): Adjust.
|
|
|
|
A grand renaming
|
|
gcc/cp/
|
|
* cp-tree.h (atom_preamble_state, atom_preamble_prefix_peek)
|
|
(atom_preamble_prefix_next): Rename to ...
|
|
(atom_preamble_state, atom_preamble_prefix_peek)
|
|
(atom_preamble_prefix_next): ... here.
|
|
(atom_cpp_undef, atom_module_preamble, atom_main_file)
|
|
(atom_divert_include, maybe_atom_legacy_module): Rename to ...
|
|
(module_cpp_undef, module_preamble_load, module_note_main_file)
|
|
(maybe_import_include, maybe_begin_legacy_module): ... here.
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE)
|
|
(LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE)
|
|
(LANG_HOOKS_PREPROCESS_UNDEF, LANG_HOOKS_PREPROCESS_PREAMBLE): Adjust.
|
|
(module_preamble_fsm): Adjust.
|
|
* lex.c (atom_preamble_prefix_peek, atom_preamble_prefix_next):
|
|
Rename to ...
|
|
(atom_preamble_prefix_peek, atom_preamble_prefix_next): ... here.
|
|
Adjust.
|
|
* module.c (atom_cpp_undef, atom_module_preamble, atom_main_file)
|
|
(atom_divert_include, maybe_atom_legacy_module): Rename to ...
|
|
(module_cpp_undef, module_preamble_load, module_note_main_file)
|
|
(maybe_import_include, maybe_begin_legacy_module): Here ... Adust.
|
|
* parser.c (cp_parser_get_module_preamble_tokens, c_parse_file):
|
|
Adjust.
|
|
|
|
Expunge the spewer
|
|
gcc/cp/
|
|
* module.c (struct slurping): No need to tag.
|
|
(struct spewing): Delete.
|
|
(declare_module, module_state::atom_preamble)
|
|
(finish_module_parse): Don't deal with it.
|
|
|
|
Expunge old location scheme
|
|
gcc/cp/
|
|
* module.c (struct slurper): Remove early_locs, late_locs,
|
|
loc_offset, filenames.
|
|
(module_state::{prepare,read,write}_locations): Delete
|
|
(module_state::{read,write}): Adjust.
|
|
|
|
New locations working
|
|
gcc/cp/
|
|
* module.c (module_state::prepare_locations): New, broken out of ...
|
|
(module_state::write_locations): Adjust.
|
|
(module_state::read_locations): Fix.
|
|
|
|
2018-09-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Read & write new locations (buggy, disabled).
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_location): Add new-loc
|
|
scheme.
|
|
(module_state::{read,write}_locations): Adjust.
|
|
(module_state::read): Select location scheme.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/loc-1_c.C: Use regexp for note loc.
|
|
|
|
Reading location spans (but not using them).
|
|
gcc/cp/
|
|
* module.c (loc_range_t): Global typedef.
|
|
(loc_spans::release): Delete.
|
|
(slurping): Add new range locs.
|
|
(module_state::write_locations): Adjust.
|
|
(module_state::read_locations): New.
|
|
(module_state::read): Call it.
|
|
|
|
Stop passing line_map around. There is only one.
|
|
gcc/cp/
|
|
* cp-tree.h (import_module, declare_module, atom_module_preamble)
|
|
(finish_module_parse, maybe_atom_legacy_module): Drop line_map
|
|
arg.
|
|
* decl2.c (c_parse_final_cleanups): Adjust.
|
|
* parser.c (cp_parser_module_declaration)
|
|
(cp_parser_import_declaration, c_parse_file): Adjust.
|
|
* module.c (loc_spans): Drop lmaps member & adjust.
|
|
(module_state): Drop line_maps from some but not all members.
|
|
|
|
Refactor location spans
|
|
gcc/cp/
|
|
* module.c (class loc_spans): New. Absorb ...
|
|
({open,close,ordinary,macro}_interval): ... these. Update all uses.
|
|
|
|
2018-09-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Adding location spans
|
|
gcc/cp/
|
|
* module.c (loc_range_t): New range.
|
|
(struct lmap_interval): New.
|
|
(lmap_spans): New.
|
|
(open_interval, close_interval, ordinary_interval)
|
|
(macro_interval): New.
|
|
(module_state::write_locations): Write spans.
|
|
(module_state::write): Write spans.
|
|
(module_state::atom_preamble): Update spans.
|
|
(atom_main_file): Initialize spans.
|
|
(finish_module_parse): Close out span.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_get_module_preamble_tokens): Don't read past
|
|
EOF.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/ice-1.C: New.
|
|
* g++.dg/modules/modules.exp: Remove old pruning.
|
|
|
|
Implement p1103r0 19.3/2 not-a-keyword.
|
|
gcc/cp/
|
|
* module (module_state::write_define): Don't export keywords.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-7_{a.H,b.C}: New.
|
|
|
|
2018-09-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Do not line
|
|
break after module name.
|
|
gcc/testsuite/
|
|
* lib/prune.exp (prune_gcc_output): Adjust module loc regexp.
|
|
* g++.dg/modules/loc-2_[def].C: Adjust dg-regexp.
|
|
* g++.dg/modules/macro-2_d.C: Likewise.
|
|
|
|
2018-09-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/c-family/
|
|
* c.opt (fmodule-only): Set flag.
|
|
gcc/cp/
|
|
* decl2.c (c_parse_final_cleanups): Always call finish_module_parse.
|
|
* module.c (finish_module_parse): Warn on incorrect -fmodule-only.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/only-[123].C: New.
|
|
|
|
Add -fmodule-only, rename -fmodules-legacy
|
|
gcc/c-family/
|
|
* c.opt (fmodules-legacy*): Rename to ...
|
|
(fmodule-legacy*): ... here.
|
|
(fmodule-only): New.
|
|
gcc/cp/
|
|
* lang-specs.h: Incorporate -fmodule-only.
|
|
* module.c (get_option_string, handle_module_option): Adjust.
|
|
gcc/
|
|
* doc.invoke.texi: Update module options.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Adjust.
|
|
* g++.dg/modules/*: Adjust options.
|
|
|
|
2018-08-31 Nathan Sidwell <nathan@acm.org>
|
|
|
|
libiberty/
|
|
* configure.ac (checkfuncs, AC_CHECK_FUNCS): Add pipe2.
|
|
* configure, config.in: Regenerated.
|
|
* pex-unix.c (pex_unix_execute): Use pipe to transfer child failure.
|
|
|
|
2018-08-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
AIXify tests
|
|
fcc/testsuite/
|
|
* fn-inline-1_[abc].C: Adjust regexps.
|
|
* sym-subst-2_a.C: Don't add -fat-lto option, use scan-assembler instead.
|
|
|
|
Fix AIX
|
|
gcc/cp/
|
|
* cxx-mapper.cc (buffer::get_request): Reinit pos.
|
|
|
|
Fix --enable-checking=release.
|
|
gcc/cp/
|
|
* name-lookup.c (set_module_binding): Add static cast.
|
|
|
|
Fix more GC
|
|
gcc/cp/
|
|
* module.c (module_state): Tag for_user.
|
|
(module_state_hash): Defive from ggc_ptr_hash.
|
|
(init_module_processing): GGC alloc hash table. get mapper when
|
|
not lazy, add ggc_collect.
|
|
(finish_module_parse): Don't zap hash table here ...
|
|
(finish_module_processing): ... do it here instead.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/gc-2_a.C: New.
|
|
* g++.dg/modules/gc-2.map: New.
|
|
|
|
AIX build
|
|
gcc/
|
|
* configure.ac: Check sighandler_t, memrchr.
|
|
* config.in, configure: Rebuilt.
|
|
gcc/cp/
|
|
* Make-lang.in (MODULE_STAMP): Protect against non--r capable
|
|
date.
|
|
(cxx-mapper): Add LIBINTL, not LIBBACKTRACE.
|
|
* module.c (memrchr, sighandler_t): Provide fallback.
|
|
* cxx-mapper.cc (memrchr, sighandler_t): Provide fallback.
|
|
|
|
* Merge trunk r263974.
|
|
|
|
2018-08-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (atom_cpp_undef): location_t arg is unused.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_define): Add NUL
|
|
terminators to CPP_TOKEN_FLD_STR elements.
|
|
|
|
libcpp/
|
|
* lex.c (cpp_alloc_token_string): Don't clobber ending NUL.
|
|
|
|
2018-08-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Undefs
|
|
gcc/cp/
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_UNDEF): Override.
|
|
* cp-tree.h (atom_cpp_undef): Declare.
|
|
* module.c: Include langhooks.h.
|
|
(cpp_undefs): New global.
|
|
(module_state::{read,write}_defines): Stream undefs.
|
|
(atom_cpp_undef): Define.
|
|
gcc/
|
|
* langhooks-def.h (LANG_HOOKS_PREPROCESS_UNDEF): Default.
|
|
(LANG_HOOKS_INITIALIZER): Add it.
|
|
* langhooks.h (struct lang_hooks): Add preprocess_undef hook.
|
|
gcc/c-family/
|
|
* c-lex.c: Include langhooks.h
|
|
(init_c_lex, cb_undef): Look at lang hook.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-3_[ab].H: New.
|
|
* g++.dg/modules/macro-3_c.C: New.
|
|
|
|
Sorted macros
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_define): New, single-macro
|
|
streamers.
|
|
(module_state::write_define_cb): Delete.
|
|
(maybe_add_macro, macro_loc_cmp): New.
|
|
(module_state::write_defines): Write in source order.
|
|
(module_state::read_defines): Adjust.
|
|
|
|
Macro define locations
|
|
libcpp/
|
|
* include/cpplib.h (cpp_macro): Add imported field.
|
|
gcc/cp/
|
|
* module.c (module_state::write_define_cb): Ignore imported, write
|
|
location.
|
|
(module_state::read_defines): Read location.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-2_[abc].H: New.
|
|
* g++.dg/modules/macro-2_d.C New.
|
|
|
|
Reading macros.
|
|
gcc/cp/
|
|
* module.c (bytes_{in,out}::cpp_node): New.
|
|
(bytes_out::buf): New.
|
|
(bytes_{in,out}::str): Treat zero-length strings specially.
|
|
(module_state::write_define_cb): Concatenate strings.
|
|
(module_state::write_defines): Write padding byte.
|
|
(module_state::read_defines): New.
|
|
(module_state::read): Call it.
|
|
libcpp/
|
|
* include/cpplib.h (cpp_alloc_token_string): New.
|
|
(cpp_compare_macros): Declare.
|
|
* lex.c (cpp_alloc_token_string): New, broken out of ...
|
|
(create_literal): ... here. Call it.
|
|
* macro.c (warn_of_redefinition): Rename to ...
|
|
(cpp_compare_macros): ... this, and make it extern.
|
|
(_cpp_create_definition): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-1_a.H: Adjust.
|
|
* g++.dg/modules/macro-1_b.C: New.
|
|
|
|
Writing macros.
|
|
gcc/cp/
|
|
* cp-tree.h (import_module, declare_module, atom_module_preamble,
|
|
finish_module_parse, maybe_atom_legacy_module): Add cpp_reader
|
|
arg.
|
|
* decl2.c (c_parse_final_cleanups): Adjust finish_module_parse.
|
|
* module.c (bytes_out::str): Overload for cpp_hashnode.
|
|
(module_state::read_imports,write_imports,do_import): Add
|
|
cpp_reader arg.
|
|
(module_state::atom_preamble): Likwise.
|
|
(import_module, declare_module, atom_module_preamble)
|
|
(finish_module_parse, maybe_atom_legacy_module): Likewise.
|
|
(module_state::write_{define_cb,defines}): New.
|
|
(module_state::write): Write defines when in legacy mode.
|
|
* parser.c (cp_parser_module_declaration)
|
|
(cp_parser_import_declaration, c_parse_file): Pass parse_in.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/macro-1_a.H: New.
|
|
|
|
2018-08-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r263897.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state): Remove depth.
|
|
(module_state::maybe_create_loc): Replace ...
|
|
(module_state::set_loc): ... this.
|
|
(module_state::read_imports): Check CRC of indirect imports too.
|
|
(module_state::attach): Simplify logic.
|
|
libcpp/
|
|
* include/linemaph (linemap_module_loc): Drop CURRENT parm.
|
|
* line-map.c (linemap_module_loc): Drop reseating capability.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::check_not_purview): New.
|
|
(module_state::read_imports,import_module): Use it.
|
|
|
|
Remove %M formatter, it is not worth complexity.
|
|
gcc/c-family/
|
|
* c-format.c (local_module_ptr_node): Remove
|
|
(gcc_cxxdiag_char_table): Remove 'M'
|
|
(init_dynamic_diag_info): Remove module_state lookup
|
|
* c-format.h (T89_M): Remove
|
|
gcc/cp/
|
|
* cp-tree.h (class module_state): Move to module.c section.
|
|
(pp_module_name): Delete.
|
|
* error.c (cp_printer): Remove %M.
|
|
* module.c: Remove %M error printing.
|
|
(pp_module_name): Delete.
|
|
* ptree.c (cxx_print_decl): Print module number too.
|
|
|
|
2018-08-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Mangling substitutions!
|
|
gcc/cp/
|
|
* cp-tree.h (module_vec_name): Delete.
|
|
* mangle.c (mangle_substitution): Fix name typo.
|
|
* module.c (class module_state): Drop vec_name field. Make mod
|
|
short. Add subst field.
|
|
(module_state::mangle): New.
|
|
(mangle_module): Deal with substitutions.
|
|
(mangle_module_fini): Undeal with substitutions.
|
|
(module_vec_name): Delete.
|
|
(module_state::attach): Don't set vec_name.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/sym-subst-1.C: New.
|
|
* g++.dg/modules/sym-subst-2_[ab].C: New.
|
|
|
|
Fix module-state lifetime issue.
|
|
gcc/cp/
|
|
* cp-tree.h (finish_module): Break into ...
|
|
(finish_modle_{parse,procesing}): ... these two.
|
|
* decl2.c (c_parse_final_cleanups): Adjust modules finalization.
|
|
* modules.c (finish_modules): Break into ...
|
|
(finish_module_{parse,procesing}): ... these two.
|
|
(module_state::release): Break out ...
|
|
(module_state::slurped): ... this.
|
|
(module_state::{init,fini}): Fold into callers.
|
|
|
|
Refactor mangling interface.
|
|
gcc/cp/
|
|
* cp-tree.h (mangle_module, mangle_module_fini): Declare.
|
|
(mangle_substitution, mangle_identifer): Declare.
|
|
* mangle.c (mangle_substitution, mangle_identifer): Define.
|
|
(struct globals): Add mod field.
|
|
(maybe_write_module): Call mangle_module.
|
|
(finish_mangling_internal): Call mangle_module_fini.
|
|
* module.c (mangle_module, mangle_module_fini): Define.
|
|
|
|
2018-08-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Module state gains parent.
|
|
gcc/cp/
|
|
* cp-tree.h (get_module): Add parent argument.
|
|
(module_name): Return string.
|
|
* error.c (dump_module_suffix): Adjust module_name use.
|
|
* module.c (module_state_hash): Adjust for having a parent.
|
|
(module_state: Add parent & fullname fields.
|
|
(module_state::set_name): Delete.
|
|
(get_module): Add parent.
|
|
(get_module): Split string.
|
|
(module_mapper::{export_done,imex_query}): Adjust module name access.
|
|
(module_state::write_readme): Adjust.
|
|
(module_state::{read,write}_{imports,config}): Adjust.
|
|
(module_state::set_loc): Use fullename.
|
|
(module_state::attach): Create fullname.
|
|
* parser.c (cp_parser_module_name): Generate parental name.
|
|
* ptree.c (cxx_print_decl): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-1.C: Adjust diags.
|
|
|
|
Kill N: prefix notation
|
|
gcc/cp/
|
|
* module.c (enum module_kind): Delete.
|
|
(module_state): Replace kind with legacy, adjust is_legacy.
|
|
(module_state::set_name): Adjust.
|
|
(module_state_hash): Adjust hasher & comparator.
|
|
(module_legacy_system_p): Delete.
|
|
(make_flat_name): Move into ...
|
|
(get_module): ... here. Adjust.
|
|
(get_module): Add string variant.
|
|
(module_mapper::module_mapper): Adjust.
|
|
(module_mapper::{module_name_kind,response_name}): Delete.
|
|
(module_mapper::{imex_query,bewait_response,divert_include}): Adjust.
|
|
(module_state::{read_imports,attach}): Adjust.
|
|
(pp_module_name): Adjust.
|
|
(maybe_atom_legacy_module, init_module_processing)
|
|
(handle_module_option): Adjust.
|
|
* cxx-mapper.cc (module2bmi): Remove encoding.
|
|
(encode_module_name): Remove encoding.
|
|
gcc/c-family/
|
|
* c-lex.c (c_lex_with_flags): CPP_HEADER include quoting.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Adjust protocol doc.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Adjust BMI mapping.
|
|
* g++.dg/modules/legacy-0[ab].H: New.
|
|
* g++.dg/modules/legacy-*: Adjust.
|
|
|
|
2018-08-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
%M formatter
|
|
gcc/c-family/
|
|
* c-format.c (local_module_ptr_node): New.
|
|
(gcc_cxxdiag_char_table): Add 'M'.
|
|
(argument_parser::handle_conversions): Allow wanted type to be
|
|
NULL.
|
|
(init_dynamic_diag_info): Simplify lookup, add module_state.
|
|
* c-format.h (T89_M): New.
|
|
gcc/cp/
|
|
* cp-tree.h (class module_state): Declare before diagnostics.
|
|
* error.c (cp_printer): Add %M.
|
|
* module.c: Use %M error printing.
|
|
|
|
Use modules as handles themselves.
|
|
gcc/cp/
|
|
* cp-tree.h (class module_state): Forward declare.
|
|
(get_module, pp_module_name): Declare.
|
|
(import_module, declare_module, push_module_export): Take
|
|
module_state.
|
|
* module.c (proclaimer): A module.
|
|
(get_module, pp_module_name): Define.
|
|
(push_module_export, import_module, declare_module): Adjust.
|
|
* parser.c (cp_parser_module_name): Return module_state.
|
|
(cp_parser_module_declaration, cp_parser_import_declaration)
|
|
(cp_parser_module_proclamation): Adjust.
|
|
|
|
Fix GTY
|
|
gcc/cp/
|
|
* cp-tree.h (struct mc_index): Don't mark.
|
|
(struct mc_slot): Converted from union. Adjust.
|
|
(struct module_cluster): Skip mc_index.
|
|
* module.c (struct slurping,spewing): Skip range_t members.
|
|
(class module_state): Remove static data members.
|
|
(global_tree_arys, fixed_trees, global_crc, our_opts, lazy_lru)
|
|
(lazy_open, modules, modules_hash): New static vars. Adjust uses.
|
|
(finish_module): Add gc point.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/gc-1_[abcd].C: New.
|
|
|
|
2018-08-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (declare_module, import_module): Separate name from
|
|
location.
|
|
* module.c (module_state::attach): Drop maybe_vec_name arg.
|
|
(module_state::get_module): Flatten here.
|
|
(declare_module, import_module): Separate name and from loc.
|
|
(maybe_atom_legacy_module): Adjust.
|
|
* parser.c (cp_parser_module_name): Return tree only.
|
|
(cp_parser_module_declaration, cp_parser_import_declaration): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-4.H: Adjust error.
|
|
|
|
gcc/cp/
|
|
* module.c (module_mapper::divert_include): Don't append export attrib.
|
|
(import_module): Don't scan attribs.
|
|
(maybe_atom_legacy_module): Push exporting.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-3_[bc].H: Adjust.
|
|
* g++.dg/modules/legacy-5_b.C: Adjust.
|
|
* g++.dg/modules/legacy-6_[cd].C: Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::get_module): Lose dflt & insert args.
|
|
(module_state::insert_mapping): Move directly into ...
|
|
(module_mapper::module_mapper): ... here.
|
|
(module_mapper::bewait_response, module_state::read_imports): Adjust.
|
|
(import_module, declare_module): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::is_mapping): Rename to ...
|
|
(module_state::is_detached): ... here. Use from_loc.
|
|
(module_state::attach): New broken out of ...
|
|
(module_state::find_module): ... here. Delete, fold into ...
|
|
(module_state::read_imports, import_module, declare_module): ...
|
|
these callers.
|
|
(module_state::read): Adjust module index setting.
|
|
|
|
libiberty/
|
|
* pex-unix.c (IS_FAKE_VFORK): Rename to VFORK_IS_FORK.
|
|
(pex_unix_exec_child): Avoid spuros clobber warning, use stdio
|
|
when forking.
|
|
|
|
2018-08-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r263679.
|
|
|
|
Merge trunk r263673.
|
|
|
|
Revert r263619 2018-08-17 Nathan Sidwell <nathan@acm.org>
|
|
Revert r263597 2018-08-16 Nathan Sidwell <nathan@acm.org>
|
|
They break GTY strangely.
|
|
|
|
2018-08-17 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::is_detached): New.
|
|
(module_state::attach): New, broken out of ...
|
|
(module_state::find_module): ... here. Call it.
|
|
(declare_modules): Do module-specific attaching here.
|
|
|
|
2018-08-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp (dg-module-pre-prune): Delete
|
|
(g++-dg-prune): Don't override.
|
|
* g++.dg/modules/legacy-4.H: Use dg-regexp.
|
|
* g++.dg/modules/loc-2_[def].C: Likewise.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (class module_state): Forward declare.
|
|
(get_module, pp_module_name): Declare.
|
|
(push_module_export, declare_module, import_module): Take
|
|
module_state.
|
|
* error.c (cp_printer): Accept %M.
|
|
* module.c (module_state::find_module): Take module_state.
|
|
(module_state::get_module): Drop default & insert args.
|
|
(module_state::insert_mapping): Delete.
|
|
(module_mapper::{module_mapper,bewait_response): Adjust.
|
|
(module_mapper::divert_include): Drop indentation.
|
|
(module_state::read_imports): Adjust.
|
|
(proclaimer): Is a module_state pointer.
|
|
(push_module_state, declare_module, import_module): Adjust.
|
|
(pp_module_name): New.
|
|
(get_module): New.
|
|
(maybe_atom_legacy_module): Adjust.
|
|
* parser.c (cp_parser_module_name): Return module_state, adjust.
|
|
(cp_parser_module_declaration, cp_parser_import_declaration):
|
|
Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-4.H: Adjust regexp.
|
|
|
|
2018-08-08 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r263429.
|
|
|
|
2018-08-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r263272.
|
|
|
|
2018-07-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
libcpp/
|
|
* include/cpplib.h (cpp_clear_if_stack): Renamed from
|
|
cpp_pop_directives.
|
|
* directives.c (cpp_clear_if_stack): Likewise, drop all arg.
|
|
gcc/c-family/
|
|
* c-ppoutput.c (scan_translation_unit): Fixup.
|
|
|
|
gcc/c-family/
|
|
* c.opt (fmodule-preamble): Alias fmodule-preamble=
|
|
(fmodule-preamble): Fix type.
|
|
* module.c: Add i18n markers.
|
|
(init_module_processing): Detect unsupported option combos.
|
|
(handle_module_option): Don't zap explicit modules-ts.
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Add i18n
|
|
markers.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-preamble-9.C: New.
|
|
* g++.dg/modules/modules.exp (mode_list): Preamble is atom.
|
|
libcpp/
|
|
* directives.c (cpp_pop_directives): Buffer could be NULL.le
|
|
|
|
gcc/cp/
|
|
* lex.c (atom_preamble_prefix_peek): Use cpp_macro_p.
|
|
|
|
Hide NT_MACRO
|
|
libcpp/
|
|
* include/cpplib.h (cpp_macro_p): New.
|
|
* macro.c (cpp_fun_like_macro_p): Use it.
|
|
gcc/c-family/
|
|
* c-ada-spec.c (count_ada_macro, store_ada_macro): Use
|
|
cpp_macro_p.
|
|
* c-ppoutput.c (dump_macro): Likewise.
|
|
* c-spellcheck.cc (should_suggest_as_macro_p): Likewise.
|
|
gcc/
|
|
* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Use cpp_macro_p.
|
|
* config/powerpcspe/powerpcspe-c.c (rs6000_macro_to_expand): Likewise.
|
|
gcc/fortran/
|
|
* cpp.c (dump_macro): Use cpp_macro_p.
|
|
|
|
2018-07-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Restore g++-dg-prune after test.
|
|
* g++.dg/modules/legacy-5_c.C: Fix scan-lang-dump.
|
|
|
|
2018-07-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
No ALIASes for IMPORTS
|
|
gcc/cp/
|
|
* cxx-mapper.cc (module2bmi): No aliases here.
|
|
(client::imex_response): Adjust.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Remove ALIAS from IMPORT response
|
|
set.
|
|
|
|
Legacy header warning
|
|
gcc/
|
|
* invoke.texi (Wlegacy-header): New warning.
|
|
gcc/c-family/
|
|
* c.opt (Wlegacy-header): New.
|
|
gcc/cp/
|
|
* cp-tree.h (atom_preamble_end): Declare.
|
|
* cp-lang.c (atom_preamble_fsm): Use it.
|
|
* lex.c (atom_preamble_prefix_peek): Check OPT_Wlegacy_header.
|
|
* module.c (do_divert_include): Likewise.
|
|
(atom_divert_include): Default -Wlegacy-header.
|
|
(atom_preamble_end): New.
|
|
* parser.c (c_parse_file): Use it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-6*: New.
|
|
|
|
Legacy header aliasing
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Update protocol docs
|
|
gcc/cp/
|
|
* cxx-module.cc (module2bmi): Deal with aliasing.
|
|
(encode_module_name): New.
|
|
(read_mapping_file): Use it. Deal with aliasing.
|
|
(client::imex_response): Likewise.
|
|
(client::action): Likewise,
|
|
* module.c (module_mapper::module_name_kind): New.
|
|
(module_mapper::response_name): Use it.
|
|
(module_mapper::divert_include): Allow aliasing.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-5*: New.
|
|
|
|
2018-07-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge legacy header options to -fmodules-
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Adjust.
|
|
gcc/c-family/
|
|
c.opt (fmodules_legacy, fmodules_legacy=): New.
|
|
(fmodule-{user,system}-header{,=}): Delete.
|
|
gcc/cp/
|
|
* cp-tree.h (modules_legacy_p): Renamed from modules_header_p.
|
|
* lang-specs.h (@c++-header): Update.
|
|
* lex.c (atom_preamble_prefix_peek): Adjust.
|
|
* module.c (module_legacy_name): Do not force to empty string.
|
|
(module_state::get_option_string): Adjust.
|
|
(declare_module, maybe_atom_legacy_module, init_module_processing)
|
|
(handle_module_option): Likewise.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-[1234]*: update.
|
|
* g++.dg/modules/atom-inc-1.C: Update.
|
|
|
|
Explicit user/system legacy headers
|
|
gcc/c-family/
|
|
* c-lex.c (c_lex_with_flags): Encode header names in tree lists.
|
|
* c.opt (fmodule-{user,system}-header): New.
|
|
gcc/cp/
|
|
* cxx-mapper.cc (module2bmi): Adjust.
|
|
(read_mapping_file): Encode legacy header names.
|
|
* lang-specs.h (@c++-header): Update.
|
|
* module.c (module_state_hash::hash): Update hashers.
|
|
(enum module_kind): New.
|
|
(module_state::set_name): Adjust.
|
|
(module_state_hash::equal): Adjust.
|
|
(module_header_is_system): New.
|
|
(make_legacy_name): Delete.
|
|
(module_state::get_module): Adjust.
|
|
(module_mapper::response_name): New.
|
|
(module_mapper::imex_query): Adjust.
|
|
(module_mapper::bewait_response): Adjust.
|
|
(module_mapper::divert_include): Adjust.
|
|
(declare_module, maybe_atom_legacy_module): Likewise.
|
|
(handle_module_option): Check new options.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: update BMI encodings.
|
|
* g++.dg/modules/legacy-[1234]*: update.
|
|
* g++.dg/modules/atom-inc-1.C: Update.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document new options.
|
|
|
|
2018-06-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Diverted header column preservation
|
|
libcpp/
|
|
* directives.c (do_include_common): Adjust divert callback.
|
|
* include/cpplib.h (cpp_divert_include_t): Likewise.
|
|
gcc/cp/
|
|
* module.c (module_mapper::divert_include): Add line_maps.
|
|
Preserve column number.
|
|
(import_module): Look at attribs.
|
|
(do_divert_include): Adjust.
|
|
* parser.c (cp_parser_module_declaration): Return loc of name.
|
|
(cp_parser_import_declaration): Likewise.
|
|
(cp_parser_parse_module_preamble): Adjust.
|
|
gcc/
|
|
* langhooks.h (lang_hooks): Adjust preprocess_divert_include.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-3_b.H: Adjust.
|
|
* g++.dg/modules/legacy-3_c.H: Adjust.
|
|
* g++.dg/modules/legacy-4.H: Adjust.
|
|
|
|
Diverted include line numbering
|
|
libcpp/
|
|
* directives.c (do_include_common): Fixup diversion line
|
|
numbering.
|
|
(_cpp_pop_buffer): Free to_free even if not a file.
|
|
gcc/c-family/
|
|
* c-ppoutput.c (print_line_1): More C++y.
|
|
gcc/cp/
|
|
* module.c (module_mapper::divert_include): Two \n's.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-4: New.
|
|
* g++.dg/modules/legacy-3_b.H
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp (dg-module-pre-prunes): Renamed.
|
|
|
|
libcpp/
|
|
* directives.c (do_include_common): Include diverter will push
|
|
buffer.
|
|
* include/cpplib.h (cpp_divert_include_t): Adjust signature.
|
|
gcc/
|
|
* langhooks.h (lang_hooks): Adjust preprocess_divert_include
|
|
signature.
|
|
gcc/cp/
|
|
* module.c (module_mapper::divert_include): Push buffer here.
|
|
(do_divert_include): Adjust.
|
|
|
|
2018-06-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-3*: New.
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Fix execution tests. Add dg-module-literal
|
|
* g++.dg/modules/legacy-2_d.C: Fix expected line number.
|
|
* g++.dg/modules/loc-2_[def].C: Use dg-module-literal.
|
|
|
|
(Beginnings of) Include diversion.
|
|
gcc/c-family/
|
|
* c-opts.c (c_common_post_options): Set divert_include hook.
|
|
(cb_file_change): Fixup precedence.
|
|
gcc/cp/
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE): Override.
|
|
* cp-tree.h (modules_header_p): New.
|
|
(atom_divert_include): Declare.
|
|
* cxx-mapper.cc (flag_fallback): New flag.
|
|
(module2bmi): Deal with NULL names.
|
|
(buffer::get_request): Fix off-by-one error.
|
|
(read_mapping_file): Can be multiply called. Target file name can
|
|
be null.
|
|
(client::action): Deal with INCLUDE.
|
|
(main): There can be may files after connection. Fixup networking
|
|
errors.
|
|
* lex.c (atom_preamble_prefix_peek): Don't rescan legacy header
|
|
module.
|
|
* module.c (module_preamble_end_loc): Declare here.
|
|
(module_mapper::module_mapper): Prepend path for anything looking
|
|
defaulty.
|
|
(module_mapper::divert_include): New.
|
|
(do_divert_include): New.
|
|
(atom_divert_include): New.
|
|
(init_module_processing): Set header mode here.
|
|
* parser.c (module_preamble_end_loc): Extern.
|
|
gcc/
|
|
* doc/invoke.text (C++ Modules): Document -fmodule-header.
|
|
* langhooks-def.h (LANG_HOOKS_PREPROCESS_DIVERT_INCLUDE): Provide
|
|
default.
|
|
* langhooks.h (lang_hooks): Add preprocess_divert_include.
|
|
libcpp/
|
|
* directives.c (do_include_common): Add diversion smarts.
|
|
* include/cpplib.h (cpp_divert_include_t): New.
|
|
(struct cpp_callbacks): Add divert_include.
|
|
* line-map.c (linemap_module_loc): Missed commit.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/legacy-2.*: New.
|
|
* g++.dg/modules/modules.exp: Fixup header compilation.
|
|
|
|
2018-06-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
(Beginnings of) Legacy importing
|
|
gcc/cp/
|
|
* cxx-mapper.cc (module2bmi): Map legacy header names.
|
|
* module.c (module_state::legacy): New field.
|
|
(module_state::{is_legacy,set_name}): New.
|
|
(make_legacy_name): New.
|
|
(module_state::get_module): Canonicalize legacy name.
|
|
(module_state::get_option_string): Strip -fmodule-header.
|
|
(declare_module): Check correct kind.
|
|
(maybe_atom_legacy_module): Use make_legacy_name.
|
|
* parser.c (cp_parser_module_name): Parse legacy names.
|
|
(cp_parser_import_declaration): Don't special case legacy names
|
|
here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-inc-1.C: Add expected errors.
|
|
* g++.dg/modules/legacy-1_[abc].[CH]: New.
|
|
* g++.dg/modules/modules.exp: Support legacy header compilation.
|
|
|
|
(Beginnings of) Legacy header modules
|
|
libcpp/
|
|
* line-map.c (linemap_module_loc): Expect ordinary loc.
|
|
gcc/
|
|
* langhooks-def.h (LANG_HOOKS_PREPROCESS_MAIN_FILE): Provide
|
|
default.
|
|
* langhooks.h (lang_hooks): Add preprocess_main_file hook.
|
|
gcc/c-family/
|
|
* c-opts.c (cb_file_change): Call new hook.
|
|
gcc/cp/
|
|
* cp-tree.h (enum atom_preamble_state): Define.
|
|
(atom_preamble_prefix_{peek,next}): Use enum.
|
|
(atom_main_file, maybe_atom_legacy_module): Declare.
|
|
* cxx-mapper.cc (module2bmi): Munge legacy module chars.
|
|
* lang-specs.h (@c++-header): Fix -fmodule-header use.
|
|
* lex.c (atom_preamble_prefix_{peek,next}): Adjust for enum.
|
|
* module.c (prefix_line_maps_hwm, prefix_locations_hwm): New.
|
|
(module_state::{read,write,prepare}_locations): Adjust prefix checking.
|
|
(ordinary_loc_of): New.
|
|
(import_module): Use it.
|
|
(declare_module): Set preamble prefix if needed.
|
|
(atom_main_file, maybe_atom_legacy_module): New.
|
|
(init_module_processing): Don't default module_header_name here.
|
|
(atom_module_preamble, finish_module): Push & pop exporting state in
|
|
legacy mode.
|
|
* parser.c (cp_parser_get_module_preamble_tokens): Adjust for
|
|
preamble state. Return indicator of preamble contents.
|
|
(c_parse_file): Maybe inject legacy module decl.
|
|
* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE): Override hook.
|
|
(atom_preamble_fsm): Adjust for state enum.
|
|
|
|
2018-06-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r262148.
|
|
|
|
gcc/
|
|
* configure.ac: Fix AF_INET6 & accept4 tests.
|
|
* configure, config.in: Rebuilt.
|
|
gcc/cp/
|
|
* module.c: Update some comments.
|
|
(module_mapper::module_mapper): Fix up conditional code.
|
|
(module_state::read_imports): Replace local class with std::pair,
|
|
because C++98.
|
|
* cxx-mapper.cc (accept_from): Fixup conditional code.
|
|
|
|
2018-06-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cxx-mapper.cc (kill_signal): New.
|
|
(server): Fixup inet_ntop use.
|
|
|
|
gcc/
|
|
* configure.ac: Check for inet_ntop.
|
|
* configure, config.in: Rebuilt.
|
|
gcc/cp/
|
|
* cxx-mapper.cc (server): Use inet_ntop when available.
|
|
|
|
2018-06-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cxx-mapper.cc: BMI->GCC
|
|
* module.c: Likewise.
|
|
gcc/
|
|
* doc/invoke.texi: Likewise.
|
|
|
|
2018-06-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cxx-mapper.cc (struct netmask): New.
|
|
(server): Validate connection addresses.
|
|
(accept_from): New.
|
|
(process_args): Add -a arg.
|
|
|
|
Simplify protocol.
|
|
gcc/cp/
|
|
* cxx-mapper.c (buffer::empty): New.
|
|
(buffer::send_response): Fixup buffer management.
|
|
(client::imex_response): New.
|
|
(client::action): Reimplement.
|
|
* module.c (module_mapper): Update.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Update protocol.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_c.C: Tweak scan.
|
|
|
|
A proper server
|
|
gcc/cp/
|
|
* cxx-module-mapper.sh: Delete.
|
|
* cxx-mapper.cc: New.
|
|
* Make-lang.in: Adjust.
|
|
* module.c (module_mapper:get_response): Fixup errors.
|
|
(module_mapper::import_query): Drop filename.
|
|
|
|
2018-06-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_mapper::send_command): Fix off-by-one.
|
|
(module_mapper::get_response): Cleanup batch splitting.
|
|
(module_mapper::handshake): Adjust.
|
|
* cxx-module-mapper.sh (cmd): Adjust HELLO.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Tweak mapper protocol.
|
|
|
|
gcc/
|
|
* configure.ac: Check select, accept4.
|
|
* config.in, configure: Rebuilt.
|
|
|
|
2018-06-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/c-family/
|
|
* c.opt: Add -fmodule-header.
|
|
gcc/cp/
|
|
* lang-specs.h: Add legacy import options.
|
|
* module.c (module_header_name): New.
|
|
(init_module_processing): Default it.
|
|
(handle_module_option): Set it.
|
|
|
|
Use getaddrinfo, not gethostbyname2
|
|
gcc/
|
|
* configure.ac (HAVE_AF_INET6): Test for getaddrinfo.
|
|
* configure: Rebuilt.
|
|
* doc/invoke.text (C++ Modules): Default is loopback.
|
|
gcc/cp/
|
|
* module.c (module_mapper::module_mapper): Reorganize network startup.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/bad-mapper-[23].C: Adjust diagnostics.
|
|
|
|
2018-06-19 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Early & late location maps.
|
|
gcc/cp/
|
|
* modules.c (slurping, spewing): Rearrange.
|
|
(module_state::{prepare,read,write}_locations): Reimplement.
|
|
(module_state::{read,write}): Adjust.
|
|
(module_state::atom_preamble): Adjust.
|
|
|
|
2018-06-18 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/loc-2_[a-f].C: New.
|
|
|
|
2018-06-17 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* configure.ac: Detect epoll & pselect.
|
|
* configure, config.in: Rebuilt.
|
|
|
|
gcc/cp/
|
|
* module.c (module_mapper::module_mapper): Fixup length errors.
|
|
|
|
gcc/cp/
|
|
* cxx-module-mapper.sh: Remove recompilation capability.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-2.C: Adjust messages.
|
|
* g++.dg/modules/main-aux.cc: Delete.
|
|
* g++.dg/modules/main_1.C: Delete.
|
|
|
|
2018-06-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Starting
|
|
location could be a module.
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::loc): Move to ...
|
|
(module_state::{read,write}_location}): ... here.
|
|
(trees_{in,out}::core_vals): Adjust.
|
|
(module_state::{read,write}_imports): Serialize import location.
|
|
(module_state::set_loc): Add floc parm, adjust.
|
|
gcc/testsuite/
|
|
* lib/prune.exp (prune_gcc_output): Adjust regexp.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (make_module_loc): Delete.
|
|
* lex.c (make_module_loc): Delete.
|
|
* module.c (module_state): Add depth field.
|
|
(module_state::set_loc): Deal with reseating. Add line_maps parm.
|
|
(module_state::read_imports): Do two passes.
|
|
(module_state::write_imports): Write length.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-1_e.C Adjust lang dump scan.
|
|
* g++.dg/modules/mod-imp-1_d.C: Likewise.
|
|
libcpp/
|
|
* include/line-map.h (linemap_module_loc): Add incomping loc parm.
|
|
* line-map.c (linemap_module_loc): Do reseating.
|
|
|
|
Location! Location! Location!
|
|
gcc/cp/
|
|
* module.c (module_state::slurper): New.
|
|
(trees_{in,out}::loc): Implement.
|
|
(trees_in::core_vals): Set locus.
|
|
(spewing::linemaps): Fixup offset calculation.
|
|
(module_state::read_locations): Set ord_locs.
|
|
gcc/testsuite/
|
|
* g++.dg/module/loc-1_[abc].C: New.
|
|
|
|
libcpp/
|
|
* include/line-map.h (IS_ORDINARY_LOC, IS_MACRO_LOC): New.
|
|
(IS_ADHOC_LOC): Simplify.
|
|
(MAP_ORDINARY_P): Use IS_ORDINARY_LOC.
|
|
* line-map.c (linemap_module_restore): Fixup included_at.
|
|
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Fixup include
|
|
stack messages.
|
|
gcc/testsuite/
|
|
* lib/prune.exp (prune_gcc_output): Adjust include stack regexps.
|
|
|
|
gcc/cp/
|
|
* module.c (spewer::linemaps): Return mask.
|
|
(module_state::{find,write}_locations): Use mask.
|
|
(module_state::read_locations): Implement.
|
|
|
|
Line_maps args everywhere!
|
|
gcc/cp/
|
|
* cp-tree.h (declare_module, import_module, atom_module_preamble):
|
|
Add line_maps arg.
|
|
* module.c (module_state::{read_imports,do_import}): Add line_maps.
|
|
(module_state::set_loc): New.
|
|
(module_state::atom_preamble): Deal with restoring line_maps.
|
|
(module_state::read): Add line_maps. Call read_locations.
|
|
* parser.c (cp_parser_module_declaration)
|
|
(cp_parser_import_declaration): Adjust.
|
|
(c_parse_file): Line_maps restoration is moved.
|
|
libcpp/
|
|
* include/line-map.h (linemap_save_pre_module): Delete.
|
|
(linemap_restore_pre_module): Rename to ...
|
|
(linemap_module_restore): ... here.
|
|
* line-map.c (linemap_save_pre_module): Delete.
|
|
(linemap_restore_pre_module): Rename to ...
|
|
(linemap_module_restore): ... here.
|
|
|
|
gcc/cp/
|
|
* module.c (bytes_{in,out}::align): New.
|
|
(bytes_{in,out}::buf): Use it.
|
|
|
|
libcpp/
|
|
* line-map.c (linemap_init): Set default allocator here.
|
|
(line_map_new_raw): Break out of ...
|
|
(new_linemap): ... here. Call it.
|
|
* include/line-map.h (line_map_new_raw): Declare
|
|
|
|
2018-06-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Break out import section.
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_imports): New.
|
|
(module_state::{read,write}_config): Don't do imports here ...
|
|
(module_state::{read,write}): ... do them here.
|
|
|
|
Fix section alignment.
|
|
gcc/cp/
|
|
* module.c (elf_out::grow): Fix padding calc.
|
|
(elf_out::add): Assert aligned.
|
|
|
|
Write out line maps.
|
|
gcc/cp/
|
|
* cp-tree.g (atom_module_preamble, finish_module): Add line_maps.
|
|
* decl2.c (c_parse_final_cleanups): Pass line_table.
|
|
* parser.c (c_parse_file): Adjst.
|
|
* module.c (struct spewing): New.
|
|
(struct slurping): Add GTY tagging.
|
|
(module_state::spewer): New.
|
|
(module_state::{write,atom_preamble}): Add linemaps.
|
|
(module_state::{find,write,read}_locations): New.
|
|
|
|
gcc/cp/
|
|
* module.c (struct slurping): New, broken out of ...
|
|
(struct module_state): ... here. Move loading data there and
|
|
adjust all users.
|
|
|
|
2018-06-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Reorg line_map data structures.
|
|
libcpp/
|
|
* include/line-map.h (LINE_MAP_MAX_LOCATION): Define here.
|
|
(struct line_map): Move reason field to line_map_ordinary. Adjust
|
|
GTY tagging.
|
|
(struct line_map_ordinary): Reorder fields for less padding.
|
|
(struct line_map_macro): Likewise.
|
|
(MAP_ORDINARY_P): New.
|
|
(linemap_check_ordinary, linemap_check_macro): Adjust.
|
|
(MAP_MODULE_P): Adjust.
|
|
* line-map.c (LINE_MAP_MAX_SOURCE_LOCATION): Delete.
|
|
(new_linemap): Take start_location, not reason. Adjust.
|
|
(linemap_add, linemap_enter_macro): Adjust.
|
|
(linemap_line_start): Likewise.
|
|
(linemap_macro_expansion_map_p): Use MAP_ORDINARY_P.
|
|
(linemap_macro_loc_to_spelling_point): Likewise.
|
|
(linemap_macro_loc_to_def_point): Likewise.
|
|
(linemap_dump): Likewise.
|
|
|
|
2018-06-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Better socket handling. Kill mapping from fd
|
|
gcc/cp/
|
|
* module.c (class module_mapper): Add from & to fds.
|
|
(module_mapper::{module_mapper,kill}): Adjust.
|
|
(module_mapper::{send_command,get_response}): Likewise.
|
|
(module_from_cmp): New.
|
|
(module_state::atom_preamble): Reimplement.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Remove fd mapper options.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-2.C: Adjust messages.
|
|
* g++.dg/modules/flag-1_b.C: Likewise.
|
|
* g++.dg/modules/mod-stamp-1_d.C: Likewise.
|
|
|
|
gcc/
|
|
* configure.ac: Rename HOST_HAS_AF_$FOO to HAVE_AF_$FOO.
|
|
* configure, config.in: Rebuilt.
|
|
gcc/cp/
|
|
* module.c: Adjust.
|
|
|
|
2018-06-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c
|
|
(elf_out::grow): Always define, always align.
|
|
(elf_out::write): Streaming buffers must be using our
|
|
allocator. No need to align here.
|
|
|
|
MMAP writing
|
|
gcc/
|
|
* configure.ac: Check for posix_fallocate.
|
|
* configure, config.in: Rebuilt.
|
|
gcc/cp/
|
|
* module.c (MAPPED_WRITING): New.
|
|
(data::allocator::{grow,shrink}): New overloads.
|
|
(data::use): Check available.
|
|
(data::allocator::grow): Deal with allocator failure.
|
|
(bytes_in::read): Set overflow on fail.
|
|
(bytes_{in,out}::{u32,c,i,u,wi,buf}): Adjust.
|
|
(bytes_out::printf): Likewise.
|
|
(bytes_out::bytes_out): Allocator is non-optional.
|
|
(elf_out): Derive from data::allocator.
|
|
(elf_out::{grow,shrink}): New overriders.
|
|
(elf_out::elf_out): Find page size.
|
|
(elf_out::{create,remove}_mapping): New.
|
|
(elf_out::write): New overload.
|
|
(elf_out::add): Take bytes_out. Adjust users.
|
|
(elf_out::{begin,end}): Add mapping support.
|
|
(trees_out::trees_out): Add allocator parm.
|
|
(trees_{in::out}::fixed_refs): Delete, adjust uses.
|
|
(module_state::write_{readme,config,namespaces,bindings}): Adjust.
|
|
(module_state::write_{unnamed,cluster}): Adjust.
|
|
|
|
Prep for MMAP exporting.
|
|
gcc/cp/
|
|
* module.c (MODULE_MMAP_IO): Rename to ...
|
|
(MAPPED_READING): This.
|
|
(data): Add allocator class with default instance.
|
|
(data::{write,printf}): Move to bytes_out.
|
|
(data::read): Move to bytes_in.
|
|
(data::{extend,release}): Delete. Adjust uses.
|
|
(bytes_out): Add allocator pointer, alter ctor.
|
|
(bytes_out::begin): Add need_crc parm.
|
|
(elf::section_vec): Delete.
|
|
(elf): Add sectab, strtab data members.
|
|
(get_num_sections): Delete.
|
|
(elf_{in,out}::strings): Delete here.
|
|
(elf_in::{grow,shrink}): New.
|
|
(elf_in::{get_section{,_limit}): New, adjust uses.
|
|
(elf_in::{keep_sections,forget_section}): Delete.
|
|
|
|
2018-06-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
MMAP importing!
|
|
gcc/cp/
|
|
* module.c (MODULE_MMAP_IO): New define.
|
|
(bytes::{begin,end}): Delete.
|
|
(elf_in::{freeze,defrost}): Adjust.
|
|
(elf_in::{begin,end}): Adjust.
|
|
(elf_in::{keep,forget}_section): Adjust.
|
|
(elf_in::read): Adjust.
|
|
(module_state::our_opts): New static member. Adjust uses.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document lazy limit change.
|
|
|
|
2018-06-08 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (elf): Replace FILE *stream with int fd. Update uses.
|
|
|
|
gcc/cp/
|
|
* module.c (bytes::begin): Add CRC parm.
|
|
(elf_in): Read buffers, adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (elf_out): Track file position directly.
|
|
(elf_out::pad): Remove, fold into ...
|
|
(elf_out::write): ... here. Take a buffer.
|
|
(elf_out::{add,begin,end}): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (elf): Add hdr member.
|
|
(elf_in::begin): Adjust.
|
|
(elf_out::{begin,end}): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (data::printf): Moved from ...
|
|
(bytes_out::printf): ... here.
|
|
(elf): Replace sections pointer with section_vec local class.
|
|
Adjust all uses.
|
|
(elf_out): Remove strtab member class.
|
|
(elf_out::end): Adjust.
|
|
|
|
2018-06-07 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (bytes::calc_crc): Take length parm. Adjust callers.
|
|
(elf_out::strtab): Reimplement.
|
|
(elf_out::add): Use buffer pos for length.
|
|
|
|
gcc/cp/
|
|
* module.c (struct data): Resurrect. Move buffer extension here.
|
|
Update users.
|
|
(class bytes): Derive from data.
|
|
|
|
gcc/cp/
|
|
* module.c (struct data): Delete. Move into ...
|
|
(struct bytes): ... here. Update uses.
|
|
|
|
gcc/cp/
|
|
* module.c (struct data): Make buffer a pointer. Redo interface.
|
|
|
|
Change integer on-disk format.
|
|
gcc/cp/
|
|
* module.c (bytes_{in,out}::{i,u,wi}): Reimplement.
|
|
(make_bmi_path): Don't prefix absolute paths.
|
|
|
|
BMI repo directory
|
|
libiberty/
|
|
* pex-unix.c: Fixup optimization issues.
|
|
gcc/cp/
|
|
* cxx-module-mapper.sh: Add repo to HELLO.
|
|
* module.c (bmi_repo, bmi_repo_length, bmi_path, bmi_path_alloc): New.
|
|
(set_bmi_repo, make_bmi_path, drop_bmi_prefix): New.
|
|
(module_mapper::{handshake,module_mapper}): Repo location from file.
|
|
(relativize_import): Delete.
|
|
(module_state::{write_readme,maybe_defrost,do_import,finish_module):
|
|
Adjust.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document bmi repo.
|
|
|
|
2018-06-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Better pex-unix.
|
|
libiberty/
|
|
* pex-unix.c (VFORK_STRING): Replace with ...
|
|
(IS_FAKE_VFORK): ... this.
|
|
(pex_child_error): Delete, fold into ...
|
|
(pex_unix_exec_child): ... here. Inform parent, when really vforking.
|
|
gcc/cp/
|
|
* module.c (module_mapper::module_mapper): Merge error message.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/bad-mapper-1.C: Adjust.
|
|
* g++.dg/modules/bad-mapper-{2,3}.C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (module_mapper::module_mapper): Ignore sigpipe.
|
|
(module_mapper::kill): Restore sigpipe.
|
|
(module_mapper::{response_unexpected,get_response}): Cope with EOF.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/bad-mapper-1.C: New.
|
|
|
|
2018-06-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Clarify and extend.
|
|
|
|
2018-06-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Self relative direct import pathnames.
|
|
gcc/cp/
|
|
* module.c (relativize_import): New.
|
|
(module_state::write_readme): Call it.
|
|
(module_state::read_imports): Make import relative to importer,
|
|
query mapper if needed.
|
|
|
|
Cookies for mapping files
|
|
gcc/cp/
|
|
* module.c (module_mapper::response_eol): Add ignore arg.
|
|
(module_mapper::module_mapper): Cookie on file mapper.
|
|
gcc/
|
|
* invoke.texi (C++ Modules): Document file mapper cookie.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/map-1_b.C: Use specific mapper.
|
|
* g++.dg/modules/map-1_b.map: New.
|
|
|
|
2018-06-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Don't claim
|
|
module was imported.
|
|
* doc/invoke.texi (C++ Modules): Update module-mapper docs.
|
|
gcc/cp/
|
|
* module.c (module_mapper::module_mapper): Change syntax for
|
|
option.
|
|
(module_mapper::response_token): Add all parm.
|
|
(module_mapper::bmi_response): Use it.
|
|
(module_state::check_read): Fix error reporting.
|
|
(finish_module): Warn if not exporting due to errors.
|
|
gcc/testsuite/
|
|
* lib/prune.exp (prune_gcc_output): Adjust module import regexp/
|
|
* g++.dg/modules/map-1_[ab].C: Adjust module-mapper arg.
|
|
* g++.dg/modules/atom-decl-2.C: Add expected warning
|
|
* g++.dg/modules/mod-decl-1.C: Likewise.
|
|
* g++.dg/modules/mod-decl-3.C: Likewise.
|
|
* g++.dg/modules/proclaim-1.C: Likewise.
|
|
|
|
2018-06-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_mapper): Robustify.
|
|
|
|
gcc/fortran/
|
|
* cpp.c (cb_file_change): Adjust for line map inclusion changes.
|
|
|
|
Module mapping file is back
|
|
gcc/
|
|
* doc/invoke.text (C++ Modules): Document mapping file.
|
|
gcc/cp/
|
|
* cxx-module-mapper.sh: Strip -fmodule-preamble=.
|
|
* module.c (elf::get_error): Detect no file name.
|
|
(module_state): Add imported field.
|
|
(module_state::is_{imported,mapping}): New.
|
|
(module_mapper::module_mapper): Read mapping file.
|
|
(module_mapper::get_response): Distingish empty from end.
|
|
(module_state::get_module): Copy a mapping.
|
|
(module_state::insert_mapping): New.
|
|
(module_state::read_imports): Adjust.
|
|
(module_state::do_import): Set imported.
|
|
(import_module, declare_module): Adjust.
|
|
(module_state::atom_preamble): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/map-1{_a.C,_b.C,.map}: New.
|
|
|
|
2018-05-31 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Show mapper cookie.
|
|
gcc/cp/
|
|
* module.c (module_mapper::fini): Assert.
|
|
(module_mapper::module_mapper): Remove dup2.
|
|
(module_mapper::reset): Delete.
|
|
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Rename -fmodule-server to
|
|
-fmodule-mapper.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-mapper): Renamed from fmodule-server.
|
|
gcc/cp/
|
|
* cxx-module-mapper.sh: Renamed from cxx-module-server.sh.
|
|
* Make-lang.in: Update.
|
|
* module.c (struct module_mapper): Renamed from module_server.
|
|
|
|
Merge trunk r261033.
|
|
|
|
gcc/cp/
|
|
* module.c (bytes_in::begin): Add location_t arg.
|
|
(elf_in::begin): Add location args.
|
|
(trees_in::{tree_node,finish}): Use error_at.
|
|
(module_server::module_server): Likewise.
|
|
(module_state::read*): Adjust.
|
|
(module_state::{do_import,lazy_load}): Don't set input_location.
|
|
(finish_module): Likewise.
|
|
|
|
ASYNC loading & server cookie.
|
|
gcc/cp/
|
|
* cp-tree.h (reseat_module_loc, module_from_loc): Delete.
|
|
(atom_module_preamble): Declare.
|
|
* cxx-module-server.sh (cmd): Fix ASYNC response.
|
|
* lex.c (reseat_module_loc, module_from_loc): Delete.
|
|
* module.c (module_state::from_loc): Is a field.
|
|
(module_server): Require locations throughout. Redesign
|
|
interface. Add cookie.
|
|
(module_state::read_config): Use from_loc.
|
|
(module_state::read): Don't set module_purview here ...
|
|
(module_state::find_module): ... do it here.
|
|
(module_state::do_import): Add check_crc flag. Don't query server
|
|
here.
|
|
(import_module, declare_module): Query server here (ts).
|
|
(module_state::atom_preamble): New.
|
|
(atom_module_preamble): Call it.
|
|
(finish_module): Adjust.
|
|
* parser.c (cp_parser_peek_module_name): Fold into ...
|
|
(cp_parser_module_name): ... here.
|
|
(cp_parser_module_declaration): No injected atom end marker.
|
|
(cp_parser_module_preamble): Rename to ...
|
|
(cp_parser_get_module_preamble_tokens): ... this. Don't append
|
|
end marker. Return end loc.
|
|
(cp_parser_parse_module_preamble): New.
|
|
(cp_parser_declaration_seq_opt): Adjust.
|
|
(cp_parser_fill_main): Skip preamble.
|
|
(c_parse_file): Do preamble tokenization and parsing here.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document server cookie.
|
|
libcpp/
|
|
* include/cpplib.h (cpp_relocate_peeked_tokens): Declare.
|
|
* include/line-map.h (linemap_save_pre_module)
|
|
(linemap_restore_pre_module): Declare.
|
|
(LINEMAP_MODULE_SET_FROM): Delete.
|
|
* lex.c (cpp_relocate_peeked_tokens): New.
|
|
* line-map.c (linemap_module_loc): Set from direcly.
|
|
(linemap_save_pre_module, linemap_restore_pre_module): New.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/flag-1_b.C
|
|
* g++.dg/modules/freeze-1_d.C
|
|
* g++.dg/modules/import-2.C
|
|
* g++.dg/modules/indirect-1_c.C
|
|
* g++.dg/modules/mod-stamp-1_d.C
|
|
|
|
2018-05-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Module location
|
|
libcpp/
|
|
* include/cpplib.h (cpp_module_file): Delete.
|
|
* include/line-map.h (MAP_MODULE_P, LINEMAP_MODULE_SET_FROM): New.
|
|
(linemap_module_loc): Declare.
|
|
* files.c (cpp_module_file): Delete.
|
|
* line-map.c (linemap_module_loc): New.
|
|
gcc/cp/
|
|
* cp-tree.h (module_file_nest): Delete.
|
|
(make_module_loc, reseat_module_loc, module_from_loc): Declare.
|
|
* lex.c (module_file_nest): Delete.
|
|
(make_module_loc, reseat_module_loc, module_from_loc): New.
|
|
* module.c (struct module_state): Replace imp_loc and self_loc
|
|
with plain loc.
|
|
(module_state::{push,pop}_location): Delete.
|
|
(module_state::from_loc): New.
|
|
(module_state::find_module): Set module loc here.
|
|
(module_state::do_import): Adjust loc setting.
|
|
(module_state::lazy_load): Likewise.
|
|
(finish_module): Likewise.
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Show module imports.
|
|
gcc/testsuite/
|
|
* lib/prune.exp: Prune 'module imported at'.
|
|
* g++.dg/modules/atom-check-1_b.C: Adjust.
|
|
* g++.dg/modules/circ-1_c.C: Adjust.
|
|
* g++.dg/modules/flag-1_b.C: Adjust.
|
|
* g++.dg/modules/import-2.C: Adjust.
|
|
* g++.dg/modules/mod-decl-1.C: Adjust.
|
|
* g++.dg/modules/mod-decl-2_b.C: Adjust.
|
|
* g++.dg/modules/mod-stamp-1_d.C: Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (struct module_state): Replace loc with imp_loc &
|
|
self_loc. Rename imported to direct.
|
|
(module_state::occupied): Delete.
|
|
(module_state::read{_,config}): Replace crc_ptr with bool flag.
|
|
(module_state::do_import): ... here. Break out ...
|
|
(module_state::find_module): ... this part. Absorb ...
|
|
(module_state::occupy): ... this. Delete.
|
|
(module_state::get_module): Change default insert. Check vec_name
|
|
for occupation.
|
|
(module_state::write_imports): Adjust.
|
|
(import_module, declare_module): Adjust.
|
|
|
|
2018-05-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Included from index becomes included_at location
|
|
libcpp/
|
|
* include/line-map.h (line_map_ordinary): Replace included_from
|
|
index with included_at source_location.
|
|
(ORDINARY_MAP_INCLUDER_FILE_INDEX, LAST_SOURCE_LINE_LOCATION)
|
|
(LAST_SOURCE_LINE, LAST_SOURCE_COLUMN): Delete.
|
|
(INCUDED_FROM): Delete.
|
|
(INCLUDED_AT, linemap_included_at): New.
|
|
(MAIN_FILE_P): Adjust.
|
|
* directives.c (do_linemarker): Use linemap_included_at.
|
|
* line-map.c (include_at_map): New.
|
|
(line_check_files_exited): Use it.
|
|
(LAST_SOURCE_LINE_LOCATION): New (moved from header).
|
|
(linemap_add, linemap_dump, linemap_dump_location): Adjust.
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Use
|
|
linemap_included_at. Adjust line & col discovery.
|
|
gcc/c-family/
|
|
* c-common.c (try_to_locate_new_include_insertion_point): Use
|
|
linemap_included_at.
|
|
* c-lex.c (fe_file_change): Use INCLUDED_AT.
|
|
* c-ppoutput.c (pp_file_change): Likewise.
|
|
|
|
libcpp/
|
|
* include/line-map.h (enum lc_reason): Add LC_HWM, LC_CXX_MODULE.
|
|
* line-map.c (linemap_dump): Adjust.
|
|
gcc/
|
|
* diagnostic.c (diagnostic_report_current_module): Reroll loop.
|
|
|
|
gcc/cp/
|
|
* cxx-module-server.sh: Add batching and ASYNC support.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): More protocol explanation
|
|
|
|
2018-05-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Server protocol batching
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document protocol batching.
|
|
gcc/cp/
|
|
* cp-tree.h (maybe_peek_import): Delete.
|
|
* lex.c (atom_preamble_prefix_peek): Drop import peeking.
|
|
* parser.c (cp_parser_module_preamble): Likewise.
|
|
* module.c (module_server::{send_command,get_response}): Deal with
|
|
batching.
|
|
(module_state::peek_import_query, maybe_peek_import): Delete.
|
|
(module_state::next_line): New.
|
|
gcc/tesutsuite/
|
|
* g++.dg/modules/atom-peek-1_[abc].C: Delete.
|
|
|
|
Merge trunk r260753.
|
|
|
|
Direct import lambda returns!
|
|
gcc/cp/
|
|
* module.c (depset::decl_key): Remove assert.
|
|
(trees_{in,out}::core_vals): Serialize type context, lambda expr and
|
|
decl size & value.
|
|
(trees_out::tree_decl): Spot voldemort returns. Ident by index.
|
|
(trees_in::tree_node): Ident by index.
|
|
(trees_in::finish_type): Don't set type context here.
|
|
(depset::hash::add_dependency): Namespaces are also ok.
|
|
* decl.c (fndecl_declared_return_type): Default to auto.
|
|
* decl2.c (no_linkage_error): Ignore imported decls.
|
|
* name-lookup.h (lookup_by_ident): Ident is index.
|
|
(get_lookup_ident): Declare.
|
|
* name-lookup.c (get_binding_or_decl): New.
|
|
(lookup_by_ident): Use it. Ident is index.
|
|
(get_lookup_ident): New.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/vmort-1_[ab].C: New.
|
|
* g++.dg/modules/lambda-1_[ab].C: New.
|
|
|
|
2018-05-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (extract_module_decls): Don't strip template of
|
|
result.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Consider batching.
|
|
|
|
gcc/
|
|
* doc/invoke.texi (C++ ModuleS): Update server docs.
|
|
gcc/cp/
|
|
* cxx-module-server.sh: Add INCLUDE.
|
|
* semantics.c (deferred_access): Move GTY.
|
|
* module.c (module_state::global_vec): Move GTY.
|
|
(module_state::modules): Likewise.
|
|
* parser.c (cp_parser_peek_module_name): Remove incomplete
|
|
partition work.
|
|
|
|
DECL_DISCRIMINATOR for local classes, merge local var disc.
|
|
gcc/cp/
|
|
* cp-tree.h (language_function): Remove x_local_names.
|
|
(DECL_DISCRIMINATOR_P): Allow IMPLICIT_TyPEDEF too.
|
|
(DECL_DISCRIMINATOR_SET_P): Delete.
|
|
(local_classes): Delete declaration.
|
|
(determine_local_discriminator): Declare.
|
|
* class.c (local_classes): Delete.
|
|
(init_class_processing): Don't init it.
|
|
* decl.c (local_names): Delete.
|
|
(local_entities): New.
|
|
(push_local_name): Replace with ...
|
|
(determine_local_discriminator): ... this.
|
|
(cp_finish_decl): Adjust.
|
|
(save_function_data, finish_function): Remove local_name handling.
|
|
* decl2.c (finish_anon_union): Set discriminator.
|
|
* mangle.c (write_unnamed_type_name): Use discriminator_for_local_entity.
|
|
(local_class_index): Delete.
|
|
(discriminator_for_local_entity): Use DECL_DISCRIMINATOR for both
|
|
cases.
|
|
(write_local_name): Adjust.
|
|
* name-lookup.c (do_pushtag): Use determine_local_discriminator.
|
|
gcc/testsuite/
|
|
* g++.dg/abi/anon5.C: New.
|
|
|
|
2018-05-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* diagnostic-code.h (fullname): Delete.
|
|
* diagnostic.c (fullname): Delete.
|
|
* toplev.c (general_init): Don't set it.
|
|
gcc/cp/
|
|
* module.c: Include opts.h.
|
|
(module_state::get_option_string): New.
|
|
(module_state::write_{readme,config}): Write option string.
|
|
(module_state::read_config): Check it.
|
|
(module_state::write): Adjust.
|
|
(module_server::module_server): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/flag-1_[ab].C: New.
|
|
|
|
Now with a Sneakoscope!
|
|
gcc/cp/
|
|
* module.c (depset::hash): Add a sneakoscope.
|
|
(module_state::find_dependencies): Turn it on.
|
|
(trees_out::tree_decl): Check it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/local-1_[ab}.C: New.
|
|
|
|
gcc/cp/
|
|
* cxx-module-server.sh: Remove --no-default.
|
|
* module.c (module_server::send_command): New.
|
|
(module_server::{reset,handshake,import_export_query,export_done}):
|
|
Use it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-peek-1_[bc].C: Adjust scans.
|
|
* g++.dg/modules/indirect-1_c.C: Likewise.
|
|
|
|
2018-05-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cxx-module-server.sh: Add --no-compile, --no-default and
|
|
--mapping options.
|
|
|
|
gcc/cp/
|
|
* module.c (depset::defn_key): Add is_def parm.
|
|
(depset::hash::add_definition): Delete.
|
|
(depset::hash::add_dependency): Add either decl or defn.
|
|
(depset::hash::add_binding): Use add_dependency.
|
|
(cluster_cmp): Swap defns and decls.
|
|
(cluster_tag): Delete ct_voldemort, ct_no_decl.
|
|
(module_state::{read,write}_cluster): Voldemorts are implicit.
|
|
(module_state::write): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/unnamed-1_b.C: Adjust module scan.
|
|
|
|
Revert lazy definition patches. Once one gets into template land
|
|
it's all very brittle. We end up with an unmaintained difference
|
|
betweek 'we need the definition right now', and 'we need the
|
|
definition at some point'. I end up not being able to maintin the
|
|
SCC dependency graph, and my head melted, looking a the rat hole
|
|
that was appearing. Until proved otherwise, there are other
|
|
things to get on with.
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_MODULE_LAZY_DEFN, HAS_DECL_MODULE_LAZY_DEFN_P)
|
|
(MAYBE_DECL_MODULE_LAZY_DEFN): Delete.
|
|
(struct lang_decl_min): Remove lazy_module_defn field.
|
|
(lazy_load_defn): Delete decl.
|
|
* constexpr.c (cxx_eval_call_expression): Remove lazy loading.
|
|
* decl2.c (decl_defined_p, mark_used): Likewise.
|
|
* module.c (depset::hash::add_definition): Remove DEFERRED parm.
|
|
(trees_in::{pre,}seed): Delete.
|
|
(trees_out::seeding{,_p}): Delete.
|
|
(trees_out::unmark_trees): Seeding not needed.
|
|
(trees_out::{begin,end}): Delete seeding variants.
|
|
(trees_out::seed): Remove.
|
|
(trees_out::insert): Return val, remove seeding.
|
|
(trees_{in,out}::lang_decl_vals): Remove seeding.
|
|
(has_definition): Return bool.
|
|
(ct_seed_decl, ct_self_used): Delete.
|
|
|
|
(module_state::{read,write}_cluster): Remove lazy handling.
|
|
(module_state::{find_dependencies,write}): Adjust.
|
|
(module_state::check_read): Adjust.
|
|
(module_state::lazy_load, lazy_load_defn): Delete.
|
|
* ptree.c (cxx_print_decl): Remove lazy defn index.
|
|
|
|
Almost lazy function definitions.
|
|
gcc/cp/
|
|
* constexpr.c (cxx_eval_call_expression): Maybe lazy load.
|
|
* decl2.c (decl_defined_p): Lazy definitions are ok.
|
|
(mark_used): Try and lazy load.
|
|
* module.c (module_state::lazy_load): Lazy load a definition.
|
|
(trees_out::seed): Mark template result.
|
|
(trees_in::tree_node): Adjust mark_used.
|
|
(module_state::write_cluster): Adjust.
|
|
(module_state::read_cluster): Accept ct_self_used.
|
|
(lazy_load_defn): New.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::seed): Reimplement mechanim.
|
|
(trees_out::{begin,end}): Don't turn seeding on/off here.
|
|
(trees_out::unmark_trees): Add logging.
|
|
(trees_in::preseed): Fix addition calculation.
|
|
(module_state::write_cluster): Adjust lazy defn seeding.
|
|
(module_state::read_cluster): Add lazy defn seeding.
|
|
(module_State::find_dependencies): Adjust.
|
|
|
|
2018-05-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
libcpp/
|
|
* directives.c (struct if_stack): Add hash_loc field.
|
|
(PEEKED): Replace with ...
|
|
(PEEK_INVISIBLE): ... this. Inverted sense.
|
|
(DIRECTIVE_TABLE): Update.
|
|
(linemarker_dir): Add PEEK_INVISIBLE.
|
|
(_cpp_handle_directive): Correctly handle if nests.
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-preamble-2_[def].C: New.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (HAS_DECL_MODULE_LAZY_DEFN_P): New.
|
|
(MAYBE_DECL_MODULE_LAZY_DEFN): Use it.
|
|
* module.c (trees_in::{pre,}seed): Adjust.
|
|
(trees_out::{begin,end}): New overloads.
|
|
(trees_out::unmark_trees): Adjust.
|
|
(trees_out::{preseed,insert}): Correct force marking.
|
|
(trees_in::tree_node): Robustify.
|
|
(module_state::write_cluster): Fix name, better messages,
|
|
(module_state::read_cluster): Use ct_no_decl.
|
|
(module_state::write): Use HAS_DECL_MODULE_LAZY_DEFN_P.
|
|
(module_state::check_read): Use decl if it makes sense.
|
|
|
|
Write lazy decls (no reading yet)
|
|
gcc/cp/
|
|
* module.c (elf_out::strtab::named_decl): Add IS_DEFN parm.
|
|
(elf_out::named_decl): Likewise.
|
|
(elf_out::strtab::write): Adjust.
|
|
(FIXED_LIMIT): New.
|
|
(trees_out::set_seed): Delete.
|
|
(trees_out::{pre,un,}seed): New.
|
|
(trees_out::insert): Adjust for seeding.
|
|
(trees_out::tree_ref): Likewise.
|
|
(cluster_tag): Add ct_lazy.
|
|
(module_state::write_cluster): Preseed decls of lazy defns.
|
|
(module_state::find_dependencies): Adjust seeding changes.
|
|
(module_state::write): Determine lazy defn section numbers.
|
|
|
|
2018-05-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
libcpp/
|
|
* internal.h (_cpp_handle_directive): Add HASH_LOC arg.
|
|
* directives.c (_cpp_handle_directive): Add HASH_LOC arg, store it.
|
|
* init.c (read_original_filename): Adjust _cpp_handle_directive call.
|
|
* lex.c (_cpp_lex_token): Likewise.
|
|
* traditional.c (_cpp_scan_out_logical_line): Likewise.
|
|
* directives-only.c (_cpp_preprocess_dir_only): Likewise.
|
|
|
|
Import peeking
|
|
gcc/c-family/
|
|
* c-lex.c (c_lex_with_flags) <case CPP_STRING>: Check
|
|
C_LEX_STRING_IS_HEADER.
|
|
* c-pragma.h (C_LEX_STRING_IS_HEADER): New flag.
|
|
gcc/cp/
|
|
* cp-tree.h (HEADER_STRING_LITERAL_P): Delete.
|
|
(maybe_peek_import): Declare.
|
|
* cxx-module-server.sh: Adjust.
|
|
* lex.c (atom_preamble_prefix_peek): Add peeking state.
|
|
* module.c (module_server::peek_import_query): New.
|
|
(make_flat_name): New. Broken out of ...
|
|
(module_state::do_import): ... here. Call it.
|
|
(maybe_peek_import): New.
|
|
* parser.c (cp_parser_peek_module_name): New.
|
|
(cp_parser_module_name): Use it.
|
|
(cp_parser_import_declaration): Adjust.
|
|
(cp_parser_module_preamble): Do peeking.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Tweak server protocol
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-peek-1_[abc].C: New.
|
|
* g++.dg/modules/mod-decl-1.C: Adjust diags.
|
|
* g++.dg/modules/p0713-2.C: Likewise.
|
|
* g++.dg/modules/proclaim-1.C: Likewise.
|
|
|
|
Diagnose pragmas ending preamble.
|
|
libcpp/
|
|
* lex.c (cpp_peek_token_with_location): Set peeked_location to
|
|
incoming location. Fix pragma unwind.
|
|
gcc/cp/
|
|
* cxx-module-server.sh: Add new commands.
|
|
* lex.c (atom_preamble_prefix_peek): Note trailing pragma.
|
|
gcc/
|
|
* doc/invoke.text (C++ Modules): More server commands.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-pragma-[123].C: New.
|
|
|
|
2018-05-19 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Parse after tokenizing
|
|
libcpp/
|
|
* lex.c (cpp_peek_token_with_location): Adjust for compiler warning.
|
|
gcc/cp/
|
|
* parser.c (module_preamble_end_loc): Rename to ...
|
|
(module_marker_loc): ... here.
|
|
(cp_parser_module_declaration): Reimplement.
|
|
(cp_parser_import_declaration): Adjust.
|
|
(cp_parser_module_preamble): Don't parse here. Add artificial end
|
|
marker.
|
|
(cp_parser_declaration_seq_opt): Adjust for atom.
|
|
(cp_parser_fill_main): Whole buffer is to be parsed.
|
|
(c_parse_file): Don't set end_loc here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-decl-1.C: Adjust diagnostics.
|
|
* g++.dg/modules/atom-preamble-1.C: Likewise.
|
|
* g++.dg/modules/mod-decl-1.C: Likewise.
|
|
* g++.dg/modules/p0713-[23].C: Likewise.
|
|
|
|
2018-05-18 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::maybe_insert_typeof): New.
|
|
(trees_out::{force_,maybe_,}insert): Merge, adjust callers.
|
|
(trees_out::tree_decl): Use maybe_insert_typeof.
|
|
(module_state::write_cluster): Likewise.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-3_c.C: Adjust scans.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::write_cluster): Break apart unnamed
|
|
numbering from marking.
|
|
(module_state::write): Break apart cluster sizing from section
|
|
numbering.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::mark_node): Lose walk_into parm. Adjust
|
|
all callers.
|
|
(module_state::write_cluster): Assert binding already marked.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::mark_definition): Remove include_decl
|
|
parm.
|
|
(module_state::mark_{template,function,var,class,enum}_def): Likewise.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_in::{preseed,seed}): New.
|
|
(trees_out::seeding): New member.
|
|
(trees_out::seeding_p): New predicate.
|
|
(trees_out::unmark_trees): Add trees_in parm to preseed.
|
|
(trees_out::end): Add trees_in parm.
|
|
(trees_out::set_seed): New.
|
|
(trees_out::tree_decl): Check seeding_p.
|
|
(module_state::find_dependencies): Preseed the decl of a defn.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/defer-1.C :New.
|
|
|
|
gcc/cp/
|
|
* module.c (depset::hash::add_definition): Add DEFERRABLE parm.
|
|
(has_definition): Return tristate.
|
|
(depset::hash::add_{dependency,binding}): Adjust.
|
|
(module_state::find_dependencies): Refactor.
|
|
|
|
Add lazy_module_defn cookie.
|
|
* cp-tree.h (DECL_MODULE_LAXY_DEGN, MAYBE_DECL_MODULE_LAZY_DEFN): New.
|
|
(struct lang_decl_min): Add lazy_module_defn field.
|
|
* module.c (trees_{in,out}::lang_decl_vals): Serialize it.
|
|
* ptree.c (cxx_print_decl): Print it.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_op_flags, ovl_op_code): Reindent.
|
|
* lex.c (atom_preamble_prefix_peek): FIXME.
|
|
* parser.c (cp_parser_module_preamble): FIXME.
|
|
* module.c (bytes_out::streaming_p (): New.
|
|
(trees_out::streaming_p): Delete.
|
|
(tt_backref): Delete. Update uses to know -ve == backref
|
|
(module_state::write_cluster): Some refactoring.
|
|
|
|
2018-05-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Preamble rescanning!
|
|
gcc/
|
|
* configure.ac: Look for execv.
|
|
* config.in, configure: Rebuilt.
|
|
* toplev.h (original_argc, original_argv): Declare.
|
|
* toplev.c (original_argc, original_argv): Declare.
|
|
(toplev::main): Set them.
|
|
doc/invoke.texi (EE) Rename to ...
|
|
(fmodule-preamble): ... this.
|
|
(C++ Modules): Document RESET message. Document N,N.
|
|
gcc/c-family/
|
|
* c.opt (EE): Rename to ...
|
|
(fmodule-preamble) ... here.
|
|
(fmodule-preamble=): New hidden option.
|
|
* c-ppoutput.c (scan_translation_unit): Use cpp_pop_directives.
|
|
gcc/cp/
|
|
* cp-tree.h (atom_preamble_prefix_peek): Add from-parser parm.
|
|
(maybe_repeat_preamble): Declare.
|
|
* cp-lang.c (atom_preamble_fsm): Adjust.
|
|
* cxx-module-server.sh (RESET): New command.
|
|
* lang-specs.h (@c++): Adjust EE->fmodule-preamble.
|
|
* lex.c (atom_preamble_prefix_peek): Add from-parser parm. Check
|
|
flag_module_preamble. Call maybe_repeat_preamble.
|
|
* module.c: #include "toplev.h"
|
|
(module_server_name): Is const.
|
|
(module_server::module_server): Copy command. Support N,N for two
|
|
pipes.
|
|
(module_server::make): Adjust.
|
|
(module_server::reset): New.
|
|
(module_server::fini): Add reset arg. Reset.
|
|
(maybe_repeat_preamble): New.
|
|
(handle_module_option): Adjust.
|
|
* parser.c (cp_parser_module_preamble): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-preamble-[1-8].C: Adjust options.
|
|
* g++.dg/modules/atom-rescan-1.C: New.
|
|
* g++.dg/modules/atom-no-rescan-1.C: New.
|
|
|
|
2018-05-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Detect cpp directives at end of preamble
|
|
libcpp/
|
|
* include/cpplib.h (cpp_peek_token_with_location): Declare.
|
|
(cpp_pop_directives): Declare.
|
|
* internal.h (struct cpp_reader): Add peeked_directive field.
|
|
* directives.c (PEEKED): New.
|
|
(DIRECTIVE_TABLE): Add it.
|
|
(_cpp_handle_directive): Set peeked_directive.
|
|
(cpp_pop_directives): New.
|
|
* lex.c (cpp_peek_token): Wrapper around ...
|
|
(cpp_peek_token_with_location): ... this.
|
|
gcc/cp/
|
|
* cp-lang.c (atom_preamble_fsm): Update for new state transitions.
|
|
* lex.c (atom_preamble_prefix_peek): Check peeked directives.
|
|
* parser.c (cp_parser_module_preamble): Update.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-preamble-1.C: Add diag
|
|
* g++.dg/modules/cpp-preamble-[678].C: New.
|
|
|
|
libcpp/
|
|
* include/cpplib.h (cpp_in_macro_expansion_p): Declare.
|
|
* macro.c (in_macro_expansion_p): Rename to ...
|
|
(cpp_in_macro_expansion_p): ... here. Externalize.
|
|
(cpp_get_token_1): Adjust.
|
|
* internal.h: Update docs.
|
|
gcc/
|
|
* langhooks.h (struct lang_hooks): Adjust preprocess_preamble.
|
|
gcc/c-family/
|
|
* c-ppoutput.c (scan_translation_unit): Pass token location to
|
|
preamble hook.
|
|
gcc/cp/
|
|
* cp-lang.c (atom_preamble_fsm): Pass token loc through.
|
|
* cp-tree.h (atom_preamble_prefix_next): Take token loc.
|
|
* lex.c (atom_preamble_prefix_next): Take token loc. Warn if
|
|
ending inside macro.
|
|
* parser.c (cp_parser_module_preamble): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-preamble-5.C: New.
|
|
|
|
gcc/
|
|
* langhooks.h (struct lang_hooks): Adjust preprocess_preamble.
|
|
gcc/cp/
|
|
* cp-tree.h (atom_preamble_prefix_{peek,next}): Declare.
|
|
* cp-lang.c (atom_preambls_fsm): Adjust args. Use
|
|
atom_preamble_prefix_{peek,next}.
|
|
* lex.c (atom_preamble_prefix_len): Turn into ...
|
|
(atom_preamble_prefix_peek): ... this.
|
|
(atom_preamble_prefx_next): New.
|
|
* parser.c (cp_parser_module_preamble): Adjust.
|
|
gcc/c-family/
|
|
* c-ppoutput.c (scan_translation_unit): Adjust
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-preamble-2_c.C: New.
|
|
* g++.dg/modules/cpp-preamble-4.C: New.
|
|
|
|
gcc/cp/
|
|
* Make-lang.in: Dont sed server version
|
|
* module.c: Use fixed server version.
|
|
* cxx-module-server.sh: Likewise.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::dep_walk_p): Replace with ...
|
|
(trees_out::{streaming,depending}_p): ... these. Update callers.
|
|
|
|
2018-05-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Objectify module server.
|
|
gcc/cp/
|
|
* module.c (class module_server): New.
|
|
(server_read, server_write, server_pex, server_size)
|
|
(server_buffer, server_pos, server_end)
|
|
(server_response, server_token, server_word, server_unexpected)
|
|
(server_error, server_init, server_fini): Move into module_server class.
|
|
(server_module_filename): Delete.
|
|
(module_state::do_import): Use module_server::import_query.
|
|
(finish_module): Use module_server::export_{query,done}.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_c.C: Tweak.
|
|
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Clarify server docs.
|
|
gcc/cp/
|
|
* cxx-module-server.sh: Robustify.
|
|
* module.c (server_module_filename): Send from location.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-2.C: Tweak.
|
|
|
|
2018-05-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Redo the server protocol.
|
|
gcc/cp/
|
|
*cxx-module-server.sh: Update protocol.
|
|
* module.c (elf_out::end): Protect from NULL stream.
|
|
(server_size, server_buffer, server_pos, server_end): New.
|
|
(server_response, server_token, server_word): New.
|
|
(server_end_p): New.
|
|
(server_malformed): Delete.
|
|
(server_init, server_module_filename, server_done): Adjust.
|
|
(module_state::do_import): Adjust.
|
|
gcc/
|
|
* doc/invoke (C++ Modules): Update server protocol.
|
|
|
|
2018-05-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_server): Make pointer to non-const.
|
|
(server_fini, handle_module_option): Add const_cast.
|
|
(server_init): Write into module_server. strdup if it came from
|
|
environment.
|
|
|
|
Rename oracle->server, thanks Richard Smith
|
|
gcc/
|
|
* doc/invoke.texi (fmodule-oracle): Rename.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-oracle): Rename.
|
|
gcc/cp/
|
|
* Make-lang.in (cxx-module-oracle): Rename.
|
|
* cxx-module-oracle.sh: Rename.
|
|
* module.c (ORACLE_VERSION, module_oracle, oracle_read)
|
|
(oracle_write, oracle_pex): Rename.
|
|
(oracle_fini, oracle_init, oracle_response, oracle_unexpected)
|
|
(oracle_malformed, oracle_module_filename, oracle_done): Rename.
|
|
|
|
Direct import filenames are stored.
|
|
gcc/cp/
|
|
* module.c (bytes_out::str): Add overload.
|
|
(bytes_in::str): Robustify.
|
|
(module_state::{read,write}_imports): New.
|
|
(noisy_p): New.
|
|
(module_state::announce, oracle_init): Use noisy_p.
|
|
(oracle_module_file): Rename to ...
|
|
(oracle_module_filename): ... here. Adjust parms, return
|
|
filename.
|
|
(module_state::write_readme): Write import filename.
|
|
(module_state::{read,write}_config): Use {read,write}_imports.
|
|
(module_state::do_import): Add FILENAME arg, adjust.
|
|
(finish_module): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-1_e.C: Adjust scan.
|
|
* g++.dg/modules/indirect-1_c.C: Verify no query on indirect import.
|
|
|
|
2018-05-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Remove remaining knowledge of module file names.
|
|
gcc/cp/
|
|
* module.c (MOD_FNAME_SFX, MOD_FNAME_DOT): Delete.
|
|
(module_state): Remove srcname.
|
|
(module_state::print_map): Delete.
|
|
(oracle_query_module, oracle_stream, find_module_file): Merge to ...
|
|
(oracle_module_file): ... this.
|
|
(make_module_file, find_file): Delete.
|
|
(module_state::do_import): Adjust.
|
|
(finish_module): Likewise.
|
|
|
|
(Kill -fmodule-output -- use the oracle.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-output): Delete.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Dialect Options): Delete -fmodule-output.
|
|
(C++ Modules): Likewise.
|
|
gcc/cp
|
|
* module.c (module_output): Delete.
|
|
(module_state::do_import): Don't check it.
|
|
(finish_module): Likewise.
|
|
(handle_module_options): Likewise.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/fmod-out-1_[ab].C: Delete.
|
|
|
|
Kill -fmodule-file -- use the oracle.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-map-dump): Delete.
|
|
(fmodule-file): Delete.
|
|
gcc/cp/
|
|
* module.c (module_file_args, module_map_dump): Delete.
|
|
(parse_module_mapping): Delete.
|
|
(add_module_mapping): Delete.
|
|
(init_module_processing): Delete module map init.
|
|
(handle_module_option): Delete module map options.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Dialect Options): Delete -fmodule-file.
|
|
(C++ Modules): Likewise.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/fmod-file-1_[ab].C: Delete.
|
|
* g++.dg/modules/fmod-out-1_[ab].C: Adjust.
|
|
|
|
Kill -fmodule-path and CXX_MODULE_PATH -- use the oracle.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Dialect Options): Remove -fmodule-path.
|
|
(C++ Modules): Likewise.
|
|
* incpath.h (INC_CXX_MPATH): Delete.
|
|
(clean_cxx_module_path): Delete.
|
|
* incpath.c (clean_cxx_module_path): Delete.
|
|
gcc/c-family/
|
|
* c-opts.c (c_common_post_options): Don't clean_cxx_module_path.
|
|
* c.opt (fmodule-path): Delete.
|
|
gcc/cp/
|
|
* module.c (module_path, module_path_max): Drop.
|
|
(find_file): Adjust.
|
|
(init_module_processing): Drop module path init.
|
|
(handle_module_option): Drop module_path.
|
|
|
|
gcc/cp/
|
|
* Make-lang.in (cxx-module-oracle): Sed version.
|
|
(cxx_module-wrapper): Delete.
|
|
* cxx-module-oracle: Allow dev versions.
|
|
* cxx_module-wrapper: Delete.
|
|
* module.c (ORACLE_VERSION): New.
|
|
(oracle_init): Use MODULE_STAMP if available.
|
|
|
|
A more conventional protocol
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Update oracle protocol.
|
|
gcc/cp/
|
|
* cxx-module-oracle.sh: Update protocol.
|
|
* module.c (oracle_response): Parse response.
|
|
(oracle_unexpected, oracle_malformed): New.
|
|
(oracle_init): Check version.
|
|
(oracle_query_module): Update.
|
|
|
|
Kill module wrapper -- you should use the oracle.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Dialect Options): Remove -fmodule-wrapper.
|
|
* gcc.h (driver::maybe_putenv_CXX_MODULE_WRAPPER): Delete decl.
|
|
* gcc.c (maybe_putenv_CXX_MODULE_WRAPPER): Delete.
|
|
(driver::main): Don't call it.
|
|
gcc/cp/
|
|
* module.c (module_wrapper): Delete.
|
|
(find_module_file): Drop wrapper spawning.
|
|
(init_module_processing): Drop wrapper initialization.
|
|
(handle_module_option): Drop wrapper option.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-wrapper=): Delete.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp (DEFAULT_MODFLAGS): Drop -fmodule-wrapper.
|
|
* g++.dg/modules/main-[123]-aux.cc: Delete.
|
|
* g++.dg/modules/main-[123]-map: Delete.
|
|
* g++.dg/modules/main-[123]_a.C: Delete.
|
|
|
|
gcc/c
|
|
* config.in: Rebuilt too.
|
|
|
|
gcc/
|
|
* diagnostic-core.h (fullname): Declare.
|
|
* diagnostic.c (fullname): Define.
|
|
* toplev.c (general_init): Set it.
|
|
gcc/cp/
|
|
* cxx-module-oracle.sh: More messages.
|
|
* module.c (oracle_init): When defaulting, expect to be next to
|
|
cc1plus.
|
|
(oracle_stream): Always try and init the oracle.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/main_a.C: Adjust for oracle use.
|
|
|
|
gcc/
|
|
* configure.ac: Check for AF_UNIX and AF_INET6.
|
|
* configure: Rebuilt.
|
|
* doc/invoke.texi (C++ Modules): Update oracle.
|
|
gcc/cp/
|
|
* module.c: Check HOST_HAS_AF_{UNIX,INET6}.
|
|
|
|
2018-05-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c: Include socket headers.
|
|
(oracle_init): Create and connect local or ipv6 socket.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document oracle socket options.
|
|
|
|
gcc/cp/
|
|
* module.c (module_prefix): Delete.
|
|
(make_module_filename): Don't handle it.
|
|
(handle_module_option): Nor here.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-prefix): Delete.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Dialect Options): Remove -fmodule-prefix.
|
|
(C++ Modules): Remove -fmodule-prefix
|
|
|
|
Oracle!
|
|
gcc/cp/
|
|
* Make-lang.in (cxx-module-oracle): New rule.
|
|
* cxx-module-oracle.sh: New.
|
|
* module.c (module_oracle): New flag.
|
|
(oracle_read, oracle_write, oracle_pex): New vars.
|
|
(oracle_init, oracle_fini, oracle_response, oracle_query_module)
|
|
(oracle_done, oracle_stream): New.
|
|
(find_module_file, finish_module): Use oracle.
|
|
(handle_module_option): Store oracle option.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Dialect Options): Add -fmodule-oracle.
|
|
(C++ Modules): Document oracle.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-oracle=): New.
|
|
|
|
2018-05-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::get_module): Add insert arg.
|
|
(module_state::{read,write}_config): Stream direct imports first.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-1_[ce].C: Adjust.
|
|
* g++.dg/modules/mod-imp-1_[cd].C: Adjust.
|
|
|
|
Add -EE
|
|
gcc/cp/
|
|
* cp-lang.c (atom_preamble_fsm): New.
|
|
(LANG_HOOKS_PREPROCESS_PREAMBLE): Override.
|
|
* cp-tree.h (atom_preamble_prefix_len): Declare.
|
|
* lang-specs.h (@c++): Pass -EE when preprocessing.
|
|
* lex.c (atom_preamble_prefix): New. Broken out of ...
|
|
* parser.c (cp_parser_module_preamble): ... here. Use it.
|
|
* module.c (handle_module_option): EE implies atom.
|
|
gcc/c-family/
|
|
* c-ppoutput.c: Include langhook.h.
|
|
(scan_translation_unit): Use lang_hooks.preprocess_preamble.
|
|
* c.opt (EE): New.
|
|
gcc/
|
|
* langhooks-def.h (LANG_HOOKS_PREPROCESS_PREAMBLE): Define.
|
|
(LANG_HOOKS_INITIALIZER): Add it.
|
|
* langhooks.h (struct lang_hooks): Add preprocess_preamble.
|
|
* doc/cppopts.texi (EE): Document.
|
|
* doc/invoke.texi (Preprocessor Options): Add -EE.
|
|
(C++ Modules): Document -EE.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cpp-preamble-[123].C: New.
|
|
|
|
gcc/cp/
|
|
* cp/parser.c (module_preamble_end_loc): New var.
|
|
(cp_parser_module_declaration): Check it.
|
|
(cp_parser_import_declaration): Likewise.
|
|
(cp_parser_module_preamble): Deal with FILENAME enabling.
|
|
(cp_parser_declaration_seq_op): Set it.
|
|
(cp_parser_declaration): Parse out-of-preamble module & import
|
|
decls.
|
|
(cp_parser_initial_pragma): Don't check modules here.
|
|
(c_parse_file): Set module_preamble_end_loc.
|
|
gcc/c-family/
|
|
* c-lex.c (c_lex_with_flags): Remove C_LEX_FILENAME handling.
|
|
* c-pragma.h (C_LEX_FILENAME): Delete.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-decl-[123].C: Adjust.
|
|
* g++.dg/modules/atom-preamble-3.C
|
|
* g++.dg/modules/atom-preamble-4.C: New.
|
|
* g++.dg/modules/mod-decl-1.C: Adjust.
|
|
* g++.dg/modules/p0713-[23].C: Adjust.
|
|
|
|
2018-05-08 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_module_preamble): Check for macros
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-preamble-3.C: New.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_module_preamble): New.
|
|
(cp_parser_fill_main): Remove atom parsing here.
|
|
(c_parse_file): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-preamble-1.C: New.
|
|
* g++.dg/modules/atom-preamble-2_[ab].C: New.
|
|
|
|
2018-05-07 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (depset): Add is_unnamed and refs_unnamed flags.
|
|
(depset::hash::add_dependency): Set them here.
|
|
(cluster_cmp): Change order again.
|
|
(module_state::write_cluster): Check refs_unnamed here.
|
|
gcc/testsuite.
|
|
* g++.dg/modules/scc-1.C: Readjust.
|
|
|
|
gcc/cp/
|
|
* module.c (depset::tarjan::connect): Use section==0 for done, not
|
|
top bit of cluster.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/unnamed-1_b.C: Fix scan.
|
|
|
|
2018-05-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Horcruxes!
|
|
gcc/cp/
|
|
* module.c (FIXED_LIMIT): Remove.
|
|
(trees_out::{,maybe_}insert): Make public.
|
|
(trees_out::maybe_mark_unnamed): Delete.
|
|
(trees_out::tree_ref): Remove voldemort handling.
|
|
(trees_in::tree_node): Likewise.
|
|
(tree_tag): Remove tt_voldemort.
|
|
(trees_out::maybe_tag_decl_type): Move back into ..
|
|
(trees_out::tree_decl): ... here.
|
|
(cluster_tag): Add voldemort & horcruxes.
|
|
(module_state::{read,write}_cluster): Deal with horcruxes.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/unnamed-1_[ab].C: Adjust scans.
|
|
|
|
2018-05-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::maybe_tag_decl_type): New, broken out of ...
|
|
(trees_out::tree_decl): ... here. Call it.
|
|
(trees_out::tree_ref): Use it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/unnamed-1_[ab].C: New.
|
|
|
|
gcc/cp/
|
|
* ptree.c (cxx_print_decl): Show module.
|
|
* module.c (tree_tags): Add tt_voldemort.
|
|
(FIXED_LIMIT): New.
|
|
(trees_out::maybe_mark_unnamed): New.
|
|
(module_state::unnamed): New field.
|
|
(module_state::{read,write}_unnamed): New.
|
|
(module_state::{read,write}_config): Serialize unnamed count.
|
|
(module_state::{read,write}_cluster): Determine unnamedness.
|
|
(trees_out::tree_ref): Check for unnamed.
|
|
(trees_in::tree_node): Add tt_voldemort.
|
|
(depset::hash::add_dependency): Don't add decl to its binding.
|
|
(cluster_cmp): Reorder, again.
|
|
(cluster_tag): Add ct_unnamed.
|
|
(module_state::{read,write}): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/namespace-2.C: Adjust scan.
|
|
* g++.dg/modules/unnamed-[12].C: New.
|
|
* g++.dg/modules/scc-1.C: Unadjust.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::mark_definition): Add include_decl arg.
|
|
(module_state::mark_{template,function,var,class,enum}_def): Likewise.
|
|
(cluster_cmp): Reorder decl < defn < bind.
|
|
(enum cluster_tag): New.
|
|
(module_state::{read,write}_cluster): Use it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/scc-1.C: Adjust.
|
|
|
|
2018-05-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/c-family
|
|
* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_modules value,
|
|
define __cpp_modules_{ts,atom} as selected.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-check-1_a.C: Check for __cpp_modules_atom.
|
|
* g++.dg/modules/atom-check-1_b.C: Check for __cpp_modules_ts.
|
|
|
|
gcc/cp/
|
|
* module.c (cluster_size): Delete.
|
|
(module_state::write_{cluster,namespaces,bindings}): Adjust.
|
|
(module_state::write): Precalculate section numbers.
|
|
|
|
2018-05-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cxx-module-wrapper.sh: Require bash.
|
|
|
|
Fragment depsets more.
|
|
gcc/cp/
|
|
* module.c (depset): Replace container & decls with key. Adjust
|
|
hashing etc.
|
|
(depset::{binding,decl,defn}_key): New.
|
|
(depset::is_{binding,decl,defn}): New.
|
|
(depset::hash::{maybe_insert,find}): Take a key.
|
|
(depset::hash::add_definition): Reimplement.
|
|
(depset::hash::add_dependency): Reimplement.
|
|
(depset::hash::add_binding): Reimplement.
|
|
(cluster_cmp): Extend.
|
|
(module_state::write_{cluster,namespaces,bindings}): Adjust.
|
|
(module_state::{add_writables,find_dependencies}): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (depset::tarjan): Replace binds, spaces & defs fields
|
|
with plain result field.
|
|
(depset::tarjan::connect): Don't categorize SCCs here.
|
|
(cluster_size): New.
|
|
(module_state::write_cluster): Take SIZE arg.
|
|
(module_state::write): Use cluster_size, split out namespaces here.
|
|
|
|
2018-05-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_{type,decl,ctx}): Separate need_body
|
|
and owner args.
|
|
(trees_{in,out}::core_vals): Don't stream TYPE_CONTEXT.
|
|
(trees_in::finish_type, module_state::read_class_def): Reconstruct
|
|
it here.
|
|
(trees_out::tree_binfo): Use tree_ctx.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_decl): Write innermost args.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-4_[abc].C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::occupy): Do not set filename here.
|
|
(search_module_path): Rename to ...
|
|
(find_file): ... here. Search for bmis too.
|
|
(find_module_file): Use find_file.
|
|
(add_module_mapping, finish_module): Adjust.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document search path and prefix.
|
|
|
|
gcc/cp/
|
|
* Make-lang.in (c++.install-common): Install wrapper into
|
|
libexecsubdir.
|
|
|
|
Merge trunk r184995.
|
|
|
|
2018-04-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_decl): Adjust for member templates.
|
|
(trees_out::tree_node): Don't deal with templates here.
|
|
(trees_in::tree_node): Adjust template instantiations here.
|
|
(module_state::mark_template_def): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-2_b.C: Adjust module scan.
|
|
* g++.dg/modules/indirect-3_[abc].C: New.
|
|
|
|
2018-04-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r259710.
|
|
|
|
2018-04-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_TEMPLATE_INFO): Correct comment.
|
|
* module.c: Update description, general format cleanups.
|
|
(elf_out::SECTION_ALIGN): New.
|
|
(elf_out::pad): Use it.
|
|
* pt.c (build_template_decl): Make static.
|
|
|
|
2018-04-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (maybe_get_template): Delete.
|
|
(trees_out::tree_decl): Move dependency building into named-decl
|
|
handling. Don't walk into namespaces.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_node): Reorder.
|
|
|
|
2018-04-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_decl): Deal with templated types.
|
|
(tree_in::tree_node): Likewise.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-2_[abc].C: Add template class.
|
|
|
|
gcc/cp/
|
|
* module.c (enum tree_tag): Add tt_template.
|
|
(trees_out::tree_decl): Emit tt_template as needed.
|
|
(trees_in::tree_node): Read tt_template.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-3_b.C: Adjust.
|
|
* g++.dg/modules/indirect-1_b.C: Adjust.
|
|
* g++.dg/modules/indirect-2_[abc].C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::core_vals): Check module of type context.
|
|
(trees_out::tree_decl): Assert we can find the named decl.
|
|
(module_state:read_config): Move defrosting to ...
|
|
(module_state::read): ... here.
|
|
|
|
2018-04-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_[abc].C: Add exported constant.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (lookup_by_ident): Look in enumerals.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_[abc].C: Add enum.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::core_vals): More FUNCTION_DECL fields.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_[abc].C: Add virtual class.
|
|
|
|
gcc/cp/
|
|
* module.c (dumper::pop): Don't print trailing line.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::core_vals): Allow NULL-context VAR_DECLS.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/indirect-1_[abc].C: Add class.
|
|
|
|
gcc/cp/
|
|
* module.c (enum tree_tag): Remove tt_namespace.
|
|
(trees_out::tree_{value,decl,type,ref,ctx}): New. Broken out of ...
|
|
(trees_out::tree_node): ... here. Use them.
|
|
(trees_out::core_vals): Use tree_ctx.
|
|
(module_state::write_cluster): Use tree_ctx.
|
|
* name-lookup.h (find_imported_namespace): Delete.
|
|
* name-lookup.c (find_imported_namespace): Delete.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-3_d.C: Adjust scans.
|
|
* g++.dg/modules/indirect-1_[abc].C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::importing): New.
|
|
(module_state::init): Lazy_open is not just for laziness.
|
|
(module_state::read_config): Call maybe_defrost.
|
|
(module_state::maybe_defrost): New, broken out of ...
|
|
(module_state::load_section): ... here. Call it.
|
|
(module_state::freeze_an_elf): Look in importing stack too.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/nest-1_[abc].C: New.
|
|
|
|
2018-04-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/c-family/
|
|
* c-lex.c (c_lex_with_flags): Check C_LEX_FILENAME. Deal with
|
|
CPP_HEADER_NAME.
|
|
* c-pragma.h (C_LEX_FILENAME): New.
|
|
gcc/cp/
|
|
* parser.c (cp_parser_fill_main): Ask for C_LEX_FILENAME.
|
|
(cp_parser_import_declaration): Parse legacy import names.
|
|
* cp-tree.h (HEADER_STRING_LITERAL_P): New.
|
|
libcpp/
|
|
* include/cpplib.h (cpp_enable_filename_token): Declare.
|
|
* macro.c (cpp_enable_filename_token): Define.
|
|
pfile->state.angled_headers.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-inc-1.C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::lazy_depth): Remove.
|
|
(module_state::lazy_open): Make countdown value.
|
|
(module_state::init): Use getrlimit to default PARAM_LAZY_MODULES.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): Document lazy loading.
|
|
* params.def (PARAM_LAZY_MODULE_FILES): Rename to ...
|
|
(PARAM_LAZY_MODULES): ... here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/freeze-1_d.C: Fix.
|
|
|
|
2018-04-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Protect against too-many lazy loadings.
|
|
gcc/
|
|
* params.def (PARAM_LAZY_MODULE_FILES): Define.
|
|
gcc/cp/
|
|
* module.c: Include params.h
|
|
(elf::has_error): Return the error code.
|
|
(elf_in): Add device, inode & size fields.
|
|
(elf_in::{is_frozen,freeze,defrost}): New.
|
|
(module_state): Add lru, lazy_lru, lazy_open fields.
|
|
(module_state::{load_section,freeze_an_elf}): New.
|
|
(module_state::{read,lazy_load}): Adjust.
|
|
(module_state::check_read): Check for EMFILE.
|
|
(module_state::do_import): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/freeze-1_[a-d].C: New.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_parser_declaration_seq_opt): Remove ATOM handling here.
|
|
|
|
Incremental tokenization of ATOM preamble.
|
|
gcc/c-family/
|
|
* c-pragma.h (C_LEX_STRING_FILENAME): New.
|
|
gcc/cp/
|
|
* cp-tree.h (module_file_nest): Declare.
|
|
* lex.c (module_file_nest): Define.
|
|
* module.c (module_state::{push,pop}_location): Use it.
|
|
* parser.c (cp_lexer_fill_main): Rename to ...
|
|
(cp_parser_file_main): ... this. Take parser not lexer. Read &
|
|
parse one atom declaration at a time.
|
|
(cp_parser_declaration_seq_opt): Disable atom preamble here.
|
|
(c_parse_file): Adjust.
|
|
libcpp/
|
|
* files.c (cpp_module_file): New.
|
|
* include/cpplib.h (cpp_module_file): Declare.
|
|
|
|
2018-04-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_lexer_new_main): Replace with ...
|
|
(cp_lexer_fill_main): ... this. Move initial pragma processing to
|
|
...
|
|
(c_parse_file): ... here.
|
|
(cp_parser_new): Adjust.
|
|
|
|
gcc/cp/
|
|
* parser.c (cp_lexer_get_preprocessor_token): Take cpp-flags
|
|
directly.
|
|
(cp_lexer_new_main, cp_parser_initial_pragma): Adjust.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (modules_p, modules_atom_p): New predicates.
|
|
* decl.c (cxx_init_decl_processing): Use modules_p.
|
|
* decl2.c (c_parse_final_cleanups): Likewise.
|
|
* lex.c (init_reswords):
|
|
* module.c (module_state::write_readme): Use modules_atom_p.
|
|
(module_state::{read,write}_config): Likewise.
|
|
(handle_module_option): Don't handle OPT_fmodules_atom here,
|
|
* name-lookup,c (reuse_namespace, make_namespace_finish): Use
|
|
modules_p.
|
|
* 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.
|
|
|
|
gcc/cp/
|
|
* module.c (init_module_processing): Disallow PCH.
|
|
gcc/c-family/
|
|
* c-pch.c (c_common_valid_pch): Never valid with modules.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_config): Check ATOM/TS
|
|
matches.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/atom-check-1_[ab].C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::write_readme): New. Broken out of ...
|
|
(module_state::write_context): ... here. Absorb remainder into ...
|
|
(module_state::write_config): ... here.
|
|
(module_state::read_context): Merge into ...
|
|
(module_state::read_config): ... here.
|
|
(module_state::{read,write}): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::release): Simplify.
|
|
(module_state::check_read): Release if done.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-2.C: Expect no bmi.
|
|
* g++.dg/modules/modules.exp (dg-module-bmi): Always delete the bmi.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::read): Allocate elf_in here.
|
|
(module_state::do_import): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-2.C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_node): Avoid uninitialized false
|
|
positive.
|
|
|
|
2018-04-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r259189.
|
|
|
|
Lazy loading!
|
|
gcc/cp/
|
|
* cp-tree.h (union mc_slot): New.
|
|
(struct module_cluster): Use it.
|
|
(lazy_load_binding): Take an mc_slot.
|
|
* module.c (module_state::release): End the elf source.
|
|
(module_state::read_function_def): Save and restore
|
|
current_function_decl.
|
|
(module_state::read): Enable lazy loading.
|
|
(module_state::lazy_load): Take an mc_slot, adjust.
|
|
(lazy_load_binding): Likewise.
|
|
* name-lookup.c (module_binding_slot): Return an mc_slot pointer.
|
|
(fixed_module_binding_slot): New.
|
|
(name_lookup::search_namespace_only): Lazily load.
|
|
(do_pushdecl): Use fixed_module_binding_slot.
|
|
(merge_global_decl): Adjust.
|
|
(import_module_binding): Install lazy cookie.
|
|
(set_module_binding): Adjust. Kill stale & wrong global module
|
|
bits.
|
|
(lookup_by_ident): Lazily load.
|
|
(reuse_namespace): Use fixed_module_binding_slot.
|
|
(make_namespace_finish): Likweise.
|
|
(add_imported_namespace, find_imported_namespace): Adjust.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-lazy): Default on.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/lazy-1_[ab].C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (elf::E_BAD_LAZY): New error.
|
|
(elf::has_error): New.
|
|
(elf::get_error): Return string.
|
|
(elf::end): Return bool.
|
|
(elf_in::forget_section): New.
|
|
(module_state::check_error): New.
|
|
(module_state::do_module_import): Use it.
|
|
(module_state::lazy_load): New.
|
|
(module_state::{read,write}_decls): Absorb into callers.
|
|
(module_state::read_{context,config,namespaces,bindings,cluster}): Lose
|
|
from parm.
|
|
(module_state::lazy_depth): New.
|
|
(lazy_load_binding): New.
|
|
(finish_module): Adjust.
|
|
* cp-tree.h (lazy_load_binding): Declare.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/circ-1_c.C: Adjust errors.
|
|
* g++.dg/modules/mod-stamp-1_d.C: Adjust errors.
|
|
|
|
gcc/cp/
|
|
* module.c (elf_in::keep_sections): New.
|
|
(elf_in::read): Add type arg.
|
|
(elf_in::find): Remove type arg.
|
|
(elf_in::begin): Coalesce error messages.
|
|
(module_state::loading): New field.
|
|
(module_state::{read,write}_config): Serialize section range ...
|
|
(module_state::{read,write}_namespace): ... not here.
|
|
(module_state::read_decls): Do not read the actual decls.
|
|
(module_state::read): ... do them here.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}, depset): Reorder definitions.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_binfos): Merge loops.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::tree_binfo): Delete.
|
|
(module_state::{read,write}_binfos): New.
|
|
(module_state::{read,write}_class_def): Use them.
|
|
|
|
2018-04-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* doc/invoke.texi (C++ Modules): New section.
|
|
gcc/c-family/
|
|
* c.opt (-fmodule-lazy): New option.
|
|
gcc/cp/
|
|
* module.c (module_state::read_decls): Prepare for laziness.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::tng_*): Rename.
|
|
|
|
gcc/cp/
|
|
* module.c (enum tree_tag): Delete tt_definition, tt_binding.
|
|
(trees_in::tag_{binding,definition}): Delete.
|
|
(trees_out::{,maybe_}tag_definition): Delete.
|
|
(trees_{in,out}::define_{function,var,class,enum}): Delete.
|
|
(trees_in::tree_node): Remove tt_definition handling.
|
|
(trees_in::read, trees_out::write): Delete.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::write_namespace): Delete.
|
|
(module_state::{write_bindings,read_bindings}): Likewise.
|
|
|
|
gcc/cp/
|
|
* module.c (TNG): Delete.
|
|
(module_state::{tng_read_bindings,write): Constant fold TNG.
|
|
(trees_out::tree_node, trees_in::finish_type): Likewise.
|
|
|
|
gcc/cp/
|
|
* module.c (refs_tng): Replace with TNG.
|
|
|
|
Switch over to new binding scheme.
|
|
gcc/cp/
|
|
* module.c (TNG): Enable.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write,mark}_template_def): Deal
|
|
with CLASSTYPE_DECL_LIST.
|
|
(trees_out::tree_node): Check implicit TEMPLATE_DECLs.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_node): Reorder by-name checks.
|
|
* name-lookup.c (pushdecl_top_level): Replace IS_FRIEND parm with
|
|
MAYBE_INIT. Set DECL_CONTEXT. Finish if requested.
|
|
(pushdecl_top_level_and_finish): Use pushdecl_top_level.
|
|
* name-lookup.h (pushdecl_top_leve): Adjust declaration.
|
|
|
|
2018-04-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write,mark}_template_def): New.
|
|
(module_state::{read_write_mark}_definition): Call them.
|
|
(depset::hash::add_dependency): Don't depend on no-context decls.
|
|
(trees_out::tree_node): Don't try and name no-context decls.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_class_def}): Fixup
|
|
vptr-containing logic.
|
|
(trees_in::tree_binfo): Forward walk.
|
|
|
|
gcc/cp/
|
|
* module.c (enum tree_tag): Replace tt_tinfo_pseudo with
|
|
tt_tinfo_typedef. Add tt_vtable.
|
|
(module_state::mark_class_def): Mark vtables.
|
|
(trees_out::tree_node): Move TINFO processing to decl section.
|
|
Replace tinfo_psuedo handling with tinfo_typedef handling. Add
|
|
vtable special.
|
|
(trees_in::tree_node): Likewise.
|
|
* rtti.c (struct tinfo_s): Note type is const qualified variant.
|
|
gcc/testsuite/
|
|
* g++.dg/aaa/class-3_d.C: Adjust message.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::read_definition): New.
|
|
(module_state::read_{function,var,class,enum}_def): New.
|
|
(module_state::tng_read_cluster): New.
|
|
(module_state::tng_read_bindings): Call it.
|
|
(trees_in::tree_node): Check refs_tng.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::write_var_def): Write definition.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::mark_node): Allow preseeding.
|
|
(trees_out::tree_node): Fix as_base.
|
|
|
|
2018-04-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (tt_type_name, tt_named): Rename to ...
|
|
(tt_named_type, tt_named_decl): ... here. Adjust uses.
|
|
(module_state::mark_class_def): Mark fake base.
|
|
(module_state::write_class_def): Write fake base.
|
|
(trees_{in,out}::tree_node): Avoid goto again.
|
|
(trees_in::finish_type): Protect fake base serialize.
|
|
* Make-lang.in (version.o): Depend on cp dir.
|
|
gcc/testsuite/
|
|
* g++.dg/aaa/class-3_d.C: Adjust message.
|
|
|
|
gcc/cp/
|
|
* module.c (bytes_in::{use,i,u,wi,str}): Use set_overrun.
|
|
(module_state::tng_write_cluster): Sort cluster here ...
|
|
(module_state::tng_write_bindings): ... not here.
|
|
(module_state::tng_read_bindings): Set refs_tng.
|
|
(trees_{in,out}::define_class): Don't deal with refs_tng here.
|
|
(trees_out::tree_binfo): Protect from dep_walk_p. Force insert
|
|
new tag.
|
|
|
|
Reorder for better logging
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::core_vals): Stream name-like members
|
|
early.
|
|
(module_state::do_import): Set module purview before streaming.
|
|
* name-lookup.c (set_module_binding): Don't barf on null.
|
|
|
|
gcc/
|
|
* gdbinit.in: Add conditions on error catching breakpoints.
|
|
|
|
Fix enum types, more globals
|
|
gcc/cp/
|
|
* module.c (module_state::maybe_add_global): New.
|
|
(module_state::init): Use it.
|
|
(trees_{in,out}::core_vals): Special case TYPE of unscoped enum.
|
|
|
|
2018-04-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Read new .bindings section
|
|
gcc/cp/
|
|
* module.c (elf::get_num_sections): New.
|
|
(module_state::tng_{read,write}_namespaces): Serialize section range.
|
|
(module_state::tng_read_bindings): New.
|
|
(module_State::tng_{read,write}_bindings): Adjust.
|
|
(trees_in::define_enum, trees_in::tag_binding): Adjust.
|
|
* name-lookup.h (push_module_binding): Rename to ...
|
|
(set_module_binding): ... here.
|
|
(import_module_binding): Declare.
|
|
* name-lookup.c (import_module_binding): New.
|
|
(push_module_binding): Rename to ...
|
|
(set_module_binding): ... here. Adjust.
|
|
|
|
Kill old .bindings section
|
|
gcc/cp/
|
|
* module.c (module_state::record_namespace): Delete.
|
|
(module_state::write_namespace): Remove bind parm. Adjust.
|
|
(module_state::read_namespace): Delete.
|
|
(module_state::tng_read_namespaces): New.
|
|
(module_state::write_bindings): Don't write bindings section.
|
|
(module_state::read_bindings): Use tng_read_bindings).
|
|
* name-lookup.c (make_namespace): Public namespaces are exported.
|
|
(push_namespace): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::define_class): Check refs_tng.
|
|
(trees_out::tree_binfo): Add definition dependency.
|
|
(trees_{in,out}::tree_node): Don't write binfos in refs_tng mode.
|
|
(trees_in::finish_type): Chek refs_tng.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::tree_binfo): Serialize entire path.
|
|
(trees_{in,out}::tree_node): Adjust.
|
|
|
|
2018-03-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (has_definition): VAR_DECLs too.
|
|
{module_state::mark_{,function_,var_,class_,enum_}definition): New.
|
|
(trees_out::walk_into): Turn into ...
|
|
(trees_out::mark_node): ... this. Adjust callers.
|
|
(module_state::write{_function_,class_,var_}_def): Define.
|
|
(module_state::find_dependencies): Look in definitions.
|
|
|
|
2018-03-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (maybe_get_template): New.
|
|
(depset::hash::maybe_add_definition): Return a depset.
|
|
(depset::hash::add_dependency): Don't deal with template here.
|
|
(module_state::write_{function,class}): New stubs.
|
|
(module_state::write_enum): New.
|
|
(module_state::write_definition): New.
|
|
(module_state::tng_write_cluster): Write binding header.
|
|
(module_state::add_writables): Don't return a bool. No need to
|
|
nadger namespace ownership.
|
|
(module_state::find_dependencies): Adjust.
|
|
(bind_cmp, space_cmp): New.
|
|
(ns_cmp): Delete.
|
|
(module_state::tng_write_bindings): Sort here.
|
|
(trees_out::tree_node): Check dependency of containers.
|
|
(module_purview_p): Defend against early checks.
|
|
* name-lookup.c (extract_module_decls): Don't special-case
|
|
namespaces.
|
|
(push_namespace): Set EXPORT & OWNER inside a module.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/namespace-2.C: Adjust.
|
|
* g++.dg/modules/namespace-3.C: New.
|
|
* g++.dg/modules/scc-1.C: Adjust.
|
|
* g++.dg/modules/scc-2.C: New.
|
|
|
|
2018-03-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c
|
|
(depset::hash::{add_writables,find_dependencies}): Moved to ...
|
|
(module_state::{add_writables,find_dependencies}): ... here. Adjust.
|
|
(depset::hash::write_bindings): Moved to ...
|
|
(module_state::tng_write_bindings): ... here. Adjust.
|
|
(depset::hash::{add_decls,get_work}): New.
|
|
|
|
gcc/cp/
|
|
* module.c (hash_definition): New.
|
|
(struct depset::tarjan): New.
|
|
(depset::tarjan_connect, depset::hash::find_sccs): Delete.
|
|
(depset::hash::maybe_add_definition): New.
|
|
(module_state::tng_write_namespaces): New.
|
|
(depset::hash::{maybe_namespace,write_namespaces): Delete.
|
|
(module_state::tng_write_bindings): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c (depset::traits): Hash & compare using name too.
|
|
|
|
gcc/cp
|
|
* module.c (refs_tng): Temporary modal hack.
|
|
(tree_tag): Rename tt_import to tt_named.
|
|
(module_state::write_cluster): Fix iteration.
|
|
(module_state::tng_write_bindings): Set and clear refs_tng.
|
|
(trees_out::tree_node): Refs by name when applicable.
|
|
(trees_out::tree_node): Use tt_named.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/by-name-1.C: New.
|
|
* g++.dg/modules/class-3_b.C: Adjust.
|
|
* g++.dg/modules/scc-1.C: More checking.
|
|
|
|
2018-03-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (depset::table): Rename to ...
|
|
(depset::hash): ... here.
|
|
(trees_out::deps_only): Rename to ...
|
|
(trees_out::dep_walk_p): ... here.
|
|
|
|
gcc/cp/
|
|
* module.c (depset::table::find_exports): Renamed ...
|
|
(depset::table::add_writables): .. here. Return bool, add
|
|
exported namespaces.
|
|
(depset::table::append): Add namespaces to worklist.
|
|
(mdule_state::write_namespace): Use TREE_PUBLIC.
|
|
* name-lookup.c (extract_module_decls): Only extract decls in our
|
|
purview.
|
|
(make_namespace): Remove FIXME.
|
|
(push_namespace): Set MODULE_OWNER if exporting.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/namespace-2.C: New.
|
|
|
|
gcc/testsuite/
|
|
* lib/scanlang.exp (scan-lang-dump-not): new.
|
|
|
|
gcc/cp/
|
|
* module.c (depset::visited): Use depset::cluster. Adjust users.
|
|
|
|
gcc/cp/
|
|
* module.c (elf_out::strtab::named_decl): Cope with TYPE constext.
|
|
(elf_out::strtab::write_named_decl): Likewise.
|
|
(module_state::write_cluster): Adjust dump.
|
|
(fixup_unscoped_enum_owner): New.
|
|
* decl.c (finish_enum_value_list): Call
|
|
fixup_unscoped_enum_owner, as necessary.
|
|
* cp-tree.h (fixup_unscoped_enum_owner): Declare.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/scc-1.C: New.
|
|
|
|
gcc/cp/
|
|
* module.c (elf_out::strtab): Add name-by-decl.
|
|
(module_state::write_cluster): Find naming decl, and use it.
|
|
|
|
gcc/cp/
|
|
* module.c (class depset): Make a class, add accessors. Implicitly
|
|
hold name as first decl.
|
|
(depset::table::{maybe_insert,find}): New.
|
|
(depset::table::{append,find_exports,find_dependencies}): Adjust.
|
|
(depset::table::{write_bindings,write_namespaces}): Adjust.
|
|
(module_state::write_cluster): Adjust.
|
|
|
|
Add depset analysis (incomplete)
|
|
gcc/cp/
|
|
* module.c (struct depset): New.
|
|
(module_state::tng_write_bindings, write_cluster): New.
|
|
(trees_out::{decls,mark_decls,mark_trees,unmark_trees): New.
|
|
(trees_out::{begin,end,walk_into,force_insert): New.
|
|
(module_state::write): Call tng_write_bindings.
|
|
(trees_out::{core_vals,lang_decl_vals,lang_type_vals,tree_node_raw,
|
|
tree_node): Deal with deps_only.
|
|
|
|
2018-03-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Allow dump '-'
|
|
gcc/
|
|
* dumpfile.c (dump_open): New. Allow '-' for stdout.
|
|
(dump_open_alternate_stream, dump_start, dump_begin): Call it.
|
|
(dump_finish): Identify std{out,err} by stream.
|
|
* doc/invoke.texi (fdump-rtl): Document stdout/stderr.
|
|
|
|
2018-03-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Remove -fmodules, forcing -fmodules-{ts,atom}
|
|
gcc/cp/
|
|
* parser.c (cp_parser_diagnose_invalid_type_name): Adjust error.
|
|
gcc/c-family/
|
|
* c.opt (fmodules): Remove.
|
|
gcc/
|
|
* doc/invoke (fmodules): Remove.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Iterate over -fmodules-{ts,atom}.
|
|
* g++.dg/modules: Mark tests that are -fmodules-ts only.
|
|
|
|
2018-03-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Implement Atom module & import placement
|
|
gcc/
|
|
* doc/invoke.texi (-fmodules): Document -fmodules-atom.
|
|
gcc/c-family/
|
|
* c.opt (fmodules-atom): Renamed from fmodules++.
|
|
gcc/cp/
|
|
* cp-tree.h (import_module): Add parameter.
|
|
* module.c (import_module): Add exporting param.
|
|
(handle_module_option): Adjust.
|
|
* parser.c (cp_parser_module_declaration): Remove fmodules++
|
|
global module parsing.
|
|
(cp_parser_import_declaration): Adjust.
|
|
(cp_parser_declaration_seq_opt): Parse imports under -fmodules++ ...
|
|
(cp_parser_declaration): and not here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod++-decl-0_[abc].C: Adjust.
|
|
* g++.dg/modules/mod++-decl-2.C: Adjust.
|
|
* g++.dg/modules/mod++-decl-3.C: New.
|
|
|
|
Implement p0713 - identifiying module source
|
|
gcc/cp/
|
|
* parser.c (cp_parser_module_declaration): Allow global module
|
|
preamble. Return bool.
|
|
(cp_parser_declaration_seq_opt): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/circ-1_d.C: Adjust.
|
|
* g++.dg/modules/global-1_a.C: Adjust.
|
|
* g++.dg/modules/main-[123]-aux.cc: Adjust.
|
|
* g++.dg/modules/main-aux.cc: Adjust.
|
|
* g++.dg/modules/mod-decl-[13].C: Adjust.
|
|
* g++.dg/modules/mod-decl-5_b.C: Adjust.
|
|
* g++.dg/modules/mod-exp-1_b.C: Adjust.
|
|
* g++.dg/modules/mod-sym-2.C: Adjust.
|
|
* g++.dg/modules/proclaim-1.C: Adjust.
|
|
* g++.dg/modules/static-1_a.C: Adjust.
|
|
* g++.dg/modules/p0713-[123].C: New: Adjust.
|
|
|
|
2018-03-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (add_module_mapping): Fix double increment.
|
|
|
|
2018-02-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r258084.
|
|
|
|
gcc/
|
|
* Makefile.in (REVISION_c): Don't exec REVISION.
|
|
* REVISION: Simple text file.
|
|
gcc/cp/
|
|
* Make-lang.in (MODULE_STAMP): New var.
|
|
(REVISION_s): Wedge stamp into it here.
|
|
(CFLAGS-cp/module.o): Adjust.
|
|
|
|
Using flags on overloads.
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_HAS_USING_P): New.
|
|
* tree.c (alloc_ovl): New, broken out of ...
|
|
(ovl_make): ... this. Use it. Maybe set OVL_HAS_USING_P.
|
|
(ovl_copy): Use alloc_ovl. Copy OVL_HAS_USING_P.
|
|
(ovl_insert): Set OVL_HAS_USING_P appropriately.
|
|
(lookup_maybe_add): Comment on OVL_HAS_USING_P.
|
|
* name-lookup.c (name_lookup::add_overload)
|
|
(get_class_binding_direct): Check OVL_HAS_USING_P.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/using60.C: New.
|
|
|
|
gcc/
|
|
* Makefile.in: Exec REVISION maybe.
|
|
* REVISION: New.
|
|
gcc/cp/
|
|
* Make-lang.in: Directly set MODULE_STAMP.
|
|
|
|
Map tag recognised in and out of comments
|
|
gcc/cp/
|
|
* module.c
|
|
gcc/testsuite/
|
|
* g++.dg/modules/hello.cc: Clone to ...
|
|
* g++.dg/modules/main{,-[123]}-aux.cc: ... here.
|
|
* g++.dg/modules/main-[123]_a.C: New.
|
|
* g++.dg/modules/main-[123]-map: New.
|
|
* g++.dg/modules/main-map: Delete.
|
|
* g++.dg/modules/main_a.C: Update.
|
|
|
|
2018-02-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (version_string): Rename.
|
|
(module_state::write_context): Write compiler version.
|
|
|
|
2018-02-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Use TREE_VISITED
|
|
gcc/cp/
|
|
* module.c (trees_out::fixed_refs): New.
|
|
(trees_out::{begin,end}): New.
|
|
(module_state::init): Use TREE_VISITED.
|
|
(trees_out::{maybe_insert,tree_node}): Likewise.
|
|
|
|
gcc/cp/
|
|
* module.c: More commenting.
|
|
(trees_{in,out}::define_class): Don't do AsBase here.
|
|
(trees_in::finish_type, trees_out::tree_node}: Do it here.
|
|
(get_module_owner): Cleanup.
|
|
|
|
2018-02-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Module ownership on containers
|
|
gcc/cp/
|
|
* cp-tree.h (decl_set_module, module_context): Delete.
|
|
(get_module_owner, set_module_owner)
|
|
(set_implicit_module_owner): Declare.
|
|
* decl.c (grokfndecl, grokvardecl, grokdeclarator): Call
|
|
set_module_owner.
|
|
* error.c (dump_module_suffix): Use get_module_owner.
|
|
* mangle.c (maybe_write_module): Likewise.
|
|
* method.c (implicitly_declare_fn): Use set_implicit_module_owner.
|
|
* module.c (module_context, decl_set_module): Delete.
|
|
(trees_in::define_function): Adjust.
|
|
(trees_{in,out}::lang_decl_bools): Set module_owner.
|
|
(trees_{in,out}::tree_node_raw): Adjust.
|
|
(trees_out::tree_node): Adjust.
|
|
(get_module_owner, set_module_owner)
|
|
(set_implicit_module_owner): Define.
|
|
* name-lookup.c (do_pushtag): Use set_module_owner.
|
|
* pt.c (lookup_template_class_1, instanitate_decl): Use
|
|
set_implicit_module_owner.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_node): Reorder.
|
|
|
|
gcc/cp/
|
|
* module.c: Commenting and a few cleanups.
|
|
|
|
gcc/cp/
|
|
* module.c (elf): Make more constants private.
|
|
(elf_in::find): Swap args, default to PROGBITS.
|
|
(elf_out::add): Replace type and flags with string_p arg.
|
|
(bytes_in::begin, bytes_out::end): Adjust.
|
|
(data::set_crc): Store zero for no-crc.
|
|
|
|
Module map files have more syntax
|
|
gcc/cp/
|
|
* cxx-module-wrapper.sh: Accept src filename, don't search
|
|
MODULE_PATH.
|
|
* module.c (module_state::srcname): New.
|
|
(module_state::print_map): New.
|
|
(make_module_name): Rename to ...
|
|
(make_module_filename): ... here. Don't assume trailing NUL.
|
|
(find_module_file): Pass srcname.
|
|
(parse_module_mapping): New.
|
|
(add_module_mapping): Call it. Detect too-deeply nested.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-map-dump): New.
|
|
gcc/
|
|
doc/invoke.texi: Document new module-map file syntax
|
|
gcc/testsuite/
|
|
* g++.dg/modules/hello.c: Adjust.
|
|
* g++.dg/modules/main_a.c: Adjust.
|
|
* g++.dg/modules/main-map: New.
|
|
* g++.dg/modules/modules.exp: Set CXX_MODULE_PATH.
|
|
|
|
2018-02-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Module path is for mapping files. Replace -fmodule-root with
|
|
-fmodule-prefix.
|
|
gcc/cp/
|
|
* cxx-module-wrapper.sh: Adjust.
|
|
* module.c (module_state::lazy_{init,fini}): Drop the lazy.
|
|
(module_state::maybe_early_init): Move into init.
|
|
(module_prefix, module_file_args, module_wrapper): New.
|
|
(make_module_name): New.
|
|
(module_state::occupy): Call it.
|
|
(module_to_filename): Delete.
|
|
(search_module_path): Adjust for finding module-maps.
|
|
(find_module_file): New.
|
|
(add_module_mapping): Reimplement.
|
|
(init_module_processing): Process module_file_args array.
|
|
(module_state::do_import, finish_module): Adjust.
|
|
(maybe_prepend_dir): Delete.
|
|
(handle_module_option): Adjust.
|
|
gcc/c-family/
|
|
* c-opts.c (c_common_post_options): Adjust clean_cxx_module_path
|
|
call.
|
|
* c.opt (fmodule-root=): Delete.
|
|
(fmodule-prefix=): New.
|
|
gcc/
|
|
* doc/invoke.texi (fmodule-root): Replace with ...
|
|
(fmodule-prefix): ... this.
|
|
* incpath.c (clean_cxx_module_path): Drop root appending. Drop
|
|
multilib handling.
|
|
* incpath.h (clean_cxx_module_path): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/fmod-file-1_b.C: Adjust.
|
|
* g++.dg/modules/main_a.C: Adjust.
|
|
* g++.dg/modules/modules.exp: Adjust.
|
|
|
|
2018-02-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
AS_BASE is by reference.
|
|
gcc/cp/
|
|
* module.c (trees_out::define_class): Break AS_BASE loop during
|
|
streaming.
|
|
(trees_{in,out}::tree_node): Use tt_as_base.
|
|
|
|
Mapping files are recursive.
|
|
gcc/cp/
|
|
* module.c (maybe_prepend_dir): New.
|
|
(add_module_mapping): Recurse. Deal with relative paths.
|
|
(handle_module_option): Move file reading into add_module_mapping.
|
|
gcc/
|
|
* doc/invoke.texi (fmodule-file): Document.
|
|
|
|
BINFOs imported by reference.
|
|
gcc/cp/
|
|
* module.c (trees_{in_out}::tree_binfo): New.
|
|
(trees_out::maybe_insert): New.
|
|
(trees_out::insert): Use it.
|
|
(trees_{in,out}::define_class): Stream remaining binfo contents.
|
|
(trees_{in,out}::start): Don't expect BINFOs.
|
|
(trees_{in,out}::core_vals): Likewise.
|
|
(trees_{in,out}::tree_node): Use tt_binfo.
|
|
(trees_out::tree_node): Stream a class's child binfos.
|
|
(trees_in::finish_type): Likewise.
|
|
|
|
2018-02-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Add module map file reading.
|
|
gcc/cp/
|
|
* module.c (add_module_mapping): New, swallow ...
|
|
(add_module_file): ... insertion bits. Move other bits to ...
|
|
(handle_module_option): ... here. Read module map file.
|
|
gcc/c-family/
|
|
* c.opt (fmodule-file): Document new semantics.
|
|
gcc/
|
|
* doc/invoke.texi (fmodule-file): Document new semantics.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/fmod-file-1_[ab].C: New.
|
|
* g++.dg/modules/fmod-out-1_[ab].C: New.
|
|
* g++.dg/modules/modules.exp (decode_mod_spec): Augment.
|
|
|
|
Keep module-file map in module hash.
|
|
gcc/cp/
|
|
* module.c (module_state): Add empty_p, get_module members.
|
|
Rename set_name, delete set_location.
|
|
(module_file_map, module_file): Delete.
|
|
(module_state::do_import): Use get_module, set filename here.
|
|
(declare_module): No need to set filename here.
|
|
(add_module_file): Use module_state::get_module.
|
|
|
|
Move module option processing into module.c.
|
|
gcc/cp/
|
|
* cp-objcp-common.c (add_module_file): Move to module.c
|
|
(cp_handle_option): Call handle_module_option.
|
|
* cp-tree.h (module_output, module_files_map, module_files): Move
|
|
to module.c
|
|
* module.c (module_state::maybe_early_init): New.
|
|
(module_output, module_files): Make static.
|
|
(module_files_map): From cp-tree.h.
|
|
(init_module_processing): Call maybe_early_init.
|
|
(add_module): Moved from cp-objcp-common.c.
|
|
(handle_module_option): New.
|
|
|
|
Move module option processing out of c-common.c.
|
|
gcc/c-family/
|
|
* c-common.h (module_output, module_files_map, module_files): Move
|
|
to cp-tree.h.
|
|
* c-common.c (module_output, module_files): Move to module.c
|
|
* c-opts.c (add_module_file): Move to cp-objcp-common.c.
|
|
(c_common_handle_option): Move modules options to
|
|
cp-objcp-common.c.
|
|
gcc/cp/
|
|
* cp-objcp-common.c (add_module_file): Moved from c-opts.c.
|
|
(cp_handle_option): New, from c_common_handle_option.
|
|
* cp-objcp-common.h (LANG_HOOKS_HANDLE_OPTION): Point at
|
|
cp_handle_option.
|
|
* cp-tree.h (module_output, module_files_map, module_files): Moved
|
|
from c-common.h.
|
|
* cp-module.c (module_output, module_files): Moved from c-common.c.
|
|
|
|
2018-02-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c: Update more comments.
|
|
|
|
gcc/cp/
|
|
* module.c: Update a lot of comments.
|
|
|
|
2018-02-07 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (trees_in::tree_node): Absorb ...
|
|
(trees_in::tree_node_special): ... this.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_in::tree_node_special): Deserialize tt_node here ...
|
|
(trees_in::tree_node): ... not here.
|
|
|
|
2018-02-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (trees_out::tree_node_special): Move into tree_node.
|
|
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::core_vals): Serialize decl name &
|
|
context here.
|
|
(trees_in::tree_node_raw): Don't set name & context here.
|
|
(trees_{in,out}::tree_node): Don't serialize decl name and context
|
|
here.
|
|
|
|
Remove old import machinery.
|
|
gcc/cp/
|
|
* module.c (trees_in::tree_node_raw): Set module owner.
|
|
(trees_{in,out}::tree_node): Remove importing here.
|
|
|
|
Imports use special tags
|
|
gcc/cp/
|
|
* module.c (module_context): Cope with C++ anon types.
|
|
(trees_{in,out}::tree_node_special): Deal with imports here ...
|
|
(trees_{in,out}::tree_node): ... not here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-3_[bd].C: Adjust.
|
|
|
|
Kill namespace module slot hackery
|
|
gcc/cp/
|
|
* name-lookup.c (module_binding_slot): Make CREATE a bool. Remove
|
|
namespace hackery.
|
|
(find_namespace_partition): Delete.
|
|
(merge_global_decl): Do not expect a namespace. Remove such
|
|
handling.
|
|
(push_module_binding): Likewise.
|
|
|
|
Namespaces use special tags
|
|
gcc/cp/
|
|
* module.c (trees_{in,out}::tree_node_special): Deal with
|
|
namespaces.
|
|
* name-lookup.h (find_imported_namespace): Declare.
|
|
* name-lookup.c (find_imported_namespace): New.
|
|
|
|
Less implicit tree numbering, negative indices for back refs
|
|
gcc/cp/
|
|
* module.c (ptr_uint_traits, ptr_uint_hash_map): Rename ...
|
|
(ptr_int_traits, ptr_int_hash_map): ... here. Map to ints.
|
|
(uint_ptr_traits, uint_ptr_hash_map): Delete.
|
|
(enum record_tag): Delete.
|
|
(enum tree_tag): New.
|
|
(trees_{in,out}::insert): Return int.
|
|
(trees_{in,out}::tree_node_special): Adjust.
|
|
(trees_{in,out}::tree_node): Adjust.
|
|
(trees_out::write, trees_in::read): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-3_[bd].C: Adjust.
|
|
|
|
2018-02-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* decl2 (c_parse_final_cleanups): Only finish_module if we started
|
|
it.
|
|
* module.c (module_hash_state): Move earlier.
|
|
(module_state): Add hash and modules static members.
|
|
(module_state::set_import): Replace do_import.
|
|
(module_state::lazy_init): Create the hash table and default
|
|
module.
|
|
(trees_in::tree_node_raw): Don't remap a public namespace.
|
|
(module_purview_p, module_interface_p): Adjust.
|
|
(module_state::do_import): Move more stuff to lazy_init.
|
|
(import_module): Deal with setting current module flags.
|
|
(finish_module): Adjust.
|
|
|
|
Fix bootstrap
|
|
gcc/cp/
|
|
* module.c (elf): Clean up consts.
|
|
(module_state::record_namespace): Comment args.
|
|
(module_state::read_namespace): Comment unused vars.
|
|
(trees_in::finish_tree): Fix logic error.
|
|
(trees_in::tree_node_special): Fix undefined var.
|
|
|
|
2018-02-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Module purview is implicit.
|
|
gcc/cp/
|
|
* cp-tree.h (lang_decl): Remove module_purview_p field.
|
|
* mangle.c (maybe_write_module): Fix signed/unsigned mismatch.
|
|
* module.c (trees_in::finish): Adjust.
|
|
(trees{in,out}::lang_decl_bools): Drom module_purview_p field.
|
|
(decl_set_module): Done set DECL_MODULE_PURVIEW_P.
|
|
* name-lookup.c (extract_module_decls): check MODULE_PURVIEW_P.
|
|
(make_namespace_finish): Remove inline_p arg. Adjust callers.
|
|
* pt.c (build_template_decl): Don't copy MODULE_PURVIEW_P.
|
|
* rtti.c (tinfo_base_init): Don't clear MODULE_PURVIEW_P.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (make_namespace_finish): Always create the scope.
|
|
(add_imported_namespace): Check namespace inlineness here.
|
|
|
|
gcc/cp/
|
|
* module.c (decl_set_module): Set DECL_MODULE_OWNER.
|
|
* rtti.c (tinfo_base_init): Clear DECL_MODULE_OWNER.
|
|
|
|
gcc/cp/
|
|
* decl.c (grokfndecl): Protect decl_set_module call.
|
|
* name-lookup,c (do_pushtag): Likewise.
|
|
* module.c (decl_set_module): Assert namespace context.
|
|
|
|
2018-02-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h: Adjust comments.
|
|
* module.c (module_purview_p, module_interface_p): Adjust.
|
|
|
|
Deserializing uses an array (Nathan is a dumbass)
|
|
gcc/cp/
|
|
* module.c (trees_in): Delete count and tree_map. Add back_refs.
|
|
(trees_in::next): Delete.
|
|
(trees_in::insert): Append to array.
|
|
(trees_in::tree_node_special): Adjust.
|
|
(trees_in::tree_node): Likewise.
|
|
|
|
2018-02-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (nodel_ptr_hash): New.
|
|
(non_null_hash): Delete.
|
|
(ptr_uint_traits, uint_ptr_traits): Adjust.
|
|
(module_state_hash): Use nodel_ptr_hash.
|
|
(module_hash): Do not GTY.
|
|
(module_state::do_import, finish_module): Adjust.
|
|
|
|
Use TREE_VEC for structured module names.
|
|
gcc/cp/
|
|
* cp-tree.h (module_name_parts): Replace with ...
|
|
(module_vec_name): ... this.
|
|
* mangle.c (maybe_write_modules): Adjust.
|
|
* module.c (module_state): Replace name_parts with vec_name.
|
|
(module_state::set_name): Add maybe_vec parm, construct TREE_VEC.
|
|
(module_vec_name): Replace ...
|
|
(module_name_parts): ... this.
|
|
(module_state::do_import): Construct flat name.
|
|
* parser.c (cp_parser_module_name): Construct TREE_VEC.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-1.C: Add error.
|
|
|
|
MODULE_PURVIEW bug fixing.
|
|
gcc/cp/
|
|
* decl2.c (c_parse_final_cleanups): Reset current_module.
|
|
* module.c (module_state::do_import): New, swallow ...
|
|
(do_module_import): ... this. Update callers.
|
|
* name-lookup.c (name_lookup::search_namespace_only): Fix search
|
|
of SLOT_CURRENT.
|
|
(do_pushdecl): Fix assert.
|
|
(merge_global_decl, push_module_binding, lookup_by_ident): Fix
|
|
module remap thinko.
|
|
|
|
Module purview has MODULE_PURVIEW number.
|
|
gcc/cp/
|
|
* module.c (module_state::read): Use MODULE_PURVIEW.
|
|
(trees_{in,out}::tree_node): Adjust.
|
|
(do_module_import, import_module): Likewise.
|
|
* name-lookup.c (module_binding_slot): Adjust.
|
|
(do_pushdecl): Always push to MODULE_SLOT_CURRENT.
|
|
(merge_global_decl): Remap MODULE_PURVIEW.
|
|
(lookup_by_ident, add_imported_namespace): Likewise.
|
|
|
|
Rename MODULE_INDEX->MODULE_OWNER
|
|
gcc/cp/
|
|
* cp-tree.h (MODULE_NONE, MODULE_PURVIEW, MODULE_IMPORT_BASE)
|
|
(MODULE_LIMIT): New, renamed from MODULE_INDEX_$FOO.
|
|
(DECL_MODULE_OWNER): New, renamed from DECL_MODULE_INDEX.
|
|
(MAYBE_DECL_MODULE_OWNER): Likewise.
|
|
(struct lang_decl_base): Rename module_index to module_owner.
|
|
* error.c, mangle.c, module.c, name-lookup.c, pt.c: Adjust.
|
|
|
|
Keep namespaces on global slot.
|
|
gcc/cp/
|
|
* cp-tree.h (MODULE_SLOT_CURRENT, MODULE_SLOT_GLOBAL): Renamed
|
|
from MODULE_SLOT_TU, MODULE_SLOT_GLOBALS.
|
|
* name-lookup.h (set_module_namespace): Undeclare.
|
|
(add_imported_namespace): Declare.
|
|
* name-lookup.c (module_binding_slot): Remove assert, propagate
|
|
external namespace to GLOBAL slot on creation.
|
|
(update_binding): Don't add namespaces to level.
|
|
(reuse_namespace): New.
|
|
(make_namespace): New, absorb ...
|
|
(create_namespace): ... this. Delete.
|
|
(make_namespace_finish): New.
|
|
(push_namespace): Adjust.
|
|
(add_imported_namespace): New. Absorb ...
|
|
(set_module_namespace): ... this. Delete.
|
|
* module.c (module_state::read_namespace): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/namespace-1_[abc].C: New.
|
|
|
|
Fix circularity detection, and other errors
|
|
gcc/cp/
|
|
* module.c (elf::E_BAD_DATA, elf::E_BAD_IMPORT): New.
|
|
(elf::set_error): Default to E_BAD_DATA.
|
|
(elf::end, elf_out::end): Return error string.
|
|
(module_state::set_location): New.
|
|
(module_state::{push,pop}_location): Adjust.
|
|
(do_module_import): Fixup circularity and other errors.
|
|
(declare_module, finish_module): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/circ-1_[abcd].C: New.
|
|
* g++.dg/modules/mod-decl-1.C: Adjust errors.
|
|
* g++.dg/modules/mod-decl-2_b.C: Adjust errors.
|
|
* g++.dg/modules/mod-decl-5_b.C: Adjust errors.
|
|
* g++.dg/modules/mod-stamp-1-d.C: Adjust errors.
|
|
|
|
2018-02-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Alloc a slot for global module
|
|
gcc/cp/
|
|
* cp-tree.h (MODULE_INDEX_NONE, MODULE_INDEX_PURVIEW): New.
|
|
(MODULE_SLOT_TU, MODULE_SLOT_GLOBALS): New.
|
|
(MODULE_INDEX_IMPORT_BASE): Increment.
|
|
* module.c (do_module_import): Push reserved slot.
|
|
* name-lookup.c (module_binding_slot): Reserve slots below
|
|
MODULE_INDEX_IMPORT_BASE.
|
|
|
|
Bindings point to decls
|
|
gcc/cp/
|
|
* module.c (data::check_crc): Only check.
|
|
(data::get_crc): New.
|
|
(elf_in::find): Return section index.
|
|
(bytes_in::begin): Add by-section-number variant.
|
|
(module_state): Add lazy counter (unused).
|
|
(module_state::write_bindings): Emit decl section number.
|
|
(module_state::read_bindings): Adjust, swallow ...
|
|
(module_state::read_decls): ... this. Delete.
|
|
|
|
Read and parse the binding section in module_state.
|
|
gcc/cp/
|
|
* module.c (modules_state::record_namespace): New.
|
|
(module_state::write_namespace): Adjust, renamed from ...
|
|
(module_state::walk_namespace): ... here.
|
|
(module_state::read_namespace): New.
|
|
(module_state::{read,write}_bindings): Adjust.
|
|
(module_state::finish_module): Adjust.
|
|
* name-lookup.h (set_module_namespace): Declare.
|
|
* name-lookup.c (merge_global_decl): Adjust.
|
|
(create_namespace): New.
|
|
(set_module_namespace): New, use it.
|
|
(push_namespace): Use create_namespace.
|
|
|
|
Write binding section in module_state.
|
|
gcc/cp/
|
|
* name-lookup.h (extract_module_decls): Renamed from
|
|
extract_module_bindings. Adjust signature.
|
|
* name-lookup.c (extract_module_decls): Likewise.
|
|
* module.c (module_state::walk_namespace): New, absorb ...
|
|
(trees_out::walk_namespace): ... this. Delete.
|
|
(trees_out::write): Reimplement, absorb ...
|
|
(trees_out::{tag_binding,bindings}): ... these. Delete.
|
|
(module_state::write_bindings): Adjust.
|
|
|
|
Merge trunk r257292.
|
|
|
|
2018-01-31 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}): Rename to ...
|
|
(trees_in, trees_out): ... here.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state::global_{trees,vec,crc}): New, moved from ...
|
|
(globals{,_arys,_crc}): ... these globale scope vars.
|
|
(cpms_in): Add global_vec member.
|
|
|
|
Derive cpm_{in,out} from bytes_{in,out}
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}): Derive from bytes_{in,out}. Adjust
|
|
all uses of r & w.
|
|
|
|
Kill cpm_stream.
|
|
gcc/cp/
|
|
* module.c (class cpm_stream): Delete.
|
|
(class cpms_{in,out}): Adjust.
|
|
|
|
Move elf out of cpms_in, cpms_out.
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}_bindings): New.
|
|
(module_stste::read_decls): New.
|
|
(cpms_{in,out}::get_elf): Delete.
|
|
(cpms_out::{write,bindings}): Adjust.
|
|
(cpms_in::read): Adjust.
|
|
|
|
Add module_stat read & write
|
|
gcc/cp/
|
|
* module.c (module_state::{read,write}): New.
|
|
(cpms_in::read): Adjust.
|
|
(do_import_module, finish_module): Adjust.
|
|
|
|
gcc/cp/
|
|
* module.c: Move cpm_stream, cpms_in, cpms_out earlier.
|
|
|
|
Move some reading to module_state.
|
|
gcc/cp/
|
|
* module.c (module_state::read_{context,config}): New, swallow ...
|
|
(cpms_in::imports,header): ... these. Delete.
|
|
(cpms_in::read): Adjust.
|
|
(do_import_module): Adjust.
|
|
|
|
Move some writing to module_state.
|
|
gcc/cp/
|
|
* module.c (module_state::write_{context,config}): New, swallow ...
|
|
(cpms_out::imports,header): ... these. Delete.
|
|
(cpms_out::write): Adjust.
|
|
(finish_module): Adjust.
|
|
|
|
Move global tree init.
|
|
gcc/cp/
|
|
* module.c (module_state::lazy_init): New, swallow ...
|
|
(cpm_serial::lazy_globals): ... this. Adjust callers.
|
|
|
|
Reorder class declarations
|
|
gcc/cp/
|
|
* module.c (bytes, bytes_in, bytes_out): Move before module_state.
|
|
|
|
Simplify import interface
|
|
gcc/cp/
|
|
* module.c (MODULE_INDEX_IMPORTING, MODULE_INDEX_ERROR): Delete.
|
|
(MODULE_INDEX_UNKNOWN): New.
|
|
(module_state): Initialize mod to MODULE_INDEX_UNKNOWN.
|
|
(cpms_in::read): Return void.
|
|
(do_module_import): Return pointer to module object.
|
|
(cpms_in::imports): Adjust.
|
|
(import_module, declare_module, finish_module): Adjust.
|
|
|
|
Module_state owns elf and elf owns stream
|
|
gcc/cp/
|
|
* module.c (elf): Add begin, end members.
|
|
(elf_in, elf_out): Adjust.
|
|
(module_state::announce): New.
|
|
(cpms_{in,out}::get_elf): Adjust.
|
|
(cpms_{in,out}::{begin,end}): Delete.
|
|
(do_module_import, finish_module): Adjust.
|
|
|
|
Commonize module location
|
|
gcc/cp/
|
|
* module.c (module_state::{push,pop}_location): Set and restore
|
|
input_location.
|
|
(make_module_file): Lose module_root prepending.
|
|
(do_module_import): Always set module location.
|
|
(declare_module): Create location and filename.
|
|
(finish_module): Adjust.
|
|
|
|
Staticize instrumentation
|
|
gcc/cp/
|
|
* module.c (bytes_out): Staticize spans, lengths, is_set.
|
|
(bytes_out::instrument): Make static.
|
|
(cpms_out): Staticize unique, refs, nulls, records.
|
|
(cpms_out::instrument): Make static. Adjust.
|
|
|
|
Separate dumper object
|
|
gcc/cp/
|
|
* cp-tree.h (dump, print_other_binding_stack): Undeclare.
|
|
* name-lookup.c (print_other_binding_stack): Make static.
|
|
* module.c (class dumper): New.
|
|
(cpm_serial): Remove dumping machinery here. Adjust all uses.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-imp-1_[abcd].C: Adjust dump scans.
|
|
|
|
Start refactoring cpm_serial
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}::elf): Pointer to elf object,
|
|
(cpms_{in,out}::get_elf): New. Use it.
|
|
(do_module_import, finish_module): Adjust.
|
|
|
|
2018-01-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (data::release): Return NULL, update users.
|
|
(cpms_in::{mod_ix,crc}): Delete, adjust users.
|
|
|
|
Reorder source
|
|
gcc/cp/
|
|
* module.c (struct data): First.
|
|
(class elf, elf_in & elf_out): Next.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state): Remove name_hash, crc_known, set_crc,
|
|
set_location.
|
|
(cpms_in::{read,header}): Add crc_ptr arg.
|
|
(do_module_import): Expected CRC is a pointer.
|
|
(cpms_in::imports): Adjust.
|
|
|
|
Push remaps as they happen.
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}::imports): Write in ascending order.
|
|
|
|
Move remap vector into module state.
|
|
gcc/cp/
|
|
* module.c (module_state): Add remap;
|
|
(cpms_in): Remove remap_num, remap_vec.
|
|
(module_state::release): New.
|
|
(cpms_in::{imports,tree_node,read}): Adjust.
|
|
(finish_module): Release module state.
|
|
|
|
gcc/cp/
|
|
* module.c (bytes_out::end): Create PROGBITS or STRTAB.
|
|
(cpms_out::write): README is a STRTAB.
|
|
|
|
Remove SYMTAB knowledge, the README is better.
|
|
gcc/cp/
|
|
* module.c (elf_out::symtab): Delete.
|
|
(elf_out::end): Adjust.
|
|
(cpms_out::imports): Don't create symtab.
|
|
|
|
Section structure completish.
|
|
gcc/cp/
|
|
* module.c (elf::isection): Add flags.
|
|
(elf_out::add): Add section flags.
|
|
(bytes_out::end): Likewise,
|
|
(elf_out::end): Adjust.
|
|
(cpms_out::bindings): Generate bindings section too.
|
|
(cpms_out::write): Add imports to README. Make string section.
|
|
(cpms_in::read): Adjust.
|
|
|
|
Config in header
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}::tag_conf): Delete.
|
|
(cpms_{in,out}::header): Serialize host & target conf.
|
|
(cpms_in::read, cpms_out::write): Adjust.
|
|
|
|
Globals in header
|
|
gcc/cp/
|
|
* module.c (module_state::set_name): Kill string names.
|
|
(cpms_{in,out}::tag_globals): Delete.
|
|
(cpms_{in,out}::header): Do globals. Add outer crc.
|
|
(cpms_in::read): Absorb cpms_in::read_item.
|
|
(search_module_path, do_module_import): Kill string names.
|
|
|
|
2018-01-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Import table is separate section
|
|
gcc/cp/
|
|
* module.c (bytes): Reorganize CRC calcs.
|
|
(struct elf::symbol): New.
|
|
(struct elf_out::symtab): New.
|
|
(elf_out::end): Deal with symbol table.
|
|
(bytes_{in,out}::{begin,end}): Adjust crc calcs.
|
|
(cpms_{in,out}::imports): New.
|
|
(cpms_{in,out}::tag_import): Delete.
|
|
(cpms_in::read, cpms_out::write): Adjust.
|
|
|
|
Header is separate section
|
|
gcc/cp/
|
|
* module.c (module_state_hash::equal): Remove string names.
|
|
(elf_in::find): Find by name.
|
|
(elf_in::name): New.
|
|
(class elf_out::strtab): Rename type.
|
|
(elf_out::strings): New member.
|
|
(elf_in::begin): Veriy string table. Create default.
|
|
(elf_out::end): Write string table here.
|
|
(bytes_in::begin, bytes_out::end): Always PROGBITS.
|
|
(cpm_stream::rt_eof): Delete.
|
|
(cpms_{in,out}::header): Reimplement.
|
|
(cpms_in::read, cpms_out::write): Adjust.
|
|
|
|
Remove string-literal module names :(
|
|
gcc/cp/
|
|
* cp-tree.h (validate_module_name): Remove.
|
|
* module.c (validate_module_name): Delete.
|
|
(bytes_{in,out}::module_name): Delete, adjust callers.
|
|
* parser.c (cp_parser_module_name): Adjust.
|
|
(cp_parser_module_declaration, cp_parser_import_declaration)
|
|
(cp_parser_module_proclamation): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod++-decl-3_[ab].C: Delete.
|
|
|
|
{read,write}_module become member fns
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}::elf}: Direct member. Adjust ctors.
|
|
(cpms_{in,out}::{begin,end}): New.
|
|
(cpms_in::read, cpms_out::write): New.
|
|
(read_module, write_module): Delete.
|
|
(do_module_import, finish_module): Adjust.
|
|
|
|
README section
|
|
gcc/cp/
|
|
* module.c (version2date, version2time, version2string): Moved
|
|
from cpm_serial.
|
|
(struct_data): Broken out of elf.
|
|
(struct elf::isection): Remove link field. Adjust all uses.
|
|
(class elf_out::strings): New.
|
|
(elf_out::add): New.
|
|
(bytes_out::printf): New.
|
|
(cpm_stream::dump, cpms_in::header): Adjust version handling.
|
|
(write_module): Write README section.
|
|
|
|
Fix layering violation
|
|
gcc/cp/
|
|
* module.c (elf): Rename bad -> set_error.
|
|
(elf_out, elf_in): Update.
|
|
(cpm_serial, cpm_writer, cpm_reader): Rename to ...
|
|
(bytes, bytes_out, bytes_in): ... here.
|
|
(bytes_{in,out}): Remove source, sink members.
|
|
(bytes_in): Rename overran -> get_overrun. Add end, set_overrun.
|
|
Delete bad, get_error. Adjust users.
|
|
(cpms_in, cpms_out): Add elf field. Adjust.
|
|
|
|
2018-01-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Simplify buffer filling & drainging
|
|
gcc/cp/
|
|
* module.c (cpm_serial): Add begin, end, use, unuse.
|
|
(cpm_writer): Add use, unuse, begin, end. Delete reserve, flush,
|
|
seek, tell, checkpoint.
|
|
(cpm_reader): Add overrun, use, begin, overran. Delete fill,
|
|
checkpoint.
|
|
(cpm_{reader,writer}): Update all seralizers.
|
|
(cpms_{in,out}): Remove checkpointing.
|
|
|
|
CRC at section level
|
|
gcc/cp/
|
|
* module.c (elf::data): Add crc routines.
|
|
(cpm_serial): Remove crc routines.
|
|
(cpm_in, cpm_out): Don't calculate crcs.
|
|
(read_module, write_module): Adjust (incomplete).
|
|
|
|
BMI is ELF
|
|
gcc/cp/
|
|
* module.c (get_version): Moved from cpm_stream::version.
|
|
(struct non_null_hash, ptr_uint_traits, ptr_uint_hash_map)
|
|
uint_ptr_traits, uint_ptr_hash_map): New.
|
|
(elf, elf_in, elf_out): New classes.
|
|
(cpm_serial, cpm_in, cpm_out): Modify (incomplete).
|
|
(cpms_in, cpms_out): Adjust.
|
|
(read_module, write_module, finish_module): Adjust.
|
|
|
|
2018-01-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Global tree via crc
|
|
gcc/cp/
|
|
* module.c (cpm_stream): Add globals & globals_crc.
|
|
(cpm_stream::next): Add default arg.
|
|
(cpm_stream::cpm_stream): Lazily init globals vector.
|
|
(cpms_{in,out}::mark_present, globals): Delete.
|
|
(cpms_{in,out}::tag_globals): Reimplement.
|
|
(cpms_in::tree_node_special): Read global tree directly.
|
|
* name-lookup.c (extract_module_bindings): Skip RTTI types.
|
|
|
|
gcc/cp/
|
|
* module.c (module_state): Replace direct_import with imported &
|
|
exported flags.
|
|
(module_state::do_import): Adjust.
|
|
(enum import_kind): Delete.
|
|
(do_module_import): Adjust.
|
|
(cpms_{in.out}::tag_import): Adjust.
|
|
(module_interface_p, import_module, declare_module)
|
|
(finish_module): Adjust.
|
|
|
|
2018-01-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Static bindings not visible in imports
|
|
gcc/cp/
|
|
* name-lookup.h (decapsulate_binding): Delete.
|
|
(module_binding_vec, extract_module_bindings): Declare.
|
|
* module.c (cpms_{in,out}::tag_binding): Reimplement.
|
|
(cpms_out::bindings): Likewise.
|
|
* name-lookup.c (decapsulate_binding): Delete.
|
|
(extract_module_bindings): New.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod++-decl-0_c.C: Remove XFAIL.
|
|
* g++.dg/modules/static-1_[abc].C: New.
|
|
|
|
2018-01-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* tree.c (ovl_insert): No need to sort by USING_P.
|
|
(ovl_iterator::reveal_node): Likewise.
|
|
|
|
Update bug reporting instructions
|
|
gcc/
|
|
* configure.ac (ACX_BUGURL): Set new url
|
|
* diagnostic.c (diagnostic_action_after_output): Special ICE
|
|
instructions.
|
|
* configure: Rebuilt.
|
|
|
|
2018-01-19 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Kill mangle_namespace.
|
|
gcc/cp/
|
|
* cp-tree.h (CPTI_MANGLE, mangle_namespace): Delete.
|
|
* decl.c (cxx_init_decl_processing): Don't create it.
|
|
* module.c (cpms_out::bindings): Don't skip it.
|
|
* name-lookup.c (suggest_alternatives_for): Likewise.
|
|
|
|
Import ident by type not index.
|
|
gcc/cp/
|
|
* name-lookup.h (get_ident_in_namespace, get_ident_in_class,
|
|
find_by_ident_in_namespace, find_by_ident_in_class): Delete.
|
|
(lookup_by_ident): Declare.
|
|
* name-lookup.c (get_ident_in_namespace, get_ident_in_class): Delete.
|
|
(find_by_ident_in_namespace, find_by_ident_in_class): Replace with ...
|
|
(lookup_by_ident): ... this.
|
|
* module.c (cpms_{in,out}::ident_imported_decl): Delete.
|
|
(cpms_out::tree_node): Write imported decl info directly.
|
|
(cpms_in::tree_node): Use lookup_by_ident.
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_{in.out}::tree_node_special): New, broken out of ...
|
|
(cpms_{in,out}::tree_node): ... here. Call them.
|
|
|
|
Merge trunk r256894.
|
|
|
|
gcc/cp/
|
|
* Make-lang.in: Set MODULE_STAMP if non-branch experimental.
|
|
|
|
Beginnings of global module correctness
|
|
gcc/cp/
|
|
* cp-tree.h (struct mc_index): New.
|
|
(module_cluster): Use it.
|
|
(MODULE_VECTOR_SLOTS_PER_CLUSTER): New.
|
|
(GLOBAL_MODULE_INDEX, THIS_MODULE_INDEX, IMPORTED_MODULE_BASE): Delete.
|
|
(MODULE_INDEX_IMPORT_BASE): New.
|
|
(DECL_MODULE_PURVIEW_P, MAYBE_DECL_MODULE_PURVIEW_P): New.
|
|
(MAYBE_DECL_MODULE_INDEX): Adjust.
|
|
(MODULE_INDEX_BITS): New.
|
|
(struct lang_decl_base): Add module_purview_p field.
|
|
* decl2.c (c_parse_final_cleanups): Adjust.
|
|
* error.c (dump_module_suffix): Adjust.
|
|
* mangle.c (maybe_write_module): Adjust.
|
|
* module.c (MODULE_INDEX_IMPORTING, MODULE_INDEX_ERROR): New.
|
|
(module_state::freeze): Delete.
|
|
(this_module): Delete. Replace with (*modules)[0].
|
|
(cpms_in::alloc_remap_vec): Adjust.
|
|
(cpms_in::tag_import): Use MODULE_INDEX_ERROR.
|
|
(cpms_{in,out}::tag_binding): Lose MAIN_P parm. Adjust.
|
|
(cpms_in::define_function): Remove GLOBAL_MODULE_INDEX handling.
|
|
(cpms_in::read_item): Use MODULE_INDEX_IMPORTING.
|
|
(cpms_in::finish): Remove NODE_MODULE parm. use
|
|
MAYBE_DECL_MODULE_PURVIEW_P.
|
|
(cpms_{in,out}::lang_decl_bools): Read & write module_purview_p.
|
|
(cpms_in::tree_node_raw): Lose NODE_MODULE parm. Set module
|
|
directly.
|
|
(cpms_{in,out}::tree_node): Adjust module identification.
|
|
(cpms_out::bindings): Bindings are on a single slot.
|
|
(module_loc): Delete.
|
|
(decl_set_module): Set purview as needed.
|
|
(module_purview_p, module_interface_p): Adjust.
|
|
(read_module): Simplify.
|
|
(do_module_import): Adjust for lack of global module slot. Use
|
|
MODULE_INDEX_ERROR, MODULE_INDEX_IMPORTING. Detect already
|
|
declared module here.
|
|
(import_module): Adjust.
|
|
(declare_module): Don't detect already declared here.
|
|
(write_module): Adjust.
|
|
(finish_module): Adjust.
|
|
* name-lookup.c (module_binding_slot): Reimplement.
|
|
(name_lookup::process_module_binding)
|
|
(name_lookup::search_namespace_only, name_lookup::add_module_fns)
|
|
(name_lookup::adl_namespace_only, do_pushdecl): Adjust.
|
|
(merge_global_decl): Kludge into reworking.
|
|
(push_module_binding): Likewise.
|
|
* name-lookup.h (merge_global_decl): Add module parm.
|
|
* pt.c (build_template_decl): Propagate purview.
|
|
* ptree.c (cxx_print_xnode): Adjust.
|
|
* rtti.c (tinfo_base_init): Kludge into working.
|
|
(get_tinfo_desc): Drop unnecessary push/pop abi namespace.
|
|
(emit_tinfo_decl): Simplify.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/global-1_[ab].C: New
|
|
* g++.dg/modules/mod++-decl-0_b.C: Remove xfail.
|
|
|
|
2018-01-18 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge access & discriminator.
|
|
gcc/cp/
|
|
* cp-tree.h (struct lang_decl_base): Rename u2sel to spare.
|
|
(struct lang_decl_min): Replace lang_decl_u2 union with plain
|
|
tree.
|
|
(LANG_DECL_U2_CHECK): Delete.
|
|
(DECL_DISCRIMINATOR_SET_P, DECL_DISCRIMINATOR): Adjust.
|
|
(DECL_CAPTURED_VARIABLE, DECL_ACCESS, THUNK_VIRTUAL_OFFSET): Adjust.
|
|
* decl.c (push_local_name): Represent discriminator as INTEGER_CST.
|
|
(duplicate_decls): Copy DECL_ACCESS. fix formatting.
|
|
* mangle.c (discriminator_for_local_entity): Extract integer value.
|
|
* module.c (cpms_{in,out},lang_decl_bools): Drop u.base.u2sel.
|
|
(cpms_{in,out}::lang_decl_vals): Drop u.min.u2 handling.
|
|
* semantics.c (finish_omp_threadprivate): Drop u.base.u2sel copying.
|
|
|
|
2018-01-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r256078.
|
|
|
|
Typedefs!
|
|
gcc/cp/
|
|
* decl.c (grokdeclarator): Set typedef's module/export.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/tdef-2_[abc].C: New.
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/tdef-1_[ab].C: New.
|
|
|
|
2017-12-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Variables!
|
|
gcc/cp/
|
|
* decl.c (grokvardecl): Set exporting.
|
|
* module.c (dump_nested_name): Dump integer values.
|
|
(cpms_{in,out}::define_var): New.
|
|
(cpms_{in,out}::tag_definition): Deal with vars.
|
|
(cpms_out::maybe_tag_definition): Likewise.
|
|
(cpms_out::core_bools): Externalize static vars.
|
|
(cpms_out::lang_decl_bools): Likewise for not-really-extern.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/var-1_[ab].C: New.
|
|
|
|
Enumerations!
|
|
gcc/cp/
|
|
* module.c (module_state::set_name): Don't deal with crc.
|
|
(module_state::set_crc): New.
|
|
(cpm_serial::get_crc): Don't obscure zero.
|
|
(cpm_writer::tell): New.
|
|
(cpms_out::crc_tell): New.
|
|
(cpms_{in,out}::define_enum): New.
|
|
(cpms_out::header): Save crc location.
|
|
(cpms_in::header): Use set_crc.
|
|
(cpms_out::tag_eof): Adjust.
|
|
(cpms_out::maybe_tag_definition): Deal with enums.
|
|
(cpms_{in,out}::tag_definition): Deal with enums.
|
|
(cpms_{in,out}::core_vals): Do not write enum bits.
|
|
(do_module_import): Use set_crc.
|
|
* name-lookup.c (push_module_binding): Fix assert.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/enum-1_[ab].C: New.
|
|
|
|
2017-12-19 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r255836.
|
|
|
|
2017-11-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r255166.
|
|
|
|
2017-11-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Non-type template parms, & nested template classes.
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}::core_vals): Deal with CONST_DECLs.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/tplmem-3_[ab].C: New.
|
|
|
|
2017-11-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Member types
|
|
gcc/testsuite/
|
|
* g++.dg/modules/nested-2_[ab].C: New
|
|
|
|
Nested classes.
|
|
gcc/cp/
|
|
* module.c (cpm_reader::wi): Promote before shifting.
|
|
(cpms_out::define_class): Maybe define all members.
|
|
(cpms_out::maybe_tag_definition): Only implicit typedefs are
|
|
defined.
|
|
(cpms_{in.out}::core_vals): Don't stream value cache.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/nested-1_[abc].C: New
|
|
|
|
2017-11-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r254959.
|
|
|
|
Template member functions.
|
|
gcc/cp/
|
|
* cp-tree.h (TI_PENDING_TEMPLATE_FLAG): Add TI_CHECK.
|
|
* module.c (cpms_out::maybe_tag_definition): Check DECL_INITIAL,
|
|
write clones.
|
|
(cpms_in::tag_definition): Don't zap clones.
|
|
(cpms_in::finish): Clear TI_PENDING_TEMPLATE_FLAG.
|
|
(cpms_{in,out}::core_vals): Check tcc_unary, tcc_binary.
|
|
* optimize.c (maybe_clone_body): Don't alias when modules.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/tplmem-1_[ab].C: New.
|
|
|
|
2017-11-17 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_out::tree_node): Fix conv-op identifiers.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/convop-1_[ab].C: New.
|
|
|
|
2017-11-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Constexprs!
|
|
gcc/cp/
|
|
* cp-tree.h (check_constexpr_fundef, find_constexpr_fundef): Declare.
|
|
* constexpr.c (find_constexpr_fundef): New.
|
|
(register_constexpr_fundef): Split checking off to ...
|
|
(check_constexpr_fundef): ... here. Call
|
|
register_constexpr_fundef.
|
|
* decl.c (): Adjust.
|
|
* module.c (cpms_{in,out}::define_function): Serialize constexpr
|
|
body.
|
|
(cpms_{in,out}::core_vals): Serialize function-scope var initializers.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/cexpr-[12]_[ab].C: New.
|
|
|
|
Merge trunk r254823.
|
|
|
|
Merge trunk r254819.
|
|
|
|
2017-11-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Virtual bases!
|
|
gcc/cp/
|
|
* Make-lang.in: module.o depends on revision
|
|
* class.c (layout_class_type): Unnamed types do not get base
|
|
types.
|
|
* cxx-module-wrapper.sh: Invoke make. Strip bad args.
|
|
* module.c (module_context): Allow NULL context.
|
|
(cpms_{in,out}::define_class): Deal with classtype_as_base.
|
|
(cpms_{in,out}::tag_definition): Allow raw class.
|
|
(cpms_{in,out}:ident_imported_decl: Rework class scope.
|
|
(cpms_out::tree_node): Deal with NULL module context.
|
|
* name-lookup.c (maybe_lazily_declare): Break out of ...
|
|
(get_class_binding): ... here. Call it.
|
|
(get_ident_in_class, find_by_ident_in_class): New.
|
|
* name-lookup.h (get_ident_in_class, find_by_ident_in_class): Declare.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-7_[abc].C: New.
|
|
* g++.dg/modules/main.cc: Move to ...
|
|
* g++.dg/modules/main_a.C: ... here. Adjust.
|
|
* g++.dg/modules/modules.exp: Remove main.cc exceptionalism.
|
|
|
|
2017-10-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (module_state): Add filename & loc.
|
|
(module_state::{set,push,pop}_location): New.
|
|
(cpm_stream): Add state member. Adjust.
|
|
(cpms_{in,out}): Adjust.
|
|
(cpms_in::{header,tag_conf}): Adjust.
|
|
(read_module, write_module): Lose fname arg.
|
|
(search_moule_path): Don't prefix .
|
|
(do_module_import, finish_module): Set location.
|
|
gcc/
|
|
* diagnostic.c (maybe_line_and_column): New.
|
|
(diagnostic_get_location_text, diagnostic_report_current_module):
|
|
Use it.
|
|
gcc/testsuite/
|
|
Markup no-column tests.
|
|
|
|
2017-10-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp
|
|
* cxx-module-wrapper.sh: Cleanups.
|
|
* module.c (cpm_stream::global_tree_arys): Add integer_types.
|
|
(cpms_{in,out}::tree_node): Robustify.
|
|
(read_module): Note end of importing.
|
|
(search_module_path): Note if wrapper failed to install.
|
|
* name-lookup.c (merge_global_decl): Zap anticipated decl here ...
|
|
(push_module_binding): ... not here.
|
|
gcc/
|
|
* incpath.c (clean_cxx_module_path): Correct env var name.
|
|
gcc/c-family/
|
|
* c.opt (fmodules++): Add Driver.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/{main.c,hello.cc}: New.
|
|
* g++.dg/modules/modules.exp: Special case main.cc
|
|
|
|
2017-10-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Wrapper program
|
|
gcc/
|
|
* doc/invoke.texi (fmodule-root, fmodule-path, fmodule-wrapper):
|
|
Document.
|
|
* gcc.c (driver::maybe_putenv_CXX_MODULE_WRAPPER): New.
|
|
(driver::main): Call it.
|
|
* gcc.h (driver::maybe_putenv_CXX_MODULE_WRAPPER): Declare.
|
|
* incpath.h (clean_cxx_module_path): Add multilib parm.
|
|
* incpath.c (add_path): Initialize length.
|
|
(clean_cxx_module_path): Append multilib fragment. Add '.'.
|
|
gcc/c-family/
|
|
* c-opts.c (c_common_post_options): Pass multilib suffx to
|
|
clean_cxx_module_path.
|
|
* c.opt (fmodules): Notify driver.
|
|
(fmodule-hook): Rename to ...
|
|
(fmodule-wrapper): ... here.
|
|
gcc/cp/
|
|
* Make-lang.in (cxx-module-wrapper): New program.
|
|
* cxx-module-wrapper.sh: New.
|
|
* module.c: Include libiberty.h, tree-diagnostic.h.
|
|
(read_module): Add announcement.
|
|
(module_to_filename): Identifier mapping does not depend on
|
|
module_path.
|
|
(search_module_path): Shell out to wrapper function.
|
|
(do_module_import): Adjust.
|
|
(init_module_processing): Default flag_module_wrapper.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Adjust.
|
|
|
|
2017-10-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Template class!
|
|
gcc/cp/
|
|
* decl.c (xref_tag_1): Don't decl_set_module here.
|
|
* module.c (cpms_in::define_function): Check templatedness.
|
|
(cpms_{in,out}::define_class): Add maybe_template arg. Add
|
|
templatey bits.
|
|
(cpms_out::maybe_tag_definition): Deal with template classes.
|
|
{cpms_{in,out}::tag_definition): Add maybe_template arg, adjust.
|
|
{cpms_{in,out}::core_vals): Write record template_info.
|
|
* name-lookup.c (set_class_binding): Protect against empty
|
|
member_vec.
|
|
(do_pushtag): Call decl_set_module here.
|
|
* pt.c (build_template_decl): Copy module bits here ...
|
|
(push_template_decl_real): ... not here.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-tpl-2_[ab].C: New.
|
|
|
|
Early CRC not time stamps.
|
|
gcc/cp/
|
|
* module.c (module_state::set_name): CRC too.
|
|
(cpm_serial::get_crc): New.
|
|
(cpm_writer::seek): New.
|
|
(cpm_{reader,writer}::bytes4): Rename to ...
|
|
(cpm_{reader,writer}::raw): ... this. Adjust all users.
|
|
(cpm_reader::get_crc): Delete.
|
|
(module_state::stamp): Replace with ...
|
|
(module_state::crc): ... this.
|
|
(cpms_in::cpms_in): Drop stamp arg.
|
|
(cpms_{in,out}::header): Deal with CRC not timestamp.
|
|
(time2str, timestamp_mismatch): Delete.
|
|
(cpms_{in,out}::tag_eof): Deal with crc.
|
|
(cpms_{in,out}::tag_import): Drop timestamp.
|
|
(read_module, do_module_import): Likewise. Use CRC.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-stamp-1_d.C: Adjust.
|
|
|
|
Merge trunk r253954.
|
|
|
|
2017-10-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Template function!
|
|
gcc/
|
|
* tree.h (MARK_TS_TYPE_NON_COMMON): New.
|
|
gcc/cp/
|
|
* cp-objcp-common.c (cp_common_init_ts): Fix
|
|
TEMPLATE_TEMPLATE_PARM, TEMPLATE_TYPE_PARM,
|
|
BOUND_TEMPLATE_TEMPLATE_PARM marking.
|
|
* cp-tree.h (canonical_type_parameter): Declare.
|
|
* module.c (cpms_{in,out}::define_function): Add maybe_template
|
|
parm, adjust.
|
|
(cpms_out::maybe_tag_definition): Allow function templates.
|
|
(cpms_{in,out}:tag_definition): Allow templates.
|
|
(cpms_{in,out}::core_vals): Stream more nodes.
|
|
(cpms_{in,out}::lang_decl_vals): Stream more nodes.
|
|
(cpms_in::finish_type): Deal with TEMPLATE_TYPE_PARM,
|
|
TEMPLATE_TEMPLATE_PARM.
|
|
* pt.c (canonical_type_parameter): Make extern, simplify.
|
|
(push_template_decl_real): Propagate exportednes.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-tpl-1_[ab].C: New.
|
|
|
|
2017-10-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (TS_CP_BINDING, TS_CP_WRAPPER, LAST_TS_CP_ENUM): Delete.
|
|
(union lang_tree_node): Adjust GTY desc.
|
|
(cp_tree_node_structure): Take a tree_code.
|
|
* decl.c (cp_tree_node_structure): Take a tree_code.
|
|
* module.c (cpms_{out,in}::core_vals): Order clauses from
|
|
tree-core.h, use cp_tree_node_structure for C++.
|
|
|
|
Module name can be a string const (-fmodules++)
|
|
gcc/cp/
|
|
* cp-tree.h (cp_expr): Add constant operator* and operator->.
|
|
(validate_module_name): New.
|
|
(declare_module, import_module): Take cp_expr.
|
|
* error.c (dump_module_suffix): Adjust.
|
|
* module.c (module_state): Add name_hash. Adjust.
|
|
(module_state_hash): Allow string consts.
|
|
(module_state::set_name): Likewise.
|
|
(cpm_{writer,reader}::module_name): New.
|
|
(dump_nested_name): Name can be a string const.
|
|
(cpms_{out,in}::header): Adjust.
|
|
(cpms_{out,in}::tag_import): Adjust.
|
|
(validate_module_name): New.
|
|
(module_to_filename): Allow string consts.
|
|
(make_module_file): Adjust.
|
|
(do_module_import): Adjust.
|
|
(import_module, declare_module): Adjust.
|
|
* parser.c (cp_parser_module_name): Return cp_expr, allow
|
|
string-cst.
|
|
(cp_parser_module_declaration, cp_parser_import_declaration,
|
|
cp_parser_module_proclamation): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp (dg-module-bmi): Renamed.
|
|
* g++.dg/modules/mod++-decl-3_[ab].C: New.
|
|
|
|
Add -fmodule-path, -fmodule-root.
|
|
gcc/
|
|
* incpath.h (INC_CXX_MPATH): New.
|
|
(clean_cxx_module_path): Declare.
|
|
* incpath.c (clean_cxx_module_path): New.
|
|
gcc/cp/
|
|
* cp-tree.h (init_module_processing): Declare.
|
|
* decl.c (cxx_init_decl_processing): Call init_module_processing.
|
|
* module.c (module_path, module_path_max): New vars.
|
|
(MOD_FNAME_PFX): Delete.
|
|
(module_to_filename): Reimplement.
|
|
(search_module_path, make_module_file): New.
|
|
(do_module_import): Adjust.
|
|
(init_module_processing): New.
|
|
(finish_module): Adjust.
|
|
gcc/c-family/
|
|
* c-opts.c (c_common_handle_option): Process OPT_fmodule_path_.
|
|
(c_common_post_options): Clean module path.
|
|
* c.opt (fmodule-root=, fmodule-path=, fmodule-hook=): New.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Adjust module name logic.
|
|
|
|
2017-10-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r253654.
|
|
|
|
2017-10-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r253585.
|
|
|
|
2017-09-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/c-family/
|
|
* c_common_handle_option: Handle fmodules++.
|
|
* c.opt (fmodules): Make Uinteger.
|
|
(fmodules++, fmodules-ts): New.
|
|
gcc/cp/
|
|
* parser.c (cp_parser_consume_semicolon_at_end_of_statement):
|
|
Return success bool.
|
|
(cp_parser_translation_unit): Adjust cp_parser_declaration_seq_opt
|
|
call.
|
|
(cp_parser_declaration_seq_opt): Add top_level parm, look for
|
|
module-decl here.
|
|
(cp_parser_module_declaration): Handle -fmodules++ syntax.
|
|
(cp_parser_module_export): No need to handle module-declaration
|
|
here ...
|
|
(cp_parser_declaration): ... or here.
|
|
gcc/
|
|
* doc/invoke.texi (-fmodules++): Document.
|
|
gcc/testsute/
|
|
* g++.dg/modules/mod++-decl-0_[abc].C: New.
|
|
* g++.dg/modules/mod++-decl-[12].C: New.
|
|
* g++.dg/modules/mod-decl-1.C: Adjust expected error.
|
|
|
|
2017-09-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk 252831.
|
|
|
|
2017-07-20 Boris Kolpackov <boris@codesynthesis.com>
|
|
|
|
Add -fmodule-output & -fmodule-file options.
|
|
gcc/c-family/
|
|
* c.opt (-fmodule-output): New option.
|
|
(-fmodule-file): New option.
|
|
* c-common.h (module_output): Declare.
|
|
(module_files): Declare.
|
|
* c-common.c (module_output): New variable.
|
|
(module_files): New variable.
|
|
* c-opts.c (add_module_file): New function.
|
|
* c-opts.c: Handle -fmodule-output and -fmodule-file.
|
|
gcc/cp/
|
|
* module.c (finish_module): If specified, use module_output as output
|
|
file name.
|
|
* module.c (do_module_import): Check module_files for a module name
|
|
to file mapping before falling back to default.
|
|
gcc/
|
|
* doc/invoke.texi (C++ Dialect Options): Document -fmodule-output
|
|
and -fmodule-file.
|
|
|
|
2017-07-17 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r250272.
|
|
|
|
2017-07-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r250159.
|
|
|
|
2017-07-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR): Use
|
|
lookup_fnfields_slot_nolazy.
|
|
* search.c (lookup_fnfields_idx_nolazy): Don't use
|
|
CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR.
|
|
|
|
gcc/cp/
|
|
* class.c (type_has_user_declared_move_constructor,
|
|
type_has_user_declared_move_assign): Delete, replace with:
|
|
(classtype_has_user_move_assign_or_ctor_p): ... this.
|
|
* cp-tree.h (type_has_user_declared_move_constructor,
|
|
type_has_user_declared_move_assign): Delete, replace with:
|
|
(classtype_has_user_move_assign_or_ctor_p): ... this.
|
|
* method.c (maybe_explain_implicit_delete): Update.
|
|
(lazily_declare_fn): Update.
|
|
* tree.c (type_has_nontrivial_copy_init): Update.
|
|
* search.c (lookup_fnfields_slot_nolazy): Don't try and complete
|
|
the type.
|
|
* pt.c (check_explicit_specialization): Use regular lookup.
|
|
|
|
gcc/cp/
|
|
* class.c (maybe_warn_about_overly_private_class): Ignore
|
|
copy/move ctors.
|
|
* semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
|
|
lookup_fnfields_slot for ctors.
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_{out,in}::start): Don't deal with identifiers
|
|
here.
|
|
(cpms_{out,in}::tree_node): Deal with identifiers specially.
|
|
|
|
Merge trunk r249852.
|
|
|
|
2017-06-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249835.
|
|
|
|
2017-06-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249794.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (class_method_index_for_fn): Delete.
|
|
* decl2.c (check_classfn): Use lookup_fnfields_slot, reimplement
|
|
diagnostics.
|
|
* name-lookup.h (lookup_all_conversions): Declare.
|
|
* name-lookup.c (lookup_all_conversions): New.
|
|
* pt.c (retrieve_specialization): Use lookup_fnfields_slot,
|
|
lookup_all_conversions.
|
|
* search.c (class_method_index_for_fn): Delete.
|
|
gcc/testsuite/
|
|
* g++.dg/concepts/memfun-err.C: Adjust.
|
|
* g++.dg/cpp0x/decltype9.C: Adjust.
|
|
* g++.dg/lookup/decl1.C: Adjust.
|
|
* g++.dg/other/pr28432.C: Adjust.
|
|
* g++.dg/parse/crash12.C: Adjust.
|
|
* g++.dg/parse/enum3.C: Adjust.
|
|
* g++.dg/parse/operator6.C: Adjust.
|
|
* g++.dg/template/crash69.C: Adjust.
|
|
* g++.dg/template/error27.C: Adjust.
|
|
* g++.dg/template/error28.C: Adjust.
|
|
* g++.dg/template/memfriend6.C: Adjust.
|
|
* g++.old-deja/g++.mike/err1.C: Adjust.
|
|
* g++.old-deja/g++.mike/p811.C: Adjust.
|
|
* g++.old-deja/g++.other/crash25.C: Adjust.
|
|
* g++.old-deja/g++.other/dtor4.C: Adjust.
|
|
* g++.old-deja/g++.pt/t37.C: Adjust.
|
|
|
|
Merge trunk r249779.
|
|
|
|
gcc/cp/
|
|
* class.c (finish_struct): Use OVL_P.
|
|
* cp-tree.h (THIS_NAME, IN_CHARGE_NAME, VTBL_PTR_TYPE,
|
|
VTABLE_DELTA_NAME, VTABLE_PFN_NAME): Delete.
|
|
* decl.c (initialize_predefined_identifiers): Encode them here
|
|
directly. Rename cdtors consistently.
|
|
(cxx_init_decl_processing): Name vtbl_ptr_type directly.
|
|
* search.c (class_method_index_for_fn): No need to frob cdtor names.
|
|
|
|
2017-06-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
cdtor name cleanup. expunge lookup_fnfields_1 use.
|
|
gcc/
|
|
* builtins.c (fold_builtin_FUNCTION) Use
|
|
lang_hooks.decl_printable_name.
|
|
gcc/cp/
|
|
* call.c (build_new_method_call_1) Update cdtor handling.
|
|
* class.c (get_basefndecls): Use lookup_fnfields_slot.
|
|
* cp-tree.h (lookup_fnfields_1): Don't declare.
|
|
* decl.c (register_dtor_fn): Use lookup_fnfields_slot.
|
|
(grokfndecl): Set cdtor name.
|
|
* method.c (implicitly_declare_fn): Adjust cdtor flag setting.
|
|
* pt.c (check_explicit_specialization): Adjust cdtor checking, use
|
|
lookup_fnfields_slot_nolazy.
|
|
* search.c (lookup_fnfields_1): Make static.
|
|
* semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
|
|
lookup_fnfields_slot.
|
|
gcc/testsite/
|
|
* g++.dg/cpp1y/builtin_FUNCTION.C: New.
|
|
* g++.dg/plugin/decl-plugin-test.C: Adjust.
|
|
|
|
Merge trunk r249746.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (SET_CLASS_TYPE_P): Use RECORD_OR_UNION_CHECK.
|
|
(NON_UNION_CLASS_TYPE_P): Just check for RECORD_TYPE.
|
|
* call.c (check_dtor_name): Adjust constructor_name check.
|
|
(name_as_c_string): Move const cast.
|
|
(build_new_method_call_1): Use constructor_name from basetype.
|
|
* class.c (get_vfield_name): Measure constructor_name length.
|
|
(build_self_reference): Don't use constructor_name here.
|
|
* cxx-pretty-print.c (is_destructor): Delete.
|
|
(pp_cxx_unqualified_id): Remove bogus dtor code.
|
|
* decl.c (grokdeclarator): Minor cleanup.
|
|
* method.c (implicitly_declare_fn): Use ctor_identifier and
|
|
dtor_identifier.
|
|
* name-lookup.c (constructor_name): Reimplement.
|
|
(constructor_name_p): Likewise.
|
|
(push_class_level_binding_1): Don't use constructor_name here.
|
|
* parser.c (cp_parser_direct_declarator): Reformat to avoid
|
|
nesting ifs.
|
|
* pt.c (tsubst_decl <FUNCTION_DECL>): Move var decls to
|
|
initialization point. Don't unnecessarily check for ctor name.
|
|
gcc/c-family/
|
|
* c-common.c (resort_field_decl_cmp): Don't declare.
|
|
|
|
2017-06-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249702.
|
|
gcc/c-family/
|
|
* c-common.h (field_decl_cmp, resort_sorted_fields): Delete.
|
|
* c-common.c (field_decl_cmp, resort_data,
|
|
resort_field_decl_cmp): Move to c-decl.c.
|
|
gcc/c/
|
|
* c-decl.c (field_decl_cmp, resort_data,
|
|
resort_field_decl_cmp): Moved from c-common.c
|
|
|
|
2017-06-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Replace lang_type::sorted_fields with lang_type::bindings.
|
|
gcc/cp/
|
|
* cp-tree.h (lang_type): Delete sorted_fields. Add bindings
|
|
field.
|
|
(CLASSTYPE_SORTED_FIELDS): Replace with ...
|
|
(CLASSTYPE_BINDINGS): ... this.
|
|
* name-lookup.c (lookup_class_member): Reimplement.
|
|
(count_fields): Delete.
|
|
(sorted_fields_type_new): Delete.
|
|
(add_class_member): New.
|
|
(add_fields_to_record_type): Replace with ...
|
|
(add_class_members): ... this.
|
|
(add_enum_fields_to_record_type): Delete.
|
|
(create_classtype_sorted_fields): Replace with ...
|
|
(set_class_bindings): ... this.
|
|
(insert_late_enum_def_into_classtype_sorted_fields): Replace with ...
|
|
(insert_late_enum_def_bindings): ... this.
|
|
* name-lookup.h (create_classtype_sorted_fields,
|
|
insert_late_enum_def_into_classtype_sorted_fields): Replace with ...
|
|
(set_class_bindings, insert_late_enum_def_bindings): ... this.
|
|
* ptree.h (cxx_print_type): Don't print SORTED_FIELDS.
|
|
* search.c (lookup_field_1): Check CLASSTYPE_BINDINGS.
|
|
* decl.c (finish_enum_value_list): Use insert_late_enum_def_bindings.
|
|
* class.c (finish_struct_1): Use set_class_bindings.
|
|
* module.c (cpms_in::define_class): Likewise.
|
|
|
|
Start moving class name lookup around
|
|
gcc/cp/
|
|
* class.c (count_fields, add_fields_to_record_type,
|
|
add_enum_fields_to_record_type, sorted_fields_type_new,
|
|
create_classtype_sorted_fields,
|
|
insert_late_enum_def_into_classtype_sorted_fields): Move to ...
|
|
* name-lookup.c: ... here.
|
|
(lookup_class_member): New. Broken out of ...
|
|
* search.c (lookup_field_1): ... here. Call it.
|
|
* name-lookup.h (lookup_class_member,
|
|
create_classtype_sorted_fields,
|
|
insert_late_enum_def_into_classtype_sorted_fields): Declare.
|
|
|
|
Merge trunk r249657.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (lang_decl_fn): Remove assignment_operator_p field.
|
|
* module.c (cpms_{out,in}::lang_decl_bools: Likewise.
|
|
libcc1/
|
|
* libcp1plugin.cc (plugin_build_decl): Don't set
|
|
DECL_ASSIGNMENT_OPERATOR_P.
|
|
|
|
gcc/
|
|
* Makefile.in (MODULE_STAMP): Set here
|
|
(REVISION, REVISION_c): Override.
|
|
gcc/cp/
|
|
* Make-lang.in (MODULE_STAMP): Not here.
|
|
|
|
2017-06-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_COMPLETE_CONSTRUCTOR_P): Directly compare
|
|
identifier.
|
|
(DECL_BASE_CONSTRUCTOR_P, DECL_COMPLETE_DESTRUCTOR_P,
|
|
DECL_BASE_DESTRUCTOR_P, DECL_DELETING_DESTRUCTOR_P): Likewise.
|
|
(DECL_ASSIGNMENT_OPERATOR_P): Use IDENTIFIER_ASSIGN_OP_P.
|
|
* decl.c (grok_op_properties): Adjust identifier checking.
|
|
* init.c (expand_default_init): Adjust identifier descision.
|
|
* method.c (implicitly_declare_fn): Don't use
|
|
DECL_ASSIGNMENT_OPERATOR_P.
|
|
* search.c (lookup_fnfields_1): Use IDENTIFIER_CTOR_P,
|
|
IDENTIFIER_DTOR_P.
|
|
* call.c (in_charge_arg_for_name): Reimplement.
|
|
(build_special_member_call): Use IDENTIFIER_CDTOR_P,
|
|
IDENTIFIER_DTOR_P.
|
|
|
|
2017-06-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249572.
|
|
|
|
Reorder IDENTIFIER flags
|
|
gcc/cp/
|
|
* cp-tree.h (enum cp_identifier_kind): New.
|
|
(IDENTIFIER_KIND_BIT_0, IDENTIFIER_KIND_BIT_1,
|
|
IDENTIFIER_KIND_BIT_2): New.
|
|
(IDENTIFIER_MARKED): Move to TREE_LANG_FLAG_4.
|
|
(IDENTIFIER_VIRTUAL_P, IDENTIFIER_REPO_CHOSEN): Add IDENTIFIER_CHECK.
|
|
(C_IS_RESERVED_WORD): Replace with ...
|
|
(IDENTIFIER_KEYWORD_P): ... this.
|
|
(IDENTIFIER_CTOR_OR_DTOR_P): Replace with ...
|
|
(IDENTIFIER_CDTOR_P): ... this.
|
|
(IDENTIFIER_CTOR_P, IDENTIFIER_DTOR_P): New.
|
|
(IDENTIFIER_OPNAME_P): Replace with ...
|
|
(IDENTIFIER_ANY_OP_P): ... this.
|
|
(IDENTIFIER_ASSIGN_OP_P): New.
|
|
(IDENTIFIER_TYPENAME_P): Replace with ...
|
|
(IDENTIFIER_CONV_OP_P): ... this.
|
|
(NEW_DELETE_OPNAME_P): Replace with ...
|
|
(IDENTIFIER_NEWDEL_OP_P): ... this.
|
|
(DECL_CONV_FN_P, DECL_OVERLOADED_OPERATOR_P): Adjust.
|
|
(get_identifier_kind_name, set_identifier_kind): Declare.
|
|
* lex.c (get_identifier_kind_name, set_identifier_kind): New.
|
|
(init_operators): Adjust to avoid keywords, use
|
|
set_identifier_kind. Copy TYPE_EXPR slot.
|
|
(init_reswords): Call set_identifier_kind.
|
|
(unqualified_name_lookup_error): Adjust.
|
|
* operators.def (TYPE_EXPR): Remove.
|
|
* decl.c (struct predefined_identifier): Move into ...
|
|
(initialize_predefined_identifiers): ... here. Call
|
|
set_identifier_kind.
|
|
(grokfndecl, check_var_type, grokdeclarator): Adjust.
|
|
(grok_op_properties): Use IDENTIFIER_ANY_ASSIGN_OP to halve search
|
|
space. Adjust.
|
|
* call.c (name_as_c_string): Adjust.
|
|
(build_new_method_call_1): Likewise.
|
|
* cp-cilkplus.c (is_conversion_operator_function_decl_p): Likewise.
|
|
* cxx-pretty-print.c (pp_cxx_unqualified_id): Adjust.
|
|
* dump.c (cp_dump_tree): Adjust.
|
|
* error.c (dump_decl_name): Adjust.
|
|
* mangle.c (write_unqualified_id, write_member_name,
|
|
write_expression): Adjust.
|
|
(mangle_conv_op_name_for_type): Use set_identifier_kind.
|
|
* name-lookup.c (do_class_using_decl): Adjust.
|
|
(lookup_name_fuzzy, lookup_name_real_1): Likewise.
|
|
* parser.c (cp_lexer_get_preprocessor_token,
|
|
cp_parser_direct_declarator): Likewise.
|
|
* pt.c (push_template_decl_real, tsubst_decl, tsubst_baselink,
|
|
tsubst_copy, tsubst_copy_and_build): Adjust.
|
|
* ptree.c (cxx_print_identifier): Print identifier kind.
|
|
* search.c (lookup_field_r, lookup_member,
|
|
lookup_fnfields_idx_nolazy): Adjust.
|
|
* semantics.c (finish_id_expression): Adjust..
|
|
* typeck.c (cp_build_addr_expr_1): Adjust.
|
|
|
|
2017-06-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249464.
|
|
|
|
gcc/c-family/
|
|
* c-ada-spec.c (decl_sloc): Ignore builtin fields.
|
|
gcc/cp/
|
|
* class.c (layout_class_type): Anon aggregates can never be bases.
|
|
(finish_struct_1, dump_class_hierarchy_1): CLASSTYPE_AS_BASE can
|
|
be null.
|
|
* cp-tree.h (enum cp_tree_index): Add CPTI_AS_BASE_IDENTIFIER.
|
|
(as_base_identifier): New.
|
|
(module_context): Declare.
|
|
* decl.c (initialize_predefined_identifiers): Initialize as_base.
|
|
* error.c (dump_module_suffix): Use module_context.
|
|
* mangle.c (maybe_write_module): Likewise.
|
|
* module.c (module_context): New.
|
|
(dump_nested_name): Distingush NULL context.
|
|
(cpms_{in,out}::globals): Take array directly.
|
|
(cpms_{in,out}::tree_node_raw): New, broken out of ...
|
|
(cpms_{in,out}::tree_node): ... here. Call it. Use
|
|
module_context.
|
|
(cpms_in::finish): Add module number. Adjust.
|
|
(cpms_{in,out}::tag_trees): Write translation unit decl.
|
|
|
|
2017-06-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249268.
|
|
|
|
2017-06-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249217.
|
|
libcc1/
|
|
* libcp1plugin.c (supplement_binding): Don't call
|
|
maybe_remove_implicit_alias.
|
|
|
|
First bug report!
|
|
gcc/cp/
|
|
* cp-tree.h (CPTI_MANGLE): New.
|
|
(mangle_namespace): New.
|
|
(maybe_remove_implicit_alias): Delete.
|
|
* decl.c (cxx_init_decl_processing): Create mangle namespace.
|
|
* decl2.c (generate_mangling_alias): Use mangle_namespace.
|
|
* mangle.c (maybe_remove_implicit_alias): Delete.
|
|
(mangle_decl): Use mangle_namespace. Remove alias here.
|
|
* module.c (cpms_out::bindings): Ignore mangle_namespace.
|
|
* name-lookup.h (set_namespace_binding): Declare.
|
|
* name-lookup.c (supplement_binding_1): Don't deal with implicit
|
|
aliases here.
|
|
(set_namespace_binding): New. Broken out of ...
|
|
(set_global_binding): ... this. Call it.
|
|
(suggest_alternatives_for): Ignore mangle namespace.
|
|
gcc/testuite/
|
|
* g++.dg/module/bug-1_[ab].C: New.
|
|
|
|
2017-06-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Classes complete - Vcall indices and friends added.
|
|
gcc/cp/
|
|
* module.c (cpms_{out,in}::tree_pair_vec): New.
|
|
(cpms_{out,in}::define_class): Stream vcall indices and friend list.
|
|
gcc/testsuite/
|
|
* g++.dg/module/class-6_[abc].C: New.
|
|
|
|
2017-06-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r249076.
|
|
|
|
2017-06-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Vtable streaming. Change keyed_classes representation.
|
|
gcc/cp/
|
|
* class.c (finish_struct_1): Adjust keyed_classes pushing.
|
|
* cp-tree.h (CPTI_KEYED_CLASSES): Delete.
|
|
(keyed_classes): Now a vector.
|
|
* decl.c (keyed_classes): Define.
|
|
(cxx_init_decl_processing): Initialize it.
|
|
(record_key_method_defined): Adjust pushing.
|
|
* decl2.c (decl_needed_p): Formatting fixes.
|
|
(c_parse_final_cleanups): Reset current module.
|
|
Call finish_module earlier. Adjust keyed_classes iteration.
|
|
* pt.c (instantiate_class_template_1): Adjust keyed_classes pushing.
|
|
* module.c (cpms_{out,in}::define_class): Adjust key method
|
|
streaming.
|
|
(cpms_{out,in}::lang_type_bools): Don't srtream interface flags.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-5_[abc].C: New.
|
|
|
|
Typeinfo streaming
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_TINFO_P): Also for TYPE_DECLs.
|
|
(get_pseudo_tinfo_index, get_pseudo_tinfo_type): Declare.
|
|
* rtti.c (enum tinfo_kind): Add TK_DERIVED_TYPES,
|
|
TK_VMI_CLASS_TYPES, TK_MAX, delete TK_FIXED.
|
|
(tinfo_names): New.
|
|
(typeid_ok_p): Lool at TYPE_MAIN_VARIANT.
|
|
(get_pseudo_to_index): Only determine index, don't create type.
|
|
(get_tinfo_desc): New. Create the pseudo type. Set DCL_TINFO_P.
|
|
(create_pseudo_type_info): Delete.
|
|
(get_pseudo_ti_init): Use get_tinfo_desc.
|
|
(get_pseudo_tinfo_index, get_pseudo_tinfo_type): New.
|
|
(create_tinfo_types): Only allocate the vector.
|
|
* module.c (cpms_{out,in}::insert): New.
|
|
(cpm_stream::global_tree_arys): Add sizetype_tab.
|
|
(cpms_out::tag_binding): Don't stream DECL_TINFO_P bindings.
|
|
(cpms_{out,in}::define_class): Don't stream
|
|
CLASSTYPE_TYPEINFO_VAR. Stream CLASSTYPE_VTABLES.
|
|
(cpms_{out,in}::core_vals): Stream CONSTRUCTORs.
|
|
(cpms_{out,in}::tree_node): Detect DECL_TINFO_P things.
|
|
|
|
2017-06-08 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_in::read_item, cpms_in::tree_node): More
|
|
diagnostics.
|
|
(cpms_{out,in}::start, cpms_{out,in}::core_vals): Fix call
|
|
handling.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-4_[ab].C: New.
|
|
|
|
gcc/cp/
|
|
* module.c: Implement dump printf.
|
|
|
|
2017-06-07 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248972.
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_{out,in}::core_vals): Stream block vars &
|
|
abstract origin.
|
|
|
|
2017-06-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Inline ctors/dtors
|
|
gcc/cp/
|
|
* module.c (cpms_in::define_function): Deal with non-namespace
|
|
fn definitions.
|
|
(cpms_{out,in}::define_class): Define member fns.
|
|
(cpms_in::tag_definition): Clone fn.
|
|
* semantics.c (expand_or_defer_fn_1): Keep cloned fns body when
|
|
modules.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-3_[abcd].C: Augment.
|
|
|
|
Member functions
|
|
gcc/cp/
|
|
* class.c (resort_type_method_vec): Avoid signed/unsigned compare.
|
|
* module.c (cpms_out::maybe_tag_definition): New.
|
|
(cpms_{out,in}::tag_definition): Always tag, return tagged thing.
|
|
(cpms_{out,in}::chained_decls, tree_vec): New.
|
|
(cpms_{out,in}::define_class): Stream methods, as_base.
|
|
(cpms_{out,in}::core_vals): Stream ARGUMENTs here.
|
|
(cpms_in::tree_node): Cope with immediate definitions.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-3_[abcd].C: Augment.
|
|
|
|
More PoD struct
|
|
gcc/cp/
|
|
* module.c (cpms_{out,in}::ident_imported_decl): New.
|
|
(cpms_{out,in}::lang_type_vals): New.
|
|
(cpms_{out,in}::core_vals): Blocks and statements.
|
|
(cpms_{out,in}::tree_node): More general import referencing.
|
|
* name-lookup.c (name_lookup::add_module_fns): New.
|
|
(name_lookup::adl_namespace_only): Use it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-3_[abc].C: New.
|
|
|
|
2017-06-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
More PoD struct
|
|
gcc/cp/
|
|
* cp-tree.h (default_hash_traits): Make non-deletable.
|
|
(cpms_out::non_null): New hash trait.
|
|
(cpms_in::traits): Use simple_hashmap_traits.
|
|
(cpms_in::define_class, cpms_in::finish_type): Propagate
|
|
completeness.
|
|
(cpms_in::finish_type): Deal with pointer/ref to.
|
|
(cpms_{out,in}::core_vals): Stream ints, pointer/ref to.
|
|
(cpms_{out,in}::tree_node): Interstitial typedef.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-1_[abc].C: Extend.
|
|
* g++.dg/modules/class-2_[ab].C: New.
|
|
|
|
2017-06-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Pod struct
|
|
gcc/cp/
|
|
* cp-tree.h (create_classtype_sorted_fields): Declare.
|
|
* class.c (finish_struct_1): Adjust sorted field call.
|
|
(insert_into_classtype_sorted_fields): Rename to ...
|
|
(create_classtype_sorted_fields): ... here. Export
|
|
* module.c (cpms_{out,in}::tree_vec): New.
|
|
(cpms_{out,in}::define_function): New.
|
|
(cpms_{out,in}::define_class): New.
|
|
(cpms_{out,in}::tag_definition): Adjust.
|
|
(cpms_{out,in}::core_vals): Stream binfo, field_decl.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-1_[abcd].C: Add field accesses.
|
|
|
|
Merge r248828.
|
|
|
|
gcc/cp/
|
|
* modules.c (cpms_out::core_vals, cpms_in::core_vals): Don't
|
|
stream structure fields etc.
|
|
|
|
2017-06-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Incomplete or empty classes.
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_iterator::export_tail): New.
|
|
(TYPE_GET_PTRMEMFUNC_TYPE, TYPE_SET_PTRMEMFUNC_TYPE): Delete.
|
|
(TYPE_PTRMEMFUNC_TYPE): New.
|
|
(maybe_add_lang_type_raw): Add ptrmem_p arg.
|
|
(fit_ptrmem_type_decl): Declare.
|
|
(ovl_insert): Add export_tail.
|
|
* decl.c (build_ptrmemfunc_type): Use fit_ptrmem_type_decl,
|
|
adjust.
|
|
(xref_tag_1): Call decl_set_module.
|
|
* lex.c (maybe_add_lang_type_raw): Add ptrmem_p arg. Adjust.
|
|
(fit_ptrmem_type_decl): New.
|
|
(cxx_make_type): Adjust.
|
|
* module.c (name_string): New. Use it everywhere.
|
|
(cpm_reader::fill): Check ferror.
|
|
(cpms_out::tag_binding): Skip builtins. Write types.
|
|
(cpms_out::lang_type_bools, cpms_in::lang_type_bools): New.
|
|
* name-lookup.c (STAT_EXPORTS): New.
|
|
(name_lookup::process_module_binding): Use it.
|
|
(update_binding): Set it.
|
|
(newbinding_bookkeeping): New. Broken out of ...
|
|
(do_pushdecl): ... here. Call it.
|
|
(push_module_binding): And call it here. Set STAT_EXPORTS.
|
|
* rtti.c (create_pseudo_type_info): Mark as builtins.
|
|
(get_pseudo_ti_index): Likewise.
|
|
(emit_support_tinfos): Use regular lookup to find type. Set
|
|
builtins location.
|
|
* tree.c (ovl_insert): Add export_tail arg.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/class-1_[abcd].C: New.
|
|
|
|
2017-05-31 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c: Instrumentation.
|
|
|
|
Merge trunk r248748.
|
|
|
|
2017-05-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248694.
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_out::tag_binding, cpms_in::tag_binding): Mark
|
|
type too.
|
|
(cpms_out::bindings): Adjust.
|
|
* name-lookup.c (push_module_binding): Add type arg.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (lang_decl_base): Lose decomposition_p flag.
|
|
(lang_decl) Update GTY tags.
|
|
(enum lang_decl_selector): New. Replace magic consts with this.
|
|
(DECL_DECOMPOSITION_P): Update.
|
|
(SET_DECL_DECOMPOSITION_P): Delete.
|
|
(maybe_add_lang_decl_raw): Second arg is bool.
|
|
(retrofit_lang_decl): Lose selector arg.
|
|
(fit_decomposition_lang_decl): Declare.
|
|
* decl.c (cp_finish_decomp): Use fit_decomposition_lang_decl.
|
|
(grokdeclarator): Likewise.
|
|
* lex.c (maybe_add_lang_decl_raw): Change 2nd arg to bool. Don't
|
|
to copying here.
|
|
(set_decl_linkage, fit_decomposition_lang_decl): New.
|
|
(retrofit_lang_decl): Lose selector arg.
|
|
(cxx_dup_lang_specific_decl): Use selector directly.
|
|
* module.c (cpms_out::lang_decl_bools, cpms_in::lang_decl_bools,
|
|
cpms_out::lang_decl_vals, cpms_in::lang_decl_vals): Use
|
|
lang_decl_selector.
|
|
(cpms_in::tree_node): Adjust maybe_add_lang_decl call.
|
|
|
|
gcc/
|
|
* REVISION: Add file.
|
|
gcc/c-family/
|
|
* c-cppbuiltin.c (c_cpp_builtins): Update __cpp_modules=201704.
|
|
|
|
2017-05-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248578.
|
|
|
|
Merge trunk r248574.
|
|
|
|
Merge trunk r248571.
|
|
|
|
2017-05-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248517.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h: Comment cleanup.
|
|
* name-lookup.c: Likewise.
|
|
* tree.c: Likewise.
|
|
|
|
Merge trunk 248485.
|
|
gcc/cp/
|
|
* lex.c (maybe_retrofit_lang_decl): Add sel parm.
|
|
|
|
2017-05-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_iterator): Make unduplicatable.
|
|
(ovl_iterator::pop): New.
|
|
(lkp_iterator::operator++): Adjust.
|
|
|
|
Merge trunk r248454.
|
|
|
|
Merge trunk r248436.
|
|
|
|
2017-05-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (lookup_name): Reimplement state preservation and
|
|
restoration.
|
|
* tree.c (lookup_mark): Add asserts.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/koenig14.C: New.
|
|
|
|
Merge trunk r248406.
|
|
|
|
gcc/cp/
|
|
* call.c (build_operator_new_call, build_new_op_1): Open code ADL
|
|
lookup.
|
|
* name-lookup.h (lookup_function_nonclass): Delete.
|
|
(lookup_arg_dependent): Adjust return type.
|
|
* name-lookup.c (name_lookup): Absorb adl_lookup.
|
|
(name_lookup::search_adl): New.
|
|
(lookup_function_nonclass): Delete.
|
|
(lookup_arg_dependent): Adjust.
|
|
|
|
2017-05-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248389.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (name_lookup::name_lookup): Lose F parm.
|
|
(name_lookup::ambiguous, add_value, add_type): New.
|
|
(name_lookup::merge_binding): Delete.
|
|
(name_lookup::find_and_mark): Move from adl_lookup.
|
|
(name_lookup::process_binding): Adjust.
|
|
(adl_lookup::search_adl): New.
|
|
(do_lookup_arg_dependent): Call it.
|
|
(qualified_namespace_lookup): Return found flag.
|
|
(unqualified_namespace_lookup): Delete.
|
|
(lookup_name_real_1, push_namepace): Adjust.
|
|
|
|
Merge trunk r248377.
|
|
|
|
Merge trunk r248365.
|
|
|
|
2017-05-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248338.
|
|
gcc/cp/
|
|
* name-lookup.c (add_using_namespace): Remove FROM arg.
|
|
(notify_debug_using_namespace): New.
|
|
(finish_namespace_using_directive, push_namespace): Notify debug.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/strong-using-6.C: Delete.
|
|
|
|
gcc/cp/
|
|
* config-lang.in: Update.
|
|
* name-lookup.c (add_using_directive): Rename to ...
|
|
(add_using_namespace): ... here. Add FROM arg.
|
|
(do_toplevel_using_directive): Fold into add_using_namespace.
|
|
(finish_namespace_using_directive, finish_local_using_directive,
|
|
push_namespace): Adjust.
|
|
|
|
Merge trunk r248329.
|
|
|
|
gcc/testsuite/
|
|
PR c++/80830
|
|
* g++.dg/lookup/friend20.C: New testcase.
|
|
|
|
2017-05-19 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248295.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h: Misc cleanups.
|
|
* name-lookup.c (pushdecl_top_level): Fix description.
|
|
gcc/
|
|
* dumpfile.h: Whitespace cleanups.
|
|
* system.h (ATTRIBUTE_NTC_PURE): Delete.
|
|
gcc/testsuite/
|
|
* g++.dg/tree-ssa/ssa-dse-2.C: Restore.
|
|
|
|
Merge trunk r248285.
|
|
|
|
Merge trunk r248271.
|
|
|
|
2017-05-18 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248250.
|
|
|
|
LANG_HOOK_REGISTER_DUMPS
|
|
gcc/
|
|
* context.h (context::set_passes): New.
|
|
* context.c (context::context): Do not create pass manager.
|
|
* toplev.c (general_init): Create pass manager here. Call
|
|
register dump lang hook.
|
|
* doc/invoke.texi: Document -fdump-lang option family.
|
|
* dumpfile.c (dump_files): Remove module and class dumps here.
|
|
(FIRST_AUTO_NUMBERED_DUMP): Adjust.
|
|
* dumpfile.h (tree_dump_index): Remove TDI_lang, TDI_class.
|
|
* langhooks-def.h (lhd_register_dumps): Declare.
|
|
(LANG_HOOKS_REGISTER_DUMPS): Define.
|
|
(LANG_HOOKS_INITIALIZER): Add it.
|
|
* langhooks.c (lhd_register_dumps): Define.
|
|
* langhooks.h (struct lang_hooks): Add register_dumps.
|
|
gcc/c-family/
|
|
* c-opts.c (class_dump_file, class_dump_flags): Delete.
|
|
(c_common_parse_file): Remove class dump handling.
|
|
(get_dump_info): Likewise.
|
|
gcc/cp/
|
|
* class.c (class_dump_id): Define.
|
|
(dump_class_hierarchy, dump_vtable, dump_vtt): Use it.
|
|
* cp-objcp-common.c (cp_register_dumps): New.
|
|
* cp-objcp-common.h (cp_register_dumps): Declare.
|
|
(LANG_HOOKS_REGISTER_DUMPS): Override.
|
|
* cp-tree.h (class_dump_id, module_dump_id): Declare.
|
|
* module.c (module_dump_id): Define.
|
|
(read_module, write_module): Use it.
|
|
gcc/testsuite/
|
|
* g++.dg/inherit/covariant7.C: Adjust.
|
|
* g++.dg/modules/ Adjust scans.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (lookup_add, lookup_maybe_add): Swap args.
|
|
* name-lookup.c (name_lookup::merge_binding,
|
|
adl_lookup::add_functions): Adjust.
|
|
* pt.c (check_explicit_specialization, do_class_deduction): Adjust.
|
|
* tree.c (lookup_add, lookup_maybe_add): Adjust.
|
|
|
|
Merge trunk r248192.
|
|
|
|
2017-05-17 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248159.
|
|
|
|
Merge trunk r248151.
|
|
* cp-tree.h (ovl_insert): Swap first two args. Update all uses.
|
|
|
|
Merge trunk r248144.
|
|
|
|
2017-05-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248126.
|
|
|
|
Merge trunk r248121.
|
|
|
|
Merge trunk r248116.
|
|
|
|
Merge trunk r248109.
|
|
|
|
2017-05-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r248059.
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_in::tag_definition): Robustify.
|
|
|
|
2017-05-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}): Rename {read,write}_tree to tree_node.
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}): Rename read/write fns.
|
|
|
|
More inline bodies
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}::write_core_vals): Read/write
|
|
statement lists & LABEL_DECLs.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/fn-inline-1_c.C: More test.
|
|
|
|
Inline function bodies
|
|
gcc/cp/
|
|
* module.c (cpms_{in,out}::write_core_vals): Read/write
|
|
exprs
|
|
(cpms_in::tag_definition): Insert inline function.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/fn-inline-1_[ab].C: New.
|
|
|
|
Merge trunk r247968.
|
|
|
|
gcc/cp/
|
|
* module.c (cpm_reader::read_tree): Change interface, adjust callers.
|
|
|
|
gcc/cp/
|
|
* module.c (cpm_writer): Instrument bool distribution.
|
|
(cpms_out::tag_definition, cpms_in::tag_definition): New.
|
|
(cpms_out, cpms_in): Transfer more stuff.
|
|
|
|
2017-05-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r247911.
|
|
|
|
2017-05-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r247864.
|
|
|
|
Merge trunk r247834.
|
|
|
|
2017-05-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Rename -fdump-front-end to -fdump-lang.
|
|
gcc/
|
|
* dumpfile.h (TDF_KIND_MASK, TDF_KIND): New. Adjust.
|
|
* dumpfile.c (dump_files): Rename file suffix.
|
|
(get_dump_file_name, dump_enable_all): Adjust.
|
|
* doc/invoke.texi: Rename option.
|
|
gcc/testsuite/
|
|
* g++.dg/modules: Adjust tests.
|
|
|
|
gcc/cp/
|
|
* module.c (cpms_in::finish): Merge global decls.
|
|
(cpms_in::finish_function, cpms_in::finish_namespace): Delete.
|
|
* name-lookup.h (push_module_namespace): Replace with ...
|
|
(merge_global_decl): ... this.
|
|
* name-lookup.c (push_module_namespace): Morph into ...
|
|
(merge_global_decl): ... this.
|
|
(push_module_binding): Don't re-add found things.
|
|
|
|
gcc/
|
|
* tree.h (TREE_CHECK6, tree_check6): Delete.
|
|
|
|
Merge trunk r247787.
|
|
gcc/cp/
|
|
* tree.c (type_has_nontrivial_copy_init): Use ovl_iterator.
|
|
|
|
Error message module designation.
|
|
gcc/cp/
|
|
* error.c (dump_module_suffix): New.
|
|
(dump_simple_decl, dump_function_name): Use it.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/err-1_[abcd].C: New.
|
|
|
|
2017-05-08 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r247749.
|
|
|
|
Implement 'export module foo;'
|
|
gcc/cp/
|
|
* cp-tree.h (declare_module): Add interface flag.
|
|
(import_export_module): Rename to ...
|
|
(import_module): ... here. Lose export flag.
|
|
* module.c (import_module): Determine exportness from export
|
|
depth.
|
|
(declare_module): Add interface flag, don't check attribs.
|
|
* parser.c (check_module_outermost): Don't check export depth.
|
|
(cp_parser_module_declaration): Don't deal with imports.
|
|
(cp_parser_import_declaration): New.
|
|
(cp_parser_module_export, cp_parser_declaration): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/import-1_[a-g].C: New.
|
|
|
|
Implement DR2061
|
|
gcc/cp/
|
|
* name-lookup.c (push_inline_namespace): New.
|
|
(push_namespace): Use it. Check inline consistency here ...
|
|
* parser.c (cp_parser_namespace_definition): ... not here.
|
|
gcc/testsuite/
|
|
* g++.dg/cpp0x/dr2061.C: New.
|
|
* g++.dg/parse/namespace-alias-1.C: Augment.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h, call.c, class.c, name-lookup.c, parser.c, pt.c,
|
|
semantics.c, tree.c: Rename ovl2_iterator to lkp_iterator.
|
|
|
|
gcc/cp/
|
|
* name-lookup.h (push_namespace): Return int.
|
|
* name-lookup.c (push_namespace): Return count of depth pushed.
|
|
* parser.c (cp_parser_namespace_definition): Accumulate depth pushed.
|
|
|
|
2017-05-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r247654.
|
|
|
|
Merge trunk r247646.
|
|
|
|
Merge trunk r247636.
|
|
|
|
Indirect import lookup by tagging
|
|
gcc/cp/
|
|
* cp-tree.h (MAYBE_DECL_MODULE_INDEX): New.
|
|
(DECL_GLOBAL_MODULE_P, DECL_THIS_MODULE_P): Delete.
|
|
* mangle.c (maybe_write_module): Adjust.
|
|
* module.c (cpms_out::write_tree, cpms_in::read_tree): Mark
|
|
imported decls by tag.
|
|
* name-lookup.h (key_module_instance, find_module_instance): Declare.
|
|
* name-lookup.c (module_binding_slot): Allow search only.
|
|
(key_module_instance): New.
|
|
(find_module_instance): Use key.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-indirect-1_[a-e].C: New.
|
|
|
|
2017-05-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r247612.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/using17.C: Adjust error message.
|
|
|
|
Overload bindings
|
|
gcc/cp/
|
|
* module.c (cpms_in::tag_binding, cpms_out::tag_binding): Binding
|
|
can be overload.
|
|
(cpms_out::write_bindings): Write whole slot.
|
|
(cpms_in::finish): Look for import match.
|
|
(cpms_in::read_lang_decl_bools, cpms_out::write_lang_decl_bools,
|
|
cpms_in::read_lang_decl_vals, cpms_out::write_lang_decl_vals):
|
|
Implement.
|
|
* name-lookup.c (push_module_binding): Binding can be overload.
|
|
(find_module_instance): New.
|
|
* name-lookup.h (find_module_instance): Declare.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-impl-1_[abcd]: Add overloads.
|
|
|
|
2017-05-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r247593.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (LOOKUP_SEEN_P): Map to TREE_VISITED.
|
|
(LOOKUP_FOUND_P, OVL_LOOKUP_P): Move to lang_flag_4
|
|
|
|
Modules via index, working again!
|
|
gcc/cp/
|
|
* module.c (cpms_in::tag_binding): Set module index.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-impl-1_a.C: Remove xfail.
|
|
|
|
Namespace partitions.
|
|
gcc/cp/
|
|
* cp-tree.h (MODULE_NAMESPACE_P, GLOBAL_MODULE_NAMESPACE_P,
|
|
CURRENT_MODULE_NAMESPACE_P): Delete.
|
|
(pop_module_namespace, push_module_namespace): Delete.
|
|
* module.c (cpms_out::write_bindings, cpms_in::finish_namespace):
|
|
Remove module namespace hacks.
|
|
(push_module_namespace, pop_module_namespace): Delete.
|
|
(module_to_ext): Swallow into ...
|
|
(module_to_filename): ... here.
|
|
(declare_module): Don't create module namespace symbol.
|
|
* name-lookup.c (module_binding_slot): Fixup global module
|
|
insertion.
|
|
(is_nested_namespce, is_ancestor): Remove module namespace hacks.
|
|
* parser.c (check_module_outermost, cp_parser_module_export,
|
|
cp_parser_module_proclamation,
|
|
cp_parser_namespace_definition): Likewise
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-sym-[123].C: Remove xfails.
|
|
* g++.dg/modules/mod-impl-1_a.C: Revert to run test.
|
|
|
|
Namespace partitions.
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_EXPORT_P): New. Move OVL_LOOKUP_P.
|
|
(DECL_MODULE_EXPORT_P): Allow any DECL.
|
|
(module_import_bitmap): Declare.
|
|
* decl.c (cxx_init_decl_processing): Export global_namespace.
|
|
* module.c (module_import_bitmap): New.
|
|
(do_module_import): Install as global module, if needed.
|
|
(declare_module): Freeze global imports.
|
|
* name-lookup.c: Include bitmap.h.
|
|
(name_lookup::process_binding): Take split bindings.
|
|
(name_lookup::process_module_binding): New.
|
|
(name_lookup::search_namespace_only): Adjust.
|
|
* tree.c (ovl_insert): Sort by export_p too.
|
|
|
|
Merge trunk r247550.
|
|
|
|
Namespace partitions.
|
|
gcc/cp/
|
|
* cp-tree.h (MODULES_PER_BINDING_CLUSTER): Delete.
|
|
(MODULE_VECTOR_NUM_CLUSTERS, MODULE_VECTOR_CLUSTER_BASE,
|
|
MODULE_VECTOR_CLUSTER_LAST, MODULE_VECTOR_CLUSTER): New.
|
|
(make_module_vec): Declare.
|
|
* module.c (cpms_out::write_bindings): Look into MODULE_VECTOR.
|
|
* name-lookup.c (modue_binding_slot): New.
|
|
(name_lookup::merge_binding, name_lookup::process_binding): New.
|
|
(name_lookup::search_qualified): Add usings parm.
|
|
(name_lookup::search_namespace_only): Look into MODULE_VECTOR.
|
|
(do_pushdecl): Create module slot.
|
|
(find_namespace_partition): New, from ...
|
|
(push_module_namespace): ... here. Call it.
|
|
(push_module_binding): Create module slot.
|
|
(push_namespace): Adjust.
|
|
* ptree.c (cxx_print_xnode): Print MODULE_VECTOR.
|
|
* tree.c (make_module_vec): New.
|
|
|
|
2017-05-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (saved_scope): Add this_module.
|
|
(current_module): New.
|
|
* module.c (cpms_in): Add remapping vector. Remove scope.
|
|
(cpms_in::tag_import): Update remapping vector.
|
|
(cpms_out::tag_binding, cpms_in::tag_binding): Write/read module no.
|
|
* name-lookup.c (do_push_to_top_level): Set current_module.
|
|
|
|
gcc/doc/
|
|
* invoke.texi (-fdump-front-end): Document.
|
|
|
|
Read/write direct namespace bindings part 2.
|
|
gcc/cp/
|
|
* module.c (cpms_out::tag_binding): Write the tag.
|
|
(cpms_in::read_item): Detect rt_binding, set modules slot.
|
|
(cpms_out::write_context_binding): Delete.
|
|
(cpms_out::write_bindings): Simplify.
|
|
(cpms_in::finish_function): Don't push function here.
|
|
(cpms_in::finish_namespace): Adjust.
|
|
(do_module_import): Adjust.
|
|
* name-lookup.h (push_module_namespace): Declare.
|
|
* name-lookup.c (push_module_namespace): New.
|
|
|
|
Read/write direct namespace bindings part 1.
|
|
gcc/cp/
|
|
* cp-tree.def (module_vector): New tree type.
|
|
* cp-tree.h (module_cluster, tree_module_vec): New tree.
|
|
(enum cp_tree_node_structure_enum): Add TS_CP_MODULE_VECTOR.
|
|
(lang_tree_node): Add tree_module_vec.
|
|
* decl.c (cp_tree_node_structure): Detect MODULE_VECTOR.
|
|
* module.c (cpms_out::tag_binding, cpms_in::tag_binding): New.
|
|
(cpms_out::write_context_binding): New.
|
|
(cpms_out::walk_namespace): Replace with ...
|
|
(cpms_out::write_bindings): ... this.
|
|
* name-lookup.h (push_module_binding): Declare.
|
|
* name-lookup.c (push_module_binding): New.
|
|
|
|
2017-05-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* tree.c (type_hash_default): Adjust ARRAY_TYPE hash.
|
|
|
|
Import timestamp & crc
|
|
gcc/cp
|
|
* module.c (module_state): Add crc & stamp.
|
|
(enum import_kind): New.
|
|
(cpms_out::header, cpms_in::header): Check timestamps.
|
|
(time2str, timestamp_mismatch): New.
|
|
(cpms_out::tag_import, cpms_in::tag_import): Xfer indirect imports
|
|
too.
|
|
(read_module, do_module_import): Check timestamp & crc.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-stamp-1_[abcd].C: New.
|
|
|
|
Proper mangle for module. Still have namespace hack though.
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_GLOBAL_MODULE_P, DECL_THIS_MODULE_P): Protect
|
|
DECL_LANG_SPECIFIC.
|
|
(decl_set_module, module_name, module_name_parts): New.
|
|
* decl.c (duplicate_decls): Check moduleness.
|
|
(grokfndecl): Set moduleness.
|
|
* mangle.c (maybe_write_module): New.
|
|
(write_name): Call it.
|
|
* module.c (module_state::set_name): New.
|
|
(decl_set_module, module_name, module_name_parts): New.
|
|
gcc/testsuite/
|
|
* g+.dg/modules.exp (dg-module-do, module_do_it): Adjust.
|
|
* g++.dg/modules/mod-impl-1_a.C: Adjust & XFAIL.
|
|
* g++.dg/modules/mod-impl-1_c.C: Likewise.
|
|
* g++.dg/modules/mod-sym-1.C: Likewise.
|
|
* g++.dg/modules/mod-sym-2.C: Likewise.
|
|
* g++.dg/modules/mod-sym-3.C: Likewise.
|
|
|
|
2017-04-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (struct_lang_base): Add module_index. Shrink selector.
|
|
(DECL_MODULE_INDEX, DECL_GLOBAL_MODULE_P, DECL_THIS_MODULE_P): New.
|
|
(EXPORTED_P): Rename to ..
|
|
(DECL_EXPORTED_P): ... here.
|
|
* modules.c: Adjust EXPORTED_P uses.
|
|
|
|
Module indices and separated import/export info
|
|
gcc/cp/
|
|
* cp-tree.h (GLOBAL_MODULE_INDEX, THIS_MODULE_INDEX,
|
|
IMPORTED_MODULE_BASE): New.
|
|
(import_module, export_module): Replace with ...
|
|
(import_export_module): ... this.
|
|
* module.c: #include bitmap.h.
|
|
(enum import_kind): Delete.
|
|
(struct module_state): New.
|
|
(modules, module_map, this_module): New.
|
|
(imported_modules): Delete.
|
|
(cpms_in::state): New member. Update constructor.
|
|
(cpms_in::tag_import, cpms_out::tag_import): Take is_export arg.
|
|
(cpms_in::read_item): Assign module index.
|
|
(module_user, is_interface): Delete.
|
|
(dopen, dclose): Delete. Move to call sites.
|
|
(read_module): Return module index.
|
|
(do_module_import): Reimplement.
|
|
(import_module, export_module): Replace with ...
|
|
(import_export_module): ... this.
|
|
(declare_module, write_module, finish_module): Adjust.
|
|
* parser.c (cp_parser_module_declaration): Adjust,
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-5_b.C: Adjust.
|
|
|
|
2017-04-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Kill rt_import popping madness
|
|
gcc/cp/
|
|
* module.c (cpm_serial::rt_export): New tag.
|
|
(cpms_in::tag_import): Do the importing right now.
|
|
(cpms_in::read_item): ... not here.
|
|
(read_module): Pass in dump file name, open it if needed.
|
|
|
|
Kill walk_namespaces
|
|
gcc/cp/
|
|
* cp-tree.h (walk_namespaces): Delete.
|
|
* decl.c (walk_namespaces_r, walk_namespaces): Delete.
|
|
|
|
Rework module namespace walking
|
|
gcc/cp/
|
|
* name-lookup.h: (decapsulate_binding): Declare.
|
|
* name-lookup.c: (decapsulate_binding): New.
|
|
* module.c (cpms_out::walk_namespace): Iterate over namespace
|
|
bindings, not decls.
|
|
(imported_modules): Key by lang_identifier. Adjust
|
|
allocation/deletion.
|
|
|
|
Refix unhidden extern C
|
|
Revert 2017-04-26 extern_c_slot patch.
|
|
gcc/cp/
|
|
* name-lookup (do_pushdecl): Call check_extern_c_conflict when
|
|
unhiding.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/extern-c-redecl.C: Adjust.
|
|
* g++.dg/lookup/extern-c-hidden.C: New test.
|
|
|
|
Merge trunk r247281.
|
|
gcc/
|
|
* tree.c (type_hash_default): Hash TYPE_TYPELESS_STORAGE.
|
|
gcc/objc/
|
|
* objc-gnu-runtime-abi-01.C (objc_add_static_instance): Use
|
|
pushdecl langhook.
|
|
|
|
2017-04-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (extern_c_slot): New.
|
|
(check_extern_c_conflict): Use it.
|
|
(unhidden_extern_c): New.
|
|
(do_pushdecl): Call it.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (extern_c_slot): New.
|
|
(check_extern_c_conflict): Use it.
|
|
(unhidden_extern_c): New.
|
|
(do_puhdecl): Call it.
|
|
|
|
Die IDENTIFIER_GLOBAL_BINDINGS! Die!
|
|
gcc/
|
|
* ipa-devirt.c (default_hash_traits <type_pair>): Add GTY((skip))s.
|
|
gcc/cp/
|
|
* cp-tree.h (lang_identifier): Remove namespace_bindings.
|
|
(default_hash_traits<lang_identifier *>): Specialization.
|
|
(IDENTIFIER_NAMESPACE_BINDINGS): Delete.
|
|
(lang_decl_ns): Add bindings map.
|
|
(DECL_NAMESPACE_BINDINGS): New.
|
|
* lex.c (maybe_add_lang_decl_raw): Allocate namespace binding map.
|
|
* name-lookup.c (create_namespace_binding): Delete.
|
|
(find_namespace_binding): Split into ...
|
|
(find_or_create_namespace_slot, find_namespace_slot): ... these.
|
|
Update all callers.
|
|
(extern_c_fns): Change to identifier map.
|
|
* ptree.c (cxx_print_identifier): Remove IDENTIFIER_NAMESPACE_BINDINGS.
|
|
|
|
2017-04-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (find_namespace_binding): Return slot
|
|
pointer. Adjust all callers.
|
|
(update_binding): Add slot pointer arg. Adjust.
|
|
(check_extern_c_conflict): Cons up list of fns.
|
|
(c_linkage_bindings): Use extern_c_fns map.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (extern_c_fns): New hash.
|
|
(check_extern_c_conflict): Reimplement using hash map.
|
|
(do_pushdecl): Move check_extern_c_conflict later.
|
|
|
|
Namespace stat hack via special overload
|
|
gcc/cp/
|
|
* name-lookup.c (STAT_HACK_P, STAT_TYPE, STAT_DECL,
|
|
MAYBE_STAT_DECL, MAYBE_STAT_TYPE): New.
|
|
(stat_hack): New.
|
|
(find_namespace_value, name_lookup::search_namespace_only,
|
|
update_binding, do_pushdecl, set_identifier_type_value_with_scope,
|
|
set_global_value, lookup_type_scope_1, do_pushtag): Adjust.
|
|
|
|
2017-04-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (add_local_decl): Delete.
|
|
(name_lookup::add): Fold into ...
|
|
(name_lookup::search_namespace_only): ... here.
|
|
(update_binding): Allow pushing the same artificial type.
|
|
(do_pushdecl): Explicitly set namespace type.
|
|
(push_local_binding): Use add_decl_to_level.
|
|
(set_identifier_type_Value_with_scope): Use update_binding for
|
|
namespaces.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (do_nonmember_using_decl): Pass in pointers to
|
|
value and type nodes.
|
|
(do_local_using_directive): Use current_binding_level directly.
|
|
(do_toplevel_using_directive): Adjust.
|
|
(lookup_type_current_level): Delete.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (diagnose_name_conflict): Check decl context.
|
|
(do_nonmember_using_decl): Simplify.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/using13.C: Adjust error.
|
|
* g++.dg/lookup/using59.C: Likewise,
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (SET_IDENTIFIER_GLOBAL_VALUE): Update.
|
|
* name-lookup.h (set_namespace_value): Rename to ....
|
|
(set_global_value): ... here.
|
|
* name-lookup.c (update_namespace_binding): Delete.
|
|
(set_namespace_value): Rename to ....
|
|
(set_global_value): ... here. Update binding directly.
|
|
|
|
2017-04-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_lookup_keep, ovl_lookup_mark, ovl_lookup_add,
|
|
ovl_lookup_maybe_add): Rename to ...
|
|
(lookup_keep, lookup_mark, lookup_add, lookup_maybe_add): ... these.
|
|
|
|
Keep overloads correctly ordered
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_iterator::unhide): Reimplement.
|
|
(ovl_iterator::replace, ovl_iterator::ovl_unhide): Delete.
|
|
(ovl_iterator::remove_node, ovl_iterator::unhide_node): Declare.
|
|
(ovl_insert, ovl_lookup_maybe_add): Declare.
|
|
* name-lookup.c (adl_lookup::add_functions): Adjust.
|
|
(do_lookup_arg_dependent): Adjust.
|
|
(do_nonmember_using_decl): Adjust.
|
|
* pt.c (make_constrained_auto, do_class_deduction): Adjust.
|
|
* tree.c (ov_move_unhidden, ovl_add): Delete.
|
|
(ovl_copy, ovl_insert): New.
|
|
(ovl_iterator::unhide_node, ovl_iterator::remove_node): New.
|
|
(ovl_lookup_mark, ovl_lookup_add): Adjust.
|
|
(ovl_lookup_maybe_add): New.
|
|
(ovl_lookup_keep, ovl_skip_hidden): Adjust.
|
|
(ovl_iterator::ovl_unhide, ovl_iterator::replace): Delete.
|
|
* class.c (add_method): Adjust.
|
|
|
|
2017-04-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Kill per-namespace static_decls.
|
|
gcc/cp/
|
|
* cp-tree.h (static_decls): Declare.
|
|
(wrapup_globals_for_namespace,
|
|
diagnose_inline_vars_for_namespace): Replace with ...
|
|
(wrapup_namespace_globals): ... this.
|
|
* decl.c (static_decls): Define.
|
|
(wrapup_globals_for_namespace,
|
|
diagnose_inline_vars_for_namespace): Replace with ...
|
|
(wrapup_namespace_globals): ... this.
|
|
(cxx_init_decl_processing): Initialize static_decls.
|
|
* decl2.c (c_parse_final_cleanups): Adjust.
|
|
* name-lookup.h (cp_binding_level): Remove static_decls member.
|
|
* name-lookup.c (add_decl_to_level): Adjust.
|
|
(begin_scope): Adjust.
|
|
|
|
Merge namespace and local scope binding update
|
|
gcc/cp/
|
|
* name-lookup.c (add_namespace_decl): Delete.
|
|
(namespace_push_binding, local_push_binding): Merge into ...
|
|
(update_binding): ... this.
|
|
(do_pushdecl): Adjust.
|
|
|
|
2017-04-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Cleanups
|
|
gcc/cp/
|
|
* lex.c (unqualified_name_lookup_error): Use pushdecl.
|
|
* name-lookup.h (push_local_binding): Delete.
|
|
* name-lookup.c (add_decl_to_level): New, combining
|
|
add_namespace_decl, add_local_decl.
|
|
(namespace_push_binding, local_push_binding): Adjust.
|
|
(do_pushdecl): Adjust.
|
|
(push_local_binding): Make static.
|
|
|
|
Unify binding push part 7
|
|
gcc/cp/
|
|
* name-lookup.c (namespace_push_binding): Merge duplicate code
|
|
from local_push_binding. Chain the decl.
|
|
(do_pushdecl): Adjust.
|
|
|
|
Cleanup pushdecl interface
|
|
gcc/cp/
|
|
* cp-lang.c (cxx_pushdecl): New.
|
|
(LANG_HOOKS_PUSHDECL): Override.
|
|
* name-lookup.h (pushdecl): Remove overload. Add default arg.
|
|
* name-lookup.c (pushdecl): Likewise.
|
|
gcc/c/
|
|
* c-tree.h (pushdecl): Declare.
|
|
gcc/c-family/
|
|
* c-common.c (c_register_builtin_type): Use pushdecl lang hook.
|
|
* c-common.h (pushdecl): Don't declare.
|
|
|
|
Some cleanups
|
|
gcc/cp/
|
|
* name-lookup.c (update_local_overload): Drop oldval parm.
|
|
(replace_local_overload_binding): Delete. Fold into only caller.
|
|
(fixup_unhidden_decl): Likewise.
|
|
(augment_local_overload_binding): Likewise.
|
|
|
|
Unifying binding push part 6
|
|
gcc/cp/
|
|
* name-lookup.c (find_local_binding): New. Broken out of ...
|
|
(find_local_value): ... this. Use it.
|
|
(update_local_overload): New. Broken out of ...
|
|
(replace_local_overload_binding): ... this. Use it.
|
|
(do_pushdecl): Keep local binding around.
|
|
(local_push_binding): Consume supplement_binding, add_local_decl.
|
|
|
|
Unifying binding push part 5
|
|
gcc/cp/
|
|
* name-lookup.c (skip_anticipated_builtins): Kill.
|
|
(namespace_push_binding): Consume supplement_binding.
|
|
(do_pushdecl): Skip hidden builtin here. Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/using59.C: New.
|
|
|
|
2017-04-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Unifying binding push part 4
|
|
gcc/cp/
|
|
* name-lookup.c (namespace_push_binding, local_push_binding):
|
|
Don't dup decls here. Deal with using.
|
|
(do_pushdecl): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/using58.C: New.
|
|
|
|
Unifying binding push part 3
|
|
gcc/cp/
|
|
* name-lookup.c (create_local_binding) New.
|
|
(do_local_push_overload): Turn into ...
|
|
(local_push_binding): ... this.
|
|
(do_pushdecl): Adjust.
|
|
|
|
Unifying binding push part 2
|
|
gcc/cp/
|
|
* name-lookup.c (create_namespace_binding) New.
|
|
(find_namespace_binding): Use it.
|
|
(do_namespace_push_overload): Convert to ...
|
|
(namespace_push_binding): ... this.
|
|
(do_pusdecl): Adjust
|
|
|
|
Unifying binding push part 1
|
|
gcc/cp/
|
|
* name-lookup.c (do_pusdecl): Skip using decls. Retain namespace.
|
|
|
|
2017-04-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Separating namespace bindings part 15
|
|
gcc/cp/
|
|
* cp-tree.h (PUSH_GLOBAL, PUSH_LOCAL, PUSH_USING): Delete.
|
|
* lex.c (unqualified_name_lookup_error): Adjust push_local_binding
|
|
call.
|
|
* name-lookup.h (push_local_binding): Flags is now bool.
|
|
* name-lookup.c (matching_using_decl_p): Rename to ...
|
|
(matching_fn_p): ... here. Update callers.
|
|
(set_local_extern_decl_linkage): New. Broken out of ...
|
|
(do_pushdecl): ... here. Call it.
|
|
(push_local_binding, augment_local_overload_binding,
|
|
do_local_push_overload, do_local_using_decl): Flags is now bool.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/extern-redecl1.C: New.
|
|
* g++.dg/parse/ctor9.c: tweak.
|
|
|
|
Separating namespace bindings part 14
|
|
gcc/cp/
|
|
* friend.c (do_friend): Use pushdecl directly.
|
|
* name-lookup.h (lookup_name_innermost_nonclass_level): Delete.
|
|
* name-lookup.c (find_local_value): New. Broken out of ...
|
|
(lookup_name_innermost_nonclass_level_1): ... here. Call
|
|
it. Rename to ...
|
|
(lookup_name_innermost_nonclass_level): ... this. Delete external
|
|
entry point.
|
|
(do_pushdecl): Start handling binding levels directly. Check
|
|
local class friend injection rule. More cleanup.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/friend12.C: Augment & adjust.
|
|
* g++.old-deja/g++.jason/scoping12.C: Adjust.
|
|
|
|
Separating namespace bindings part 13
|
|
gcc/cp/
|
|
* name-lookup.c (do_pushdecl): Some cleanups.
|
|
|
|
Separating namespace bindings part 12
|
|
gcc/cp/
|
|
* name-lookup.c (do_pushdecl): Move overload pushing next to
|
|
non-overload pushing.
|
|
|
|
2017-04-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Separating namespace bindings part 11
|
|
gcc/cp/
|
|
* name-lookup.c (check_local_shadow): Move lookup code to here ...
|
|
(do_pushdecl): ... from here.
|
|
|
|
Separating namespace bindings part 10
|
|
gcc/cp/
|
|
* name-lookup.c (do_pushdecl): Reorder & delete more obsolete code.
|
|
|
|
Separating namespace bindings part 9
|
|
gcc/cp/
|
|
* name-lookup.c (do_pushdecl): Delete a tonne of obsolete code.
|
|
|
|
2017-04-07 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Fix bogus scope handling
|
|
gcc/cp/
|
|
* call.c (make_temporary_var_for_ref_to_temp): Push temp into
|
|
current scope.
|
|
* decl.c (xref_tag_1): Pass ts_lambda to pushtag.
|
|
* name-lookup (do_pushtag): Deal with ts_lambda scope.
|
|
gcc/testsuite
|
|
* g++.dg/cpp0x/forw_enum9.C: Fix testcase.
|
|
|
|
2017-04-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Separating namespace bindings part 8
|
|
gcc/cp/
|
|
* name-lookup.c (do_pushdecl): Kill obsolete C-era code!
|
|
|
|
Separating namespace bindings part 7
|
|
gcc/cp/
|
|
* name-lookup.c (check_local_shadow, set_decl_context_in_fn): Break
|
|
out and simplify from ...
|
|
(do_pushdecl): ... here. Call them.
|
|
|
|
Separating namespace bindings part 6
|
|
gcc/c-family/
|
|
* c-common.h (pushdecl_top_level): Delete.
|
|
gcc/cp/
|
|
* name-lookup.h (pushdecl_top_level): Delete non-friendly version.
|
|
* name-lookup.c (check_extern_c_conflict): New.
|
|
(lookup_extern_c_fun_in_all_ns): Delete.
|
|
(do_pushdecl): Call it. Rename variables sanely.
|
|
(pushdecl_top_level): Delete non-friendly version.
|
|
|
|
2017-04-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Separating namespace bindings part 5
|
|
gcc/cp/
|
|
* name-lookup.h (getdecls): Rename to ...
|
|
(get_local_decls): ... here.
|
|
* name-lookup.c (pop_bindings_and_leave_scope): Adjust.
|
|
(do_pushdecl): Add some asserts.
|
|
(getdecls): Rename to ...
|
|
(get_local_decls): ... here. Assert local scope.
|
|
* decl.c (poplevel): Adjust.
|
|
(start_preparsed_function): Don't set current_function_decl, until
|
|
decl is pushed.
|
|
(store_parm_decls): Adjust.
|
|
* parser.c (synthesize_implicit_template_parm): Adjust.
|
|
|
|
Separating namespace bindings part 4
|
|
gcc/cp/
|
|
* cp-lang.c (LANG_HOOKS_GETDECLS): Override.
|
|
(get_global_decls): New.
|
|
* decl.c (poplevel): Assert not in namespace. Simplify.
|
|
* name-lookup.c (pop_binding): Rename to ...
|
|
(pop_local_binding): ... here.
|
|
(pop_bindings_and_leave_scope): Adjust.
|
|
(getdecls): Assert not in namespace.
|
|
* name-lookup.h (pop_binding): Rename to ...
|
|
(pop_local_binding): ... here.
|
|
|
|
Separating namespace bindings part 3
|
|
gcc/cp/
|
|
* name-lookup.c (do_local_push_overload): New, split out of ...
|
|
(push_overloaded_decl_1): ... this. Delete.
|
|
(push_overloaded_decl): Delete.
|
|
(do_pushdecl): Adjust.
|
|
|
|
Separating namespace bindings part 2
|
|
gcc/cp/
|
|
* name-lookup.c (compparms_for_decl_and_using_decl): Replace with ...
|
|
(matching_using_decl_p): ... this.
|
|
(do_namespace_push_overload): New, split out of ...
|
|
(push_overloaded_decl_1): ... this.
|
|
(do_pushdecl): Adjust.
|
|
(do_nonmember_using_decl): Adjust.
|
|
|
|
2017-04-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.h (get_global_value_if_present,
|
|
is_typename_at_global_scope): Delete.
|
|
* class.c (build_vtbl_initializer): Adjust.
|
|
* decl.c (grokdeclarator)
|
|
* except.c (do_get_exception_ptr, do_begin_catch, do_end_catch,
|
|
do_allocate_exception, do_free_exception, build_throw): Adjust.
|
|
* init.c (throw_bad_array_new_length): Adjust.
|
|
* rtti.c (throw_bad_cast, throw_bad_typeid): Adjust.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (CPTI_INIT_LIST_IDENTIFIER, init_list_identifier): New.
|
|
* decl.c (initialize_predefined_identifiers): Initialize
|
|
initializer_list identifier.
|
|
* call.c (is_std_init_list): Adjust.
|
|
* name-lookup.c (do_pushtag): Likewise.
|
|
* pt.c (listify): Likewise.
|
|
|
|
Separating namespace bindings part 1
|
|
gcc/cp/
|
|
* name-lookup.h (namespace_binding, set_namespace_binding):
|
|
Replace with ...
|
|
(get_namespace_value, set_namespace_value): ... these.
|
|
(get_global_value_if_present, is_typename_at_global_scope): Adjust.
|
|
* cp-tree.h (IDENTIFIER_GLOBAL_VALUE,
|
|
SET_IDENTIFIER_GLOBAL_VALUE): Adjust.
|
|
(IDENTIFIER_NAMESPACE_VALUE, SET_IDENTIFIER_NAMESPACE_VALUE): Delete.
|
|
* pt.c (listify): Use get_namespace_value.
|
|
* decl.c (poplevel): Use get_namespace_value.
|
|
* name-lookup.c (cp_binding_level_find_binding_for_name): Replace
|
|
with ...
|
|
(find_namespace_binding): ... this.
|
|
(update_namespace_binding, find_namespace_value,
|
|
add_namespace_decl, add_local_decl): New.
|
|
(name_lookup::search_namespace_only,
|
|
adl_lookup::assoc_namespace_only): Adjust.
|
|
(binding_for_name, add_decl_to_level): Delete.
|
|
(fixup_unhidden_decl, do_pushdecl, push_local_binding,
|
|
check_for_out_of_scope_variable,
|
|
set_identifier_type_value_with_scope, push_overloaded_decl_1): Adjust.
|
|
(namespace_binding_1, namespace_binding): Replace with ...
|
|
(get_namespace_value): ... this.
|
|
(set_namespace_binding_1, set_namespace_binding): Replace with ...
|
|
(set_namespace_value): ... this.
|
|
(do_toplevel_using_decl, lookup_type_scope_1,
|
|
lookup_name_innermost_nonclass_level_1, do_push_nested_namespace,
|
|
push_namespace): Adjust.
|
|
|
|
2017-04-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Merge trunk r246647.
|
|
gcc/cp/
|
|
* pt.c (): Adjust guiding decl code.
|
|
libcc1/
|
|
* libcp1plugin.cc (safe_pushdecl_maybe_friend): Adjust.
|
|
(plugin_make_namespace_inline): Adjust.
|
|
(plugin_add_using_namespace): Likewise.
|
|
|
|
Remove usings graph.
|
|
gcc/cp/
|
|
* cp-tree.h (lang_decl_ns): Replace tree list ns_using, ns_users
|
|
with tree vector usings & inlinees.
|
|
(DCL_NAMES_SPACE_USING, DECL_NAMESPACE_INLINEES): Update.
|
|
(TREE_INDIRECT_USING): Delete.
|
|
* decl.c (cxx_init_decl_processing): Tweak.
|
|
* name-lookup.h (cp_binding_level): using_directives is a vec.
|
|
* name-lookup.c (name_lookup::do_queue_usings, queue_usings,
|
|
search_namespace, search_usings, queue_namespace,
|
|
search_unqualified, assoc_namespace_only): inlinees and usings are
|
|
vectors. Remove old TREE_LIST code.
|
|
(namespace_ancestor_1, namespace_ancestor, add_using_namespace_1,
|
|
add_using_namespace): Delete.
|
|
(qualified_namespace_lookup): Tweak.
|
|
(add_using_directive): New.
|
|
(do_toplevel_using_directive, do_local_using_directive): Adjust.
|
|
(push_namespace): Adjust.
|
|
* tree.c (decl_anon_ns_mem_p): Reimplement.
|
|
(cp_free_lang_data): Update.
|
|
|
|
2017-03-31 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Reimplement unqualified namespace lookup
|
|
gcc/cp/
|
|
* name-lookup.c (name_lookup::state, name_lookup::preserve_state,
|
|
name_lookup::restore_state): New.
|
|
(name_lookup::queue_namespace,
|
|
name_lookup::do_queue_usings, name_lookup::queue_usings,
|
|
name_lookup::search_unqualified): New.
|
|
(unqualified_namespace_lookup_1): Kill.
|
|
(unqualified_namespace_lookup): Adjust.
|
|
(lookup_using_namespace): Kill.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/lambda1.C: New.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (name_lookup::scopes): Make static. Adjust uses.
|
|
(name_lookup::search_namespace_only): Broken out of ...
|
|
(name_lookup::search_namespace): ... here. Call it.
|
|
* tree.c (ovl_cache): New.
|
|
(ovl_make, ovl_lookup_keep): Use it.
|
|
|
|
2017-03-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* dump.c (cp_dump_tree): Allow nested overloads.
|
|
|
|
Add SCOPE_DEPTH
|
|
gcc/cp/
|
|
* cp-tree.h (SCOPE_DEPTH): New.
|
|
* decl.c (cxx_init_decl_processing): Set current_namespace.
|
|
* name-lookup.h (is_nested_namespace): Declare.
|
|
(is_associated_namespace): Delete.
|
|
* name-lookup.c (is_nested_namespace): New.
|
|
(is_ancestor): Use is_nested_namespace for namespaces.
|
|
(set_decl_namespace): Use is_nested_namespace.
|
|
(namespace_ancestor_1): Likewise.
|
|
(is_associated_namespace): Delete.
|
|
(push_namespace): Set SCOPE_DEPTH.
|
|
* pt.c (check_specialization_namespace): Use is_nested_namespace.
|
|
(check_unqualified_spec_or_inst): Likewise.
|
|
|
|
Reimplement qualified namespace lookup
|
|
gcc/cp/
|
|
* name-lookup.c (cp_binding_level_find_binding_for_name): Remove
|
|
premature optimiation.
|
|
(find_binding): Delete.
|
|
(name_lookup): Add flags, move scopes from adl_lookup.
|
|
(name_lookup::search_namespace, search_usings, search_qualified): New.
|
|
(tree_vec_contains): Kill.
|
|
(qualified_namespace_lookup): Kill old O(N^2) code.
|
|
|
|
gcc/cp/
|
|
* pt.c (determine_specialization): Use 2-d iterator
|
|
|
|
2017-03-29 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (LOOKUP_MARKED_P, RECORD_MARKED_P): Rename to ...
|
|
(LOOKUP_SEEN_P, LOOKUP_FOUND_P): ... here. Update everywhere.
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (arg_assoc::assoc_expr): Refactor.
|
|
(do_lookup_arg_dependent): Renamed from lookup_arg_dependent_1.
|
|
(lookup_arg_dependent): Adjust.
|
|
(qualified_namespace_lookup): Renamed from
|
|
qualified_lookup_using_namespace.
|
|
|
|
Kill DECL_NAMESPACE_ASSOCATIONS
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_NAMESPACE_INLINE_P): Renamed.
|
|
(DECL_NAMESPACE_ASSCIATIONS): Delete.
|
|
(DECL_NAMESPACE_INLINEES): New.
|
|
* name-lookup.c (adl_lookup::assoc_namespace_only): New.
|
|
(adl_lookup::assoc_namespace): Find parent, walk from there.
|
|
(is_associated_namespace): Walk inline namespace tree.
|
|
(push_namepace): Add to INLINEES not ASSOCIATIONS.
|
|
|
|
gcc/cp/
|
|
* lambda.c (maybe_add_lambda_conv_op): Use namespace_bindings_p.
|
|
* method.c (implicitly_declare_fn): Likewise.
|
|
* search.c (node_debug_info_needed): Likewise.
|
|
|
|
gcc/cp/
|
|
* name-lookup.h (finish_namespace_using_directive): Rename from
|
|
...
|
|
(finish_toplevel_using_directive): ... here.
|
|
* name-lookup.c: Likewise.
|
|
* parser.c (cp_parser_using_directive): Adjust.
|
|
|
|
2017-03-28 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Cleanup pushdecl_top_level
|
|
gcc/cp/
|
|
* cp-tree.h (pushdecl_top_level_maybe_friend,
|
|
pushdecl_top_level_and_finish): Delete.
|
|
* decl.c (cp_make_fname_decl): Adjust.
|
|
* decl2.c (get_guard, handle_tls_init): Likewise.
|
|
* pt.c (tsubst_friend_class): Likewise.
|
|
* rtti.c (get_tinfo_decl, tinfo_base_init): Likewise.
|
|
* name-lookup.h (pushdecl_top_level, pushdecl_top_level_init): Declare.
|
|
* name-lookup.c (pushdecl_top_level_1): Rename to ...
|
|
(push_decl_top_level): ... here.
|
|
(pushdecl_top_level_init): New.
|
|
(pushdecl_top_level_maybe_friend): Delete.
|
|
(pushdecl_top_level_and_finish): Delete.
|
|
|
|
Cleanup pushdecl
|
|
gcc/cp/
|
|
* cp-tree.h (pushdecl, pushdecl_maybe_friend): Delete.
|
|
(pushtag): Delete.
|
|
* decl.c (cp_make_fname_decl): Call pushdecl_outermost_localscope.
|
|
* lambda.c (insert_capture_proxy): Likewise.
|
|
* friend.c (do_friend): Call overloaded pushdecl.
|
|
* name-lookup.h (pushdecl_with_scope): Delete.
|
|
(pushdecl, pushtag, pushdecl_outermost_localscope): Declare.
|
|
* name-lookup.c (pushdecl_maybe_friend_1): Rename to ...
|
|
(do_pushdecl): ... here.
|
|
(pushdecl_maybe_friend): Replace with overloaded pushdecl.
|
|
(pushdecl): Adjust.
|
|
(pushdecl_with_scope_1): Rename to do_pushdecl_with_scope. Adjust.
|
|
(pushdecl_with_scope): Delete.
|
|
(pushdecl_outermost_localscope): New.
|
|
(pushdecl_namespace_level): Adjust.
|
|
(do_pushtag): Renamed from pushtag_1.
|
|
(pushtag): Adjust.
|
|
|
|
Cleanup namespace push/pop part 2
|
|
gcc/cp/
|
|
* module.c (cpms_in::finish_namespace): Adjust.
|
|
(push_module_namespace): Adjust.
|
|
* name-lookup.c (push_namespace, pop_namespace): Reimplement.
|
|
(make_namespace_inline): Delete.
|
|
* name-lookup.h (push_namespace): Change prototype.
|
|
* parser.c (cp_parser_namespace_definition): Adjust.
|
|
|
|
Cleanup namespace push/pop part 1
|
|
gcc/cp/
|
|
* cp-tree.h (CPTI_GLOBAL, CPTI_GLOBAL_IDENTIFIER, CPTI_GLOBAL_TYPE,
|
|
CPTI_ANON_IDENTIFIER): New.
|
|
(global_namespace, global_identifier, global_type_node,
|
|
anon_identifier): New.
|
|
* decl.c (global_type_node, global_scope_name): Delete.
|
|
(initialize_predefined_identifiers): Add new idents.
|
|
(cxx_init_decl_processing): Adjust.
|
|
* name-lookup.h (global_namespace, global_scope_name,
|
|
global_type_node): Delete.
|
|
* name-lookup (global_namespace, anonymous_namespace_name,
|
|
get_anonomous_namespace_name): Delete.
|
|
(do_push_nested_namespace, do_pop_nested_namespace): New.
|
|
(push_nested_namespace, pop_nested_namespace): Reimplement.
|
|
|
|
Cleanup using-directives
|
|
gcc/cp/
|
|
* cp-tree.h (LOOKUP_MARKED_P): Rename from NAME_MARKED_P, update all.
|
|
* name-lookup.h (finish_toplevel_using_directive,
|
|
finish_local_using_directive): Declare.
|
|
(do_using_directive, parse_using_directive): Delete.
|
|
* name-lookup.c (do_using_directive): Delete.
|
|
(do_toplevel_using_directive): Reimplement.
|
|
(do_local_using_directive, do_local_using_directive_1): New.
|
|
(parse_using_directive): Delete.
|
|
(push_using_directive, push_using_directive_1): Delete.
|
|
(finish_toplevel_using_directive, finish_local_using_directive): New.
|
|
* pt.c (tsubst_expr): Adjust.
|
|
* parser.c (cp_parser_using_directive): Adjust.
|
|
|
|
Kill strong using
|
|
gcc/
|
|
* doc/extend.texi (Namespace Association): Document removal.
|
|
gcc/cp/
|
|
* name-lookup (parse_using_directive): Remove strong handling.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/strong-using-6.C: New.
|
|
|
|
2017-03-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Simplify ADL part 2
|
|
gcc/cp
|
|
* cp-tree.h (RECORD_MARKED_P): New.
|
|
* tree.c (ovl_lookup_keep): Allow NULL.
|
|
* name-lookup.c (struct adl_lookup): New.
|
|
(struct arg_lookup): Delete.
|
|
|
|
2017-03-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/
|
|
* tree.h (TREE_CHECK6): New.
|
|
(tree_check6): New.
|
|
gcc/cp/
|
|
* cp-tree.h (NAME_MARKED_P): Add UNION_TYPE.
|
|
* name-lookup.c (arg_lookup): Replace namespace & class vectors
|
|
with visited.
|
|
(arg_assoc_namespace, arg_assoc_class): Use NAME_MARKED_P.
|
|
(lookup_arg_dependent_1): Unmark namespaces and classes.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (ovl2_iterator::operator++): Tweak.
|
|
|
|
Simplify ADL part 1
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_LOOKUP_P, NAME_MARKED_P): New.
|
|
(OVL_TRANSIENT_P): Morph into ...
|
|
(OVL_USED_P): ... this.
|
|
(ovl_add_transient): Kill.
|
|
(ovl_maybe_keep): Replace with ...
|
|
(ovl_lookup_keep): ... this.
|
|
(ovl_lookup_mark, ovl_lookup_add): Declare.
|
|
* tree.c (ovl_add): Rename arg. Set OVL_LOOKUP_P.
|
|
(ovl_add_transient): Kill.
|
|
(ovl_lookup_mark, ovl_lookup_add): New.
|
|
(ovl_maybe_keep): Rename to ...
|
|
(ovl_lookup_keep): ... this. Adjust.
|
|
* name-lookup.c (name_lookup::add): Use ovl_add directly.
|
|
(struct arg_lookup): Kill args and fn_set.
|
|
(add_function): Replace with ...
|
|
(add_functions): ... this.
|
|
(arg_assoc_namespace, arg_assoc_class_only): Use it.
|
|
(lookup_arg_dependent_1): Use new API.
|
|
* pt.c (tsubst_copy): Assert OVERLOAD is marked used.
|
|
* semantics.c (finish_call_expr): Adjust.
|
|
|
|
2017-03-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Fixup transient_p bug
|
|
gcc/cp/
|
|
* tree.c (ovl_add): Set TRANSIENT_P here.
|
|
(ovl_add_transient): Not here.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (type_unknown_p): Make inline. Lose TREE_LIST case.
|
|
* tree.c (type_unknown_p): Delete.
|
|
* name-lookup.c (arg_assoc): Lose TREE_LIST case.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_P, OVL_PLURAL_P): New.
|
|
* name-lookup.c (name_lookup::add, diagnose_name_conflict,
|
|
pushdecl_maybe_friend_1, push_overloaded_decl_1,
|
|
do_nonmember_using_decl, push_class_level_binding_1,
|
|
set_decl_namespace, lookup_arg_dependent_1): Use OVL_P.
|
|
|
|
Two dimensional OVERLOADs
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_FIRST): Call ovl_first.
|
|
(ovl_iterator): Add allow_inner, adjust.
|
|
(ovl2_iterator): New.
|
|
(ovl_first): New.
|
|
* name-lookup.c (name_lookup::add): Create 2d overload.
|
|
(do_nonmember_using_decl): 2D overload.
|
|
(lookup_arg_dependent_1, cp_emit_debug_info_for_using): Likewise.
|
|
* call.c (add_candidates): Likewise.
|
|
* class.c (resolve_address_of_overloaded_function): Likewise.
|
|
* parser.c (cp_parser_template_name): Likewise.
|
|
* pt.c (type_dependent_expression_p): Likewise.
|
|
(print_candidates_1): Likewise.
|
|
* ptree.c (cxx_print_xnode): Allow inner overload.
|
|
* semantics.c (finish_call_expr): Keep overload, 2D overload.
|
|
* tree.c (ovl_scope): Allow inner overload.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/using57.C: New.
|
|
|
|
2017-03-22 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (lookup_qualified_name): Unwrap singleton
|
|
overload.
|
|
(lookup_name_real_1): Remove ovl_hidden assert.
|
|
(lookup_arg_dependent_1): Don't skip hidden here.
|
|
* parser.c (cp_parser_lookup_name): Don't unwrap singleton
|
|
overload here.
|
|
|
|
2017-03-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (lookup_name_real_1): Don's skip hidden here.
|
|
Simplify singleton overload extraction.
|
|
* tree.c (ovl_add): Assert no unexpected 2 dimensional overloads.
|
|
gcc/
|
|
* system.h (ATTRIBUTE_NTC_PURE): Define.
|
|
* tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Use it.
|
|
|
|
Refactor lookup part 1
|
|
gcc/cp/
|
|
* name-lookup.c (struct name_lookup): New.
|
|
(struct scope_binding): Delete.
|
|
(EMPTY_SCOPE_BINDING): Delete.
|
|
(build_ambigious): New.
|
|
(name_lookup::add): New.
|
|
(do_nonmember_using_decl): Take pointer to cxx_binding. Adjust.
|
|
(do_local_using_decl, do_toplevel_using_decl): Adjust.
|
|
(merge_functions, same_entity_p, ambiguous_decl): Delete.
|
|
(suggest_alternatives_for): Adjust lookup functions.
|
|
(unqualified_namespace_lookup_1): Use name_lookup.
|
|
(lookup_qualified_name): Likewise.
|
|
(lookup_using_namespace, qualified_lookup_using_namespace): Take a
|
|
name_lookup.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/using17.C: Adjust error message.
|
|
|
|
Keep hidden overloads at start of OVERLOAD list
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_HIDDEN_P): New.
|
|
(ovl_iterator::hidden_p, unhide): New.
|
|
(DECL_HIDDEN_P): New.
|
|
(hidden_name_p, remove_hidden_names): Delete.
|
|
(ovl_skip_hidden): Declare.
|
|
* decl.c (builtin_function_1): Set DECL_ANTICIPATED before
|
|
pushing.
|
|
(xref_tag_1): Replace hidden_name_p with DECL_HIDDEN_P.
|
|
* name-lookup.c (anticipated_builtin_p,
|
|
skip_anticipated_buitins): New.
|
|
(supplement_binding_1): Use anticipated_builtin_p.
|
|
(replace_local_overload_binding): New. Broken out of
|
|
augment_local_overload_binding.
|
|
(fixup_unhidden_decl): New.
|
|
(pushdecl_maybe_friend_1): Deal with unhiding decl. Set
|
|
DECL_ANTICIPATED before really pushing.
|
|
(augment_local_overload_binding): Call replace_local_overload_binding.
|
|
(push_overloaded_decl_1): Deal with unhiding decl.
|
|
(do_nonmember_using_decl): Use anticipated_builtin_p.
|
|
(ambiguous_decls): Use ovl_skip_hidden.
|
|
(lookup_name_real_1): Use DECL_HIDDEN_P, ovl_skip_hidden.
|
|
(arg_assoc_namespace): Use DECL_HIDDEN_P.
|
|
(lookup_arg_dependent_1): Use ovl_skip_hidden.
|
|
* pt.c (instantiate_class_template): Use DECL_HIDDEN_P.
|
|
* tree.c (ovl_move_unhidden): New.
|
|
(ovl_add): Deal with hiddenness.
|
|
(ovl_add_transient): Adjust.
|
|
(hidden_name_p, remove_hidden_names): Delete.
|
|
(ovl_skip_hidden): New.
|
|
(ovl_iterator::ovl_unhide): New.
|
|
gcc/testsuite/
|
|
* g++.dg/lookup/friend19.C: New.
|
|
* g++.dg/lookup/using56.C: New.
|
|
|
|
2017-03-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
New OVERLOAD representation part 6
|
|
gcc/cp/
|
|
* cp-tree.h: Move ovl handling fns to original location.
|
|
* tree.c (ovl_add): Use ovl_make.
|
|
(ovl_add_transient): Use ovl_add.
|
|
|
|
New OVERLOAD representation part 5
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_NEXT): Delete. Update uses.
|
|
(OVL_CHAIN): Check for overload.
|
|
|
|
New OVERLOAD representation part 4
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_CURRRENT): Delete.
|
|
(ovl_make): Declare.
|
|
* tree.c (ovl_make): New.
|
|
* constraint.cc (finish_shorthand_constraint): Use ovl_make.
|
|
* typeck.c (build_x_unary_op): Likewise.
|
|
|
|
New OVERLOAD representation part 3
|
|
gcc/cp/
|
|
* cp-tree.h: Remove OVLNEW pieces.
|
|
* tree.c: Likewise.
|
|
|
|
New OVERLOAD representation part 2
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_VIA_USING_P, OVL_TRANSIENT_P, OVL_SINGLE_P): New
|
|
names.
|
|
* error.c, name-lookup.c, parser.c, search.c, tree.c: Adjust uses.
|
|
|
|
2017-03-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
New OVERLOAD representation part 1
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_LENGTH, OVL_USINGS, OVL_FIRST, OVL_NAME,
|
|
OVL_SINGLE, OVL_ELT, OVL_HAS_USING, OVL_HAS_HIDDEN): New.
|
|
(ovl_iterator): Implement new-style iterator.
|
|
* tree.c (tree_ovl_elt_check_failed): New.
|
|
(ovl_maybe_keep): Fixup bracing.
|
|
(ovl_scope): Add new smarts.
|
|
|
|
Vectorize OVERLOAD part 9
|
|
gcc/cp/
|
|
* cp-tree.h (build_new_function_call): Lose koenig_p arg.
|
|
(OVL_HAS_USING): New.
|
|
* call.c (build_new_function_call): Lose koenig_p arg.
|
|
* name-lookup.c (augment_local_overload_binding): New. Broken out
|
|
of ...
|
|
(push_overloaded_decl_1): ... here. Call it.
|
|
(do_nonmember_using_decl): Lose augment arg.
|
|
(do_local_using_decl): Use augment_local_overload_binding.
|
|
(do_toplevel_using_decl): Adjust do_nonmember_using_decl call.
|
|
* search.c (lookup_field_r): Use OVL_HAS_USING.
|
|
* pt.c (do_class_deduction): Adjust build_new_function_call call.
|
|
* semantics.c (finish_call_expr): Likewise.
|
|
|
|
Vectorize OVERLOAD part 8
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_add_transient): Declare.
|
|
* tree.c (ovl_add_transient): New.
|
|
(remove_hidden_names): Build transient.
|
|
* name-lookup.c (do_nonmember_using_decl): Add AUGMENT parm,
|
|
adjust.
|
|
(do_local_using_decl): Ask for newvals from
|
|
do_nonmember_using_decl, iterate over that list.
|
|
(do_toplevel_using_decl): Ask for augmented vals.
|
|
(add_function): Return void. Remove extraneous
|
|
checks. Update callers.
|
|
* semantics.c (finish_call_expr): Always call ovl_maybe_keep.
|
|
|
|
Vectorize OVERLOAD part 7
|
|
gcc/cp/
|
|
* name-lookup.c (hidden_name_p, remove_hidden_names): Move
|
|
declarations to ...
|
|
* cp-tree.h (hidden_name_p, remove_hidden_names): ... here.
|
|
* call.c (build_new_function_call): Remove hidden pruning.
|
|
* name-lookup.c (hidden_name_p, remove_hidden_names): Move to
|
|
tree.c.
|
|
(lookup_name_real_1): Adjust hidden_name_p call.
|
|
(lookup_arg_dependent_1): Adjust remove_hidden_names call.
|
|
* tree.c (hidden_name_p, remove_hidden_names): Moved from
|
|
name-lookup.h. Adjust.
|
|
|
|
Vectorize OVERLOAD part 6
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_TRANSIENT): Rename from OVL_ARG_DEPENDENT.
|
|
* tree.c (ovl_maybe_keep): Adjust.
|
|
* name-lookup.c (set_namespace_binding_1): Use OVL_SINGLE.
|
|
(lookup_name_real_1): Use OVL_FIRST.
|
|
(add_function): Set OVL_TRANSIENT.
|
|
(lookup_arg_dependent_1): Use OVL_FIRST.
|
|
(cp_emit_debug_info_for_using): Use iterator.
|
|
|
|
Add OVERLOAD iterator part 8
|
|
gcc/cp/
|
|
* name-lookup.c (do_nonmember_using_decl): Use iterators
|
|
|
|
Add OVERLOAD iterator part 7
|
|
gcc/cp/
|
|
* name-lookup.c (pushdecl_maybe_friend_1): Use OVL_FIRST.
|
|
(push_overloaded_decl_1): Use iterators.
|
|
(consider_binding_level): Use OVL_FIRST.
|
|
|
|
2017-03-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Add OVERLOAD iterator part 6
|
|
gcc/cp/
|
|
* decl2.c (check_class_fn): Use iterators.
|
|
* semantics.c (omp_reduction_lookup): Likewise.
|
|
(finish_omp_reduction_clause): Don't OVL_FIRST here.
|
|
|
|
Vectorize OVERLOAD part 5
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_maybe_keep): Declare.
|
|
* tree.c (ovl_maybe_keep): New.
|
|
* semantics.c (finish_call_expr): Call it.
|
|
(finish_omp_clauses): Use new accessrs.
|
|
* class.c (handle_using_decl): Use new accessors.
|
|
(resolve_address_of_overloaded_function): Likewise.
|
|
* pt.c (print_candidates_1, print_candidates): Reimplement.
|
|
|
|
Vectorize OVERLOAD part 5
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_SINGLE): New.
|
|
* constraint.cc (resove_constraint_check): Use new iterator.
|
|
(normalize_template_id_expression): Use OVL_FIRST.
|
|
* cvt.c (build_expr_type_conversions): Likewise.
|
|
* error.c (dump_decl): Use OVL_SINGLE.
|
|
* parser.c (cp_parser_nested_name_specifier_opt): Likewise.
|
|
* tree.c (is_overloaded_fn): Likewise.
|
|
|
|
Add OVERLOAD iterator part 5
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_iterator::via_using_p): New.
|
|
(ovl_iterator::replace): New.
|
|
(clone_function_decl): Add via_using parm.
|
|
* tree.c (ovl_iterator::replace): New.
|
|
* class.c (add_method): Use ovl_iterator.
|
|
(clone_function_decl): Add via_using parm. Pass it to add_method.
|
|
(clone_costructors_and_destructors): Pass via_using.
|
|
* pt.c (tsubst_decl, instantiate_template_1): Update
|
|
clone_function_decl call.
|
|
|
|
Change add_method signature
|
|
gcc/cp/
|
|
* cp-tree.h (add_method): Change 3rd arg.
|
|
* class.c (add_method): Change 3rd arg to bool. Update.
|
|
(handle_using_decl, one_inheriting_sig, one_inherited_ctor,
|
|
clone_function_decl, finish_struct): Update add_method calls.
|
|
* lambda.c (maybe_add_lambda_conv_op): Likewise.
|
|
* method.c (lazily_declare_fn): Likewise.
|
|
* semantics.c (finish_member_declaration): Likewise.
|
|
|
|
2017-03-13 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Kill get_first_fn part 3
|
|
gcc/cp/
|
|
* cp-tree.h (get_first_fn): Delete.
|
|
* pt.c (iterative_hash_template_arg, tsubst_copy_and_build): Use
|
|
get_ovl.
|
|
(tsubst_baselink): Use OVL_NAME.
|
|
* typeck.c (invalid_nonstatic_memfn_p, build_x_unary_op,
|
|
cp_build_addr_expr_1): Use get_ovl.
|
|
(finish_class_member_access_expr): Use OVL_NAME.
|
|
* tree.c (dependent_name): Recode.
|
|
(get_first_fn): Delete.
|
|
|
|
Kill get_first_fn part 2
|
|
gcc/cp/
|
|
* cp-tree.h (get_ovl): Add want_first parm, make pure.
|
|
* constexpr.c (potential_constant_expression_1): Adjust get_ovl.
|
|
* lambda.c (lambda_function): Likewise.
|
|
* error.c (dump_decl): Use identifier_p.
|
|
* mangle.c (write_expression): Use OVL_NAME.
|
|
* name-lookup.c (pushdecl_class_level): Likewise.
|
|
* parser.c (cp_parser_postfix_expression,
|
|
cp_parser_expression_statement, cp_parser_direct_declarator,
|
|
cp_parser_constructor_declarator_p): Use get_ovl.
|
|
* search.c (lookup_member0: Likewise.
|
|
* typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
|
|
* semantics.c (perform_koenig_lookup): Use OVL_NAME.
|
|
(finish_call_expr, finish_id_expression): Use get_ovl.
|
|
* tree.c (get_ovl): Add want_first arg, adjust.
|
|
|
|
Kill get_first_fn part 1
|
|
gcc/cp/
|
|
* call.c (add_list_candidates, build_new_method_call_1): Use
|
|
OVL_FIRST directly.
|
|
* constraint.cc (function_concept_check_p): Likewise.
|
|
* name-lookup.c (validate_nonmember_using_decl): Likewise.
|
|
* constexpr.c (potential_constant_expression_1): Use ovl_fns &
|
|
OVL_FIRST.
|
|
* lambda.c (lambda_function): Likewise.
|
|
* decl.c (grokdeclarator): Use OVL_NAME.
|
|
* error.c (dump_decl): Likewise.
|
|
* friend.c (do_friend): Likewise.
|
|
* mangle.c (write_expression): Likewise.
|
|
|
|
Kill get_fns
|
|
gcc/cp/
|
|
* cp-tree.h (get_ovl): New.
|
|
(get_fns): Delete.
|
|
* parser.c (cp_parser_nested_name_specifier_opt): Update.
|
|
* search.c (shared_member_p): Update.
|
|
* semantics.c (omp_reduction_lookup): Update.
|
|
|
|
Kill ovl_cons
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_cons): Delete.
|
|
* tree.c (ovl_cons): Delete.
|
|
* class.c (add_method): Use ovl_add.
|
|
* name-lookup.c (push_overloaded_decl_1): Likewise.
|
|
* pt.c (check_explicit_specialization, do_class_deduction): Likewise.
|
|
* typeck.c (build_x_unary_op): Likewise.
|
|
|
|
Kill build_overload
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_add): Declare.
|
|
(build_overload): Delete.
|
|
* tree.c (ovl_add): New.
|
|
(build_overload): Delete.
|
|
* class.c (add_method): Use ovl_add.
|
|
* constraint.cc (finish_shorthand_constraint): Likewise.
|
|
* name-lookup.c (do_nonmember_using_decl, merge_functions,
|
|
remove_hidden_names, add_function): Likewise.
|
|
* pt.c (make_constrained_auto): Likewise.
|
|
|
|
Rename OVL_USED
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_USED): Rename to ...
|
|
(OVL_VIA_USING): ... here.
|
|
* class.c (add_method): Update.
|
|
* tree.c (ovl_scope): Update.
|
|
* search.c (lookup_field_r): Update.
|
|
* name-lookup.c (push_overloaded_decl_1,
|
|
do_nonmember_using_decl): Update.
|
|
|
|
Add OVERLOAD iterator part 4
|
|
gcc/cp/
|
|
* tree.c (cp_tree_equal): Use ovl_iterator.
|
|
|
|
Vectorize OVERLOAD part 4
|
|
gcc/cp/
|
|
* cp-tree.h (ovl_iterator::ref): New.
|
|
* semantics.c (finish_omp_reduction_clause): Use OVL_FIRST.
|
|
* tree.c (is_overloaded_fn, get_fns): Likewise.
|
|
|
|
2017-03-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Vectorize OVERLOAD part 3
|
|
gcc/cp/
|
|
* search.c (lookup_field_fuzzy_info::fuzzy_lookup_fn,
|
|
lookup_conversion_operator, lookup_fnfields_idx_nolazy,
|
|
lookup_conversions_r): Use new accessors.
|
|
|
|
Vectorize OVERLOAD part 2
|
|
gcc/cp/
|
|
* decl2.c (mark_used): Use new accessors.
|
|
* dump.c (cp_dump_tree): Likewise.
|
|
* error.c (dump_decl, dump_expr, location_of): Likewise.
|
|
* init.c (build_offset_ref): Likewise.
|
|
* parser.c (cp_parser_nested_name_specifier_opt,
|
|
cp_parser_lookup_name): Likewise.
|
|
* pt.c (check_explicit_specialization, check_template_shadow,
|
|
tsubst_baselink): Likewise.
|
|
* ptree.c (cxx_print_xnode): Likewise.
|
|
|
|
Vectorize OVERLOAD part 1
|
|
gcc/cp/
|
|
* cp-tree.h (OVL_FIRST, OVL_NAME): New accessors.
|
|
* call.c (build_user_type_conversion_1,
|
|
print_error_for_call_failure, add_candidates): Use them.
|
|
* class.c (method_name_cmp, resort_method_name_cmp,
|
|
resort_type_method_vec, finish_struct_methods, warn_hidden,
|
|
resolve_address_of_overloaded_function,
|
|
note_name_declared_in_class): Likwise.
|
|
* cxx-pretty-print.c (pp_cxx_unqualified_id, pp_cxx_qualified_id,
|
|
cxx_pretty_printer::id_expression,
|
|
cxx_pretty_printer::expression): Likewise.
|
|
* decl.c (poplevel): Likewise.
|
|
* mangle.c (write_member_name): Likewise.
|
|
* method.c (strip_inheriting_ctors): Likewise.
|
|
* typeck.c (cp_build_addr_expr_1): Likewise.
|
|
|
|
Makefile-supplied timestamp.
|
|
gcc/cp
|
|
* Make-lang.in: Provide MODULE_STAMP.
|
|
* module.c (cpm_stream::version): Use MODULE_STAMP, not __DATE__ &
|
|
__TIME__.
|
|
|
|
Add OVERLOAD iterator part 3
|
|
gcc/cp/
|
|
* name-lookup.c (pushdecl_maybe_friend_1,
|
|
lookup_extern_c_fun_in_all_ns, c_linkage_bindings,
|
|
set_decl_namespace, pushdecl_top_level_and_finish (tree x,
|
|
merge_functions, remove_hidden_names, arg_assoc_namespace,
|
|
arg_assoc, lookup_arg_dependent_1, cp_emit_debug_info_for_using):
|
|
Use new iterator.
|
|
* pt.c (retrieve_specialization, iterative_hash_template_arg,
|
|
determine_specialization, check_explicit_specialization,
|
|
resolve_overloaded_unification, resolve_nondeduced_context,
|
|
type_dependent_expression_p, dependent_template_p,
|
|
do_class_deduction): Likewise.
|
|
|
|
Add OVERLOAD iterator part 2
|
|
gcc/cp/
|
|
* class.c (handle_using_decl,
|
|
maybe_warn_about_overly_private_class, modify_all_vtables,
|
|
get_basefndecls, warn_hidden, add_implicitly_declared_members,
|
|
adjust_clone_args, deduce_noexcept_on_destructors, default_ctor_p,
|
|
in_class_defaulted_default_constructor, user_provided_p,
|
|
type_has_user_provided_constructor,
|
|
type_has_user_provided_or_explicit_constructor,
|
|
type_has_virtual_destructor, type_has_move_constructor,
|
|
type_has_move_assign, type_has_user_declared_move_constructor,
|
|
type_build_ctor_call, type_build_dtor_call,
|
|
type_requires_array_cookie, explain_non_literal_class,
|
|
finish_struct, resolve_address_of_overloaded_function): Use new
|
|
iterator.
|
|
* decl2.c (maybe_warn_sized_delete): Likewise.
|
|
* parser.c (cp_parser_template_name): Tweak loop exit test.
|
|
* semantics.c (finish_call_expr): Likewise.
|
|
* typeck.c (check_template_keyword): Likewise.
|
|
|
|
Add OVERLOAD iterator, part 1
|
|
Add MAYBE_BASELINK_FUNCTIONS
|
|
gcc/cp/
|
|
* cp-tree.h (struct ovl_iterator): New.
|
|
(MAYBE_BASELINK_FUNCTIONS): New.
|
|
* call.c (build_op_call_1, add_candidates,
|
|
build_op_delete_call): Use new iterator.
|
|
* lambda.c (maybe_generic_this_capture): Likewise.
|
|
* method.c (inherited_ctor_binfo, binfo_inherited_from): Likewise.
|
|
* parser.c (lookup_literal_operator,
|
|
cp_parser_template_name): Likewise.
|
|
* search.c (shared_member_p, look_for_overrides_here,
|
|
lookup_conversions_r): Likewise.
|
|
* semantics.c (finish_call_expr,
|
|
classtype_has_nothrow_assign_or_copy_p): Likewise.
|
|
* typeck.c (check_template_keyword): Likewise.
|
|
* tree.c (is_overloaded_fn, get_fns): Use MAYBE_BASELINK_FUNCTIONS.
|
|
|
|
gcc/cp/
|
|
* gcc/cp/cp-tree.h (NAMESPACE_CHECK): Delete.
|
|
(MODULE_NAMESPACE_P, GLOBAL_MODULE_NAMESPACE,
|
|
NAMESPACE_INLINE_P): Adjust.
|
|
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Protect DEFAULT_CXXFLAGS.
|
|
|
|
2017-03-06 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Add crc checkpointing.
|
|
gcc/cp/
|
|
* module.c (cpm_serial::crc): New.
|
|
(cpm_serial::bit_flush): Compute crc.
|
|
(cpm_serial::crc_unsigned_n, crc_buffer, crc_unsigned): New.
|
|
(cpm_reader::checkpoint, cpm_writer::checkpoint): New.
|
|
(cpm_reader, cpm_writer): Add checkpointing to io.
|
|
(cpms_in, cpms_out): Likewise.
|
|
|
|
2017-03-05 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Optimize crc. Push to trunk
|
|
gcc/
|
|
* tree.h (crc32_unsigned_n): Declare.
|
|
(crc32_unsigned, crc32_unsigned): Make inline.
|
|
* tree.c (crc32_unsigned_bits): Replace with ...
|
|
(crc32_unsigned_n): ... this.
|
|
(crc32_unsigned, crc32_byte): Remove.
|
|
(crc32_string): Remove unnecessary braces.
|
|
|
|
2017-03-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Redo bool read/write
|
|
gcc/cp/
|
|
* module.c (cpm_serial::bit_flush): New.
|
|
(cpm_writer::bytes4, cpm_writer::bflush: New.
|
|
(cpm_reader::bytes4, cpm_reader::bflush, cpm_reader::bfill): New.
|
|
(cpm_reader::fill): Rename from reserve. Update callers.
|
|
(cpm_writer::b, cpm_reader::b): Reimplement.
|
|
(cpm_writer::flush_bits, cpm_reader::flush_bits): Delete.
|
|
(cpms_out::write_tree_ary, cpms_in::read_tree_ary): Call bflush.
|
|
(cpms_out::write_tree, cpms_in::read_tree): Likewise.
|
|
|
|
Cleanup test pruning. Push to trunk.
|
|
gcc/testsuite/g++.dg
|
|
* g++-dg.exp (find-cxx-tests): New.
|
|
(main): Call it to discover direct tests rather than explicit pruning.
|
|
|
|
2017-03-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Cleanup retrofit_lang_decl. Push to trunk.
|
|
gcc/cp/
|
|
* cp-tree.h (add_lang_decl_raw, add_lang_type_raw): Rename.
|
|
* lex.c (maybe_add_lang_decl_raw, maybe_add_lang_type_raw): Return
|
|
bool. Don't assert.
|
|
(retrofit_lang_decl, cxx_make_type): Adjust.
|
|
* module.c (cpms_in::read_tree): Verify lang_decl/type insertion
|
|
valid.
|
|
* class.c (alter_access): Directly call retrofit_lang_decl.
|
|
* decl.c (push_local_name, duplicate_decls): Likewise.
|
|
* pt.c (push_template_decl_real, txubs_omp_clauses): Likewise.
|
|
* semantics.c (omp_privatize_field): Likewise.
|
|
|
|
Renaming stuff.
|
|
gcc/cp/
|
|
* module.c: Remove anon namespace, rename seriator, reader,
|
|
writer, streamer, in & out.
|
|
|
|
2017-03-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Black triangle achieved
|
|
gcc/cp/
|
|
* cp-tree.h (GLOBAL_MODULE_NAMESPACE_P): New.
|
|
(add_lang_decl_raw, add_lang_type_raw): Declare.
|
|
* lex.c (add_lang_decl_raw): New. Broken out of ...
|
|
(retrofit_lang_decl): ... here. Call it.
|
|
(add_lang_type_raw): New. Broken out of ...
|
|
(cxx_make_type): ... here. Call it.
|
|
* module.c (out::write_decl_lang_bools, in::read_decl_lang_bools): New.
|
|
(in::~in, in::set_scope): Correct.
|
|
(out::write_tree, in::read_tree): Start lang_type/decl handling.
|
|
(in::finish_type): Fix canonical type handling.
|
|
(in::finish_function): Insert into symbol table.
|
|
(in::finish_function): Preserve scope.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp: Add link & execute capability.
|
|
* g++.dg/modules/mod-decl-2_b.C: Remove XFAILs.
|
|
* g++.dg/modules/mod-decl-2_c.C: Remove XFAILs.
|
|
* g++.dg/modules/mod-impl-1_a.C: New.
|
|
* g++.dg/modules/mod-impl-1_b.C: New.
|
|
* g++.dg/modules/mod-impl-1_c.C: New.
|
|
* g++.dg/modules/mod-impl-1_d.C: New.
|
|
|
|
2017-02-17 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* module.c (in::finish_type): New.
|
|
(in::finish): Call it.
|
|
(out::write_core_vals, in::read_core_vals): Ensure canonical_type
|
|
and type_main_variant are dumped early.
|
|
gcc/testsuite/
|
|
* g++/modules/mod-exp-1_b.C: Extend.
|
|
|
|
Canonicalize canonical type hashing
|
|
gcc/
|
|
* tree.h (type_hash_default): Declare.
|
|
* tree.c (type_hash_list, attribute_hash_list): Move into
|
|
type_hash_default.
|
|
(build_type_attribute_qual_variant): Break out hash code calc into
|
|
type_hash_default.
|
|
(type_hash_default): New. Generic type hash computation.
|
|
(build_range_type_1, build_array_type_1, build_function_type,
|
|
build_method_type_directly, build_offset_type, build_complex_type,
|
|
make_vector_type): Call it.
|
|
gcc/c-family/
|
|
* c-common.c (complete_array_type): Use type_hash_default.
|
|
|
|
2017-02-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Namespace decls!
|
|
gcc/cp/
|
|
* module.c (out::write_tree_ary, in::read_tree_ary): New.
|
|
(out::tag_trees, in::tag_trees): Repurpose.
|
|
(in::finish_namespace, in::finish_function): New.
|
|
(out::write_tree, in::read_tree): Adjust.
|
|
(in::finish): Adjust.
|
|
|
|
Some actual tree writing & reading
|
|
gcc/cp/
|
|
* module.c (out::write_core_bools, out::write_core_vals): New.
|
|
(in::read_core_bools, in::read_core_vals): New.
|
|
(in::set_scope): New.
|
|
(out::write_tree, in::read_tree): Call core readers/writers.
|
|
|
|
Node length & allocation. Global trees.
|
|
gcc/cp/
|
|
* module.c (streamer::tags): Rename to ...
|
|
(streamer::record_tag): ... here. Fixup.
|
|
(out::tag_trees, out::start, out::write_loc): New.
|
|
(in::tag_trees, in::start, in::finish, in::read_loc): New.
|
|
(out::write_tree, in::read_tree): Adjust.
|
|
(write_module): Write global trees.
|
|
|
|
2017-02-15 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Start of tree reading & writing. Module namespace fix.
|
|
gcc/cp/
|
|
* cp-tree.h (pop_module_namespace, push_module_namespace): Add flag.
|
|
* parser.c (check_module_outermost, cp_parser_module_export,
|
|
cp_parser_module_proclamation, cp_parser_namespace_definition): Adjust.
|
|
* module.c (pop_module_namespace, push_module_namespace): Add
|
|
flag.
|
|
(reader::read_tree, writer::write_tree): Initial stubs.
|
|
(read_module, write_module, do_import_module, declare_module): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-exp-1_a.C: New.
|
|
* g++.dg/modules/mod-exp-1_b.C: New.
|
|
* g++.dg/modules/mod-sym-1.C: Add cases.
|
|
|
|
2017-02-14 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* Make-lang.in (CFLAGS-cp/module.o): New var.
|
|
* module.c (reader): Add peek_u.
|
|
(reader::str): Force ending NUL.
|
|
(writer::flush_bits): Avoid infinite recursion.
|
|
(streamer): Extend tags, add next.
|
|
(out, in): Add some readers/writers.
|
|
(read_module, do_import_module, write_module): Augment.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-imp-1_a.C
|
|
* g++.dg/modules/mod-imp-1_b.C
|
|
* g++.dg/modules/mod-imp-1_c.C
|
|
* g++.dg/modules/mod-imp-1_d.C
|
|
|
|
2017-02-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Start actually writing & reading module files. (headers only)
|
|
gcc/cp/
|
|
* module.c (seriator, reader, writer, streamer, in, out): New
|
|
classes.
|
|
(read_module, do_import_module, write_module, finish_module): Adjust.
|
|
|
|
gcc/
|
|
* gengtype-lex.l (<in_struct>): Add '/'.
|
|
|
|
2017-02-09 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Dump file
|
|
gcc/
|
|
* dumpfile.h (tree_dump_index): Add TDI_lang.
|
|
(TDF_LANG): New.
|
|
* dumpfile.c (dump_files): Add front-end.
|
|
(dump_option_value_info): Add lang. Adjust all.
|
|
gcc/cp/
|
|
* cp-tree.h (import_module): Lose is_export parm.
|
|
* module.c: Include dumpfile.h
|
|
(dopen, dclose): New.
|
|
(import_add): Absorb into ...
|
|
(do_import_module): ... here. Broken out of ...
|
|
(import_module): ... here. Call it.
|
|
(export_module, declare_module): Adjust.
|
|
(read_module, write_module): Write dump.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-1.C: Adjust.
|
|
* g++.dg/modules/mod-decl-2_b.C: Adjust.
|
|
* g++.dg/modules/mod-decl-5_b.C: Adjust.
|
|
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_CHECK): New.
|
|
(NAMESPACE_MODULE_P): Rename to ...
|
|
(MODULE_NAMESPACE_P): ... here.
|
|
(CURRENT_MODULE_NAMESPACE_P): New.
|
|
(MODULE_EXPORT_P): New.
|
|
(import_module): Add is_export param.
|
|
* module.c (mstream, mfname): Delete.
|
|
(imported_modules): Make hash_map.
|
|
(enum import_kind): New.
|
|
(push_module_namespace, pop_module_namespace): Adjust.
|
|
(import_add, import_module, export_module): Adjust.
|
|
(read_module, write_module): New.
|
|
(declare_module, finish_module): Adjust.
|
|
* name-lookup.c (is_ancestor): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-5_b.C: Adjust
|
|
* g++.dg/modules/modules.exp: Remote host, tweak module deletion.
|
|
|
|
2017-02-08 Nathan Sidwell <nathan@acm.org>
|
|
|
|
gcc/cp/
|
|
* name-lookup.c (is_ancestor): Pop from module namespace root.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-sym-3.C: New.
|
|
|
|
Module namespaces
|
|
gcc/cp/
|
|
* cp-tree.h (NAMESPACE_MODULE_P): New.
|
|
(push_module_namespace, pop_module_namespace): Declare.
|
|
* module.c (MOD_SYM_PFX, MOD_SYM_DOT): New.
|
|
(module_namespace_name): New.
|
|
(push_module_namespace, pop_module_namespace): New.
|
|
(module_to_ext): New. Broken out of ...
|
|
(module_to_filename): ... here. Call it.
|
|
(declare_module): Push to module namespace.
|
|
* parser.c (check_module_outermost): Deal with module namespace.
|
|
(cp_parser_module_export, cp_parser_module_proclaimation,
|
|
cp_parser_namespace_definition): Likewise.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-1.C: Adjust.
|
|
* g++.dg/modules/mod-sym-1.C: New.
|
|
* g++.dg/modules/mod-sym-2.C: New.
|
|
|
|
Cleanup inline namespace creation.
|
|
gcc/cp/
|
|
* name-lookup.h (make_namespace_inline): Declare.
|
|
* name-lookup.c (do_toplevel_using_directive): New.
|
|
(do_using_directive): Call it.
|
|
(make_namespace_inline): New.
|
|
* parser.c (cp_parser_namespace_definition): Call it.
|
|
|
|
2017-02-07 Nathan Sidwell <nathan@acm.org>
|
|
|
|
PR c++/79369 inline namespaces
|
|
gcc/cp/
|
|
* cp-tree.h (NAMESPACE_CHECK): New.
|
|
(NAMESPACE_INLINE_P): New.
|
|
* name-lookup.h (push_namespace): Return int.
|
|
* name-lookup.c (push_namespace): Return int. Adjust.
|
|
* parser.c (cp_parser_namespace_definition): Reorder nested
|
|
parsing. Check inline redefinition.
|
|
gcc/testsuite/
|
|
* g++.dg/cpp0x/pr65558.C: Adjust error loc.
|
|
* g++.dg/cpp0x/pr79369.C: New.
|
|
* g++.dg/cpp1z/nested-namespace-def1.C: Adjust.
|
|
|
|
2017-02-03 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Module files open/closed. Testsuite extension
|
|
gcc/cp/
|
|
* module.c (mstream, mfname): New.
|
|
(module_to_filename): New.
|
|
(import_module, declare_module, finish_module): Open/close module file.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/modules.exp (mod_spec_to_file, dg-module-if,
|
|
check_module_specs, cleanup_module_files): New.
|
|
* g++.dg/modules/mod-decl-0.C: Adjust
|
|
* g++.dg/modules/mod-decl-1.C: Adjust
|
|
* g++.dg/modules/mod-decl-2_a.C: Adjust
|
|
* g++.dg/modules/mod-decl-3.C: New.
|
|
* g++.dg/modules/mod-decl-3_a.C: Delete.
|
|
* g++.dg/modules/mod-decl-3_b.C: Delete.
|
|
* g++.dg/modules/mod-decl-4.C: Adjust
|
|
* g++.dg/modules/mod-decl-5_a.C: Adjust
|
|
* g++.dg/modules/mod-decl-5_b.C: Adjust
|
|
* g++.dg/modules/proclaim-1.C: Adjust
|
|
|
|
Module names are identifiers.
|
|
gcc/cp/
|
|
* config-lang.in (gtfiles): Add modules.c.
|
|
* c-tree.h (module_name_t): Delete.
|
|
(finish_module): Declare.
|
|
* decl2.c (c_pare_final_cleanups): Call finish_module.
|
|
* module.c: Change module_name_t to tree.
|
|
(imported_module): Hash of module names.
|
|
(import_add): New.
|
|
(import_module, declare_module): Use it.
|
|
(export_module): Import module.
|
|
(finish_module): New.
|
|
* parser.c (cp_parser_module_name): Build up identifier. Adjust
|
|
callers.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-0.C: Adjust.
|
|
* g++.dg/modules/mod-decl-1.C: Adjust.
|
|
* g++.dg/modules/mod-decl-2_b.C: Adjust.
|
|
* g++.dg/modules/mod-decl-2_c.C: New.
|
|
* g++.dg/modules/mod-decl-5_a.C: New.
|
|
* g++.dg/modules/mod-decl-5_b.C: New.
|
|
|
|
2017-02-02 Nathan Sidwell <nathan@acm.org>
|
|
|
|
[[interface]]
|
|
gcc/cp
|
|
* cp-tree.h: Adjust module interface fns.
|
|
* modules.c (is_interface): New.
|
|
(push_module_export, pop_module_export, module_exporting_level):
|
|
Adjust.
|
|
(module_proclaim): Delete.
|
|
(module_interface_p): New.
|
|
(declare_module): Use 'interface' attrib.
|
|
(mport_module, export_module): Take attribs.
|
|
* parser.c (check_module_outermost, cp_parser_module_declaration,
|
|
cp_parser_module_export, cp_parser_module_proclamation): Adjust.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-2_a.C: Adjust.
|
|
* g++.dg/modules/mod-decl-3_a.C: Adjust.
|
|
* g++.dg/modules/proclaim-1.C: Adjust.
|
|
* g++.dg/modules/mod-decl-4.C: New.
|
|
|
|
2017-01-27 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Parse proclaimed ownership.
|
|
gcc/cp/
|
|
* cp-tree.h (module_exporting_p, module_proclaim): Declare.
|
|
* module.c (proclaimer): New.
|
|
(module_exporting_p, module_proclaim): New.
|
|
* parser.c (check_module_outermost): New.
|
|
(cp_parser_module_declaration, cp_parser_module_export): Call it.
|
|
(cp_parser_module_proclamation): New.
|
|
(cp_parser_declaration): Add proclaimed-ownership.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/proclaim-1.C: New.
|
|
|
|
Parse import & export. Test infra.
|
|
gcc/cp/
|
|
* cp-tree.h (module_purview_p, push_module_export,
|
|
pop_module_export, declare_module, import_module,
|
|
export_module): Declare.
|
|
* module.c (export_depth): New.
|
|
(module_purview_p, push_module_export, pop_module_export): New
|
|
(declare_module_name): Renme to ...
|
|
(declare_module): ... here.
|
|
(import_module, export_module): Stubs.
|
|
* parser.c (cp_parser_module_declaration): Add IS_EXPORT
|
|
parm. Deal with imports & exports.
|
|
(cp_parser_module_export): New.
|
|
(cp_parser_declaration): Allow module import, export.
|
|
gcc/testsuite/
|
|
* g++.dg/dg.exp: Prune module tests.
|
|
* g++.dg/modules/modules.exp: New.
|
|
* g++.dg/modules/mod-decl-2_[ab].C: New.
|
|
* g++.dg/modules/mod-decl-3_[ab].C: New.
|
|
|
|
2017-01-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Parse module-declaration.
|
|
gcc/cp
|
|
* cp-tree.h (module_name_t): Typedef.
|
|
(declare_module_name): Declare.
|
|
* parser.c (cp_parser_diagnose_invalid_type_name): Explain
|
|
fmodules.
|
|
(cp_parser_module_name, cp_parser_module_declaration): New.
|
|
(cp_parser_declaration): Add module-declaration.
|
|
* module.c (declared_module, module_location): New.
|
|
(declare_module_name): Define.
|
|
gcc/testsuite/
|
|
* g++.dg/modules/mod-decl-0.C: New.
|
|
* g++.dg/modules/mod-decl-1.C: New.
|
|
|
|
New flag & keywords, etc
|
|
gcc/c-family/
|
|
* c-common.c (c_common_reswords): Add 'module', 'import'.
|
|
* c-common.h (enum rid): Add RID_MODULE, RID_IMPORT.
|
|
(D_CXX_MODULES, D_CXX_MODULES_FLAGS) New.
|
|
* c-cppbuiltins.c (c_cpp_builtins): Add _cpp_modules define.
|
|
* c.opt: Add fmodules flag.
|
|
gcc/cp/
|
|
* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add module.o.
|
|
* module.c: New file.
|
|
gcc/
|
|
* doc/invoke.texi (-fmodules): Document it.
|
|
|
|
2017-01-24 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Free up TREE_LANG_FLAG_3. DECL_CONSTRUCTION_VTABLE_P is useless.
|
|
gcc/cp/
|
|
* cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): Delete.
|
|
(DECL_NON_TRIVIALLY_INITIALIZED_P): Move to TREE_LANG_FLAG_6.
|
|
* class.c (build_ctor_vtbl_group): Don't set
|
|
DECL_CONSTRUCTION_VTABLE_P.
|
|
* decl2.c (determine_visibility_from_class): Don't check
|
|
DECL_CONSTRUCTION_VTABLE_P anymore.
|
|
|
|
2017-01-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Branch creation from trunk:244828
|
|
Use this Changelog for all branch changes, including merges.
|
|
|
|
Local Variables:
|
|
mode: change-log
|
|
change-log-default-name: "ChangeLog.modules"
|
|
End:
|