mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
69b4df22e0
Summary: We hit undefined references building with ThinLTO when one source file contained explicit instantiations of a template method (weak_odr) but there were also implicit instantiations in another file (linkonce_odr), and the latter was the prevailing copy. In this case the symbol was marked hidden when the prevailing linkonce_odr copy was promoted to weak_odr. It led to unsats when the resulting shared library was linked with other code that contained a reference (expecting to be resolved due to the explicit instantiation). Add a CanAutoHide flag to the GV summary to allow the thin link to identify when all copies are eligible for auto-hiding (because they were all originally linkonce_odr global unnamed addr), and only do the auto-hide in that case. Most of the changes here are due to plumbing the new flag through the bitcode and llvm assembly, and resulting test changes. I augmented the existing auto-hide test to check for this situation. Reviewers: pcc Subscribers: mehdi_amini, inglorion, eraman, dexonsmith, arphaman, dang, llvm-commits, steven_wu, wmi Tags: #llvm Differential Revision: https://reviews.llvm.org/D59709 llvm-svn: 360466 |
||
---|---|---|
.. | ||
afdo.prof | ||
alias-1.ll | ||
available-externally.ll | ||
bcsection.s | ||
cache.ll | ||
comdat2.ll | ||
comdat.ll | ||
common2.ll | ||
common3.ll | ||
common_thinlto.ll | ||
common.ll | ||
cspgo.proftext | ||
ctors2.ll | ||
drop-debug.bc | ||
drop-linkage.ll | ||
global_with_section.ll | ||
invalid.bc | ||
irmover-error.ll | ||
linker-script.export | ||
linkonce_odr_unnamed_addr.ll | ||
linkonce-weak.ll | ||
mixed_lto.ll | ||
multiple-data.ll | ||
pr19901-1.ll | ||
resolve-to-alias.ll | ||
start-lib-common.ll | ||
thinlto_alias.ll | ||
thinlto_archive1.ll | ||
thinlto_archive2.ll | ||
thinlto_cspgo_bar.ll | ||
thinlto_emit_linked_objects.ll | ||
thinlto_empty.ll | ||
thinlto_funcimport.ll | ||
thinlto_internalize.ll | ||
thinlto_linkonceresolution.ll | ||
thinlto_weak_library1.ll | ||
thinlto_weak_library2.ll | ||
thinlto_weak_resolution.ll | ||
thinlto.ll | ||
type-merge2.ll | ||
type-merge.ll | ||
visibility.ll | ||
weak.ll |