summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-01-28 03:20:10 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-01-28 03:20:10 +0000
commit1ffb5336999b327384752b0f60ad0c4cb4cb8946 (patch)
tree6e56e4ae99ee6f4e4fe6c3749366386cd1e7445c
parent4c4c7329603491838d9c089dfbce19915c1431ea (diff)
downloadllvm-1ffb5336999b327384752b0f60ad0c4cb4cb8946.tar.gz
llvm-1ffb5336999b327384752b0f60ad0c4cb4cb8946.tar.bz2
llvm-1ffb5336999b327384752b0f60ad0c4cb4cb8946.tar.xz
Print the visibility of declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124468 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp15
-rw-r--r--test/CodeGen/X86/visibility.ll11
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 7f2b18c6e6..4528a34286 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -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
index 0000000000..9153de4618
--- /dev/null
+++ b/test/CodeGen/X86/visibility.ll
@@ -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