1 /* Language-specific hook definitions for C front end. 2 Copyright (C) 1991, 1995, 1997, 1998, 3 1999, 2000, 2001 Free Software Foundation, Inc. 4 5 This file is part of GCC. 6 7 GCC is free software; you can redistribute it and/or modify it under 8 the terms of the GNU General Public License as published by the Free 9 Software Foundation; either version 2, or (at your option) any later 10 version. 11 12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13 WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GCC; see the file COPYING. If not, write to the Free 19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 20 02111-1307, USA. */ 21 22 23 #include "config.h" 24 #include "system.h" 25 #include "tree.h" 26 #include "c-tree.h" 27 #include "c-common.h" 28 #include "ggc.h" 29 #include "langhooks.h" 30 #include "langhooks-def.h" 31 32 static void c_init_options PARAMS ((void)); 33 34 /* ### When changing hooks, consider if ObjC needs changing too!! ### */ 35 36 #undef LANG_HOOKS_NAME 37 #define LANG_HOOKS_NAME "GNU C" 38 #undef LANG_HOOKS_INIT 39 #define LANG_HOOKS_INIT c_objc_common_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 c_init_options 44 #undef LANG_HOOKS_DECODE_OPTION 45 #define LANG_HOOKS_DECODE_OPTION c_common_decode_option 46 #undef LANG_HOOKS_POST_OPTIONS 47 #define LANG_HOOKS_POST_OPTIONS c_common_post_options 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 52 #undef LANG_HOOKS_EXPAND_EXPR 53 #define LANG_HOOKS_EXPAND_EXPR c_expand_expr 54 #undef LANG_HOOKS_MARK_ADDRESSABLE 55 #define LANG_HOOKS_MARK_ADDRESSABLE c_mark_addressable 56 #undef LANG_HOOKS_PARSE_FILE 57 #define LANG_HOOKS_PARSE_FILE c_common_parse_file 58 #undef LANG_HOOKS_TRUTHVALUE_CONVERSION 59 #define LANG_HOOKS_TRUTHVALUE_CONVERSION c_common_truthvalue_conversion 60 #undef LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES 61 #define LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES c_insert_default_attributes 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 66 #undef LANG_HOOKS_STATICP 67 #define LANG_HOOKS_STATICP c_staticp 68 #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL 69 #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl 70 #undef LANG_HOOKS_PRINT_IDENTIFIER 71 #define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier 72 #undef LANG_HOOKS_FUNCTION_ENTER_NESTED 73 #define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context 74 #undef LANG_HOOKS_FUNCTION_LEAVE_NESTED 75 #define LANG_HOOKS_FUNCTION_LEAVE_NESTED c_pop_function_context 76 #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL 77 #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl 78 79 /* Attribute hooks. */ 80 #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE 81 #define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE c_common_attribute_table 82 #undef LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE 83 #define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE c_common_format_attribute_table 84 85 #undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN 86 #define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ 87 c_cannot_inline_tree_fn 88 #undef LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS 89 #define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \ 90 c_disregard_inline_limits 91 #undef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P 92 #define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ 93 anon_aggr_type_p 94 #undef LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING 95 #define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ 96 c_convert_parm_for_inlining 97 #undef LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN 98 #define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN c_dump_tree 99 100 #undef LANG_HOOKS_TYPE_FOR_MODE 101 #define LANG_HOOKS_TYPE_FOR_MODE c_common_type_for_mode 102 #undef LANG_HOOKS_TYPE_FOR_SIZE 103 #define LANG_HOOKS_TYPE_FOR_SIZE c_common_type_for_size 104 #undef LANG_HOOKS_SIGNED_TYPE 105 #define LANG_HOOKS_SIGNED_TYPE c_common_signed_type 106 #undef LANG_HOOKS_UNSIGNED_TYPE 107 #define LANG_HOOKS_UNSIGNED_TYPE c_common_unsigned_type 108 #undef LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE 109 #define LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE c_common_signed_or_unsigned_type 110 #undef LANG_HOOKS_INCOMPLETE_TYPE_ERROR 111 #define LANG_HOOKS_INCOMPLETE_TYPE_ERROR c_incomplete_type_error 112 #undef LANG_HOOKS_TYPE_PROMOTES_TO 113 #define LANG_HOOKS_TYPE_PROMOTES_TO c_type_promotes_to 114 115 /* ### When changing hooks, consider if ObjC needs changing too!! ### */ 116 117 /* Each front end provides its own. */ 118 const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; 119 120 /* Tree code classes. */ 121 122 #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, 123 124 const char tree_code_type[] = { 125 #include "tree.def" 126 'x', 127 #include "c-common.def" 128 }; 129 #undef DEFTREECODE 130 131 /* Table indexed by tree code giving number of expression 132 operands beyond the fixed part of the node structure. 133 Not used for types or decls. */ 134 135 #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, 136 137 const unsigned char tree_code_length[] = { 138 #include "tree.def" 139 0, 140 #include "c-common.def" 141 }; 142 #undef DEFTREECODE 143 144 /* Names of tree components. 145 Used for printing out the tree and error messages. */ 146 #define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, 147 148 const char *const tree_code_name[] = { 149 #include "tree.def" 150 "@@dummy", 151 #include "c-common.def" 152 }; 153 #undef DEFTREECODE 154 155 static void 156 c_init_options () 157 { 158 c_common_init_options (clk_c); 159 } 160 161 /* Used by c-lex.c, but only for objc. */ 162 163 tree 164 lookup_interface (arg) 165 tree arg ATTRIBUTE_UNUSED; 166 { 167 return 0; 168 } 169 170 tree 171 is_class_name (arg) 172 tree arg ATTRIBUTE_UNUSED; 173 { 174 return 0; 175 } 176 177 tree 178 objc_is_id (arg) 179 tree arg ATTRIBUTE_UNUSED; 180 { 181 return 0; 182 } 183 184 void 185 objc_check_decl (decl) 186 tree decl ATTRIBUTE_UNUSED; 187 { 188 } 189 190 int 191 objc_comptypes (lhs, rhs, reflexive) 192 tree lhs ATTRIBUTE_UNUSED; 193 tree rhs ATTRIBUTE_UNUSED; 194 int reflexive ATTRIBUTE_UNUSED; 195 { 196 return -1; 197 } 198 199 tree 200 objc_message_selector () 201 { 202 return 0; 203 } 204 205 /* Used by c-typeck.c (build_external_ref), but only for objc. */ 206 207 tree 208 lookup_objc_ivar (id) 209 tree id ATTRIBUTE_UNUSED; 210 { 211 return 0; 212 } 213 214 void 215 finish_file () 216 { 217 c_objc_common_finish_file (); 218 } 219 220 #include "gtype-c.h" 221