+ size_t i;
+
+ new->values = xmemdup (old->values, old->cnt * sizeof *old->values);
+ new->cnt = old->cnt;
+
+ for (i = 0; i < new->cnt; i++)
+ {
+ struct init_value *iv = &new->values[i];
+ value_clone (&iv->value, &iv->value, iv->width);
+ }
+}
+
+/* Frees the storage associated with LIST. */
+static void
+init_list_destroy (struct init_list *list)
+{
+ struct init_value *iv;
+
+ for (iv = &list->values[0]; iv < &list->values[list->cnt]; iv++)
+ value_destroy (&iv->value, iv->width);