darwin.c (machopic_select_section): Use decl_readonly_section to do most of the work.

* config/darwin.c (machopic_select_section): Use decl_readonly_section
	to do most of the work.

From-SVN: r69468
This commit is contained in:
Geoffrey Keating 2003-07-16 18:18:00 +00:00 committed by Geoffrey Keating
parent e6a8c80375
commit 3d7964d5db
2 changed files with 25 additions and 41 deletions

View File

@ -1,3 +1,8 @@
2003-07-16 Geoffrey Keating <geoffk@apple.com>
* config/darwin.c (machopic_select_section): Use decl_readonly_section
to do most of the work.
2003-07-16 Hans-Peter Nilsson <hp@bitrange.com> 2003-07-16 Hans-Peter Nilsson <hp@bitrange.com>
* config/mmix/mmix-protos.h: Convert prototypes to ISO C90. * config/mmix/mmix-protos.h: Convert prototypes to ISO C90.

View File

@ -1157,18 +1157,22 @@ machopic_select_section (exp, reloc, align)
int reloc; int reloc;
unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED; unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED;
{ {
if (TREE_CODE (exp) == STRING_CST) void (*base_function)(void);
{
if (flag_writable_strings) if (decl_readonly_section_1 (exp, reloc, MACHOPIC_INDIRECT))
data_section (); base_function = readonly_data_section;
else if ((size_t) TREE_STRING_LENGTH (exp) != else if (TREE_READONLY (exp) || TREE_CONSTANT (exp))
strlen (TREE_STRING_POINTER (exp)) + 1) base_function = const_data_section;
readonly_data_section (); else
else base_function = data_section;
cstring_section ();
} if (TREE_CODE (exp) == STRING_CST
else if (TREE_CODE (exp) == INTEGER_CST && ((size_t) TREE_STRING_LENGTH (exp)
|| TREE_CODE (exp) == REAL_CST) == strlen (TREE_STRING_POINTER (exp)) + 1)
&& ! flag_writable_strings)
cstring_section ();
else if ((TREE_CODE (exp) == INTEGER_CST || TREE_CODE (exp) == REAL_CST)
&& flag_merge_constants)
{ {
tree size = TYPE_SIZE (TREE_TYPE (exp)); tree size = TYPE_SIZE (TREE_TYPE (exp));
@ -1181,7 +1185,7 @@ machopic_select_section (exp, reloc, align)
TREE_INT_CST_HIGH (size) == 0) TREE_INT_CST_HIGH (size) == 0)
literal8_section (); literal8_section ();
else else
readonly_data_section (); base_function ();
} }
else if (TREE_CODE (exp) == CONSTRUCTOR else if (TREE_CODE (exp) == CONSTRUCTOR
&& TREE_TYPE (exp) && TREE_TYPE (exp)
@ -1195,16 +1199,8 @@ machopic_select_section (exp, reloc, align)
objc_constant_string_object_section (); objc_constant_string_object_section ();
else if (!strcmp (IDENTIFIER_POINTER (name), "NXConstantString")) else if (!strcmp (IDENTIFIER_POINTER (name), "NXConstantString"))
objc_string_object_section (); objc_string_object_section ();
else if (TREE_READONLY (exp) || TREE_CONSTANT (exp))
{
if (TREE_SIDE_EFFECTS (exp) || (MACHOPIC_INDIRECT && reloc))
const_data_section ();
else
readonly_data_section ();
}
else else
data_section (); base_function ();
} }
else if (TREE_CODE (exp) == VAR_DECL && else if (TREE_CODE (exp) == VAR_DECL &&
DECL_NAME (exp) && DECL_NAME (exp) &&
@ -1258,28 +1254,11 @@ machopic_select_section (exp, reloc, align)
objc_cat_cls_meth_section (); objc_cat_cls_meth_section ();
else if (!strncmp (name, "_OBJC_PROTOCOL_", 15)) else if (!strncmp (name, "_OBJC_PROTOCOL_", 15))
objc_protocol_section (); objc_protocol_section ();
else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))
&& !TREE_SIDE_EFFECTS (exp))
{
if (MACHOPIC_INDIRECT && reloc)
const_data_section ();
else
readonly_data_section ();
}
else else
data_section (); base_function ();
}
else if (TREE_READONLY (exp) || TREE_CONSTANT (exp))
{
if (TREE_SIDE_EFFECTS (exp) || (MACHOPIC_INDIRECT && reloc))
const_data_section ();
else
readonly_data_section ();
} }
else else
data_section (); base_function ();
} }
/* This can be called with address expressions as "rtx". /* This can be called with address expressions as "rtx".