[Bug ipa/68851] [6 Regression] ICE: in set_comdat_group, at ipa-comdats.c:213

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Dec 14 12:23:00 GMT 2015


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


More information about the Gcc-bugs mailing list