Revert "[ThinLTO] Add an auto-hide feature"

This reverts commit r293918, one lld test does not pass.

llvm-svn: 293961
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp
index db02531..bf30fec 100644
--- a/llvm/lib/LTO/LTO.cpp
+++ b/llvm/lib/LTO/LTO.cpp
@@ -203,14 +203,11 @@
 
 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);
   }
@@ -220,7 +217,7 @@
 // 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);
 }
@@ -954,20 +951,11 @@
                             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);
 
diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
index b62db61..104fb19 100644
--- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -234,16 +234,16 @@
 
 // Convert the PreservedSymbols map from "Name" based to "GUID" based.
 static DenseSet<GlobalValue::GUID>
-convertSymbolNamesToGUID(const StringSet<> &NamedSymbols,
-                         const Triple &TheTriple) {
-  DenseSet<GlobalValue::GUID> GUIDSymbols(NamedSymbols.size());
-  for (auto &Entry : NamedSymbols) {
+computeGUIDPreservedSymbols(const StringSet<> &PreservedSymbols,
+                            const Triple &TheTriple) {
+  DenseSet<GlobalValue::GUID> GUIDPreservedSymbols(PreservedSymbols.size());
+  for (auto &Entry : PreservedSymbols) {
     StringRef Name = Entry.first();
     if (TheTriple.isOSBinFormatMachO() && Name.size() > 0 && Name[0] == '_')
       Name = Name.drop_front();
-    GUIDSymbols.insert(GlobalValue::getGUID(Name));
+    GUIDPreservedSymbols.insert(GlobalValue::getGUID(Name));
   }
-  return GUIDSymbols;
+  return GUIDPreservedSymbols;
 }
 
 std::unique_ptr<MemoryBuffer> codegenModule(Module &TheModule,
@@ -554,7 +554,10 @@
 }
 
 void ThinLTOCodeGenerator::crossReferenceSymbol(StringRef Name) {
-  CrossReferencedSymbols.insert(Name);
+  // FIXME: At the moment, we don't take advantage of this extra information,
+  // we're conservatively considering cross-references as preserved.
+  //  CrossReferencedSymbols.insert(Name);
+  PreservedSymbols.insert(Name);
 }
 
 // TargetMachine factory
@@ -617,7 +620,7 @@
   Index.collectDefinedGVSummariesPerModule(ModuleToDefinedGVSummaries);
 
   // Convert the preserved symbols set from string to GUID
-  auto GUIDPreservedSymbols = convertSymbolNamesToGUID(
+  auto GUIDPreservedSymbols = computeGUIDPreservedSymbols(
       PreservedSymbols, Triple(TheModule.getTargetTriple()));
 
   // Compute "dead" symbols, we don't want to import/export these!
@@ -638,13 +641,11 @@
 
   // Promote the exported values in the index, so that they are promoted
   // in the module.
-  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)) ||
-        GUIDPreservedSymbols.count(GUID))
-      return Exported;
-    return Internal;
+    return (ExportList != ExportLists.end() &&
+            ExportList->second.count(GUID)) ||
+           GUIDPreservedSymbols.count(GUID);
   };
   thinLTOInternalizeAndPromoteInIndex(Index, isExported);
 
@@ -664,7 +665,7 @@
   Index.collectDefinedGVSummariesPerModule(ModuleToDefinedGVSummaries);
 
   // Convert the preserved symbols set from string to GUID
-  auto GUIDPreservedSymbols = convertSymbolNamesToGUID(
+  auto GUIDPreservedSymbols = computeGUIDPreservedSymbols(
       PreservedSymbols, Triple(TheModule.getTargetTriple()));
 
   // Compute "dead" symbols, we don't want to import/export these!
@@ -738,7 +739,7 @@
 
   // Convert the preserved symbols set from string to GUID
   auto GUIDPreservedSymbols =
-      convertSymbolNamesToGUID(PreservedSymbols, TMBuilder.TheTriple);
+      computeGUIDPreservedSymbols(PreservedSymbols, TMBuilder.TheTriple);
 
   // Collect for each module the list of function it defines (GUID -> Summary).
   StringMap<GVSummaryMapTy> ModuleToDefinedGVSummaries(ModuleCount);
@@ -760,13 +761,11 @@
     return;
 
   // Internalization
-  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)) ||
-        GUIDPreservedSymbols.count(GUID))
-      return Exported;
-    return Internal;
+    return (ExportList != ExportLists.end() &&
+            ExportList->second.count(GUID)) ||
+           GUIDPreservedSymbols.count(GUID);
   };
   thinLTOInternalizeAndPromoteInIndex(Index, isExported);
   thinLTOInternalizeModule(TheModule,
@@ -895,9 +894,7 @@
   // Convert the preserved symbols set from string to GUID, this is needed for
   // computing the caching hash and the internalization.
   auto GUIDPreservedSymbols =
-      convertSymbolNamesToGUID(PreservedSymbols, TMBuilder.TheTriple);
-  auto GUIDCrossRefSymbols =
-      convertSymbolNamesToGUID(CrossReferencedSymbols, TMBuilder.TheTriple);
+      computeGUIDPreservedSymbols(PreservedSymbols, TMBuilder.TheTriple);
 
   // Compute "dead" symbols, we don't want to import/export these!
   auto DeadSymbols = computeDeadSymbols(*Index, GUIDPreservedSymbols);
@@ -919,16 +916,11 @@
   // impacts the caching.
   resolveWeakForLinkerInIndex(*Index, ResolvedODR);
 
-  auto isExported = [&](StringRef ModuleIdentifier,
-                        GlobalValue::GUID GUID) -> SummaryResolution {
-    if (GUIDPreservedSymbols.count(GUID))
-      return Exported;
-    if (GUIDCrossRefSymbols.count(GUID))
-      return Hidden;
+  auto isExported = [&](StringRef ModuleIdentifier, GlobalValue::GUID GUID) {
     const auto &ExportList = ExportLists.find(ModuleIdentifier);
-    if (ExportList != ExportLists.end() && ExportList->second.count(GUID))
-      return Hidden;
-    return Internal;
+    return (ExportList != ExportLists.end() &&
+            ExportList->second.count(GUID)) ||
+           GUIDPreservedSymbols.count(GUID);
   };
 
   // Use global summary-based analysis to identify symbols that can be