Author: void
Date: Tue Feb  5 03:46:24 2008
New Revision: 46747

URL: http://llvm.org/viewvc/llvm-project?rev=46747&view=rev
Log:
maybe_assemble_visibility issues a warning if the visibility isn't supported on
a particular platform. A configuration might check for visibility. A warning in
this case indicates that it's not supported. So this warning is actually
important.

Make it so!

Modified:
    llvm-gcc-4.2/trunk/gcc/config/darwin.c
    llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.c
    llvm-gcc-4.2/trunk/gcc/varasm.c

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.c?rev=46747&r1=46746&r2=46747&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.c Tue Feb  5 03:46:24 2008
@@ -1988,6 +1988,19 @@
    extern".  There is no MACH-O equivalent of ELF's
    VISIBILITY_INTERNAL or VISIBILITY_PROTECTED. */
 
+/* LLVM LOCAL begin */
+#ifdef ENABLE_LLVM
+void
+darwin_assemble_visibility (tree decl ATTRIBUTE_UNUSED, int vis)
+{
+  /* Emit a warning if the visibility isn't supported with this
+     configuration. We don't want to output anything to the ASM file, of
+     course.  */
+  if (!(vis == VISIBILITY_DEFAULT || vis == VISIBILITY_HIDDEN))
+    warning (OPT_Wattributes, "internal and protected visibility attributes "
+            "not supported in this configuration; ignored");
+}
+#else
 void
 darwin_assemble_visibility (tree decl, int vis)
 {
@@ -2004,6 +2017,8 @@
     warning (OPT_Wattributes, "internal and protected visibility attributes "
             "not supported in this configuration; ignored");
 }
+#endif
+/* LLVM LOCAL end */
 
 /* Output a difference of two labels that will be an assembly time
    constant if the two labels are local.  (.long lab1-lab2 will be

Modified: llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.c?rev=46747&r1=46746&r2=46747&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.c Tue Feb  5 03:46:24 2008
@@ -944,10 +944,14 @@
 #undef TARGET_ASM_INTEGER
 #define TARGET_ASM_INTEGER rs6000_assemble_integer
 
+/* LLVM LOCAL - Use default assemble_visibility */
+#ifndef ENABLE_LLVM
 #ifdef HAVE_GAS_HIDDEN
 #undef TARGET_ASM_ASSEMBLE_VISIBILITY
 #define TARGET_ASM_ASSEMBLE_VISIBILITY rs6000_assemble_visibility
 #endif
+/* LLVM LOCAL - Use default assemble_visibility */
+#endif
 
 #undef TARGET_HAVE_TLS
 #define TARGET_HAVE_TLS HAVE_AS_TLS

Modified: llvm-gcc-4.2/trunk/gcc/varasm.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/varasm.c?rev=46747&r1=46746&r2=46747&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/varasm.c (original)
+++ llvm-gcc-4.2/trunk/gcc/varasm.c Tue Feb  5 03:46:24 2008
@@ -1889,7 +1889,15 @@
     fprintf(stderr, "LLVM must emit the data!");
     abort();
   }
+
   emit_global_to_llvm(decl);
+
+  /* The "make_assemble_visibility" method may issue a warning if the 
visibility
+     attribute isn't supported in a configuration. This is all done through a
+     call-back. We want to issue this same warning when needed.  */
+  if (TREE_PUBLIC (decl))
+    maybe_assemble_visibility (decl);
+
   return;
 #endif
   /* LLVM LOCAL end */
@@ -5307,7 +5315,8 @@
   name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
   type = visibility_types[vis];
 
-#ifdef HAVE_GAS_HIDDEN
+
+#if !defined(ENABLE_LLVM) && defined(HAVE_GAS_HIDDEN)
   fprintf (asm_out_file, "\t.%s\t", type);
   assemble_name (asm_out_file, name);
   fprintf (asm_out_file, "\n");


_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to