OSDN Git Service

* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Do not
[pf3gnuchains/gcc-fork.git] / gcc / varray.c
index d8af319..fc951da 100644 (file)
@@ -1,5 +1,5 @@
 /* Virtual array support.
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
    Free Software Foundation, Inc.
    Contributed by Cygnus Solutions.
 
@@ -33,7 +33,7 @@
 
 #ifdef GATHER_STATISTICS
 
-/* Store infromation about each particular varray.  */
+/* Store information about each particular varray.  */
 struct varray_descriptor
 {
   const char *name;
@@ -99,6 +99,7 @@ static const struct {
   { sizeof (HOST_WIDE_INT), 1 },
   { sizeof (unsigned HOST_WIDE_INT), 1 },
   { sizeof (void *), 1 },
+  { sizeof (void *), 0 },
   { sizeof (char *), 1 },
   { sizeof (struct rtx_def *), 1 },
   { sizeof (struct rtvec_def *), 1 },
@@ -106,8 +107,10 @@ static const struct {
   { sizeof (struct bitmap_head_def *), 1 },
   { sizeof (struct reg_info_def *), 0 },
   { sizeof (struct const_equiv_data), 0 },
-  { sizeof (struct basic_block_def *), 0 },
+  { sizeof (struct basic_block_def *), 1 },
   { sizeof (struct elt_list *), 1 },
+  { sizeof (struct edge_def *), 1 },
+  { sizeof (tree *), 1 },
 };
 
 /* Allocate a virtual array with NUM_ELEMENT elements, each of which is
@@ -207,6 +210,26 @@ varray_underflow (varray_type va, const char *file, int line,
 
 #endif
 
+
+/* Copy varray V2 into varray V1.  Both arrays must be the same size
+   and type.  */
+
+void
+varray_copy (varray_type v1, varray_type v2)
+{
+  size_t data_size;
+  
+  if (v1->type != v2->type)
+    abort ();
+
+  if (v1->num_elements != v2->num_elements)
+    abort ();
+
+  data_size = element[v2->type].size * v2->num_elements;
+  memcpy (v1->data.c, v2->data.c, data_size);
+  v1->elements_used = v2->elements_used;
+}
+
 /* Output per-varray statistics.  */
 #ifdef GATHER_STATISTICS