[lld-link] preserve @llvm.used symbols in LTO
authorBob Haarman <llvm@inglorion.net>
Wed, 20 Feb 2019 00:26:01 +0000 (00:26 +0000)
committerBob Haarman <llvm@inglorion.net>
Wed, 20 Feb 2019 00:26:01 +0000 (00:26 +0000)
commit61e8735f17fd81aac20abb1775efbbbaea97893a
tree2ada958f774382708a6a02f6d317ba1197ad66cd
parent8e21c08593deb5d29c896c7ed02611307fe0c038
[lld-link] preserve @llvm.used symbols in LTO

Summary:
We translate @llvm.used to COFF by generating /include directives
in the .drectve section. However, in LTO links, this happens after
directives have already been processed, so the new directives do
not take effect. This change marks @llvm.used symbols as GCRoots
so that they are preserved as intended.

Fixes PR40733.

Reviewers: rnk, pcc, ruiu

Reviewed By: ruiu

Subscribers: mehdi_amini, steven_wu, dexonsmith, dang, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58255

llvm-svn: 354410
lld/COFF/InputFiles.cpp
lld/test/COFF/used-lto.ll [new file with mode: 0644]
llvm/include/llvm/LTO/LTO.h