add support for hidden visibility to darwin/x86

llvm-svn: 33198
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
index 1e60cd3..096f712 100755
--- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
@@ -125,8 +125,9 @@
     }
     break;
   }
-  if (F->hasHiddenVisibility() && !Subtarget->isTargetDarwin())
-    O << "\t.hidden " << CurrentFnName << "\n";
+  if (F->hasHiddenVisibility())
+    if (const char *Directive = TAI->getHiddenDirective())
+      O << Directive << CurrentFnName << "\n";
   
   O << CurrentFnName << ":\n";
   // Add some workaround for linkonce linkage on Cygwin\MinGW
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp
index 396d90c..78b1af2 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp
@@ -246,8 +246,9 @@
       EmitGlobalConstant(C);
       O << '\n';
     }
-    if (I->hasHiddenVisibility() && !Subtarget->isTargetDarwin())
-      O << "\t.hidden " << name << "\n";
+    if (I->hasHiddenVisibility())
+      if (const char *Directive = TAI->getHiddenDirective())
+        O << Directive << name << "\n";
   }
   
   // Output linker support code for dllexported globals
diff --git a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp
index 7371161..5d52d93 100644
--- a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp
+++ b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp
@@ -64,6 +64,7 @@
     SetDirective = "\t.set";
     UsedDirective = "\t.no_dead_strip\t";
     WeakRefDirective = "\t.weak_reference\t";
+    HiddenDirective = "\t.private_extern\t";
     
     NeedsSet = true;
     DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug";