X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fc-lang.c;h=ae1b08139e76ca661038794da75415a9a28a9f95;hb=476e59ce872ce6bb7111713775544a5f283cffde;hp=c21655d4b8d05fea191634d9fa3bc18f90289979;hpb=33cdd29a6798bfd26d1b8c1d9378fe52b6cc0081;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/c-lang.c b/gcc/c-lang.c index c21655d4b8d..ae1b08139e7 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -1,179 +1,52 @@ /* Language-specific hook definitions for C front end. - Copyright (C) 1991, 1995 Free Software Foundation, Inc. + Copyright (C) 1991, 1995, 1997, 1998, + 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. -This file is part of GNU CC. +This file is part of GCC. -GNU CC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. -GNU CC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ +along with GCC; see the file COPYING3. If not see +. */ #include "config.h" +#include "system.h" +#include "coretypes.h" +#include "tm.h" #include "tree.h" -#include -#include "input.h" - -/* Each of the functions defined here - is an alternative to a function in objc-actions.c. */ - -int -lang_decode_option (p) - char *p; -{ - return c_decode_option (p); -} - -void -lang_init () -{ - /* the beginning of the file is a new line; check for # */ - /* With luck, we discover the real source file's name from that - and put it in input_filename. */ - ungetc (check_newline (), finput); -} - -void -lang_finish () -{ -} - -char * -lang_identify () -{ - return "c"; -} - -void -print_lang_statistics () -{ -} - -/* Used by c-lex.c, but only for objc. */ - -tree -lookup_interface (arg) - tree arg; -{ - return 0; -} - -tree -is_class_name (arg) - tree arg; -{ - return 0; -} - -void -maybe_objc_check_decl (decl) - tree decl; -{ -} - -int -maybe_objc_comptypes (lhs, rhs, reflexive) - tree lhs, rhs; - int reflexive; -{ - return -1; -} - -tree -maybe_objc_method_name (decl) - tree decl; -{ - return 0; -} - -tree -maybe_building_objc_message_expr () -{ - return 0; -} - -int -recognize_objc_keyword () -{ - return 0; -} - -tree -build_objc_string (len, str) - int len; - char *str; -{ - abort (); - return NULL_TREE; -} - -void -GNU_xref_begin () -{ - fatal ("GCC does not yet support XREF"); -} - -void -GNU_xref_end () -{ - fatal ("GCC does not yet support XREF"); -} - -/* called at end of parsing, but before end-of-file processing. */ -void -finish_file () -{ - extern tree static_ctors, static_dtors; - extern tree get_file_function_name (); - extern tree build_function_call PROTO((tree, tree)); - tree void_list_node = build_tree_list (NULL_TREE, void_type_node); -#ifndef ASM_OUTPUT_CONSTRUCTOR - if (static_ctors) - { - tree fnname = get_file_function_name ('I'); - start_function (void_list_node, - build_parse_node (CALL_EXPR, fnname, void_list_node, - NULL_TREE), - NULL_TREE, 0); - fnname = DECL_ASSEMBLER_NAME (current_function_decl); - store_parm_decls (); - - for (; static_ctors; static_ctors = TREE_CHAIN (static_ctors)) - expand_expr_stmt (build_function_call (TREE_VALUE (static_ctors), - NULL_TREE)); - - finish_function (0); - - assemble_constructor (IDENTIFIER_POINTER (fnname)); - } -#endif -#ifndef ASM_OUTPUT_DESTRUCTOR - if (static_dtors) - { - tree fnname = get_file_function_name ('D'); - start_function (void_list_node, - build_parse_node (CALL_EXPR, fnname, void_list_node, - NULL_TREE), - NULL_TREE, 0); - fnname = DECL_ASSEMBLER_NAME (current_function_decl); - store_parm_decls (); - - for (; static_dtors; static_dtors = TREE_CHAIN (static_dtors)) - expand_expr_stmt (build_function_call (TREE_VALUE (static_dtors), - NULL_TREE)); - - finish_function (0); - - assemble_destructor (IDENTIFIER_POINTER (fnname)); - } -#endif -} +#include "c-tree.h" +#include "c-family/c-common.h" +#include "langhooks.h" +#include "langhooks-def.h" +#include "tree-inline.h" +#include "diagnostic-core.h" +#include "c-objc-common.h" +#include "c-family/c-pragma.h" + +enum c_language_kind c_language = clk_c; + +/* Lang hooks common to C and ObjC are declared in c-objc-common.h; + consequently, there should be very few hooks below. */ + +#undef LANG_HOOKS_NAME +#define LANG_HOOKS_NAME "GNU C" +#undef LANG_HOOKS_INIT +#define LANG_HOOKS_INIT c_objc_common_init +#undef LANG_HOOKS_INIT_TS +#define LANG_HOOKS_INIT_TS c_common_init_ts + +/* Each front end provides its own lang hook initializer. */ +struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; + +#include "gtype-c.h"