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/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp
index f99566b..bb51956 100644
--- a/lib/Target/X86/X86ATTAsmPrinter.cpp
+++ b/lib/Target/X86/X86ATTAsmPrinter.cpp
@@ -183,13 +183,8 @@
     }
     break;
   }
-  if (F->hasHiddenVisibility()) {
-    if (const char *Directive = TAI->getHiddenDirective())
-      O << Directive << CurrentFnName << '\n';
-  } else if (F->hasProtectedVisibility()) {
-    if (const char *Directive = TAI->getProtectedDirective())
-      O << Directive << CurrentFnName << '\n';
-  }
+
+  printVisibility(CurrentFnName, F->getVisibility());
 
   if (Subtarget->isTargetELF())
     O << "\t.type\t" << CurrentFnName << ",@function\n";
@@ -773,13 +768,7 @@
   unsigned Size = TD->getABITypeSize(Type);
   unsigned Align = TD->getPreferredAlignmentLog(GVar);
 
-  if (GVar->hasHiddenVisibility()) {
-    if (const char *Directive = TAI->getHiddenDirective())
-      O << Directive << name << '\n';
-  } else if (GVar->hasProtectedVisibility()) {
-    if (const char *Directive = TAI->getProtectedDirective())
-      O << Directive << name << '\n';
-  }
+  printVisibility(name, GVar->getVisibility());
 
   if (Subtarget->isTargetELF())
     O << "\t.type\t" << name << ",@object\n";