From 3d7964d5db11a8bafa2d4a99517eabb742229385 Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Wed, 16 Jul 2003 18:18:00 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 ++++ gcc/config/darwin.c | 61 +++++++++++++++------------------------------ 2 files changed, 25 insertions(+), 41 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b1b57f81d3..95255987ddb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-07-16 Geoffrey Keating + + * config/darwin.c (machopic_select_section): Use decl_readonly_section + to do most of the work. + 2003-07-16 Hans-Peter Nilsson * config/mmix/mmix-protos.h: Convert prototypes to ISO C90. diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index c17fc74ba08..d57c293eada 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -1157,18 +1157,22 @@ machopic_select_section (exp, reloc, align) int reloc; unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED; { - if (TREE_CODE (exp) == STRING_CST) - { - if (flag_writable_strings) - data_section (); - else if ((size_t) TREE_STRING_LENGTH (exp) != - strlen (TREE_STRING_POINTER (exp)) + 1) - readonly_data_section (); - else - cstring_section (); - } - else if (TREE_CODE (exp) == INTEGER_CST - || TREE_CODE (exp) == REAL_CST) + void (*base_function)(void); + + if (decl_readonly_section_1 (exp, reloc, MACHOPIC_INDIRECT)) + base_function = readonly_data_section; + else if (TREE_READONLY (exp) || TREE_CONSTANT (exp)) + base_function = const_data_section; + else + base_function = data_section; + + if (TREE_CODE (exp) == STRING_CST + && ((size_t) TREE_STRING_LENGTH (exp) + == 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)); @@ -1181,7 +1185,7 @@ machopic_select_section (exp, reloc, align) TREE_INT_CST_HIGH (size) == 0) literal8_section (); else - readonly_data_section (); + base_function (); } else if (TREE_CODE (exp) == CONSTRUCTOR && TREE_TYPE (exp) @@ -1195,16 +1199,8 @@ machopic_select_section (exp, reloc, align) objc_constant_string_object_section (); else if (!strcmp (IDENTIFIER_POINTER (name), "NXConstantString")) 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 - data_section (); + base_function (); } else if (TREE_CODE (exp) == VAR_DECL && DECL_NAME (exp) && @@ -1258,28 +1254,11 @@ machopic_select_section (exp, reloc, align) objc_cat_cls_meth_section (); else if (!strncmp (name, "_OBJC_PROTOCOL_", 15)) 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 - data_section (); - } - else if (TREE_READONLY (exp) || TREE_CONSTANT (exp)) - { - - if (TREE_SIDE_EFFECTS (exp) || (MACHOPIC_INDIRECT && reloc)) - const_data_section (); else - readonly_data_section (); + base_function (); } else - data_section (); + base_function (); } /* This can be called with address expressions as "rtx". -- 2.30.2