diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 37e68d7..f4cd535 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,25 @@
+2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+	* c-common.h (c_common_parse_file): Update.
+	* c-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
+	* c-lex.c (YYDEBUG): Get from c-lex.h.
+	(c_common_parse_file): Update.
+	* c-lex.h (YYDEBUG, yydebug): New.
+	* c-parse.in (YYDEBUG): Get from c-lex.h.
+	(c_set_yydebug): Remove.
+	* c-tree.h (c_set_yydebug): Remove.
+	* langhooks-def.h (lhd_do_nothing_i): New.
+	(lhd_set_yydebug, LANG_HOOKS_SET_YYDEBUG): Remove.
+	(LANG_HOOKS_PARSE_FILE, LANG_HOOKS_INITIALIZER): Update.
+	* langhooks.c  (lhd_do_nothing_i): New.
+	(lhd_set_yydebug): Remove.
+	* langhooks.h (struct lang_hooks): Update.
+	* toplev.c (set_yydebug): New.
+	(compile_file): Update call to parse_file hook.
+	(decode_d_option): Update.
+objc:
+	* objc-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
+
 Wed Apr 24 23:45:37 2002  J"orn Rennecke <joern.rennecke@superh.com>
 
 	* loop.c (load_mems): Don't change the interface of called functions.
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 8ec214c..492dd09 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+	* misc.c (gnat_parse_file): Update.
+
 2002-04-24  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 	* misc.c (gnat_init): Don't set lang_attribute_common.
diff --git a/gcc/ada/misc.c b/gcc/ada/misc.c
index 20b2b01..63ac00a 100644
--- a/gcc/ada/misc.c
+++ b/gcc/ada/misc.c
@@ -85,7 +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));
+static void gnat_parse_file		PARAMS ((int));
 static void gnat_mark_tree		PARAMS ((tree));
 static rtx gnat_expand_expr		PARAMS ((tree, rtx, enum machine_mode,
 						 int));
@@ -192,7 +192,8 @@ extern void _ada_gnat1drv	PARAMS((void));
 /* The parser for the language.  For us, we process the GNAT tree.  */
 
 static void
-gnat_parse_file ()
+gnat_parse_file (set_yydebug)
+     int set_yydebug ATTRIBUTE_UNUSED;
 {
   /* call the target specific initializations */
   __gnat_initialize();
diff --git a/gcc/c-common.h b/gcc/c-common.h
index bce32e3..f44b0c3 100644
--- a/gcc/c-common.h
+++ b/gcc/c-common.h
@@ -568,7 +568,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 void c_common_parse_file			PARAMS ((int));
 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 f8f5b12..225967d 100644
--- a/gcc/c-lang.c
+++ b/gcc/c-lang.c
@@ -72,8 +72,6 @@ static void c_post_options PARAMS ((void));
 #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl
 #undef LANG_HOOKS_PRINT_IDENTIFIER
 #define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier
-#undef LANG_HOOKS_SET_YYDEBUG
-#define LANG_HOOKS_SET_YYDEBUG c_set_yydebug
 #undef LANG_HOOKS_FUNCTION_ENTER_NESTED
 #define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context
 #undef LANG_HOOKS_FUNCTION_LEAVE_NESTED
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index f2f8c8c..30ef877 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -58,9 +58,6 @@ static unsigned int src_lineno;
 static int header_time, body_time;
 static splay_tree file_info_tree;
 
-/* Cause the `yydebug' variable to be defined.  */
-#define YYDEBUG 1
-
 /* File used for outputting assembler code.  */
 extern FILE *asm_out_file;
 
@@ -149,8 +146,15 @@ init_c_lex (filename)
    the primary source file.  */
 
 void
-c_common_parse_file ()
+c_common_parse_file (set_yydebug)
+     int set_yydebug ATTRIBUTE_UNUSED;
 {
+#if YYDEBUG != 0
+  yydebug = set_yydebug;
+#else
+  warning ("YYDEBUG not defined");
+#endif
+
   (*debug_hooks->start_source_file) (lineno, input_filename);
   cpp_finish_options (parse_in);
 
diff --git a/gcc/c-lex.h b/gcc/c-lex.h
index 1e088dd..fed695d 100644
--- a/gcc/c-lex.h
+++ b/gcc/c-lex.h
@@ -21,6 +21,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #ifndef GCC_C_LEX_H
 #define GCC_C_LEX_H
 
+/* Cause the `yydebug' variable to be defined.  */
+#define YYDEBUG 1
+extern int yydebug;
+
 extern tree make_pointer_declarator PARAMS ((tree, tree));
 
 extern int c_lex PARAMS ((tree *));
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index f415e41..5835fe1 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -43,7 +43,7 @@ end ifc
 #include "cpplib.h"
 #include "intl.h"
 #include "timevar.h"
-#include "c-lex.h"
+#include "c-lex.h"		/* Gets YYDEBUG macro.  */
 #include "c-tree.h"
 #include "c-pragma.h"
 #include "flags.h"
@@ -61,9 +61,6 @@ end ifobjc
 
 /* Like YYERROR but do call yyerror.  */
 #define YYERROR1 { yyerror ("syntax error"); YYERROR; }
-
-/* Cause the "yydebug" variable to be defined.  */
-#define YYDEBUG 1
 %}
 
 %start program
@@ -3802,21 +3799,6 @@ yylex()
   return r;
 }
 
