From 33d844b804fc9d4d73ad66558dcc8d456c147623 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Wed, 20 Feb 2019 00:26:01 +0000 Subject: [PATCH] [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 --- include/llvm/LTO/LTO.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/llvm/LTO/LTO.h b/include/llvm/LTO/LTO.h index 1f9d764f068..ab4d874b55e 100644 --- a/include/llvm/LTO/LTO.h +++ b/include/llvm/LTO/LTO.h @@ -139,6 +139,7 @@ public: using irsymtab::Symbol::getCOFFWeakExternalFallback; using irsymtab::Symbol::getSectionName; using irsymtab::Symbol::isExecutable; + using irsymtab::Symbol::isUsed; }; /// A range over the symbols in this InputFile.