From 3ac25120de29ce52ab034ba79612657f8c9cdfbe Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Sun, 8 Oct 2006 07:56:53 +0000 Subject: [PATCH] mips.c (mips_classify_symbol): Do not return SYMBOL_SMALL_DATA if SYMBOL_REF_WEAK. 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 | 6 ++++++ gcc/config/mips/mips.c | 11 ++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f14f174bd1d..a06e24a6870 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-10-08 Richard Sandiford + + * 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 * config/mips/elf.h (HANDLE_PRAGMA_PUSH_POP): Define. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index ef4a35e7256..54fc3e1c47c 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -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) -- 2.30.2