]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
mips.c (mips_classify_symbol): Do not return SYMBOL_SMALL_DATA if SYMBOL_REF_WEAK.
authorRichard Sandiford <richard@codesourcery.com>
Sun, 8 Oct 2006 07:56:53 +0000 (07:56 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 8 Oct 2006 07:56:53 +0000 (07:56 +0000)
gcc/
* config/mips/mips.c (mips_classify_symbol): Do not return
SYMBOL_SMALL_DATA if SYMBOL_REF_WEAK.
(mips_in_small_data_p): Tweak comments.

From-SVN: r117553

gcc/ChangeLog
gcc/config/mips/mips.c

index f14f174bd1d43e809c79c526d3ddf1276ec2d42b..a06e24a68702b5ddce930fcb098186fca7fea322 100644 (file)
@@ -1,3 +1,9 @@
+2006-10-08  Richard Sandiford  <richard@codesourcery.com>
+
+       * config/mips/mips.c (mips_classify_symbol): Do not return
+       SYMBOL_SMALL_DATA if SYMBOL_REF_WEAK.
+       (mips_in_small_data_p): Tweak comments.
+
 2006-10-08  Richard Sandiford  <richard@codesourcery.com>
 
        * config/mips/elf.h (HANDLE_PRAGMA_PUSH_POP): Define.
index ef4a35e725675147b9a74fd246ce8ebd0050e767..54fc3e1c47c2c2fe3fcf5d07d8cb837cfba5fd2b 100644 (file)
@@ -1221,7 +1221,10 @@ mips_classify_symbol (rtx x)
        return SYMBOL_SMALL_DATA;
     }
 
-  if (SYMBOL_REF_SMALL_P (x))
+  /* Do not use small-data accesses for weak symbols; they may end up
+     being zero.  */
+  if (SYMBOL_REF_SMALL_P (x)
+      && !SYMBOL_REF_WEAK (x))
     return SYMBOL_SMALL_DATA;
 
   if (TARGET_ABICALLS)
@@ -7313,8 +7316,10 @@ mips_function_rodata_section (tree decl)
   return data_section;
 }
 
-/* Implement TARGET_IN_SMALL_DATA_P.  Return true if it would be safe to
-   access DECL using %gp_rel(...)($gp).  */
+/* Implement TARGET_IN_SMALL_DATA_P.  This function controls whether
+   locally-defined objects go in a small data section.  It also controls
+   the setting of the SYMBOL_REF_SMALL_P flag, which in turn helps
+   mips_classify_symbol decide when to use %gp_rel(...)($gp) accesses.  */
 
 static bool
 mips_in_small_data_p (tree decl)