c-lang.c (LANG_HOOKS_NAME): New.

* c-lang.c (LANG_HOOKS_NAME): New.
	(lang_hooks): Constify.
	(c_init_options): Update.
	(lang_identify): Remove.
	* c-parse.in (language_string): Remove.
	* dbxout.c: Include langhooks.h.
	(dbxout_symbol_location): Update.
	* dwarf2out.c: Include langhooks.h.
	(gen_compile_unit_die): Update.
	* dwarfout.c: Include langhooks.h.
	(prototyped_attribute, output_compile_unit_die): Update.
	* langhooks-def.h (LANG_HOOKS_NAME, LANG_HOOKS_IDENTIFIER_SIZE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New members.  Constify.
	* stringpool.c: Don't include toplev.h.
	(set_identifier_size): Remove.
	* toplev.c (toplev_main): Initialize identifier size.
	(print_version): Update.
	* tree.h (language_string, init_lex, lang_identify,
	set_identifier_size): Remove.
	* Makefile.in: Update dependencies.
	* config/darwin.c: Include langhooks.h.
	(func_name_maybe_scoped): Update.
	* config/darwin.h (ASM_END_FILE): Update.
	* config/nextstep.h (ASM_END_FILE): Update.
	* config/nextstep21.h (ASM_END_FILE): Update.
	* config/i386/sun386.h (ASM_END_FILE): Update.
	* config/rs6000/rs6000.c (ASM_END_FILE): Include langhooks.h.
	(rs6000_output_function_epilogue): Update.
ada:
	* misc.c (LANG_HOOKS_NAME, LANG_HOOKS_IDENTIFIER_SIZE): Override.
	(struct lang_hooks): Constify.
	(language_string, lang_identify): Remove.
	* utils.c (init_decl_processing): Update.
cp:
	* cp-lang.c (LANG_HOOKS_NAME): Override.
	(struct lang_hooks): Constify.
	* lex.c (cxx_init_options): Update.
	(lang_identify): Remove.
	* parse.y (language_string): Remove.
f:
	* com.c (language_string, lang_identify): Remove.
	(struct lang_hooks): Constify.
	(LANG_HOOKS_NAME): Override.
	(init_parse): Update.
java:
	* jcf-parse.c (init_lex): Remove.
	* lang.c (language_string, lang_identify): Remove.
	(struct lang_hooks): Constify.
	(LANG_HOOKS_NAME): Override.
	(init_parse): Update.
objc:
	* objc-act.c (LANG_HOOKS_NAME): Override.
	(struct lang_hooks): Constify.
	(objc_init_options): Update.
	(lang_identify): Remove.

From-SVN: r46874
This commit is contained in:
Neil Booth 2001-11-09 07:14:20 +00:00 committed by Neil Booth
parent 14d269bba7
commit 3ac88239fc
31 changed files with 126 additions and 132 deletions

View File

@ -1,3 +1,40 @@
2001-11-09 Neil Booth <neil@daikokuya.demon.co.uk>
* c-lang.c (LANG_HOOKS_NAME): New.
(lang_hooks): Constify.
(c_init_options): Update.
(lang_identify): Remove.
* c-parse.in (language_string): Remove.
* dbxout.c: Include langhooks.h.
(dbxout_symbol_location): Update.
* dwarf2out.c: Include langhooks.h.
(gen_compile_unit_die): Update.
* dwarfout.c: Include langhooks.h.
(prototyped_attribute, output_compile_unit_die): Update.
* langhooks-def.h (LANG_HOOKS_NAME, LANG_HOOKS_IDENTIFIER_SIZE): New.
(LANG_HOOKS_INITIALIZER): Update.
* langhooks.h (struct lang_hooks): New members. Constify.
* stringpool.c: Don't include toplev.h.
(set_identifier_size): Remove.
* toplev.c (toplev_main): Initialize identifier size.
(print_version): Update.
* tree.h (language_string, init_lex, lang_identify,
set_identifier_size): Remove.
* Makefile.in: Update dependencies.
* config/darwin.c: Include langhooks.h.
(func_name_maybe_scoped): Update.
* config/darwin.h (ASM_END_FILE): Update.
* config/nextstep.h (ASM_END_FILE): Update.
* config/nextstep21.h (ASM_END_FILE): Update.
* config/i386/sun386.h (ASM_END_FILE): Update.
* config/rs6000/rs6000.c (ASM_END_FILE): Include langhooks.h.
(rs6000_output_function_epilogue): Update.
objc:
* objc-act.c (LANG_HOOKS_NAME): Override.
(struct lang_hooks): Constify.
(objc_init_options): Update.
(lang_identify): Remove.
Fri Nov 9 00:25:18 EST 2001 John Wehle (john@feith.com)
* fold-const.c (lshift_double): Honor PREC.

View File

@ -1422,7 +1422,7 @@ optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
insn-config.h $(EXPR_H) $(OPTABS_H) libfuncs.h $(RECOG_H) reload.h \
toplev.h $(GGC_H) real.h $(TM_P_H) except.h
dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
$(REGS_H) debug.h $(TM_P_H) $(TARGET_H) function.h \
$(REGS_H) debug.h $(TM_P_H) $(TARGET_H) function.h langhooks.h \
insn-config.h reload.h gstab.h xcoffout.h output.h dbxout.h toplev.h
debug.o : debug.c $(CONFIG_H) $(SYSTEM_H)
sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
@ -1431,11 +1431,11 @@ sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
sdbout.h toplev.h $(TM_P_H) except.h debug.h
dwarfout.o : dwarfout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf.h \
flags.h insn-config.h reload.h output.h toplev.h $(TM_P_H) \
debug.h
debug.h langhooks.h
dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf2.h \
debug.h flags.h insn-config.h reload.h output.h diagnostic.h \
hard-reg-set.h $(REGS_H) $(EXPR_H) libfuncs.h toplev.h dwarf2out.h varray.h \
$(GGC_H) except.h dwarf2asm.h $(TM_P_H)
$(GGC_H) except.h dwarf2asm.h $(TM_P_H) langhooks.h
dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) flags.h $(RTL_H) $(TREE_H) \
output.h dwarf2asm.h $(TM_P_H)
xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) xcoffout.h \
@ -1601,7 +1601,8 @@ params.o : params.c $(CONFIG_H) $(SYSTEM_H) $(PARAMS_H) toplev.h
$(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) $(GGC_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \
output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) libfuncs.h \
$(TARGET_DEF_H) function.h sched-int.h $(TM_P_H) $(EXPR_H) $(OPTABS_H)
$(TARGET_DEF_H) function.h sched-int.h $(TM_P_H) $(EXPR_H) $(OPTABS_H) \
langhooks.h
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(out_file) $(OUTPUT_OPTION)

