Deleted Added
full compact
darwin.c (117395) darwin.c (119256)
1/* Functions for generic Darwin as target machine for GNU C compiler.
2 Copyright (C) 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2002
3 Free Software Foundation, Inc.
4 Contributed by Apple Computer Inc.
5
6This file is part of GNU CC.
7
8GNU CC is free software; you can redistribute it and/or modify

--- 1077 unchanged lines hidden (view full) ---

1086}
1087
1088void
1089machopic_select_section (exp, reloc, align)
1090 tree exp;
1091 int reloc;
1092 unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED;
1093{
1/* Functions for generic Darwin as target machine for GNU C compiler.
2 Copyright (C) 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2002
3 Free Software Foundation, Inc.
4 Contributed by Apple Computer Inc.
5
6This file is part of GNU CC.
7
8GNU CC is free software; you can redistribute it and/or modify

--- 1077 unchanged lines hidden (view full) ---

1086}
1087
1088void
1089machopic_select_section (exp, reloc, align)
1090 tree exp;
1091 int reloc;
1092 unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED;
1093{
1094 if (TREE_CODE (exp) == STRING_CST)
1094 void (*base_function)(void);
1095
1096 if (decl_readonly_section (exp, reloc))
1097 base_function = readonly_data_section;
1098 else if (TREE_READONLY (exp) || TREE_CONSTANT (exp))
1099 base_function = const_data_section;
1100 else
1101 base_function = data_section;
1102
1103 if (TREE_CODE (exp) == STRING_CST
1104 && TREE_STRING_LENGTH (exp) == strlen (TREE_STRING_POINTER (exp)) + 1
1105 && ! flag_writable_strings)
1106 cstring_section ();
1107 else if ((TREE_CODE (exp) == INTEGER_CST || TREE_CODE (exp) == REAL_CST)
1108 && flag_merge_constants)
1095 {
1109 {
1096 if (flag_writable_strings)
1097 data_section ();
1098 else if (TREE_STRING_LENGTH (exp) !=
1099 strlen (TREE_STRING_POINTER (exp)) + 1)
1100 readonly_data_section ();
1101 else
1102 cstring_section ();
1103 }
1104 else if (TREE_CODE (exp) == INTEGER_CST
1105 || TREE_CODE (exp) == REAL_CST)
1106 {
1107 tree size = TYPE_SIZE (TREE_TYPE (exp));
1108
1109 if (TREE_CODE (size) == INTEGER_CST &&
1110 TREE_INT_CST_LOW (size) == 4 &&
1111 TREE_INT_CST_HIGH (size) == 0)
1112 literal4_section ();
1113 else if (TREE_CODE (size) == INTEGER_CST &&
1114 TREE_INT_CST_LOW (size) == 8 &&
1115 TREE_INT_CST_HIGH (size) == 0)
1116 literal8_section ();
1117 else
1110 tree size = TYPE_SIZE (TREE_TYPE (exp));
1111
1112 if (TREE_CODE (size) == INTEGER_CST &&
1113 TREE_INT_CST_LOW (size) == 4 &&
1114 TREE_INT_CST_HIGH (size) == 0)
1115 literal4_section ();
1116 else if (TREE_CODE (size) == INTEGER_CST &&
1117 TREE_INT_CST_LOW (size) == 8 &&
1118 TREE_INT_CST_HIGH (size) == 0)
1119 literal8_section ();
1120 else
1118 readonly_data_section ();
1121 base_function ();
1119 }
1120 else if (TREE_CODE (exp) == CONSTRUCTOR
1121 && TREE_TYPE (exp)
1122 && TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE
1123 && TYPE_NAME (TREE_TYPE (exp)))
1124 {
1125 tree name = TYPE_NAME (TREE_TYPE (exp));
1126 if (TREE_CODE (name) == TYPE_DECL)
1127 name = DECL_NAME (name);
1128 if (!strcmp (IDENTIFIER_POINTER (name), "NSConstantString"))
1129 objc_constant_string_object_section ();
1130 else if (!strcmp (IDENTIFIER_POINTER (name), "NXConstantString"))
1131 objc_string_object_section ();
1122 }
1123 else if (TREE_CODE (exp) == CONSTRUCTOR
1124 && TREE_TYPE (exp)
1125 && TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE
1126 && TYPE_NAME (TREE_TYPE (exp)))
1127 {
1128 tree name = TYPE_NAME (TREE_TYPE (exp));
1129 if (TREE_CODE (name) == TYPE_DECL)
1130 name = DECL_NAME (name);
1131 if (!strcmp (IDENTIFIER_POINTER (name), "NSConstantString"))
1132 objc_constant_string_object_section ();
1133 else if (!strcmp (IDENTIFIER_POINTER (name), "NXConstantString"))
1134 objc_string_object_section ();
1132 else if (TREE_READONLY (exp) || TREE_CONSTANT (exp))
1133 {
1134 if (TREE_SIDE_EFFECTS (exp) || (flag_pic && reloc))
1135 const_data_section ();
1136 else
1137 readonly_data_section ();
1138 }
1139 else
1140 data_section ();
1135 else
1136 base_function ();
1141 }
1142 else if (TREE_CODE (exp) == VAR_DECL &&
1143 DECL_NAME (exp) &&
1144 TREE_CODE (DECL_NAME (exp)) == IDENTIFIER_NODE &&
1145 IDENTIFIER_POINTER (DECL_NAME (exp)) &&
1146 !strncmp (IDENTIFIER_POINTER (DECL_NAME (exp)), "_OBJC_", 6))
1147 {
1148 const char *name = IDENTIFIER_POINTER (DECL_NAME (exp));

--- 37 unchanged lines hidden (view full) ---

1186 else if (!strncmp (name, "_OBJC_PROTOCOL_INSTANCE_METHODS_", 32))
1187 objc_cat_inst_meth_section ();
1188 else if (!strncmp (name, "_OBJC_PROTOCOL_CLASS_METHODS_", 29))
1189 objc_cat_cls_meth_section ();
1190 else if (!strncmp (name, "_OBJC_PROTOCOL_REFS_", 20))
1191 objc_cat_cls_meth_section ();
1192 else if (!strncmp (name, "_OBJC_PROTOCOL_", 15))
1193 objc_protocol_section ();
1137 }
1138 else if (TREE_CODE (exp) == VAR_DECL &&
1139 DECL_NAME (exp) &&
1140 TREE_CODE (DECL_NAME (exp)) == IDENTIFIER_NODE &&
1141 IDENTIFIER_POINTER (DECL_NAME (exp)) &&
1142 !strncmp (IDENTIFIER_POINTER (DECL_NAME (exp)), "_OBJC_", 6))
1143 {
1144 const char *name = IDENTIFIER_POINTER (DECL_NAME (exp));

--- 37 unchanged lines hidden (view full) ---

1182 else if (!strncmp (name, "_OBJC_PROTOCOL_INSTANCE_METHODS_", 32))
1183 objc_cat_inst_meth_section ();
1184 else if (!strncmp (name, "_OBJC_PROTOCOL_CLASS_METHODS_", 29))
1185 objc_cat_cls_meth_section ();
1186 else if (!strncmp (name, "_OBJC_PROTOCOL_REFS_", 20))
1187 objc_cat_cls_meth_section ();
1188 else if (!strncmp (name, "_OBJC_PROTOCOL_", 15))
1189 objc_protocol_section ();
1194 else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))
1195 && !TREE_SIDE_EFFECTS (exp))
1196 {
1197 if (flag_pic && reloc)
1198 const_data_section ();
1199 else
1200 readonly_data_section ();
1201 }
1202 else
1203 data_section ();
1190 else
1191 base_function ();
1204 }
1192 }
1205 else if (TREE_READONLY (exp) || TREE_CONSTANT (exp))
1206 {
1207 if (TREE_SIDE_EFFECTS (exp) || (flag_pic && reloc))
1208 const_data_section ();
1209 else
1210 readonly_data_section ();
1211 }
1212 else
1213 data_section ();
1193 else
1194 base_function ();
1214}
1215
1216/* This can be called with address expressions as "rtx".
1217 They must go in "const". */
1218
1219void
1220machopic_select_rtx_section (mode, x, align)
1221 enum machine_mode mode;

--- 85 unchanged lines hidden ---
1195}
1196
1197/* This can be called with address expressions as "rtx".
1198 They must go in "const". */
1199
1200void
1201machopic_select_rtx_section (mode, x, align)
1202 enum machine_mode mode;

--- 85 unchanged lines hidden ---