OSDN Git Service

Simplify. NFC.
authorRafael Espindola <rafael.espindola@gmail.com>
Sun, 29 Nov 2015 14:33:06 +0000 (14:33 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sun, 29 Nov 2015 14:33:06 +0000 (14:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254254 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Linker/LinkModules.cpp

index 58d2b84..6b60379 100644 (file)
@@ -627,19 +627,6 @@ void ModuleLinker::copyGVAttributes(GlobalValue *NewGV,
   forceRenaming(NewGV, getName(SrcGV));
 }
 
-static bool isLessConstraining(GlobalValue::VisibilityTypes a,
-                               GlobalValue::VisibilityTypes b) {
-  if (a == GlobalValue::HiddenVisibility)
-    return false;
-  if (b == GlobalValue::HiddenVisibility)
-    return true;
-  if (a == GlobalValue::ProtectedVisibility)
-    return false;
-  if (b == GlobalValue::ProtectedVisibility)
-    return true;
-  return false;
-}
-
 bool ModuleLinker::doImportAsDefinition(const GlobalValue *SGV) {
   if (!isPerformingImport())
     return false;
@@ -864,13 +851,22 @@ GlobalValue *ModuleLinker::copyGlobalAliasProto(TypeMapTy &TypeMap,
                              getLinkage(SGA), getName(SGA), DstM);
 }
 
+static GlobalValue::VisibilityTypes
+getMinVisibility(GlobalValue::VisibilityTypes A,
+                 GlobalValue::VisibilityTypes B) {
+  if (A == GlobalValue::HiddenVisibility || B == GlobalValue::HiddenVisibility)
+    return GlobalValue::HiddenVisibility;
+  if (A == GlobalValue::ProtectedVisibility ||
+      B == GlobalValue::ProtectedVisibility)
+    return GlobalValue::ProtectedVisibility;
+  return GlobalValue::DefaultVisibility;
+}
+
 void ModuleLinker::setVisibility(GlobalValue *NewGV, const GlobalValue *SGV,
                                  const GlobalValue *DGV) {
   GlobalValue::VisibilityTypes Visibility = SGV->getVisibility();
   if (DGV)
-    Visibility = isLessConstraining(Visibility, DGV->getVisibility())
-                     ? DGV->getVisibility()
-                     : Visibility;
+    Visibility = getMinVisibility(DGV->getVisibility(), Visibility);
   // For promoted locals, mark them hidden so that they can later be
   // stripped from the symbol table to reduce bloat.
   if (SGV->hasLocalLinkage() && doPromoteLocalToGlobal(SGV))