]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR java/4715 (Tree check failure in check_inner_circular_reference)
authorAlexandre Petit-Bianco <apbianco@redhat.com>
Thu, 28 Mar 2002 23:40:21 +0000 (15:40 -0800)
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>
Thu, 28 Mar 2002 23:40:21 +0000 (15:40 -0800)
2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>

Fix for PR java/4715:
* jcf-parse.c (parse_source_file_3): New function.
(read_class): Call it.
(java_parse_file): Likewise.

(http://gcc.gnu.org/ml/gcc-patches/2002-03/msg01917.html)

From-SVN: r51534

gcc/java/ChangeLog
gcc/java/jcf-parse.c

index c1d3908a7119eaeab36d738a1fc954f4a8841199..c1206c46c122b278d85bc87304f8b68f63a8e94a 100644 (file)
@@ -1,3 +1,10 @@
+2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
+
+       Fix for PR java/4715:
+       * jcf-parse.c (parse_source_file_3): New function.
+       (read_class): Call it.
+       (java_parse_file): Likewise.
+
 Thu Mar 28 13:22:22 CET 2002  Jan Hubicka  <jh@suse.cz>
 
        * java/lang.c (java_init_options): Set flag_trapping_math to 0.
index 00e8a4ff10a6284eb161bdc32f558e42c09d7462..53e647cb2c6313114a5e652a439f990752ce9b7b 100644 (file)
@@ -96,6 +96,7 @@ static void parse_zip_file_entries PARAMS ((void));
 static void process_zip_dir PARAMS ((FILE *));
 static void parse_source_file_1 PARAMS ((tree, FILE *));
 static void parse_source_file_2 PARAMS ((void));
+static void parse_source_file_3 PARAMS ((void));
 static void parse_class_file PARAMS ((void));
 static void set_source_filename PARAMS ((JCF *, int));
 static void ggc_mark_jcf PARAMS ((void**));
@@ -550,6 +551,7 @@ read_class (name)
            fatal_io_error ("can't reopen %s", input_filename);
          parse_source_file_1 (file, finput);
          parse_source_file_2 ();
+         parse_source_file_3 ();
          if (fclose (finput))
            fatal_io_error ("can't close %s", input_filename);
        }
@@ -883,6 +885,12 @@ parse_source_file_2 ()
   int save_error_count = java_error_count;
   java_complete_class ();          /* Parse unsatisfied class decl. */
   java_parse_abort_on_error ();
+}
+
+static void
+parse_source_file_3 ()
+{
+  int save_error_count = java_error_count;
   java_check_circular_reference (); /* Check on circular references */
   java_parse_abort_on_error ();
   java_fix_constructors ();        /* Fix the constructors */
@@ -1132,6 +1140,13 @@ java_parse_file ()
       input_filename = ctxp->filename;
       parse_source_file_2 ();
     }
+
+  for (ctxp = ctxp_for_generation; ctxp; ctxp = ctxp->next)
+    {
+      input_filename = ctxp->filename;
+      parse_source_file_3 ();
+    }
+
   for (node = current_file_list; node; node = TREE_CHAIN (node))
     {
       input_filename = IDENTIFIER_POINTER (TREE_VALUE (node));