]> git.saurik.com Git - bison.git/commitdiff
* src/files.c (output_files): Free the output_obstack.
authorAkim Demaille <akim@epita.fr>
Mon, 17 Dec 2001 17:31:10 +0000 (17:31 +0000)
committerAkim Demaille <akim@epita.fr>
Mon, 17 Dec 2001 17:31:10 +0000 (17:31 +0000)
* src/main.c (main): Call print and print_graph conditionally.
* src/print.c (print): Work unconditionally.
* src/print_graph.c (print_graph): Work unconditionally.
* src/conflicts.c (log_resolution): Output only if verbose_flag.

ChangeLog
src/conflicts.c
src/files.c
src/main.c
src/print.c
src/print_graph.c

index 411d23132ef6589a88eb1fec0654849cfdc9796d..7323c624018775480dc0622be066f1ef153bd99c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/files.c (output_files): Free the output_obstack.
+       * src/main.c (main): Call print and print_graph conditionally.
+       * src/print.c (print): Work unconditionally.
+       * src/print_graph.c (print_graph): Work unconditionally.
+       * src/conflicts.c (log_resolution): Output only if verbose_flag.
+
 2001-12-16  Marc Autret  <autret_m@epita.fr>
 
        * src/output.c (actions_output): Fix. When we use %no-lines,
index 6542c943aa6ee6ce600036b9b8f7ca2e2749a721..c3dd8394481d1bc8c253257bd65cacbd2e675b1f 100644 (file)
@@ -40,10 +40,11 @@ static unsigned *lookaheadset = NULL;
 static inline void
 log_resolution (int state, int LAno, int token, char *resolution)
 {
-  obstack_fgrow4 (&output_obstack,
-                 _("\
+  if (verbose_flag)
+    obstack_fgrow4 (&output_obstack,
+                   _("\
 Conflict in state %d between rule %d and token %s resolved as %s.\n"),
-                 state, LAruleno[LAno], tags[token], resolution);
+                   state, LAruleno[LAno], tags[token], resolution);
 }
 
 
index 726ec9171e9f5781db5fd50232ff2d1530d53b49..b6fed391a0fbad072087b0f3186a5f02b6eeab48 100644 (file)
@@ -489,12 +489,13 @@ output_files (void)
       char *temp_name;
 
       obstack_save (&attrs_obstack, attrsfile);
-      obstack_free (&attrs_obstack, NULL);
       temp_name = stringappend (short_base_name, EXT_GUARD_C);
 #ifndef MSDOS
       temp_name = stringappend (temp_name, src_extension);
 #endif /* MSDOS */
       obstack_save (&guard_obstack, temp_name);
-      obstack_free (&guard_obstack, NULL);
     }
+
+  obstack_free (&guard_obstack, NULL);
+  obstack_free (&attrs_obstack, NULL);
 }
index 1a3911d2ce63f3de91bedc43287e889ee51a382c..f53228e65148f08752e476a8dfd4004134bb66a0 100644 (file)
@@ -93,10 +93,12 @@ main (int argc, char *argv[])
     exit (1);
 
   /* Output the detailed report on the grammar.  */
-  print_results ();
+  if (verbose_flag)
+    print_results ();
 
   /* Output the VCG graph.  */
-  print_graph ();
+  if (graph_flag)
+    print_graph ();
 
   /* Output the tables and the parser to ftable.  In file output.  */
   output ();
index 0a2d0209281fd34c9d79d05cec0e40cb38263052..d7d04eab4e9bbeeb7b5750d23650becf2cc57be4 100644 (file)
@@ -307,35 +307,33 @@ print_grammar (FILE *out)
 void
 print_results (void)
 {
-  if (verbose_flag)
-    {
-      int i;
+  int i;
 
-      /* We used to use just .out if SPEC_NAME_PREFIX (-p) was used, but
-        that conflicts with Posix.  */
-      FILE *out = xfopen (spec_verbose_file, "w");
+  /* We used to use just .out if SPEC_NAME_PREFIX (-p) was used, but
+     that conflicts with Posix.  */
+  FILE *out = xfopen (spec_verbose_file, "w");
 
-      size_t size = obstack_object_size (&output_obstack);
-      fwrite (obstack_finish (&output_obstack), 1, size, out);
-      if (size)
-       fputs ("\n\n", out);
+  size_t size = obstack_object_size (&output_obstack);
+  fwrite (obstack_finish (&output_obstack), 1, size, out);
+  obstack_free (&output_obstack, NULL);
 
-      reduce_output (out);
-      conflicts_output (out);
+  if (size)
+    fputs ("\n\n", out);
 
-      print_grammar (out);
+  reduce_output (out);
+  conflicts_output (out);
 
-      /* New experimental feature: output all the items of a state,
-        not only its kernel.  Requires to run closure, which need
-        memory allocation/deallocation.  */
-      if (trace_flag)
-       new_closure (nitems);
-      for (i = 0; i < nstates; i++)
-       print_state (out, i);
-      if (trace_flag)
-       free_closure ();
+  print_grammar (out);
 
-      xfclose (out);
-    }
-  obstack_free (&output_obstack, NULL);
+  /* New experimental feature: output all the items of a state,
+     not only its kernel.  Requires to run closure, which need
+     memory allocation/deallocation.  */
+  if (trace_flag)
+    new_closure (nitems);
+  for (i = 0; i < nstates; i++)
+    print_state (out, i);
+  if (trace_flag)
+    free_closure ();
+
+  xfclose (out);
 }
index 5045ed0fec218ba671c83e7daa59e9b13c018cff..d187480ce0ce6e6aa6601b272e44ed1477b0036b 100644 (file)
@@ -207,9 +207,6 @@ print_graph (void)
 {
   int i;
 
-  if (!graph_flag)
-    return;
-
   /* Output file.  */
   fgraph = xfopen (spec_graph_file, "w");