diff options
Diffstat (limited to 'llvm/lib/LTO/LTO.cpp')
-rw-r--r-- | llvm/lib/LTO/LTO.cpp | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index 51b7e7d13c7..df19ded398d 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -199,14 +199,11 @@ void llvm::thinLTOResolveWeakForLinkerInIndex( static void thinLTOInternalizeAndPromoteGUID( GlobalValueSummaryList &GVSummaryList, GlobalValue::GUID GUID, - function_ref<SummaryResolution(StringRef, GlobalValue::GUID)> isExported) { + function_ref<bool(StringRef, GlobalValue::GUID)> isExported) { for (auto &S : GVSummaryList) { - auto ExportResolution = isExported(S->modulePath(), GUID); - if (ExportResolution != Internal) { + if (isExported(S->modulePath(), GUID)) { if (GlobalValue::isLocalLinkage(S->linkage())) S->setLinkage(GlobalValue::ExternalLinkage); - if (ExportResolution == Hidden) - S->setAutoHide(); } else if (!GlobalValue::isLocalLinkage(S->linkage())) S->setLinkage(GlobalValue::InternalLinkage); } @@ -216,7 +213,7 @@ static void thinLTOInternalizeAndPromoteGUID( // as external and non-exported values as internal. void llvm::thinLTOInternalizeAndPromoteInIndex( ModuleSummaryIndex &Index, - function_ref<SummaryResolution(StringRef, GlobalValue::GUID)> isExported) { + function_ref<bool(StringRef, GlobalValue::GUID)> isExported) { for (auto &I : Index) thinLTOInternalizeAndPromoteGUID(I.second, I.first, isExported); } @@ -924,20 +921,11 @@ Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache, const GlobalValueSummary *S) { return ThinLTO.PrevailingModuleForGUID[GUID] == S->modulePath(); }; - auto isExported = [&](StringRef ModuleIdentifier, - GlobalValue::GUID GUID) -> SummaryResolution { + auto isExported = [&](StringRef ModuleIdentifier, GlobalValue::GUID GUID) { const auto &ExportList = ExportLists.find(ModuleIdentifier); - if ((ExportList != ExportLists.end() && ExportList->second.count(GUID)) || - ExportedGUIDs.count(GUID)) { - // We could do better by hiding when a symbol is in - // GUIDPreservedSymbols because it is only referenced from regular LTO - // or from native files and not outside the final binary, but that's - // something the native linker could do as gwell. - if (GUIDPreservedSymbols.count(GUID)) - return Exported; - return Hidden; - } - return Internal; + return (ExportList != ExportLists.end() && + ExportList->second.count(GUID)) || + ExportedGUIDs.count(GUID); }; thinLTOInternalizeAndPromoteInIndex(ThinLTO.CombinedIndex, isExported); |