mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
2174d3b961
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 when `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. Differential Revision: https://reviews.llvm.org/D106228 |
||
---|---|---|
.. | ||
Archive.h | ||
ArchiveWriter.h | ||
Binary.h | ||
COFF.h | ||
COFFImportFile.h | ||
COFFModuleDefinition.h | ||
CVDebugRecord.h | ||
Decompressor.h | ||
ELF.h | ||
ELFObjectFile.h | ||
ELFTypes.h | ||
Error.h | ||
FaultMapParser.h | ||
IRObjectFile.h | ||
IRSymtab.h | ||
MachO.h | ||
MachOUniversal.h | ||
MachOUniversalWriter.h | ||
Minidump.h | ||
ModuleSymbolTable.h | ||
ObjectFile.h | ||
RelocationResolver.h | ||
StackMapParser.h | ||
SymbolicFile.h | ||
SymbolSize.h | ||
TapiFile.h | ||
TapiUniversal.h | ||
Wasm.h | ||
WindowsMachineFlag.h | ||
WindowsResource.h | ||
XCOFFObjectFile.h |