* cp/parse.y (yyparse_1): Rename the parser entry point.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Nov 2000 07:39:52 +0000 (07:39 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Nov 2000 07:39:52 +0000 (07:39 +0000)
        * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37607 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-lex.c
gcc/c-parse.in
gcc/c-tree.h
gcc/cp/ChangeLog
gcc/cp/parse.y

index 52963ce..ed6b6fe 100644 (file)
@@ -1,3 +1,11 @@
+2000-11-20  Richard Henderson  <rth@redhat.com>
+
+       * 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  <jakub@redhat.com>
 
        * expr.c (do_compare_and_jump): If op0 was replaced by promoted
index faa8e59..4f9b8cc 100644 (file)
@@ -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;
index 517b488..5943fa4 100644 (file)
@@ -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
index 669c89b..41a6075 100644 (file)
@@ -154,6 +154,7 @@ extern tree lookup_objc_ivar                        PARAMS ((tree));
 \f
 /* 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));
index c75edb9..bc73be5 100644 (file)
@@ -1,4 +1,8 @@
-2000-11-16  Alex Samuel  <samuel@codesourcery.com>
+2000-11-20  Richard Henderson  <rth@redhat.com>
+
+       * parse.y (yyparse_1): Rename the parser entry point.
+
+2000-11-20  Alex Samuel  <samuel@codesourcery.com>
 
        * mangle.c (write_name): Use <unscoped-name> for names directly in
        function scope.
index 13c678b..d55f1b9 100644 (file)
@@ -214,6 +214,9 @@ cp_parse_init ()
   ggc_add_tree_root (&current_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