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:
parent
e6a8c80375
commit
3d7964d5db
|
@ -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.
|
||||||
|
|
|
@ -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".
|
||||||
|
|
Loading…
Reference in New Issue