http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60567

--- Comment #14 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
OK, the problem is that one comdat group has two functions:
_ZNK19MutableIntegerValue18isValidNativeValueEi/0 (isValidNativeValue)
@0x7ffff6adfe18
  Type: function definition analyzed
  Visibility: forced_by_abi externally_visible public weak
comdat_group:_ZNK19MutableIntegerValue18isValidNativeValueEi one_only
section_name:.text._ZNK19MutableIntegerValue18isValidNativeValueEi virtual
  Same comdat group as: _ZThn8_NK19MutableIntegerValue18isValidNativeValueEi/2
  Address is taken.
  Aux: @0x1  References: 
  Referring: *.LTHUNK0/1 (alias)_ZTV19MutableIntegerValue/3 (addr)
  Read from file: t.o
  Availability: available
  First run: 0
  Function flags:
  Called by: 
  Calls: 

and 

_ZThn8_NK19MutableIntegerValue18isValidNativeValueEi/2
(_ZThn8_NK19MutableIntegerValue18isValidNativeValueEi) @0x7ffff6c64148
  Type: function definition analyzed
  Visibility: externally_visible public weak
comdat_group:_ZNK19MutableIntegerValue18isValidNativeValueEi one_only
section_name:.text._ZNK19MutableIntegerValue18isValidNativeValueEi virtual
artificial
  Same comdat group as: _ZNK19MutableIntegerValue18isValidNativeValueEi/0
  Address is taken.
  Aux: @0x1  References: 
  Referring: _ZTV19MutableIntegerValue/3 (addr)
  Read from file: t.o
  Availability: overwritable
  First run: 0
  Function flags:
  Thunk fixed offset -8 virtual value 0 has virtual offset 0)
  Called by: 
  Calls: *.LTHUNK0/1 (1.00 per call) 

Thunk doesn't have forced_by_abi. This makes the partitinoning code to deal
with the comdat in two ways - duplicating into every partion that use it as
well as keying it to one partition.

This looks to me as C++ FE bug: When function is forced (keyed), its thunk
should also be forced IMO. It doesn't seem to make sense to keep function but
optimize out the thunk as we would do now (even w/o LTO)

Reply via email to