From ae050afeb9b15d98b6a6b11de28431eee2bb0857 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Thu, 14 Sep 2017 00:40:14 +0000 Subject: Revert r313157 "ThinLTO: Correctly follow aliasee references when dead stripping." This broke Chromium's CFI build; see crbug.com/765004. > We were previously handling aliases during dead stripping by adding > the aliased global's "original name" GUID to the worklist. This will > lead to incorrect behaviour if the global has local linkage because > the original name GUID will not correspond to the global's GUID in > the summary. > > Because an alias is just another name for the global that it > references, there is no need to mark the referenced global as used, > or to follow references from any other copies of the global. So all > we need to do is to follow references from the aliasee's summary > instead of the alias. > > Differential Revision: https://reviews.llvm.org/D37789 llvm-svn: 313222 --- llvm/lib/Transforms/IPO/FunctionImport.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'llvm/lib/Transforms') diff --git a/llvm/lib/Transforms/IPO/FunctionImport.cpp b/llvm/lib/Transforms/IPO/FunctionImport.cpp index b043687f898..da763b18d4d 100644 --- a/llvm/lib/Transforms/IPO/FunctionImport.cpp +++ b/llvm/lib/Transforms/IPO/FunctionImport.cpp @@ -488,14 +488,17 @@ void llvm::computeDeadSymbols( while (!Worklist.empty()) { auto VI = Worklist.pop_back_val(); for (auto &Summary : VI.getSummaryList()) { - GlobalValueSummary *Base = Summary.get(); - if (auto *AS = dyn_cast(Base)) - Base = &AS->getAliasee(); - for (auto Ref : Base->refs()) + for (auto Ref : Summary->refs()) visit(Ref); - if (auto *FS = dyn_cast(Base)) + if (auto *FS = dyn_cast(Summary.get())) for (auto Call : FS->calls()) visit(Call.first); + if (auto *AS = dyn_cast(Summary.get())) { + auto AliaseeGUID = AS->getAliasee().getOriginalName(); + ValueInfo AliaseeVI = Index.getValueInfo(AliaseeGUID); + if (AliaseeVI) + visit(AliaseeVI); + } } } Index.setWithGlobalValueDeadStripping(); -- cgit v1.2.3