In PGO, a C++ external linkage function foo has a private counter
__profc_foo and a private __profd_foo in a comdat nodeduplicate.
A __attribute__((weak)) function foo has a weak hidden counter __profc_foo
and a private __profd_foo in a comdat nodeduplicate.
In ld.lld a.o b.o, say a.o defines an external linkage foo and b.o
defines a weak foo. Currently we treat comdat nodeduplicate as comdat any,
ld.lld will incorrectly consider b.o:__profc_foo non-prevailing. In the worst
case b.o:__profd_foo is retained and b.o:__profc_foo isn't there will be
dangling reference causing an undefined hidden symbol error.
Add SelectionKind to Comdat in IRSymtab and let linkers ignore nodeduplicate comdat.
Can this FIXME be removed now? Or are there more improvements needed?