]>
Commit | Line | Data |
---|---|---|
4e089a75 | 1 | /* Language-dependent hooks for Objective-C. |
e5f3b786 | 2 | Copyright 2001, 2002 Free Software Foundation, Inc. |
4e089a75 ZL |
3 | Contributed by Ziemowit Laski <zlaski@apple.com> |
4 | ||
5 | This file is part of GNU CC. | |
6 | ||
7 | GNU CC is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 2, or (at your option) | |
10 | any later version. | |
11 | ||
12 | GNU CC is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with GNU CC; see the file COPYING. If not, write to | |
19 | the Free Software Foundation, 59 Temple Place - Suite 330, | |
20 | Boston, MA 02111-1307, USA. */ | |
21 | ||
22 | #include "config.h" | |
23 | #include "system.h" | |
4977bab6 ZW |
24 | #include "coretypes.h" |
25 | #include "tm.h" | |
4e089a75 ZL |
26 | #include "tree.h" |
27 | #include "c-tree.h" | |
28 | #include "c-common.h" | |
29 | #include "toplev.h" | |
30 | #include "objc-act.h" | |
31 | #include "langhooks.h" | |
32 | #include "langhooks-def.h" | |
33 | ||
34 | static void objc_init_options PARAMS ((void)); | |
4e089a75 ZL |
35 | |
36 | #undef LANG_HOOKS_NAME | |
4b65dba1 | 37 | #define LANG_HOOKS_NAME "GNU Objective-C" |
4e089a75 ZL |
38 | #undef LANG_HOOKS_INIT |
39 | #define LANG_HOOKS_INIT objc_init | |
40 | #undef LANG_HOOKS_FINISH | |
41 | #define LANG_HOOKS_FINISH c_common_finish | |
42 | #undef LANG_HOOKS_INIT_OPTIONS | |
43 | #define LANG_HOOKS_INIT_OPTIONS objc_init_options | |
44 | #undef LANG_HOOKS_DECODE_OPTION | |
0b6f2917 | 45 | #define LANG_HOOKS_DECODE_OPTION c_common_decode_option |
4e089a75 | 46 | #undef LANG_HOOKS_POST_OPTIONS |
e5f3b786 | 47 | #define LANG_HOOKS_POST_OPTIONS c_common_post_options |
4b65dba1 NP |
48 | #undef LANG_HOOKS_GET_ALIAS_SET |
49 | #define LANG_HOOKS_GET_ALIAS_SET c_common_get_alias_set | |
50 | #undef LANG_HOOKS_SAFE_FROM_P | |
51 | #define LANG_HOOKS_SAFE_FROM_P c_safe_from_p | |
52dabb6c NB |
52 | #undef LANG_HOOKS_PARSE_FILE |
53 | #define LANG_HOOKS_PARSE_FILE c_common_parse_file | |
c9d892a8 NB |
54 | #undef LANG_HOOKS_EXPAND_EXPR |
55 | #define LANG_HOOKS_EXPAND_EXPR c_expand_expr | |
dffd7eb6 NB |
56 | #undef LANG_HOOKS_MARK_ADDRESSABLE |
57 | #define LANG_HOOKS_MARK_ADDRESSABLE c_mark_addressable | |
78ef5b89 NB |
58 | #undef LANG_HOOKS_TRUTHVALUE_CONVERSION |
59 | #define LANG_HOOKS_TRUTHVALUE_CONVERSION c_common_truthvalue_conversion | |
7ffb4fd2 NB |
60 | #undef LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES |
61 | #define LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES c_insert_default_attributes | |
48a7a235 NB |
62 | #undef LANG_HOOKS_FINISH_INCOMPLETE_DECL |
63 | #define LANG_HOOKS_FINISH_INCOMPLETE_DECL c_finish_incomplete_decl | |
64 | #undef LANG_HOOKS_UNSAFE_FOR_REEVAL | |
65 | #define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval | |
db3acfa5 JM |
66 | #undef LANG_HOOKS_STATICP |
67 | #define LANG_HOOKS_STATICP c_staticp | |
63e1b1c4 NB |
68 | #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL |
69 | #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl | |
4e089a75 ZL |
70 | #undef LANG_HOOKS_PRINT_IDENTIFIER |
71 | #define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier | |
7afff7cf NB |
72 | #undef LANG_HOOKS_DECL_PRINTABLE_NAME |
73 | #define LANG_HOOKS_DECL_PRINTABLE_NAME objc_printable_name | |
ef4f94ac RH |
74 | #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL |
75 | #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl | |
76 | ||
b03e38e1 NB |
77 | #undef LANG_HOOKS_FUNCTION_ENTER_NESTED |
78 | #define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context | |
79 | #undef LANG_HOOKS_FUNCTION_LEAVE_NESTED | |
80 | #define LANG_HOOKS_FUNCTION_LEAVE_NESTED c_pop_function_context | |
b03e38e1 | 81 | |
349ae713 NB |
82 | /* Attribute hooks. */ |
83 | #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE | |
84 | #define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE c_common_attribute_table | |
85 | #undef LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE | |
86 | #define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE c_common_format_attribute_table | |
87 | ||
4e089a75 ZL |
88 | /* Inlining hooks same as the C front end. */ |
89 | #undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN | |
90 | #define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ | |
91 | c_cannot_inline_tree_fn | |
92 | #undef LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS | |
93 | #define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \ | |
94 | c_disregard_inline_limits | |
95 | #undef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P | |
96 | #define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ | |
97 | anon_aggr_type_p | |
f735a153 JJ |
98 | #undef LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING |
99 | #define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ | |
100 | c_convert_parm_for_inlining | |
4e089a75 | 101 | |
b0c48229 NB |
102 | #undef LANG_HOOKS_TYPE_FOR_MODE |
103 | #define LANG_HOOKS_TYPE_FOR_MODE c_common_type_for_mode | |
104 | #undef LANG_HOOKS_TYPE_FOR_SIZE | |
105 | #define LANG_HOOKS_TYPE_FOR_SIZE c_common_type_for_size | |
ceef8ce4 NB |
106 | #undef LANG_HOOKS_SIGNED_TYPE |
107 | #define LANG_HOOKS_SIGNED_TYPE c_common_signed_type | |
108 | #undef LANG_HOOKS_UNSIGNED_TYPE | |
109 | #define LANG_HOOKS_UNSIGNED_TYPE c_common_unsigned_type | |
110 | #undef LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE | |
111 | #define LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE c_common_signed_or_unsigned_type | |
7a228918 NB |
112 | #undef LANG_HOOKS_INCOMPLETE_TYPE_ERROR |
113 | #define LANG_HOOKS_INCOMPLETE_TYPE_ERROR c_incomplete_type_error | |
ab393bf1 NB |
114 | #undef LANG_HOOKS_TYPE_PROMOTES_TO |
115 | #define LANG_HOOKS_TYPE_PROMOTES_TO c_type_promotes_to | |
b0c48229 | 116 | |
4e089a75 ZL |
117 | /* Each front end provides its own hooks, for toplev.c. */ |
118 | const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; | |
119 | ||
2f9834e8 KG |
120 | /* Define the special tree codes that we use. */ |
121 | ||
122 | /* Table indexed by tree code giving a string containing a character | |
123 | classifying the tree code. */ | |
124 | ||
125 | #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, | |
126 | ||
127 | const char tree_code_type[] = { | |
128 | #include "tree.def" | |
129 | 'x', | |
130 | #include "c-common.def" | |
131 | 'x', | |
132 | #include "objc-tree.def" | |
133 | }; | |
134 | #undef DEFTREECODE | |
135 | ||
136 | /* Table indexed by tree code giving number of expression | |
137 | operands beyond the fixed part of the node structure. | |
138 | Not used for types or decls. */ | |
139 | ||
140 | #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, | |
141 | ||
142 | const unsigned char tree_code_length[] = { | |
143 | #include "tree.def" | |
144 | 0, | |
145 | #include "c-common.def" | |
146 | 0, | |
147 | #include "objc-tree.def" | |
148 | }; | |
149 | #undef DEFTREECODE | |
150 | ||
151 | /* Names of tree components. | |
152 | Used for printing out the tree and error messages. */ | |
153 | #define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, | |
154 | ||
155 | const char * const tree_code_name[] = { | |
156 | #include "tree.def" | |
157 | "@@dummy", | |
158 | #include "c-common.def" | |
159 | "@@dummy", | |
160 | #include "objc-tree.def" | |
161 | }; | |
162 | #undef DEFTREECODE | |
163 | ||
4e089a75 ZL |
164 | static void |
165 | objc_init_options () | |
166 | { | |
0f7866e7 ZL |
167 | flag_objc = 1; |
168 | c_common_init_options (clk_c); | |
169 | } |