c-lang.c revision 117395
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 5This file is part of GCC. 6 7GCC is free software; you can redistribute it and/or modify it under 8the terms of the GNU General Public License as published by the Free 9Software Foundation; either version 2, or (at your option) any later 10version. 11 12GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13WARRANTY; without even the implied warranty of MERCHANTABILITY or 14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15for more details. 16 17You should have received a copy of the GNU General Public License 18along with GCC; see the file COPYING. If not, write to the Free 19Software Foundation, 59 Temple Place - Suite 330, Boston, MA 2002111-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 32static 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. */ 118const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; 119 120/* Tree code classes. */ 121 122#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, 123 124const 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 137const 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 148const char *const tree_code_name[] = { 149#include "tree.def" 150 "@@dummy", 151#include "c-common.def" 152}; 153#undef DEFTREECODE 154 155static void 156c_init_options () 157{ 158 c_common_init_options (clk_c); 159} 160 161/* Used by c-lex.c, but only for objc. */ 162 163tree 164lookup_interface (arg) 165 tree arg ATTRIBUTE_UNUSED; 166{ 167 return 0; 168} 169 170tree 171is_class_name (arg) 172 tree arg ATTRIBUTE_UNUSED; 173{ 174 return 0; 175} 176 177tree 178objc_is_id (arg) 179 tree arg ATTRIBUTE_UNUSED; 180{ 181 return 0; 182} 183 184void 185objc_check_decl (decl) 186 tree decl ATTRIBUTE_UNUSED; 187{ 188} 189 190int 191objc_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 199tree 200objc_message_selector () 201{ 202 return 0; 203} 204 205/* Used by c-typeck.c (build_external_ref), but only for objc. */ 206 207tree 208lookup_objc_ivar (id) 209 tree id ATTRIBUTE_UNUSED; 210{ 211 return 0; 212} 213 214void 215finish_file () 216{ 217 c_objc_common_finish_file (); 218} 219 220#include "gtype-c.h" 221