1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/LTO/Resolution/X86
Fangrui Song 2174d3b961 [LTO] Add SelectionKind to IRSymtab and use it in ld.lld/LLVMgold
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
2021-07-20 13:22:00 -07:00
..
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 [LTO] Add SelectionKind to IRSymtab and use it in ld.lld/LLVMgold 2021-07-20 13:22:00 -07:00
type-checked-load.ll