]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/varray.c
Merge tree-ssa-20020619-branch into mainline.
[thirdparty/gcc.git] / gcc / varray.c
index 9c70b9f6dad00bdd360e5067b28b1ae39a759e4e..fc951da56e44559fbb9750ba3b7f41bfa802829c 100644 (file)
@@ -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