View File

@ -1,3 +1,10 @@
2001-11-09 Neil Booth <neil@daikokuya.demon.co.uk>
* misc.c (LANG_HOOKS_NAME, LANG_HOOKS_IDENTIFIER_SIZE): Override.
(struct lang_hooks): Constify.
(language_string, lang_identify): Remove.
* utils.c (init_decl_processing): Update.
2001-11-06 Neil Booth <neil@cat.daikokuya.demon.co.uk>
* misc.c: Include langhooks-def.h.

View File

@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
* $Revision: 1.8 $
* $Revision: 1.9 $
* *
* Copyright (C) 1992-2001 Free Software Foundation, Inc. *
* *
@ -116,6 +116,10 @@ static HOST_WIDE_INT gnat_get_alias_set PARAMS ((tree));
/* Structure giving our language-specific hooks. */
#undef LANG_HOOKS_NAME
#define LANG_HOOKS_NAME "GNU Ada"
#undef LANG_HOOKS_IDENTIFIER_SIZE
#define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct tree_identifier)
#undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT gnat_init
#undef LANG_HOOKS_INIT_OPTIONS
@ -127,7 +131,7 @@ static HOST_WIDE_INT gnat_get_alias_set PARAMS ((tree));
#undef LANG_HOOKS_GET_ALIAS_SET
#define LANG_HOOKS_GET_ALIAS_SET gnat_get_alias_set
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
/* gnat standard argc argv */
@ -136,7 +140,6 @@ extern char **gnat_argv;
/* Global Variables Expected by gcc: */
const char * const language_string = "GNU Ada";
int flag_traditional; /* Used by dwarfout.c. */
int ggc_p = 1;
@ -358,14 +361,6 @@ gnat_init ()
#endif
}
/* Return a short string identifying this language to the debugger. */
const char *
lang_identify ()
{
return "ada";
}
/* If DECL has a cleanup, build and return that cleanup here.
This is a callback called by expand_expr. */

