bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

24-fyi-var-locality.patch


From: Akim Demaille
Subject: 24-fyi-var-locality.patch
Date: Mon, 19 Nov 2001 10:03:38 +0100

I'm trying to understand why we don't have the items of state 0 in
neither the report, nor the graph.

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * src/print_graph.c (print_core): Better locality of variables.
        * src/print.c (print_core): Likewise.

Index: src/print_graph.c
--- src/print_graph.c Sat, 17 Nov 2001 15:05:27 +0100 akim
+++ src/print_graph.c Sat, 17 Nov 2001 15:17:56 +0100 akim
@@ -40,22 +40,16 @@
 print_core (int state, struct obstack *node_obstack)
 {
   int i;
-  int k;
-  int rule;
-  core *statep;
-  short *sp;
-  short *sp1;
+  core *statep = state_table[state].state;

-  statep = state_table[state].state;
-  k = statep->nitems;
-
-  if (k == 0)
+  if (!statep->nitems)
     return;

-  for (i = 0; i < k; i++)
+  for (i = 0; i < statep->nitems; i++)
     {
-      if (i)
-       obstack_1grow (node_obstack, '\n');
+      short *sp;
+      short *sp1;
+      int rule;

       sp1 = sp = ritem + statep->items[i];

@@ -64,6 +58,8 @@

       rule = -(*sp);

+      if (i)
+       obstack_1grow (node_obstack, '\n');
       obstack_fgrow1 (node_obstack, "%d: ", rule);
       obstack_fgrow1 (node_obstack, " %s  ->  ",
                      tags[rule_table[rule].lhs]);
@@ -73,8 +69,8 @@

       obstack_1grow (node_obstack, '.');

-      while (*sp > 0)
-       obstack_fgrow1 (node_obstack, " %s", tags[*sp++]);
+      for (/* Nothing */; *sp > 0; ++sp)
+       obstack_fgrow1 (node_obstack, " %s", tags[*sp]);
     }
 }

Index: src/print.c
--- src/print.c Fri, 16 Nov 2001 01:00:46 +0100 akim
+++ src/print.c Sat, 17 Nov 2001 15:14:59 +0100 akim
@@ -48,20 +48,17 @@
 print_core (FILE *out, int state)
 {
   int i;
-  int k;
-  int rule;
-  core *statep;
-  short *sp;
-  short *sp1;
+  core *statep = state_table[state].state;

-  statep = state_table[state].state;
-  k = statep->nitems;
-
-  if (k == 0)
+  if (!statep->nitems)
     return;

-  for (i = 0; i < k; i++)
+  for (i = 0; i < statep->nitems; i++)
     {
+      short *sp;
+      short *sp1;
+      int rule;
+
       sp1 = sp = ritem + statep->items[i];

       while (*sp > 0)
@@ -71,17 +68,12 @@
       fprintf (out, "    %s  ->  ", tags[rule_table[rule].lhs]);

       for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
-       {
-         fprintf (out, "%s ", tags[*sp]);
-       }
+       fprintf (out, "%s ", tags[*sp]);

       fputc ('.', out);

-      while (*sp > 0)
-       {
-         fprintf (out, " %s", tags[*sp]);
-         sp++;
-       }
+      for (/* Nothing */; *sp > 0; ++sp)
+       fprintf (out, " %s", tags[*sp]);

       fprintf (out, _("   (rule %d)"), rule);
       fputc ('\n', out);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]