mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +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 |
||
---|---|---|
.. | ||
Inputs | ||
alias-alias.ll | ||
alias.ll | ||
appending-var.ll | ||
asm-output.ll | ||
available-externally.ll | ||
cache-dso-local2.ll | ||
cache-dso-local.ll | ||
cache-prevailing.ll | ||
comdat-mixed-lto.ll | ||
comdat.ll | ||
common2.ll | ||
commons.ll | ||
dead-strip-alias.ll | ||
dead-strip-fulllto.ll | ||
diagnostic-handler-remarks-with-hotness.ll | ||
diagnostic-handler-remarks.ll | ||
empty-bitcode.test | ||
export-jumptable-noncanonical.ll | ||
export-jumptable.ll | ||
function-alias-non-prevailing.ll | ||
ifunc2.ll | ||
ifunc.ll | ||
intrinsic.ll | ||
link-odr-availextern.ll | ||
linker-redef-thin.ll | ||
linker-redef.ll | ||
linkonce.ll | ||
lit.local.cfg | ||
load-sample-prof-icp.ll | ||
load-sample-prof-lto.ll | ||
load-sample-prof.ll | ||
local-def-dllimport.ll | ||
lowertypetests.ll | ||
lto-unit-check.ll | ||
mixed_lto.ll | ||
mod-asm-used.ll | ||
multi-thinlto.ll | ||
not-prevailing-alias.ll | ||
not-prevailing-variables.ll | ||
not-prevailing-weak-aliasee.ll | ||
not-prevailing.ll | ||
setting-dso-local.ll | ||
symtab-elf.ll | ||
symtab.ll | ||
type-checked-load.ll |