diff options
author | Nathan Sidwell <nathan@acm.org> | 2017-07-21 00:27:51 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2017-07-21 00:27:51 +0000 |
commit | 5aaa8fb40681ee66282d73dab8c8eccbf5ee0518 (patch) | |
tree | 9eb091e90a6d0a753271dc34499ed1179b3527ca /gcc/dwarf2out.c | |
parent | 61612fa5daee514e736102d0bdfb5a4eec391430 (diff) | |
download | gcc-5aaa8fb40681ee66282d73dab8c8eccbf5ee0518.zip gcc-5aaa8fb40681ee66282d73dab8c8eccbf5ee0518.tar.gz gcc-5aaa8fb40681ee66282d73dab8c8eccbf5ee0518.tar.bz2 |
Remove TYPE_METHODS.
gcc/
Remove TYPE_METHODS.
* tree.h (TYPE_METHODS): Delete.
* dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
* dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
(dbxout_type_methods): Scan TYPE_FIELDS.
(dbxout_type): Don't check TYPE_METHODS here.
* function.c (use_register_for_decl): Always ignore register for
class types when not optimizing.
* ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
* tree.c (free_lang_data_in_type): Stitch out member functions and
templates from TYPE_FIELDS.
(build_distinct_type_copy, verify_type_variant,
verify_type): Member fns are on TYPE_FIELDS.
* tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
* tree-pretty-print.c (dump_generic_node): Likewise.
gcc/cp/
Remove TYPE_METHODS.
* class.c (maybe_warn_about_overly_private_class,
finish_struct_methods, one_inheriting_sig, count_fields,
add_fields_to_record_type, check_field_decls, check_methods,
clone_function_decl, set_method_tm_attributes,
finalize_literal_type_property, check_bases_and_members,
create_vtable_ptr, determine_key_method,
unreverse_member_declarations, finish_struct,
add_vcall_offset_vtbl_entries_1): Member fns are on TYPE_FIELDS.
* decl.c (fixup_anonymous_aggr): Likewise.
* decl2.c (reset_type_linkage_2): Likewise.
* method.c (after_nsdmi_defaulted_late_checks,
lazily_declare_fn): Likewise.
* optimize.c (maybe_thunk_body, maybe_clone_body): Likewise.
* pt.c (instantiate_class_template_1, tsubst_expr,
do_type_instantiation, instantiate_pending_templates): Likewise.
* search.c (lookup_field_1): Likewise.
* semantics.c (finish_member_declaration,
finish_omp_declare_simd_methods): Likewise.
gcc/c-family/
Remove TYPE_METHODS.
* c-ada-spec.c (is_tagged_type, has_nontrivial_methods,
dump_ada_template, print_ada_methods,
print_ada_declaration): Member fns are on TYPE_FIELDS.
gcc/objc/
Remove TYPE_METHODS.
* objc-runtime-shared-support.c (build_ivar_list_initializer):
Don't presume first item is a FIELD_DECL.
gcc/testsuite/
* g++.dg/ext/anon-struct6.C: Adjust diag.
* g++.old-deja/g++.other/anon4.C: Adjust diag.
libcc1/
Remove TYPE_METHODS.
* libcp1plugin.cc (plugin_build_decl): Member fns are on TYPE_FIELDS.
From-SVN: r250413
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 72d2c58..66103d7 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -24032,7 +24032,8 @@ gen_member_die (tree type, dw_die_ref context_die) { tree member; tree binfo = TYPE_BINFO (type); - dw_die_ref child; + + gcc_assert (TYPE_MAIN_VARIANT (type) == type); /* If this is not an incomplete type, output descriptions of each of its members. Note that as we output the DIEs necessary to represent the @@ -24069,13 +24070,16 @@ gen_member_die (tree type, dw_die_ref context_die) && (lang_hooks.decls.decl_dwarf_attribute (member, DW_AT_inline) != -1)); + /* Ignore clones. */ + if (DECL_ABSTRACT_ORIGIN (member)) + continue; + /* If we thought we were generating minimal debug info for TYPE and then changed our minds, some of the member declarations may have already been defined. Don't define them again, but do put them in the right order. */ - child = lookup_decl_die (member); - if (child) + if (dw_die_ref child = lookup_decl_die (member)) { /* Handle inline static data members, which only have in-class declarations. */ @@ -24103,6 +24107,7 @@ gen_member_die (tree type, dw_die_ref context_die) static_inline_p = false; } } + if (child->die_tag == DW_TAG_variable && child->die_parent == comp_unit_die () && ref == NULL) @@ -24141,23 +24146,6 @@ gen_member_die (tree type, dw_die_ref context_die) DECL_EXTERNAL (member) = old_extern; } } - - /* We do not keep type methods in type variants. */ - gcc_assert (TYPE_MAIN_VARIANT (type) == type); - /* Now output info about the function members (if any). */ - if (TYPE_METHODS (type) != error_mark_node) - for (member = TYPE_METHODS (type); member; member = DECL_CHAIN (member)) - { - /* Don't include clones in the member list. */ - if (DECL_ABSTRACT_ORIGIN (member)) - continue; - - child = lookup_decl_die (member); - if (child) - splice_child_die (context_die, child); - else - gen_decl_die (member, NULL, NULL, context_die); - } } /* Generate a DIE for a structure or union type. If TYPE_DECL_SUPPRESS_DEBUG |