[cfe-commits] r68561 - in /cfe/trunk: lib/CodeGen/CodeGenModule.cpp test/CodeGen/visibility-option.c test/CodeGen/visibility.c

Daniel Dunbar daniel at zuster.org
Tue Apr 7 15:36:33 PDT 2009


Author: ddunbar
Date: Tue Apr  7 17:36:33 2009
New Revision: 68561

URL: http://llvm.org/viewvc/llvm-project?rev=68561&view=rev
Log:
Visibility attributes should only be set on definition.

Added:
    cfe/trunk/test/CodeGen/visibility.c
      - copied, changed from r68540, cfe/trunk/test/CodeGen/visibility-option.c
Removed:
    cfe/trunk/test/CodeGen/visibility-option.c
Modified:
    cfe/trunk/lib/CodeGen/CodeGenModule.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=68561&r1=68560&r2=68561&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Apr  7 17:36:33 2009
@@ -272,10 +272,12 @@
 
   // FIXME: Figure out the relative priority of the attribute,
   // -fvisibility, and private_extern.
-  if (const VisibilityAttr *attr = D->getAttr<VisibilityAttr>())
-    setGlobalVisibility(GV, attr->getVisibility());
-  else
-    setGlobalOptionVisibility(GV, getLangOptions().getVisibilityMode());
+  if (ForDefinition) {
+    if (const VisibilityAttr *attr = D->getAttr<VisibilityAttr>())
+      setGlobalVisibility(GV, attr->getVisibility());
+    else
+      setGlobalOptionVisibility(GV, getLangOptions().getVisibilityMode());
+  }
 
   if (const SectionAttr *SA = D->getAttr<SectionAttr>())
     GV->setSection(SA->getName());

Removed: cfe/trunk/test/CodeGen/visibility-option.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/visibility-option.c?rev=68560&view=auto

==============================================================================
--- cfe/trunk/test/CodeGen/visibility-option.c (original)
+++ cfe/trunk/test/CodeGen/visibility-option.c (removed)
@@ -1,6 +0,0 @@
-// RUN: clang-cc -fvisibility=hidden -emit-llvm -o - %s | grep -e "hidden" | count 2
-
-int Global = 10; 
-
-void Func() {}
-

Copied: cfe/trunk/test/CodeGen/visibility.c (from r68540, cfe/trunk/test/CodeGen/visibility-option.c)
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/visibility.c?p2=cfe/trunk/test/CodeGen/visibility.c&p1=cfe/trunk/test/CodeGen/visibility-option.c&r1=68540&r2=68561&rev=68561&view=diff

==============================================================================
--- cfe/trunk/test/CodeGen/visibility-option.c (original)
+++ cfe/trunk/test/CodeGen/visibility.c Tue Apr  7 17:36:33 2009
@@ -1,6 +1,30 @@
-// RUN: clang-cc -fvisibility=hidden -emit-llvm -o - %s | grep -e "hidden" | count 2
+// RUN: clang-cc -triple i386-unknown-unknown -fvisibility=default -emit-llvm -o %t %s &&
+// RUN: grep '@g_com = common global i32 0' %t &&
+// RUN: grep '@g_def = global i32 0' %t &&
+// RUN: grep '@g_ext = external global i32' %t &&
+// RUN: grep 'declare void @f_ext()' %t &&
+// RUN: grep 'define i32 @f_def()' %t &&
+// RUN: clang-cc -triple i386-unknown-unknown -fvisibility=protected -emit-llvm -o %t %s &&
+// RUN: grep '@g_com = common protected global i32 0' %t &&
+// RUN: grep '@g_def = protected global i32 0' %t &&
+// RUN: grep '@g_ext = external global i32' %t &&
+// RUN: grep 'declare void @f_ext()' %t &&
+// RUN: grep 'define protected i32 @f_def()' %t &&
+// RUN: clang-cc -triple i386-unknown-unknown -fvisibility=hidden -emit-llvm -o %t %s &&
+// RUN: grep '@g_com = common hidden global i32 0' %t &&a
+// RUN: grep '@g_def = hidden global i32 0' %t &&
+// RUN: grep '@g_ext = external global i32' %t &&
+// RUN: grep 'declare void @f_ext()' %t &&
+// RUN: grep 'define hidden i32 @f_def()' %t &&
+// RUN: true
 
-int Global = 10; 
+int g_com;
+int g_def = 0;
+extern int g_ext;
 
-void Func() {}
+extern void f_ext(void);
 
+int f_def(void) {
+  f_ext();
+  return g_com + g_def + g_ext;
+}





More information about the cfe-commits mailing list