https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68851
--- Comment #4 from Jan Hubicka <hubicka at ucw dot cz> --- > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68851 > > --- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- > So the mentioned revision is responsible for creation of a new consprop clone: > > IPA decision stage: > ... > - Creating a specialized node of virtual bool > blink::HTMLFormControlElement::isFormControlElement() const/14820 for all > known > contexts. > ... > IPA constant propagation end This is fine. At this point we should have the clone and thunks associated with it that are local and have no compdat group. > > > and the symbol is identified to be set to a comdat group in ipa-comdats.c:365: > > if (is_a <cgraph_node *> (symbol)) > dyn_cast <cgraph_node > *>(symbol)->call_for_symbol_thunks_and_aliases > (set_comdat_group_1, > *comdat_head_map.get (group), > true); > > as the function calls 'set_comdat_group_1' for the constprop cloned function, > the original function of the clone is thunk and calls the clone. So that > set_comdat_group_1 > is called for the original function: > > _ZThn96_NK5blink22HTMLFormControlElement20isFormControlElementEv/14822 > (virtual > bool > blink::HTMLFormControlElement::_ZThn96_NK5blink22HTMLFormControlElement20isFormControlElementEv() > const) @0x7fffeb51b8a0 > Type: function definition analyzed > Visibility: externally_visible asm_written public weak comdat > comdat_group:_ZNK5blink22HTMLFormControlElement20isFormControlElementEv > one_only > section:.text._ZNK5blink22HTMLFormControlElement20isFormControlElementEv > (implicit_section) virtual artificial > Same comdat group as: > _ZNK5blink22HTMLFormControlElement20isFormControlElementEv.constprop.39/31390 > Aux: @0x1 References: > Referring: > Availability: available > First run: 0 > Function flags: nonfreeing_fn > Thunk fixed offset -96 virtual value 0 has virtual offset 0) > Called by: > Calls: > _ZNK5blink22HTMLFormControlElement20isFormControlElementEv.constprop.39/31390 > (1.00 per call) (can throw external) When do we put _ZNK5blink22HTMLFormControlElement20isFormControlElementEv.constprop.39 to the same comdat group? Perhaps we forget to clear comdat groups after cloning? Honza > > constprop clone: > > _ZNK5blink22HTMLFormControlElement20isFormControlElementEv.constprop.39/31390 > (<built-in>) @0x7fffe8bc6000 > Type: function definition analyzed > Visibility: > comdat_group:_ZNK5blink22HTMLFormControlElement20isFormControlElementEv > Same comdat group as: > _ZNK5blink22HTMLFormControlElement20isFormControlElementEv/14820 > previous sharing asm name: 31394 > References: > Referring: > Clone of _ZNK5blink22HTMLFormControlElement20isFormControlElementEv/14820 > Availability: local > First run: 0 > Function flags: local nonfreeing_fn > Called by: > _ZThn96_NK5blink22HTMLFormControlElement20isFormControlElementEv/14822 (1.00 > per call) (can throw external) > Calls: > > Problem is that the original function has already set comdat_group here: > > #0 symtab_node::set_comdat_group (this=0x7fffeb51b8a0, group=0x7fffeb4dc620) > at ../../gcc/cgraph.h:220 > #1 0x0000000000a53972 in symtab_node::add_to_same_comdat_group > (this=0x7fffeb51b8a0, old_node=0x7fffeb51b5c0) at ../../gcc/symtab.c:461 > #2 0x00000000008d05e2 in use_thunk (thunk_fndecl=0x7fffeb4ec7e0, emit_p=true) > at ../../gcc/cp/method.c:396 > #3 0x00000000008e2979 in emit_associated_thunks (fn=0x7fffeb4dc620) at > ../../gcc/cp/semantics.c:4080 > #4 0x00000000008e2cb8 in expand_or_defer_fn (fn=0x7fffeb4dc620) at > ../../gcc/cp/semantics.c:4178 > #5 0x000000000087a103 in cp_parser_function_definition_after_declarator > (parser=0x7ffff7feeb40, inline_p=true) at ../../gcc/cp/parser.c:25212 > #6 0x000000000087b772 in cp_parser_late_parsing_for_member > (parser=0x7ffff7feeb40, member_function=0x7fffeb4dc620) at > ../../gcc/cp/parser.c:26033 > #7 0x00000000008745f7 in cp_parser_class_specifier_1 (parser=0x7ffff7feeb40) > at ../../gcc/cp/parser.c:21412 > #8 0x00000000008746bb in cp_parser_class_specifier (parser=0x7ffff7feeb40) at > ../../gcc/cp/parser.c:21438 > #9 0x000000000086b65b in cp_parser_type_specifier (parser=0x7ffff7feeb40, > flags=1, decl_specs=0x7fffffffd6b0, is_declaration=true, > declares_class_or_enum=0x7fffffffd634, is_cv_qualifier=0x7fffffffd633) at > ../../gcc/cp/parser.c:15736 > #10 0x0000000000867008 in cp_parser_decl_specifier_seq (parser=0x7ffff7feeb40, > flags=1, decl_specs=0x7fffffffd6b0, declares_class_or_enum=0x7fffffffd6ac) at > ../../gcc/cp/parser.c:12657 > #11 0x0000000000866645 in cp_parser_simple_declaration (parser=0x7ffff7feeb40, > function_definition_allowed_p=true, maybe_range_for_decl=0x0) at > ../../gcc/cp/parser.c:12200 > #12 0x00000000008665cd in cp_parser_block_declaration (parser=0x7ffff7feeb40, > statement_p=false) at ../../gcc/cp/parser.c:12147 > #13 0x000000000086634f in cp_parser_declaration (parser=0x7ffff7feeb40) at > ../../gcc/cp/parser.c:12044 > #14 0x0000000000865e7b in cp_parser_declaration_seq_opt > (parser=0x7ffff7feeb40) > at ../../gcc/cp/parser.c:11923 > #15 0x000000000086e172 in cp_parser_namespace_body (parser=0x7ffff7feeb40) at > ../../gcc/cp/parser.c:17505 > #16 0x000000000086e113 in cp_parser_namespace_definition > (parser=0x7ffff7feeb40) at ../../gcc/cp/parser.c:17482 > #17 0x000000000086624d in cp_parser_declaration (parser=0x7ffff7feeb40) at > ../../gcc/cp/parser.c:12024 > #18 0x0000000000865e7b in cp_parser_declaration_seq_opt > (parser=0x7ffff7feeb40) > at ../../gcc/cp/parser.c:11923 > #19 0x0000000000857aaa in cp_parser_translation_unit (parser=0x7ffff7feeb40) > at > ../../gcc/cp/parser.c:4246 > #20 0x00000000008993b6 in c_parse_file () at ../../gcc/cp/parser.c:37268 > #21 0x00000000009b64a4 in c_common_parse_file () at > ../../gcc/c-family/c-opts.c:1064 > #22 0x0000000000ead6a1 in compile_file () at ../../gcc/toplev.c:464 > #23 0x0000000000eafb58 in do_compile () at ../../gcc/toplev.c:1977 > #24 0x0000000000eafdd7 in toplev::main (this=0x7fffffffdb10, argc=16, > argv=0x7fffffffdc18) at ../../gcc/toplev.c:2084 > #25 0x00000000017d099b in main (argc=16, argv=0x7fffffffdc18) at > ../../gcc/main.c:39 > > Martin > > -- > You are receiving this mail because: > You are on the CC list for the bug.