-/* Sets the value of the 'yydebug' variable to VALUE.
-   This is a function so we don't have to have YYDEBUG defined
-   in order to build the compiler.  */
-
-void
-c_set_yydebug (value)
-     int value;
-{
-#if YYDEBUG != 0
-  yydebug = value;
-#else
-  warning ("YYDEBUG not defined");
-#endif
-}
-
 /* Function used when yydebug is set, to print a token in more detail.  */
 
 static void
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index eedaa7a..7225f5d 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -160,7 +160,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));
 
 /* 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 ef5faf4..ee39ddc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,12 @@
+2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+	* cp-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
+	* cp-tree.h (cxx_set_yydebug): Die.
+	* lex.c (YYDEBUG): Get from c-lex.h.
+	(cxx_set_yydebug): Remove.
+	* parse.y: Include c-lex.h.
+	(YYDEBUG): Get from c-lex.h.
+
 2002-04-24  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/6438.
diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c
index 3a8417d..815ede9 100644
--- a/gcc/cp/cp-lang.c
+++ b/gcc/cp/cp-lang.c
@@ -88,8 +88,6 @@ static bool cxx_warn_unused_global_decl PARAMS ((tree));
 #define LANG_HOOKS_DECL_PRINTABLE_NAME	cxx_printable_name
 #undef LANG_HOOKS_PRINT_ERROR_FUNCTION
 #define LANG_HOOKS_PRINT_ERROR_FUNCTION	cxx_print_error_function
-#undef LANG_HOOKS_SET_YYDEBUG
-#define LANG_HOOKS_SET_YYDEBUG cxx_set_yydebug
 #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
 #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL cxx_warn_unused_global_decl
 
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index a692c98..43b17c8 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -3615,7 +3615,6 @@ extern void cxx_print_type			PARAMS ((FILE *, tree, int));
 extern void cxx_print_identifier		PARAMS ((FILE *, tree, int));
 extern void cxx_print_error_function	PARAMS ((struct diagnostic_context *,
 						 const char *));
-extern void cxx_set_yydebug			PARAMS ((int));
 extern void build_self_reference		PARAMS ((void));
 extern int same_signature_p			PARAMS ((tree, tree));
 extern void warn_hidden				PARAMS ((tree));
diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c
index 2f61487..7e4657c 100644
--- a/gcc/cp/lex.c
+++ b/gcc/cp/lex.c
@@ -23,9 +23,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* This file is the lexical analyzer for GNU C++.  */
 
-/* Cause the `yydebug' variable to be defined.  */
-#define YYDEBUG 1
-
 #include "config.h"
 #include "system.h"
 #include "input.h"
@@ -846,22 +843,6 @@ print_parse_statistics ()
 #endif
 }
 
-/* Sets the value of the 'yydebug' variable to VALUE.
-   This is a function so we don't have to have YYDEBUG defined
-   in order to build the compiler.  */
-
-void
-cxx_set_yydebug (value)
-     int value;
-{
-#if YYDEBUG != 0
-  extern int yydebug;
-  yydebug = value;
-#else
-  warning ("YYDEBUG not defined");
-#endif
-}
-
 /* Helper function to load global variables with interface
    information.  */
 
diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y
index 491c83e..627e734 100644
--- a/gcc/cp/parse.y
+++ b/gcc/cp/parse.y
@@ -28,9 +28,6 @@ Boston, MA 02111-1307, USA.  */
    is given.  Keep this in mind when reading the actions.  */
 
 %{
-/* Cause the `yydebug' variable to be defined.  */
-#define YYDEBUG 1
-
 #include "config.h"
 
 #include "system.h"
@@ -40,6 +37,7 @@ Boston, MA 02111-1307, USA.  */
 #include "flags.h"
 #include "cp-tree.h"
 #include "lex.h"
+#include "c-lex.h"		/* For YYDEBUG definition.  */
 #include "output.h"
 #include "except.h"
 #include "toplev.h"
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index 361c965..2e1df82 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,8 @@
+Thu Apr 25 07:44:44 2002  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+	* com.h (ffe_parse_file): Update.
+	* lex.c (ffe_parse_file): Update.
+
 2002-04-20  Toon Moene  <toon@moene.indiv.nluug.nl>
 
 	* root.texi: Remove variable version-g77.
diff --git a/gcc/f/com.h b/gcc/f/com.h
index 90d231c..be49242 100644
--- a/gcc/f/com.h
+++ b/gcc/f/com.h
@@ -270,7 +270,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 (void);
+void ffe_parse_file (int);
 
 /* Define macros. */
 
diff --git a/gcc/f/parse.c b/gcc/f/parse.c
index fe48b6d..f687e59 100644
--- a/gcc/f/parse.c
+++ b/gcc/f/parse.c
@@ -29,7 +29,8 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 extern FILE *finput;
 
 void
-ffe_parse_file ()
+ffe_parse_file (set_yydebug)
+     int set_yydebug ATTRIBUTE_UNUSED;
 {
   ffewhereFile wf;
 
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index d11cba1..2db0c12 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,12 @@
+2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+	* java-tree.h (java_parse_file): Update.
+	(java_set_yydebug): Remove.
+	* jcf-parse.c (yydebug): Remove.
+	(java_set_yydebug): Die.
+	(java_parse_file): Update.
+	* lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
+
 2002-04-24  Tom Tromey  <tromey@redhat.com>
 
 	For PR java/6425:
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h
index d6d698c..f591b5f 100644
--- a/gcc/java/java-tree.h
+++ b/gcc/java/java-tree.h
@@ -1036,8 +1036,7 @@ struct lang_type
 #define JCF_u4 unsigned long
 #define JCF_u2 unsigned short
 
-extern void java_set_yydebug PARAMS ((int));
-extern void java_parse_file PARAMS ((void));
+extern void java_parse_file PARAMS ((int));
 extern void java_mark_tree PARAMS ((tree));
 extern bool java_mark_addressable PARAMS ((tree));
 extern tree java_type_for_mode PARAMS ((enum machine_mode, int));
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index 6a93141..7faa74c 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -247,8 +247,6 @@ set_source_filename (jcf, index)
 
 #include "jcf-reader.c"
 
-static int yydebug;
-
 tree
 parse_signature (jcf, sig_index)
      JCF *jcf;
@@ -262,13 +260,6 @@ parse_signature (jcf, sig_index)
 				   JPOOL_UTF_LENGTH (jcf, sig_index));
 }
 
-void
-java_set_yydebug (value)
-     int value;
-{
-  yydebug = value;
-}
-
 tree
 get_constant (jcf, index)
   JCF *jcf;
@@ -920,7 +911,8 @@ predefined_filename_p (node)
 }
 
 void
-java_parse_file ()
+java_parse_file (set_yydebug)
+     int set_yydebug ATTRIBUTE_UNUSED;
 {
   int filename_count = 0;
   char *list, *next;
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index 0f0984c..c699da3 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -223,8 +223,6 @@ static int dependency_tracking = 0;
 #define LANG_HOOKS_INIT_OPTIONS java_init_options
 #undef LANG_HOOKS_DECODE_OPTION
 #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_MARK_TREE
diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h
index 341a69a..daf0010 100644
--- a/gcc/langhooks-def.h
+++ b/gcc/langhooks-def.h
@@ -41,6 +41,7 @@ extern HOST_WIDE_INT hook_get_alias_set_0	PARAMS ((tree));
 
 extern void lhd_do_nothing PARAMS ((void));
 extern void lhd_do_nothing_t PARAMS ((tree));
+extern void lhd_do_nothing_i PARAMS ((int));
 extern void lhd_do_nothing_f PARAMS ((struct function *));
 extern int lhd_decode_option PARAMS ((int, char **));
 extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree));
@@ -52,7 +53,6 @@ extern int lhd_unsafe_for_reeval PARAMS ((tree));
 extern void lhd_clear_binding_stack PARAMS ((void));
 extern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int));
 extern const char *lhd_decl_printable_name PARAMS ((tree, int));
-extern void lhd_set_yydebug PARAMS ((int));
 extern rtx lhd_expand_expr PARAMS ((tree, rtx, enum machine_mode, int));
 extern void lhd_print_error_function PARAMS ((struct diagnostic_context *,
 					      const char *));
@@ -82,7 +82,7 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, 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_PARSE_FILE		lhd_do_nothing_i
 #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
