[PGO] Don't use comdat groups for counters & data on COFF
authorReid Kleckner <rnk@google.com>
Tue, 17 Sep 2019 21:10:49 +0000 (21:10 +0000)
committerReid Kleckner <rnk@google.com>
Tue, 17 Sep 2019 21:10:49 +0000 (21:10 +0000)
commit23e872a3d0548dac30b5d282506198dddfe89b2a
tree9bb149cb2be3ef9f6f1b2521a3101d27c680b88a
parent0c8e4a2e0d42b6af8a98e5f2b212f2a4954f5f95
[PGO] Don't use comdat groups for counters & data on COFF

For COFF, a comdat group is really a symbol marked
IMAGE_COMDAT_SELECT_ANY and zero or more other symbols marked
IMAGE_COMDAT_SELECT_ASSOCIATIVE. Typically the associative symbols in
the group are not external and are not referenced by other TUs, they are
things like debug info, C++ dynamic initializers, or other section
registration schemes. The Visual C++ linker reports a duplicate symbol
error for symbols marked IMAGE_COMDAT_SELECT_ASSOCIATIVE even if they
would be discarded after handling the leader symbol.

Fixes coverage-inline.cpp in check-profile after r372020.

llvm-svn: 372182
llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
llvm/test/Instrumentation/InstrProfiling/PR23499.ll
llvm/test/Instrumentation/InstrProfiling/comdat.ll
llvm/test/Instrumentation/InstrProfiling/linkage.ll