forked from OSchip/llvm-project
37b80122bd
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 |
||
---|---|---|
.. | ||
Inputs | ||
bad-read-from-vtable.ll | ||
branch-funnel-threshold.ll | ||
branch-funnel.ll | ||
constant-arg.ll | ||
devirt-single-impl-check.ll | ||
devirt-single-impl.ll | ||
expand-check.ll | ||
export-nothing.ll | ||
export-single-impl.ll | ||
export-uniform-ret-val.ll | ||
export-unique-ret-val.ll | ||
export-unsuccessful-checked.ll | ||
export-vcp.ll | ||
import-indir.ll | ||
import-no-dominating-assume.ll | ||
import.ll | ||
non-constant-vtable.ll | ||
pointer-vtable.ll | ||
soa-vtable.ll | ||
struct-vtable.ll | ||
uniform-retval-invoke.ll | ||
uniform-retval.ll | ||
unique-retval.ll | ||
vcp-accesses-memory.ll | ||
vcp-decl.ll | ||
vcp-no-this.ll | ||
vcp-non-constant-arg.ll | ||
vcp-too-wide-ints.ll | ||
vcp-type-mismatch.ll | ||
vcp-uses-this.ll | ||
virtual-const-prop-begin.ll | ||
virtual-const-prop-check.ll | ||
virtual-const-prop-end.ll | ||
vtable-decl.ll |