@@ -108,7 +108,6 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree));
 #define LANG_HOOKS_PRINT_IDENTIFIER	lhd_print_tree_nothing
 #define LANG_HOOKS_PRINT_ERROR_FUNCTION lhd_print_error_function
 #define LANG_HOOKS_DECL_PRINTABLE_NAME	lhd_decl_printable_name
-#define LANG_HOOKS_SET_YYDEBUG		lhd_set_yydebug
 
 #define LANG_HOOKS_FUNCTION_INIT	lhd_do_nothing_f
 #define LANG_HOOKS_FUNCTION_FREE	lhd_do_nothing_f
@@ -250,7 +249,6 @@ int lhd_tree_dump_type_quals			PARAMS ((tree));
   LANG_HOOKS_PRINT_IDENTIFIER, \
   LANG_HOOKS_DECL_PRINTABLE_NAME, \
   LANG_HOOKS_PRINT_ERROR_FUNCTION, \
-  LANG_HOOKS_SET_YYDEBUG, \
   LANG_HOOKS_ATTRIBUTE_TABLE, \
   LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, \
   LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, \
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 0bbb5e3..4f0e2f3 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -47,6 +47,14 @@ lhd_do_nothing_t (t)
 {
 }
 
+/* Do nothing (int).  */
+
+void
+lhd_do_nothing_i (i)
+     int i ATTRIBUTE_UNUSED;
+{
+}
+
 /* Do nothing (function).  */
 
 void
@@ -140,16 +148,6 @@ lhd_warn_unused_global_decl (decl)
   return true;
 }
 
-/* Called when -dy is given on the command line.  */
-
-void
-lhd_set_yydebug (value)
-     int value;
-{
-  if (value)
-    fprintf (stderr, "warning: no yacc/bison-generated output to debug!\n");
-}
-
 /* Set the DECL_ASSEMBLER_NAME for DECL.  */
 void
 lhd_set_decl_assembler_name (decl)
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
index 8c0b8ef..417f77b 100644
--- a/gcc/langhooks.h
+++ b/gcc/langhooks.h
@@ -213,8 +213,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));
+  /* Parses the entire file.  The argument is non-zero to cause bison
+     parsers to dump debugging information during parsing.  */
+  void (*parse_file) PARAMS ((int));
 
   /* Called immediately after parsing to clear the binding stack.  */
   void (*clear_binding_stack) PARAMS ((void));
@@ -327,11 +328,6 @@ struct lang_hooks
   void (*print_error_function) PARAMS ((struct diagnostic_context *,
 					const char *));
 
-  /* Set yydebug for bison-based parsers, when -dy is given on the
-     command line.  By default, if the parameter is non-zero, prints a
-     warning that the front end does not use such a parser.  */
-  void (*set_yydebug) PARAMS ((int));
-
   /* Pointers to machine-independent attribute tables, for front ends
      using attribs.c.  If one is NULL, it is ignored.  Respectively, a
      table of attributes specific to the language, a table of
diff --git a/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c
index 6719e52..588d547 100644
--- a/gcc/objc/objc-lang.c
+++ b/gcc/objc/objc-lang.c
@@ -68,8 +68,6 @@ static void objc_post_options                   PARAMS ((void));
 #define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier
 #undef LANG_HOOKS_DECL_PRINTABLE_NAME
 #define LANG_HOOKS_DECL_PRINTABLE_NAME objc_printable_name
-#undef LANG_HOOKS_SET_YYDEBUG
-#define LANG_HOOKS_SET_YYDEBUG c_set_yydebug
 #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
 #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl
 
diff --git a/gcc/toplev.c b/gcc/toplev.c
index fa8e289..07dc649 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -126,6 +126,9 @@ static int print_single_switch PARAMS ((FILE *, int, int, const char *,
 static void print_switch_values PARAMS ((FILE *, int, int, const char *,
 				       const char *, const char *));
 
+/* Nonzero to dump debug info whilst parsing (-dy option).  */
+static int set_yydebug;
+
 /* Length of line when printing switch values.  */
 #define MAX_LINE 75
 
@@ -2029,7 +2032,7 @@ compile_file ()
 
   /* Call the parser, which parses the entire file (calling
      rest_of_compilation for each function).  */
-  (*lang_hooks.parse_file) ();
+  (*lang_hooks.parse_file) (set_yydebug);
 
   /* In case there were missing block closers,
      get us back to the global binding level.  */
@@ -3721,7 +3724,7 @@ decode_d_option (arg)
 	rtl_dump_and_exit = 1;
 	break;
       case 'y':
-	(*lang_hooks.set_yydebug) (1);
+	set_yydebug = 1;
 	break;
       case 'D':	/* These are handled by the preprocessor.  */
       case 'I':