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/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp
index e3186f2..1c54590 100644
--- a/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -593,9 +593,7 @@
     break;
   }
 
-  if (F->hasHiddenVisibility())
-    if (const char *Directive = TAI->getHiddenDirective())
-      O << Directive << CurrentFnName << '\n';
+  printVisibility(CurrentFnName, F->getVisibility());
 
   EmitAlignment(2, F);
   O << CurrentFnName << ":\n";
@@ -671,9 +669,7 @@
   std::string name = Mang->getValueName(GVar);
   std::string SectionName = TAI->SectionForGlobal(GVar);
 
-  if (GVar->hasHiddenVisibility())
-    if (const char *Directive = TAI->getHiddenDirective())
-      O << Directive << name << '\n';
+  printVisibility(name, GVar->getVisibility());
 
   Constant *C = GVar->getInitializer();
   const Type *Type = C->getType();
@@ -792,9 +788,7 @@
     break;
   }
 
-  if (F->hasHiddenVisibility())
-    if (const char *Directive = TAI->getHiddenDirective())
-      O << Directive << CurrentFnName << '\n';
+  printVisibility(CurrentFnName, F->getVisibility());
 
   EmitAlignment(OptimizeForSize ? 2 : 4, F);
   O << CurrentFnName << ":\n";
@@ -909,9 +903,7 @@
   std::string name = Mang->getValueName(GVar);
   std::string SectionName = TAI->SectionForGlobal(GVar);
 
-  if (GVar->hasHiddenVisibility())
-    if (const char *Directive = TAI->getHiddenDirective())
-      O << Directive << name << '\n';
+  printVisibility(name, GVar->getVisibility());
 
   Constant *C = GVar->getInitializer();
   const Type *Type = C->getType();