invoke.texi (powerpc msdata-data): Static data doesn't go in small data sections.
authorAlan Modra <amodra@bigpond.net.au>
Mon, 28 Nov 2005 03:57:05 +0000 (03:57 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Mon, 28 Nov 2005 03:57:05 +0000 (14:27 +1030)
* doc/invoke.texi (powerpc msdata-data): Static data doesn't go in
small data sections.
* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Make global.
* config/rs6000/rs6000-protos.h: (rs6000_elf_in_small_data_p): Declare.
* config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Rename to..
(ASM_OUTPUT_ALIGNED_DECL_LOCAL): ..this, adding extra parm.  Don't
output locals to sbss if !rs6000_elf_in_small_data_p.
(ASM_OUTPUT_ALIGNED_BSS): Adjust for above.

From-SVN: r107592

gcc/ChangeLog
gcc/config/rs6000/rs6000-protos.h
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/sysv4.h

index f4c260bde14f5f4540802a29e27948ca8b6a9111..a80979ea5e96eb767083a081b8c2a53b750406a8 100644 (file)
@@ -1,3 +1,14 @@
+2005-11-28  Alan Modra  <amodra@bigpond.net.au>
+
+       * doc/invoke.texi (powerpc msdata-data): Static data doesn't go in
+       small data sections.
+       * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Make global.
+       * config/rs6000/rs6000-protos.h: (rs6000_elf_in_small_data_p): Declare.
+       * config/rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Rename to..
+       (ASM_OUTPUT_ALIGNED_DECL_LOCAL): ..this, adding extra parm.  Don't
+       output locals to sbss if !rs6000_elf_in_small_data_p.
+       (ASM_OUTPUT_ALIGNED_BSS): Adjust for above.
+
 2005-11-28  Alan Modra  <amodra@bigpond.net.au>
 
        PR target/24997
index fe04d81f43e2fa22a3316b038c2337982e46267d..65cb79d7cbfdef43c9153af5657ee8e9bfc6a4f3 100644 (file)
@@ -123,6 +123,7 @@ extern rtx rs6000_libcall_value (enum machine_mode);
 extern rtx rs6000_va_arg (tree, tree);
 extern int function_ok_for_sibcall (tree);
 extern void rs6000_elf_declare_function_name (FILE *, const char *, tree);
+extern bool rs6000_elf_in_small_data_p (tree);
 #ifdef ARGS_SIZE_RTX
 /* expr.h defines ARGS_SIZE_RTX and `enum direction' */
 extern enum direction function_arg_padding (enum machine_mode, tree);
index d013916a42e8031e1f072308ad3728e917e40f11..8d5cd99b01ed25752e236d4fd034b564f7dba609 100644 (file)
@@ -615,7 +615,6 @@ static void rs6000_elf_select_rtx_section (enum machine_mode, rtx,
                                           unsigned HOST_WIDE_INT);
 static void rs6000_elf_encode_section_info (tree, rtx, int)
      ATTRIBUTE_UNUSED;
-static bool rs6000_elf_in_small_data_p (tree);
 #endif
 #if TARGET_XCOFF
 static void rs6000_xcoff_asm_globalize_label (FILE *, const char *);
@@ -17437,7 +17436,7 @@ rs6000_elf_encode_section_info (tree decl, rtx rtl, int first)
     }
 }
 
-static bool
+bool
 rs6000_elf_in_small_data_p (tree decl)
 {
   if (rs6000_sdata == SDATA_NONE)
index 238b497250fe25ce1e0485e5cfa2338f90322109..30777762e482377fa6d03748373f946e137baec2 100644 (file)
@@ -550,12 +550,10 @@ extern int rs6000_pic_labelno;
 
 #define        LCOMM_ASM_OP    "\t.lcomm\t"
 
-/* Override elfos.h definition.  */
-#undef ASM_OUTPUT_ALIGNED_LOCAL
-#define        ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)               \
+/* Describe how to emit uninitialized local items.  */
+#define        ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN)    \
 do {                                                                   \
-  if (rs6000_sdata != SDATA_NONE && (SIZE) > 0                         \
-      && (SIZE) <= g_switch_value)                                     \
+  if ((DECL) && rs6000_elf_in_small_data_p (DECL))                     \
     {                                                                  \
       sbss_section ();                                                 \
       ASM_OUTPUT_ALIGN (FILE, exact_log2 (ALIGN / BITS_PER_UNIT));     \
@@ -577,7 +575,7 @@ do {                                                                        \
 /* Describe how to emit uninitialized external linkage items.  */
 #define        ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN)           \
 do {                                                                   \
-  ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN);                  \
+  ASM_OUTPUT_ALIGNED_DECL_LOCAL (FILE, DECL, NAME, SIZE, ALIGN);       \
 } while (0)
 
 #ifdef HAVE_GAS_MAX_SKIP_P2ALIGN