From 3aac38d70cbb15e40c377d39dd612df4d16ad259 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 20 Nov 2000 23:39:52 -0800 Subject: [PATCH] parse.y (yyparse_1): Rename the parser entry point. * cp/parse.y (yyparse_1): Rename the parser entry point. * c-lex.c (orig_filename): New variable. (init_c_lex): Set it. Move call to cpp_start_read ... (yyparse): ... here. New function. * c-parse.in (yyparse_1): Rename the parser entry point. * c-tree.h: Declare it. From-SVN: r37607 --- gcc/ChangeLog | 8 ++++++++ gcc/c-lex.c | 20 +++++++++++++++++--- gcc/c-parse.in | 5 ++++- gcc/c-tree.h | 1 + gcc/cp/ChangeLog | 6 +++++- gcc/cp/parse.y | 3 +++ 6 files changed, 38 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 52963ce7ca3..ed6b6fe2435 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2000-11-20 Richard Henderson + + * c-lex.c (orig_filename): New variable. + (init_c_lex): Set it. Move call to cpp_start_read ... + (yyparse): ... here. New function. + * c-parse.in (yyparse_1): Rename the parser entry point. + * c-tree.h: Declare it. + 2000-11-21 Jakub Jelinek * expr.c (do_compare_and_jump): If op0 was replaced by promoted diff --git a/gcc/c-lex.c b/gcc/c-lex.c index faa8e5957db..4f9b8cc7e01 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -60,6 +60,9 @@ extern cpp_reader parse_in; FILE *finput; #endif +/* The original file name, before changing "-" to "stdin". */ +static const char *orig_filename; + /* Private idea of the line number. See discussion in c_lex(). */ static int lex_lineno; @@ -170,6 +173,8 @@ init_c_lex (filename) { struct c_fileinfo *toplevel; + orig_filename = filename; + /* Set up filename timing. Must happen before cpp_start_read. */ file_info_tree = splay_tree_new ((splay_tree_compare_fn)strcmp, 0, @@ -214,9 +219,6 @@ init_c_lex (filename) /* Make sure parse_in.digraphs matches flag_digraphs. */ CPP_OPTION (&parse_in, digraphs) = flag_digraphs; - if (! cpp_start_read (&parse_in, filename)) - exit (FATAL_EXIT_CODE); /* cpplib has emitted an error. */ - if (filename == 0 || !strcmp (filename, "-")) filename = "stdin"; #endif @@ -232,6 +234,18 @@ init_c_lex (filename) return filename; } +/* A thin wrapper around the real parser that initializes the + integrated preprocessor after debug output has been initialized. */ + +int +yyparse() +{ + if (! cpp_start_read (&parse_in, orig_filename)) + return 1; /* cpplib has emitted an error. */ + + return yyparse_1(); +} + struct c_fileinfo * get_fileinfo (name) const char *name; diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 517b488c9d9..5943fa4024a 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -72,8 +72,11 @@ end ifc /* Like YYERROR but do call yyerror. */ #define YYERROR1 { yyerror ("syntax error"); YYERROR; } -/* Cause the `yydebug' variable to be defined. */ +/* 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 669c89b7d1b..41a6075c184 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -154,6 +154,7 @@ extern tree lookup_objc_ivar PARAMS ((tree)); /* in c-parse.in */ extern void c_parse_init PARAMS ((void)); +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 c75edb942cc..bc73be5a6f4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4 +1,8 @@ -2000-11-16 Alex Samuel +2000-11-20 Richard Henderson + + * parse.y (yyparse_1): Rename the parser entry point. + +2000-11-20 Alex Samuel * mangle.c (write_name): Use for names directly in function scope. diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 13c678b7b2a..d55f1b9f058 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -214,6 +214,9 @@ 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 -- 2.30.2