https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68851
--- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> --- Thanks Markus for reduction of the test-case. For the minimized test, the constrop clone has properly unset a comdat group. Comdat group for the node: _ZNK1G20isFormControlElementEv.constprop.0/10 (<built-in>) @0x7ffff6a2f170 Type: function definition analyzed Visibility: previous sharing asm name: 11 References: Referring: Clone of _ZNK1G20isFormControlElementEv/1 Availability: local First run: 0 Function flags: local icf_merged nonfreeing_fn Called by: _ZThn8_NK1G20isFormControlElementEv/3 (1.00 per call) (can throw external) Calls: is set here: #0 ipa_comdats () at ../../gcc/ipa-comdats.c:367 #1 0x00000000013fcc93 in (anonymous namespace)::pass_ipa_comdats::execute (this=0x21abfc0) at ../../gcc/ipa-comdats.c:412 #2 0x0000000000c43564 in execute_one_pass (pass=pass@entry=0x21abfc0) at ../../gcc/passes.c:2336 #3 0x0000000000c44252 in execute_ipa_pass_list (pass=0x21abfc0) at ../../gcc/passes.c:2756 #4 0x000000000095d33a in ipa_passes () at ../../gcc/cgraphunit.c:2300 #5 symbol_table::compile (this=this@entry=0x7ffff68d10a8) at ../../gcc/cgraphunit.c:2386 #6 0x000000000095fe68 in compile (this=0x7ffff68d10a8) at ../../gcc/cgraphunit.c:2520 #7 symbol_table::finalize_compilation_unit (this=0x7ffff68d10a8) at ../../gcc/cgraphunit.c:2546 #8 0x0000000000d0b6e0 in compile_file () at ../../gcc/toplev.c:489 #9 0x00000000006023d1 in do_compile () at ../../gcc/toplev.c:1977 #10 toplev::main (this=this@entry=0x7fffffffdb80, argc=argc@entry=13, argv=argv@entry=0x7fffffffdc88) at ../../gcc/toplev.c:2084 #11 0x00000000006045c7 in main (argc=13, argv=0x7fffffffdc88) at ../../gcc/main.c:39 As I mentioned, the assert is triggered for a node we create clone of (_ZNK1G20isFormControlElementEv/1), which has the comdat group already set (by FE). I'm wondering, when creating a clone of a thunk, whether cgraph_node::thunk should not be duplicated? Martin