]> git.saurik.com Git - bison.git/blobdiff - src/relation.c
Use ASCII for Sebastien Fricker's name.
[bison.git] / src / relation.c
index 9e2c2bd447ad8b2f61ce9d40ca20c85c4a996c4c..1d2b42dd9f34efb802e8617b9905f9c3d8327195 100644 (file)
@@ -1,5 +1,5 @@
 /* Binary relations.
 /* Binary relations.
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    You should have received a copy of the GNU General Public License
    along with Bison; see the file COPYING.  If not, write to
 
    You should have received a copy of the GNU General Public License
    along with Bison; see the file COPYING.  If not, write to
-   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 
+#include <config.h>
 #include "system.h"
 
 #include <bitsetv.h>
 #include "system.h"
 
 #include <bitsetv.h>
@@ -123,6 +124,7 @@ relation_digraph (relation r, relation_node size, bitsetv *function)
 void
 relation_transpose (relation *R_arg, relation_node n)
 {
 void
 relation_transpose (relation *R_arg, relation_node n)
 {
+  relation r = *R_arg;
   /* The result. */
   relation new_R = xnmalloc (n, sizeof *new_R);
   /* END_R[I] -- next entry of NEW_R[I]. */
   /* The result. */
   relation new_R = xnmalloc (n, sizeof *new_R);
   /* END_R[I] -- next entry of NEW_R[I]. */
@@ -135,14 +137,14 @@ relation_transpose (relation *R_arg, relation_node n)
   if (trace_flag & trace_sets)
     {
       fputs ("relation_transpose: input\n", stderr);
   if (trace_flag & trace_sets)
     {
       fputs ("relation_transpose: input\n", stderr);
-      relation_print (*R_arg, n, stderr);
+      relation_print (r, n, stderr);
     }
 
   /* Count. */
   for (i = 0; i < n; i++)
     }
 
   /* Count. */
   for (i = 0; i < n; i++)
-    if ((*R_arg)[i])
-      for (j = 0; (*R_arg)[i][j] != END_NODE; ++j)
-       ++nedges[(*R_arg)[i][j]];
+    if (r[i])
+      for (j = 0; r[i][j] != END_NODE; ++j)
+       ++nedges[r[i][j]];
 
   /* Allocate. */
   for (i = 0; i < n; i++)
 
   /* Allocate. */
   for (i = 0; i < n; i++)
@@ -159,20 +161,17 @@ relation_transpose (relation *R_arg, relation_node n)
 
   /* Store. */
   for (i = 0; i < n; i++)
 
   /* Store. */
   for (i = 0; i < n; i++)
-    if ((*R_arg)[i])
-      for (j = 0; (*R_arg)[i][j] != END_NODE; ++j)
-       {
-         *end_R[(*R_arg)[i][j]] = i;
-         ++end_R[(*R_arg)[i][j]];
-       }
+    if (r[i])
+      for (j = 0; r[i][j] != END_NODE; ++j)
+       *end_R[r[i][j]]++ = i;
 
   free (nedges);
   free (end_R);
 
   /* Free the input: it is replaced with the result. */
   for (i = 0; i < n; i++)
 
   free (nedges);
   free (end_R);
 
   /* Free the input: it is replaced with the result. */
   for (i = 0; i < n; i++)
-    free ((*R_arg)[i]);
-  free (*R_arg);
+    free (r[i]);
+  free (r);
 
   if (trace_flag & trace_sets)
     {
 
   if (trace_flag & trace_sets)
     {