Handle visibility printing with all generality. Remove bunch of duplicate code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54540 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp
index 8af79de..89b0a8a 100644
--- a/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -226,14 +226,7 @@
     break;
   }
 
-  const char *VisibilityDirective = NULL;
-  if (F->hasHiddenVisibility())
-    VisibilityDirective = TAI->getHiddenDirective();
-  else if (F->hasProtectedVisibility())
-    VisibilityDirective = TAI->getProtectedDirective();
-
-  if (VisibilityDirective)
-    O << VisibilityDirective << CurrentFnName << "\n";
+  printVisibility(CurrentFnName, F->getVisibility());
 
   if (AFI->isThumbFunction()) {
     EmitAlignment(1, F, AFI->getAlign());
@@ -870,14 +863,7 @@
   unsigned Size = TD->getABITypeSize(Type);
   unsigned Align = TD->getPreferredAlignmentLog(GVar);
 
-  const char *VisibilityDirective = NULL;
-  if (GVar->hasHiddenVisibility())
-    VisibilityDirective = TAI->getHiddenDirective();
-  else if (GVar->hasProtectedVisibility())
-    VisibilityDirective = TAI->getProtectedDirective();
-
-  if (VisibilityDirective)
-    O << VisibilityDirective << name << "\n";
+  printVisibility(name, GVar->getVisibility());
 
   if (Subtarget->isTargetELF())
     O << "\t.type " << name << ",%object\n";