View File

@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
* $Revision$
* $Revision: 1.2 $
* *
* Copyright (C) 1992-2001, Free Software Foundation, Inc. *
* *
@ -480,12 +480,6 @@ pushdecl (decl)
void
init_decl_processing ()
{
/* The structure `tree_identifier' is the GCC tree data structure that holds
IDENTIFIER_NODE nodes. We need to call `set_identifier_size' to tell GCC
that we have not added any language specific fields to IDENTIFIER_NODE
nodes. */
set_identifier_size (sizeof (struct tree_identifier));
lineno = 0;
/* incomplete_decl_finalize_hook is defined in toplev.c. It needs to be set

View File

@ -49,6 +49,8 @@ static void c_post_options PARAMS ((void));
static int c_disregard_inline_limits PARAMS ((tree));
static int c_cannot_inline_tree_fn PARAMS ((tree *));
#undef LANG_HOOKS_NAME
#define LANG_HOOKS_NAME "GNU C"
#undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT c_init
#undef LANG_HOOKS_INIT_OPTIONS
@ -71,7 +73,7 @@ static int c_cannot_inline_tree_fn PARAMS ((tree *));
anon_aggr_type_p
/* Each front end provides its own. */
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
/* Post-switch processing. */
static void
@ -99,9 +101,6 @@ c_post_options ()
static void
c_init_options ()
{
/* Make identifier nodes long enough for the language-specific slots. */
set_identifier_size (sizeof (struct lang_identifier));
parse_in = cpp_create_reader (ident_hash, CLK_GNUC89);
/* Mark as "unspecified". */
@ -135,12 +134,6 @@ c_init ()
c_parse_init ();
}
const char *
lang_identify ()
{
return "c";
}
void
print_lang_statistics ()
{

View File

@ -60,15 +60,6 @@ ifobjc
#include "objc-act.h"
end ifobjc
/* Since parsers are distinct for each language, put the language string
definition here. */
ifobjc
const char * const language_string = "GNU Objective-C";
end ifobjc
ifc
const char * const language_string = "GNU C";
end ifc
/* Like YYERROR but do call yyerror. */
#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
@ -3542,10 +3533,6 @@ init_parse (filename)
const char *filename;
{
add_c_tree_codes ();
/* Make identifier nodes long enough for the language-specific slots. */
set_identifier_size (sizeof (struct lang_identifier));
init_reswords ();
init_pragma ();

View File

@ -37,6 +37,7 @@ Boston, MA 02111-1307, USA. */
#include "reload.h"
#include "function.h"
#include "ggc.h"
#include "langhooks.h"
#include "darwin-protos.h"
@ -565,7 +566,7 @@ func_name_maybe_scoped (fname)
{
if (is_cplusplus < 0)
is_cplusplus = (strcmp (lang_identify (), "cplusplus") == 0);
is_cplusplus = (strcmp (lang_hooks.name, "GNU C++") == 0);
if (is_cplusplus)
{

View File

@ -175,7 +175,7 @@ do { text_section (); \
#define ASM_FILE_END(FILE) \
do { \
machopic_finish (asm_out_file); \
if (strcmp (language_string, "GNU C++") == 0) \
if (strcmp (lang_hooks.name, "GNU C++") == 0) \
{ \
constructor_section (); \
destructor_section (); \

View File

@ -76,7 +76,7 @@ do \
fprintf (FILE, "\n"); \
} \
fprintf (FILE, "\t.version\t\"%s %s\"\n", \
language_string, version_string); \
lang_hooks.name, version_string); \
if (optimize) ASM_FILE_START_1 (FILE); \
} while (0)

View File

@ -229,7 +229,7 @@ extern void nextstep_asm_out_destructor PARAMS ((struct rtx_def *, int));
#undef ASM_FILE_END
#define ASM_FILE_END(FILE) \
do { \
if (strcmp (language_string, "GNU C++") == 0) \
if (strcmp (lang_hooks.name, "GNU C++") == 0) \
{ \
constructor_section (); \
destructor_section (); \

View File

@ -43,7 +43,7 @@ Boston, MA 02111-1307, USA. */
#undef ASM_FILE_END
#define ASM_FILE_END(FILE) \
do { \
if (strcmp (language_string, "GNU C++") == 0) \
if (strcmp (lang_hooks.name, "GNU C++") == 0) \
{ \
ASM_OUTPUT_ALIGN (FILE, 1); \
} \

View File

@ -46,6 +46,7 @@ Boston, MA 02111-1307, USA. */
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
#include "langhooks.h"
#ifndef TARGET_NO_PROTOTYPE
#define TARGET_NO_PROTOTYPE 0
@ -7499,6 +7500,7 @@ rs6000_output_function_epilogue (file, size)
if (DEFAULT_ABI == ABI_AIX && ! flag_inhibit_size_directive)
{
const char *fname = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0);
const char *language_string = lang_hooks.name;
int fixed_parms, float_parms, parm_info;
int i;

View File

@ -1,3 +1,11 @@
2001-11-09 Neil Booth <neil@daikokuya.demon.co.uk>
* cp-lang.c (LANG_HOOKS_NAME): Override.
(struct lang_hooks): Constify.
* lex.c (cxx_init_options): Update.
(lang_identify): Remove.
* parse.y (language_string): Remove.
2001-11-08 Andreas Franck <afranck@gmx.de>
* Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,

View File

@ -29,6 +29,8 @@ Boston, MA 02111-1307, USA. */
static HOST_WIDE_INT cxx_get_alias_set PARAMS ((tree));
#undef LANG_HOOKS_NAME
#define LANG_HOOKS_NAME "GNU C++"
#undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT cxx_init
#undef LANG_HOOKS_FINISH
@ -66,7 +68,7 @@ static HOST_WIDE_INT cxx_get_alias_set PARAMS ((tree));
#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P anon_aggr_type_p
/* Each front end provides its own hooks, for toplev.c. */
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
/* Special routine to get the alias set for C++. */

View File

@ -248,9 +248,6 @@ cxx_post_options ()
void
cxx_init_options ()
{
/* Make identifier nodes long enough for the language-specific slots. */
set_identifier_size (sizeof (struct lang_identifier));
parse_in = cpp_create_reader (ident_hash, CLK_GNUCXX);
/* Default exceptions on. */
@ -281,12 +278,6 @@ cxx_finish ()
GNU_xref_end (errorcount+sorrycount);
}
const char *
lang_identify ()
{
return "cplusplus";
}
static int *
init_cpp_parse ()
{

View File

@ -45,10 +45,6 @@ Boston, MA 02111-1307, USA. */
#include "toplev.h"
#include "ggc.h"
/* Since parsers are distinct for each language, put the language string
definition here. (fnf) */
const char * const language_string = "GNU C++";
extern struct obstack permanent_obstack;
/* Like YYERROR but do call yyerror. */

View File

@ -85,6 +85,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "debug.h"
#include "function.h"
#include "target.h"
#include "langhooks.h"
#ifdef XCOFF_DEBUGGING_INFO
#include "xcoffout.h"
@ -2147,7 +2148,7 @@ dbxout_symbol_location (decl, type, suffix, home)
we rely on the fact that error_mark_node initializers always
end up in bss for C++ and never end up in bss for C. */
if (DECL_INITIAL (decl) == 0
|| (!strcmp (lang_identify (), "cplusplus")
|| (!strcmp (lang_hooks.name, "GNU C++")
&& DECL_INITIAL (decl) == error_mark_node))
current_sym_code = N_LCSYM;
else if (DECL_IN_TEXT_SECTION (decl))

View File

@ -59,6 +59,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "diagnostic.h"
#include "debug.h"
#include "target.h"
#include "langhooks.h"
#include "hashtable.h"
#ifdef DWARF2_DEBUGGING_INFO
@ -10470,6 +10471,7 @@ gen_compile_unit_die (filename)
dw_die_ref die;
char producer[250];
const char *wd = getpwd ();
const char *language_string = lang_hooks.name;
int language;
die = new_die (DW_TAG_compile_unit, NULL);

View File

@ -577,6 +577,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "toplev.h"
#include "tm_p.h"
#include "debug.h"
#include "langhooks.h"
/* NOTE: In the comments in this file, many references are made to
so called "Debugging Information Entries". For the sake of brevity,
@ -3462,7 +3463,7 @@ static inline void
prototyped_attribute (func_type)
tree func_type;
{
if ((strcmp (language_string, "GNU C") == 0)
if ((strcmp (lang_hooks.name, "GNU C") == 0)
&& (TYPE_ARG_TYPES (func_type) != NULL))
{
ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_prototyped);
@ -4206,6 +4207,7 @@ output_compile_unit_die (arg)
void *arg;
{
const char *main_input_filename = arg;
const char *language_string = lang_hooks.name;
ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_compile_unit);
sibling_attribute ();

View File

@ -1,3 +1,10 @@
Fri Nov 9 07:14:47 2001 Neil Booth <neil@daikokuya.demon.co.uk>
* com.c (language_string, lang_identify): Remove.
(struct lang_hooks): Constify.
(LANG_HOOKS_NAME): Override.
(init_parse): Update.
2001-11-08 Andreas Franck <afranck@gmx.de>
* Make-lang.in (G77_INSTALL_NAME, G77_CROSS_NAME): Handle

View File

@ -136,11 +136,6 @@ typedef struct { unsigned :16, :16, :16; } vms_ino_t;
/* Externals defined here. */
/* ~~gcc/tree.h *should* declare this, because toplev.c and dwarfout.c
reference it. */
const char * const language_string = "GNU F77";
/* Stream for reading from the input file. */
FILE *finput;
@ -14212,8 +14207,6 @@ init_parse (filename)
setvbuf (finput, (char *) xmalloc (IO_BUFFER_SIZE), _IOFBF, IO_BUFFER_SIZE);
#endif
/* Make identifier nodes long enough for the language-specific slots. */
set_identifier_size (sizeof (struct lang_identifier));
decl_printable_name = lang_printable_name;
print_error_function = lang_print_error_function;
@ -14264,6 +14257,8 @@ static void ffe_init PARAMS ((void));
static void ffe_finish PARAMS ((void));
static void ffe_init_options PARAMS ((void));
#undef LANG_HOOKS_NAME
#define LANG_HOOKS_NAME "GNU F77"
#undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT ffe_init
#undef LANG_HOOKS_FINISH
@ -14281,7 +14276,7 @@ static void ffe_init_options PARAMS ((void));
#undef LANG_HOOKS_GET_ALIAS_SET
#define LANG_HOOKS_GET_ALIAS_SET hook_get_alias_set_0
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
/* used by print-tree.c */
@ -14302,12 +14297,6 @@ ffe_finish ()
malloc_pool_display (malloc_pool_image ());
}
const char *
lang_identify ()
{
return "f77";
}
static void
ffe_init_options ()
{

View File

@ -1,3 +1,11 @@
2001-11-09 Neil Booth <neil@daikokuya.demon.co.uk>
* jcf-parse.c (init_lex): Remove.
* lang.c (language_string, lang_identify): Remove.
(struct lang_hooks): Constify.
(LANG_HOOKS_NAME): Override.
(init_parse): Update.
2001-11-08 Andreas Franck <afranck@gmx.de>
* Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle

View File

@ -261,13 +261,6 @@ parse_signature (jcf, sig_index)
JPOOL_UTF_LENGTH (jcf, sig_index));
}
void
init_lex ()
{
/* Make identifier nodes long enough for the language-specific slots. */
set_identifier_size (sizeof (struct lang_identifier));
}
void
set_yydebug (value)
int value;

View File

@ -99,8 +99,6 @@ static const char *const java_tree_code_name[] = {
int compiling_from_source;
const char * const language_string = "GNU Java";
char * resource_name;
int flag_emit_class_files = 0;
@ -197,6 +195,8 @@ static int dependency_tracking = 0;
#define DEPEND_TARGET_SET 4
#define DEPEND_FILE_ALREADY_SET 8
#undef LANG_HOOKS_NAME
#define LANG_HOOKS_NAME "GNU Java"
#undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT java_init
#undef LANG_HOOKS_INIT_OPTIONS
@ -205,7 +205,7 @@ static int dependency_tracking = 0;
#define LANG_HOOKS_DECODE_OPTION java_decode_option
/* Each front end provides its own. */
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
/* Process an option that can accept a `no-' form.
Return 1 if option found, 0 otherwise. */
@ -474,8 +474,6 @@ init_parse (filename)
}
}
init_lex ();
return filename;
}
@ -744,12 +742,6 @@ java_init_options ()
flag_non_call_exceptions = 1;
}
const char *
lang_identify ()
{
return "Java";
}
/* Hooks for print_node. */
void

View File

@ -56,6 +56,8 @@ tree lhd_tree_inlining_copy_res_decl_for_inlining PARAMS ((tree, tree,
int *, void *));
int lhd_tree_inlining_anon_aggr_type_p PARAMS ((tree));
#define LANG_HOOKS_NAME "GNU unknown"
#define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier)
#define LANG_HOOKS_INIT lhd_do_nothing
#define LANG_HOOKS_FINISH lhd_do_nothing
#define LANG_HOOKS_CLEAR_BINDING_STACK lhd_clear_binding_stack
@ -95,6 +97,8 @@ int lhd_tree_inlining_anon_aggr_type_p PARAMS ((tree));
/* The whole thing. The structure is defined in toplev.h. */
#define LANG_HOOKS_INITIALIZER { \
LANG_HOOKS_NAME, \
LANG_HOOKS_IDENTIFIER_SIZE, \
LANG_HOOKS_INIT, \
LANG_HOOKS_FINISH, \
LANG_HOOKS_CLEAR_BINDING_STACK, \

View File

@ -49,6 +49,13 @@ struct lang_hooks_for_tree_inlining
struct lang_hooks
{
/* String identifying the front end. e.g. "GNU C++". */
const char *name;
/* sizeof (struct lang_identifier), so make_node () creates
identifier nodes long enough for the language-specific slots. */
size_t identifier_size;
/* Called first, to initialize the front end. */
void (*init) PARAMS ((void));
@ -88,6 +95,6 @@ struct lang_hooks
};
/* Each front end provides its own. */
extern struct lang_hooks lang_hooks;
extern const struct lang_hooks lang_hooks;
#endif /* GCC_LANG_HOOKS_H */

View File

@ -451,6 +451,8 @@ static int generating_instance_variables = 0;
static int print_struct_values = 0;
#undef LANG_HOOKS_NAME
#define LANG_HOOKS_NAME "GNU Objective-C"
#undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT objc_init
#undef LANG_HOOKS_INIT_OPTIONS
@ -461,7 +463,7 @@ static int print_struct_values = 0;
#define LANG_HOOKS_POST_OPTIONS objc_post_options
/* Each front end provides its own. */
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
/* Post-switch processing. */
static void
@ -536,9 +538,6 @@ generate_struct_by_value_array ()
static void
objc_init_options ()
{
/* Make identifier nodes long enough for the language-specific slots. */
set_identifier_size (sizeof (struct lang_identifier));
parse_in = cpp_create_reader (ident_hash, CLK_OBJC);
c_language = clk_objective_c;
}
@ -601,12 +600,6 @@ finish_file ()
fclose (gen_declaration_file);
}
const char *
lang_identify ()
{
return "objc";
}
static int
objc_decode_option (argc, argv)
int argc;

View File

@ -32,7 +32,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ggc.h"
#include "tree.h"
#include "hashtable.h"
#include "toplev.h"
/* The "" allocated string. */
const char empty_string[] = "";
@ -143,19 +142,6 @@ maybe_get_identifier (text)
return NULL_TREE;
}
/* Record the size of an identifier node for the language in use.
SIZE is the total size in bytes.
This is called by the language-specific files. This must be
called before allocating any identifiers. */
void
set_identifier_size (size)
int size;
{
tree_code_length[(int) IDENTIFIER_NODE]
= (size - sizeof (struct tree_common)) / sizeof (tree);
}
/* Report some basic statistics about the string pool. */
void

View File

@ -4647,6 +4647,10 @@ toplev_main (argc, argv)
flag_short_enums = DEFAULT_SHORT_ENUMS;
#endif
tree_code_length[(int) IDENTIFIER_NODE]
= ((lang_hooks.identifier_size - sizeof (struct tree_common))
/ sizeof (tree));
/* Initialize the garbage-collector. */
init_ggc ();
init_stringpool ();
@ -5015,7 +5019,7 @@ print_version (file, indent)
"%s%s%s version %s (%s) compiled by CC.\n"
#endif
, indent, *indent != 0 ? " " : "",
language_string, version_string, TARGET_NAME,
lang_hooks.name, version_string, TARGET_NAME,
indent, __VERSION__);
}

View File

@ -2650,8 +2650,6 @@ extern void (*incomplete_decl_finalize_hook) PARAMS ((tree));
extern const char *init_parse PARAMS ((const char *));
extern void finish_parse PARAMS ((void));
extern const char * const language_string;
/* Declare a predefined function. Return the declaration. This function is
provided by each language frontend. */
extern tree builtin_function PARAMS ((const char *, tree, int,
@ -2777,14 +2775,9 @@ extern tree fold_builtin PARAMS ((tree));
/* The language front-end must define these functions. */
/* Function of no arguments for initializing lexical scanning. */
extern void init_lex PARAMS ((void));
/* Function of no arguments for initializing the symbol table. */
extern void init_decl_processing PARAMS ((void));
/* Function to identify which front-end produced the output file. */
extern const char *lang_identify PARAMS ((void));
/* Function to replace the DECL_LANG_SPECIFIC field of a DECL with a copy. */
extern void copy_lang_decl PARAMS ((tree));
@ -2833,7 +2826,6 @@ struct obstack;
/* In tree.c */
extern int really_constant_p PARAMS ((tree));
extern void set_identifier_size PARAMS ((int));
extern int int_fits_type_p PARAMS ((tree, tree));
extern int tree_log2 PARAMS ((tree));
extern int tree_floor_log2 PARAMS ((tree));