diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 82285b7f5773..9c9c00c4788e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2002-03-17 Neil Booth + + * c-common.h (yyparse, c_common_parse_file): New. + * c-lang.c: Include c-common.h. + (LANG_HOOKS_PARSE_FILE): Redefine. + * c-lex.c: Include c-common.h. + (yyparse): Rename c_common_parse_file. Call yyparse. + * c-parse.in (yyparse): Remove macro. + * c-tree.h (yyparse_1): Remove. + * langhooks-def.h (LANG_HOOKS_PARSE_FILE): New. + (LANG_HOOKS_INITIALIZER): Update. + * langhooks.h (struct lang_hoooks): New hook parse_file. + * toplev.c (compile_file): Use parse_file hook. + * tree.h (yyparse): Remove. +objc: + * objc-lang.c (LANG_HOOKS_PARSE_FILE): Redefine. + 2002-03-17 Hans-Peter Nilsson * config/mmix/mmix.md ("truncdfsf2"): Correct operator is diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 07211fa7c6fd..9b062a7c0b84 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2002-03-17 Neil Booth + + * misc.c (LANG_HOOKS_PARSE_FILE): Redefine. + (yyparse): Rename gnat_parse_file. + 2002-03-14 Geoffrey Keating Delete all lines containing "$Revision:". diff --git a/gcc/ada/misc.c b/gcc/ada/misc.c index 393f70a8bfe7..46e280213593 100644 --- a/gcc/ada/misc.c +++ b/gcc/ada/misc.c @@ -85,6 +85,7 @@ static void gnat_print_type PARAMS ((FILE *, tree, int)); static const char *gnat_printable_name PARAMS ((tree, int)); static tree gnat_eh_runtime_type PARAMS ((tree)); static int gnat_eh_type_covers PARAMS ((tree, tree)); +static void gnat_parse_file PARAMS ((void)); /* Structure giving our language-specific hooks. */ @@ -98,6 +99,8 @@ static int gnat_eh_type_covers PARAMS ((tree, tree)); #define LANG_HOOKS_INIT_OPTIONS gnat_init_options #undef LANG_HOOKS_DECODE_OPTION #define LANG_HOOKS_DECODE_OPTION gnat_decode_option +#undef LANG_HOOKS_PARSE_FILE +#define LANG_HOOKS_PARSE_FILE gnat_parse_file #undef LANG_HOOKS_HONOR_READONLY #define LANG_HOOKS_HONOR_READONLY 1 #undef LANG_HOOKS_GET_ALIAS_SET @@ -167,11 +170,10 @@ extern void __gnat_initialize PARAMS((void)); extern void adainit PARAMS((void)); extern void _ada_gnat1drv PARAMS((void)); -/* For most front-ends, this is the parser for the language. For us, we - process the GNAT tree. */ +/* The parser for the language. For us, we process the GNAT tree. */ -int -yyparse () +static void +gnat_parse_file () { /* call the target specific initializations */ __gnat_initialize(); @@ -183,8 +185,6 @@ yyparse () /* Call the front end */ _ada_gnat1drv (); - - return 0; } /* Decode all the language specific options that cannot be decoded by GCC. diff --git a/gcc/c-common.h b/gcc/c-common.h index 280c5b0d2d2a..f93e6fe29cf8 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -325,7 +325,7 @@ extern void (*lang_expand_function_end) PARAMS ((void)); noreturn attribute. */ extern int (*lang_missing_noreturn_ok_p) PARAMS ((tree)); - +extern int yyparse PARAMS ((void)); extern stmt_tree current_stmt_tree PARAMS ((void)); extern tree *current_scope_stmt_stack PARAMS ((void)); extern void begin_stmt_tree PARAMS ((tree *)); @@ -552,6 +552,7 @@ extern void c_common_init_options PARAMS ((enum c_language_kind)); extern void c_common_post_options PARAMS ((void)); extern const char *c_common_init PARAMS ((const char *)); extern void c_common_finish PARAMS ((void)); +extern void c_common_parse_file PARAMS ((void)); extern HOST_WIDE_INT c_common_get_alias_set PARAMS ((tree)); extern bool c_promoting_integer_type_p PARAMS ((tree)); extern int self_promoting_args_p PARAMS ((tree)); diff --git a/gcc/c-lang.c b/gcc/c-lang.c index c01d256abb76..bb26001f1857 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -24,6 +24,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "system.h" #include "tree.h" #include "c-tree.h" +#include "c-common.h" #include "langhooks.h" #include "langhooks-def.h" @@ -49,6 +50,8 @@ static void c_post_options PARAMS ((void)); #define LANG_HOOKS_GET_ALIAS_SET c_common_get_alias_set #undef LANG_HOOKS_SAFE_FROM_P #define LANG_HOOKS_SAFE_FROM_P c_safe_from_p +#undef LANG_HOOKS_PARSE_FILE +#define LANG_HOOKS_PARSE_FILE c_common_parse_file #undef LANG_HOOKS_STATICP #define LANG_HOOKS_STATICP c_staticp #undef LANG_HOOKS_PRINT_IDENTIFIER diff --git a/gcc/c-lex.c b/gcc/c-lex.c index d157a3f0db2f..7bafde752deb 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -29,6 +29,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "output.h" #include "c-lex.h" #include "c-tree.h" +#include "c-common.h" #include "flags.h" #include "timevar.h" #include "cpplib.h" @@ -155,13 +156,13 @@ init_c_lex (filename) Also, make sure the start_source_file debug hook gets called for the primary source file. */ -int -yyparse() +void +c_common_parse_file () { (*debug_hooks->start_source_file) (lineno, input_filename); cpp_finish_options (parse_in); - return yyparse_1(); + yyparse (); } struct c_fileinfo * diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 80e4ca862194..1628057b7840 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -64,9 +64,6 @@ end ifobjc /* Cause the "yydebug" variable to be defined. */ #define YYDEBUG 1 - -/* Rename the "yyparse" function so that we can override it elsewhere. */ -#define yyparse yyparse_1 %} %start program diff --git a/gcc/c-tree.h b/gcc/c-tree.h index d6f622e0ff58..d39e3ff6e836 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -161,7 +161,6 @@ extern tree lookup_objc_ivar PARAMS ((tree)); /* in c-parse.in */ extern void c_parse_init PARAMS ((void)); extern void c_set_yydebug PARAMS ((int)); -extern int yyparse_1 PARAMS ((void)); /* in c-aux-info.c */ extern void gen_aux_info_record PARAMS ((tree, int, int, int)); diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9ef43ede9467..fd306a72857c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-03-17 Neil Booth + + * cp-lang.c (LANG_HOOKS_PARSE_FILE): Redefine. + * parse.y (yyparse): Remove macro. + 2002-03-17 Jason Merrill PR c++/5757 diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 1a2713601b40..40defa57e952 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -51,6 +51,8 @@ static bool ok_to_generate_alias_set_for_type PARAMS ((tree)); #define LANG_HOOKS_EXPAND_CONSTANT cplus_expand_constant #undef LANG_HOOKS_SAFE_FROM_P #define LANG_HOOKS_SAFE_FROM_P c_safe_from_p +#undef LANG_HOOKS_PARSE_FILE +#define LANG_HOOKS_PARSE_FILE c_common_parse_file #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL cxx_dup_lang_specific_decl #undef LANG_HOOKS_UNSAVE_EXPR_NOW diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index fd53a850cb25..7988ec31edfb 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -228,9 +228,6 @@ cp_parse_init () ggc_add_tree_root (¤t_enum_type, 1); ggc_add_tree_root (&saved_scopes, 1); } - -/* Rename the "yyparse" function so that we can override it elsewhere. */ -#define yyparse yyparse_1 %} %start program diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 0f3ec2c3a16e..43c9c9c2c2e3 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,10 @@ +Sun Mar 17 20:57:30 2002 Neil Booth + + * com.c (LANG_HOOKS_PARSE_FILE): Redefine. + * com.h (ffe_parse_file): New. + * parse.c (NAME_OF_STDIN): Remove. + (yyparse): Rename ffe_parse_file. + Tue Mar 12 20:23:18 2002 Kaveh R. Ghazi * com.c (tree_code_type, tree_code_length, tree_code_name): diff --git a/gcc/f/com.c b/gcc/f/com.c index f895db4cb9f4..016b422db256 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -13928,7 +13928,7 @@ start_decl (tree decl, bool is_top_level) Returns 1 on success. If the DECLARATOR is not suitable for a function (it defines a datum instead), we return 0, which tells - yyparse to report a parse error. + ffe_parse_file to report a parse error. NESTED is nonzero for a function nested within another function. */ @@ -14211,6 +14211,8 @@ static void ffe_print_identifier PARAMS ((FILE *, tree, int)); #define LANG_HOOKS_INIT_OPTIONS ffe_init_options #undef LANG_HOOKS_DECODE_OPTION #define LANG_HOOKS_DECODE_OPTION ffe_decode_option +#undef LANG_HOOKS_PARSE_FILE +#define LANG_HOOKS_PARSE_FILE ffe_parse_file #undef LANG_HOOKS_PRINT_IDENTIFIER #define LANG_HOOKS_PRINT_IDENTIFIER ffe_print_identifier diff --git a/gcc/f/com.h b/gcc/f/com.h index 5e20e2b10fb6..58b0131beec7 100644 --- a/gcc/f/com.h +++ b/gcc/f/com.h @@ -265,6 +265,7 @@ tree ffecom_truth_value (tree expr); tree ffecom_truth_value_invert (tree expr); tree ffecom_type_expr (ffebld expr); tree ffecom_which_entrypoint_decl (void); +void ffe_parse_file (); /* Define macros. */ diff --git a/gcc/f/parse.c b/gcc/f/parse.c index 29c6133c38b4..fe48b6d4f9e7 100644 --- a/gcc/f/parse.c +++ b/gcc/f/parse.c @@ -26,12 +26,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "version.h" #include "flags.h" -#define NAME_OF_STDIN "" - extern FILE *finput; -int -yyparse () +void +ffe_parse_file () { ffewhereFile wf; @@ -46,6 +44,4 @@ yyparse () ffe_file (wf, finput); ffecom_finish_compile (); - - return 0; } diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index ce82f8d6485f..3dbb7f0d955f 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2002-03-17 Neil Booth + + * java-tree.h (java_parse_file): New. + * jcf-parse.c (yyparse): Rename java_parse_file. + * lang.c (LANG_HOOKS_PARSE_FILE): Redefine. + 2002-03-16 Bryce McKinlay * parse.y (craft_constructor): Return the constructor decl. diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 898c851cc9ec..aa92f2718be1 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -1037,6 +1037,7 @@ struct lang_type #define JCF_u2 unsigned short extern void java_set_yydebug PARAMS ((int)); +extern void java_parse_file PARAMS ((void)); extern void add_assume_compiled PARAMS ((const char *, int)); extern tree lookup_class PARAMS ((tree)); extern tree lookup_java_constructor PARAMS ((tree, tree)); diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index d77ddce15daf..9f5b44ee7d80 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -913,8 +913,8 @@ predefined_filename_p (node) return 0; } -int -yyparse () +void +java_parse_file () { int filename_count = 0; char *list, *next; @@ -1054,7 +1054,7 @@ yyparse () resource_filename = IDENTIFIER_POINTER (TREE_VALUE (current_file_list)); compile_resource_file (resource_name, resource_filename); - return 0; + return; } current_jcf = main_jcf; @@ -1156,7 +1156,6 @@ yyparse () if (flag_indirect_dispatch) emit_offset_symbol_table (); } - return 0; } /* Process all class entries found in the zip file. */ diff --git a/gcc/java/lang.c b/gcc/java/lang.c index 24e0375e2758..d9e5847a63ef 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -221,6 +221,8 @@ static int dependency_tracking = 0; #define LANG_HOOKS_DECODE_OPTION java_decode_option #undef LANG_HOOKS_SET_YYDEBUG #define LANG_HOOKS_SET_YYDEBUG java_set_yydebug +#undef LANG_HOOKS_PARSE_FILE +#define LANG_HOOKS_PARSE_FILE java_parse_file #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL java_dup_lang_specific_decl diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index 06ca4f388e88..ffc86d3958e7 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -68,6 +68,7 @@ void lhd_tree_inlining_end_inlining PARAMS ((tree)); #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_PARSE_FILE lhd_do_nothing #define LANG_HOOKS_CLEAR_BINDING_STACK lhd_clear_binding_stack #define LANG_HOOKS_INIT_OPTIONS lhd_do_nothing #define LANG_HOOKS_DECODE_OPTION lhd_decode_option @@ -141,6 +142,7 @@ int lhd_tree_dump_type_quals PARAMS ((tree)); LANG_HOOKS_POST_OPTIONS, \ LANG_HOOKS_INIT, \ LANG_HOOKS_FINISH, \ + LANG_HOOKS_PARSE_FILE, \ LANG_HOOKS_CLEAR_BINDING_STACK, \ LANG_HOOKS_GET_ALIAS_SET, \ LANG_HOOKS_EXPAND_CONSTANT, \ diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 14eb999d9c06..c7e43ce63f7d 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -104,6 +104,9 @@ struct lang_hooks /* Called at the end of compilation, as a finalizer. */ void (*finish) PARAMS ((void)); + /* Parses the entire file. */ + void (*parse_file) PARAMS ((void)); + /* Called immediately after parsing to clear the binding stack. */ void (*clear_binding_stack) PARAMS ((void)); diff --git a/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c index 2577f655fc99..8f1a68bbfcfc 100644 --- a/gcc/objc/objc-lang.c +++ b/gcc/objc/objc-lang.c @@ -44,6 +44,8 @@ static void objc_post_options PARAMS ((void)); #define LANG_HOOKS_DECODE_OPTION objc_decode_option #undef LANG_HOOKS_POST_OPTIONS #define LANG_HOOKS_POST_OPTIONS objc_post_options +#undef LANG_HOOKS_PARSE_FILE +#define LANG_HOOKS_PARSE_FILE c_common_parse_file #undef LANG_HOOKS_STATICP #define LANG_HOOKS_STATICP c_staticp #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL diff --git a/gcc/toplev.c b/gcc/toplev.c index 5ea36ae182c4..a99fdd1af19a 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2106,9 +2106,9 @@ compile_file () timevar_push (TV_PARSE); - /* Call the parser, which parses the entire file - (calling rest_of_compilation for each function). */ - yyparse (); + /* Call the parser, which parses the entire file (calling + rest_of_compilation for each function). */ + (*lang_hooks.parse_file) (); /* In case there were missing block closers, get us back to the global binding level. */ @@ -2116,7 +2116,6 @@ compile_file () /* Compilation is now finished except for writing what's left of the symbol table output. */ - timevar_pop (TV_PARSE); if (flag_syntax_only) @@ -2339,7 +2338,7 @@ rest_of_type_compilation (type, toplev) timevar_pop (TV_SYMOUT); } -/* This is called from finish_function (within yyparse) +/* This is called from finish_function (within langhooks.parse_file) after each top-level definition is parsed. It is supposed to compile that function or variable and output the assembler code for it. diff --git a/gcc/tree.h b/gcc/tree.h index 06b7dd556f2d..d9ad985f342a 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2859,8 +2859,6 @@ extern tree fold_builtin PARAMS ((tree)); /* The language front-end must define these functions. */ -/* Function called with no arguments to parse and compile the input. */ -extern int yyparse PARAMS ((void)); /* Functions for processing symbol declarations. */ /* Function to enter a new lexical scope. Takes one argument: always zero when called from outside the front end. */