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/Mips/MipsAsmPrinter.cpp b/lib/Target/Mips/MipsAsmPrinter.cpp
index 0d222f1..42979fc 100644
--- a/lib/Target/Mips/MipsAsmPrinter.cpp
+++ b/lib/Target/Mips/MipsAsmPrinter.cpp
@@ -237,6 +237,8 @@
   O << "\t.globl\t"  << CurrentFnName << '\n';
   O << "\t.ent\t"    << CurrentFnName << '\n';
 
+  printVisibility(CurrentFnName, F->getVisibility());
+
   if ((TAI->hasDotTypeDotSizeDirective()) && Subtarget->isLinux())
     O << "\t.type\t"   << CurrentFnName << ", @function\n";
 
@@ -497,7 +499,7 @@
   } else
     Align = TD->getPreferredTypeAlignmentShift(CTy);
 
-  // FIXME: ELF supports visibility
+  printVisibility(name, GVar->getVisibility());
 
   SwitchToDataSection(SectionName.c_str());
 
@@ -508,7 +510,7 @@
 
       if (GVar->hasInternalLinkage())
         O << "\t.local\t" << name << '\n';
-      
+
       O << TAI->getCOMMDirective() << name << ',' << Size;
       if (TAI->getCOMMDirectiveTakesAlignment())
         O << ',' << (1 << Align);