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/Sparc/SparcAsmPrinter.cpp b/lib/Target/Sparc/SparcAsmPrinter.cpp
index 2752958..5cdb4d6 100644
--- a/lib/Target/Sparc/SparcAsmPrinter.cpp
+++ b/lib/Target/Sparc/SparcAsmPrinter.cpp
@@ -107,6 +107,9 @@
   SwitchToTextSection(getSectionForFunction(*F).c_str(), F);
   EmitAlignment(4, F);
   O << "\t.globl\t" << CurrentFnName << '\n';
+
+  printVisibility(CurrentFnName, F->getVisibility());
+
   O << "\t.type\t" << CurrentFnName << ", #function\n";
   O << CurrentFnName << ":\n";
 
@@ -250,7 +253,8 @@
   unsigned Size = TD->getABITypeSize(C->getType());
   unsigned Align = TD->getPreferredAlignment(GVar);
 
-  // FIXME: ELF supports visibility
+  printVisibility(name, GVar->getVisibility());
+
   SwitchToDataSection(SectionName.c_str());
 
   if (C->isNullValue() && !GVar->hasSection()) {