Commit a9e3e611 by Gavin Romig-Koch Committed by Gavin Romig-Koch

mips.h (ENCODE_SECTION_INFO): Set SYMBOL_REF_FLAG for VAR_DECL's in gp addressable sections.

	* mips/mips.h (ENCODE_SECTION_INFO): Set SYMBOL_REF_FLAG for
	VAR_DECL's in gp addressable sections.

From-SVN: r21681
parent 87183d21
Wed Aug 12 12:39:16 1998 Gavin Romig-Koch <gavin@cygnus.com>
* mips/mips.h (ENCODE_SECTION_INFO): Set SYMBOL_REF_FLAG for
VAR_DECL's in gp addressable sections.
Tue Aug 11 23:02:31 1998 John Carr <jfc@mit.edu> Tue Aug 11 23:02:31 1998 John Carr <jfc@mit.edu>
* sparc.c: Change return <exp> to <exp>; return; in functions * sparc.c: Change return <exp> to <exp>; return; in functions
......
...@@ -3043,7 +3043,13 @@ typedef struct mips_args { ...@@ -3043,7 +3043,13 @@ typedef struct mips_args {
constants which are put in the .text section. We also record the constants which are put in the .text section. We also record the
total length of all such strings; this total is used to decide total length of all such strings; this total is used to decide
whether we need to split the constant table, and need not be whether we need to split the constant table, and need not be
precisely correct. */ precisely correct.
When not mips16 code nor embedded PIC, if a symbol is in a
gp addresable section, SYMBOL_REF_FLAG is set prevent gcc from
splitting the reference so that gas can generate a gp relative
reference.
*/
#define ENCODE_SECTION_INFO(DECL) \ #define ENCODE_SECTION_INFO(DECL) \
do \ do \
...@@ -3070,6 +3076,16 @@ do \ ...@@ -3070,6 +3076,16 @@ do \
SYMBOL_REF_FLAG (XEXP (TREE_CST_RTL (DECL), 0)) = 1; \ SYMBOL_REF_FLAG (XEXP (TREE_CST_RTL (DECL), 0)) = 1; \
} \ } \
\ \
else if (TREE_CODE (DECL) == VAR_DECL \
&& DECL_SECTION_NAME (DECL) != NULL_TREE \
&& (0 == strcmp (TREE_STRING_POINTER (DECL_SECTION_NAME (DECL)), \
".sdata") \
|| 0 == strcmp (TREE_STRING_POINTER (DECL_SECTION_NAME (DECL)),\
".sbss"))) \
{ \
SYMBOL_REF_FLAG (XEXP (DECL_RTL (DECL), 0)) = 1; \
} \
\
else if (TARGET_GP_OPT && TREE_CODE (DECL) == VAR_DECL) \ else if (TARGET_GP_OPT && TREE_CODE (DECL) == VAR_DECL) \
{ \ { \
int size = int_size_in_bytes (TREE_TYPE (DECL)); \ int size = int_size_in_bytes (TREE_TYPE (DECL)); \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment