Print visibility info for external variables.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 5 Apr 2011 15:51:32 +0000 (15:51 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 5 Apr 2011 15:51:32 +0000 (15:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128887 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/AsmPrinter.cpp
test/CodeGen/X86/visibility.ll

index 358a60b355c972cea9c8002b39d2844806f8fdcb..3d3abc2fed26b7d96369d55b0d205070026169ce 100644 (file)
@@ -253,22 +253,24 @@ void AsmPrinter::EmitLinkage(unsigned Linkage, MCSymbol *GVSym) const {
 
 /// EmitGlobalVariable - Emit the specified global variable to the .s file.
 void AsmPrinter::EmitGlobalVariable(const GlobalVariable *GV) {
-  if (!GV->hasInitializer())   // External globals require no code.
-    return;
-
-  // Check to see if this is a special global used by LLVM, if so, emit it.
-  if (EmitSpecialLLVMGlobal(GV))
-    return;
+  if (GV->hasInitializer()) {
+    // Check to see if this is a special global used by LLVM, if so, emit it.
+    if (EmitSpecialLLVMGlobal(GV))
+      return;
 
-  if (isVerbose()) {
-    WriteAsOperand(OutStreamer.GetCommentOS(), GV,
-                   /*PrintType=*/false, GV->getParent());
-    OutStreamer.GetCommentOS() << '\n';
+    if (isVerbose()) {
+      WriteAsOperand(OutStreamer.GetCommentOS(), GV,
+                     /*PrintType=*/false, GV->getParent());
+      OutStreamer.GetCommentOS() << '\n';
+    }
   }
 
   MCSymbol *GVSym = Mang->getSymbol(GV);
   EmitVisibility(GVSym, GV->getVisibility());
 
+  if (!GV->hasInitializer())   // External globals require no extra code.
+    return;
+
   if (MAI->hasDotTypeDotSizeDirective())
     OutStreamer.EmitSymbolAttribute(GVSym, MCSA_ELF_TypeObject);
 
index a8d287083a80fcd20cfed61de8fd371fce84cb68..580c3dc9266d6b7d21062d3a29c5f2a05c9b8a9f 100644 (file)
@@ -1,11 +1,14 @@
 ; RUN: llc -mtriple=x86_64-unknown-linux-gnu %s -o - | FileCheck %s
 
+@zed = external hidden constant i32
+
 define hidden void @foo() nounwind {
 entry:
-  call void @bar()
+  call void @bar(i32* @zed)
   ret void
 }
 
-declare hidden void @bar()
+declare hidden void @bar(i32*)
 
+;CHECK: .hidden        zed
 ;CHECK: .hidden        bar