Print the visibility of declarations.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 28 Jan 2011 03:20:10 +0000 (03:20 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 28 Jan 2011 03:20:10 +0000 (03:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124468 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/AsmPrinter.cpp
test/CodeGen/X86/visibility.ll [new file with mode: 0644]

index 7f2b18c6e6f566092124b61e5bb2add789d91816..4528a34286cd0892938a2748116ed83e4c84f4ab 100644 (file)
@@ -753,7 +753,20 @@ bool AsmPrinter::doFinalization(Module &M) {
   for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
        I != E; ++I)
     EmitGlobalVariable(I);
-  
+
+  // Emit visibility info for declarations
+  for (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I) {
+    const Function &F = *I;
+    if (!F.isDeclaration())
+      continue;
+    GlobalValue::VisibilityTypes V = F.getVisibility();
+    if (V == GlobalValue::DefaultVisibility)
+      continue;
+
+    MCSymbol *Name = Mang->getSymbol(&F);
+    EmitVisibility(Name, V);
+  }
+
   // Finalize debug and EH information.
   if (DE) {
     {
diff --git a/test/CodeGen/X86/visibility.ll b/test/CodeGen/X86/visibility.ll
new file mode 100644 (file)
index 0000000..9153de4
--- /dev/null
@@ -0,0 +1,11 @@
+; RUN: llc  %s -o - | FileCheck %s
+
+define hidden void @foo() nounwind {
+entry:
+  call void @bar()
+  ret void
+}
+
+declare hidden void @bar()
+
+;CHECK: .hidden        bar