D68041 placed __profc_, __profd_ and (if exists) __profvp_ in different comdat groups.
There are some issues:
- Cost: one or two additional section headers (.group section(s)): 64 or 128 bytes on ELF64.
- __profc_, __profd_ and (if exists) __profvp_ should be retained or discarded. Placing them into separate comdat groups is conceptually inferior.
- If the prevailing group does not include __profvp_ (value profiling not used) but a non-prevailing group from another translation unit has __profvp_ (the function is inlined into another and triggers value profiling), there will be a stray __profvp_ if --gc-sections is not enabled. This has been fixed by 3d6f53018f845e893ad34f64ff2851a2e5c3ba1d.
Actually, we can reuse an existing symbol (we choose __profd_) as the group signature to avoid a string in the string table (the sole reason
that D68041 could improve code size is that __profv_ was an otherwise unused symbol
which wasted string table space).