]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
class.c (sorted_fields_type_new): Factor out of ...
authorDiego Novillo <dnovillo@google.com>
Thu, 13 Oct 2011 18:25:10 +0000 (14:25 -0400)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Thu, 13 Oct 2011 18:25:10 +0000 (14:25 -0400)
* class.c (sorted_fields_type_new): Factor out of ...
(finish_struct_1): ... here.

From-SVN: r179939

gcc/cp/ChangeLog
gcc/cp/class.c

index e70f5c8490fa9665818c73195584bd7ad090b39e..18c98bb3f3539cec1f6db32ea925b3fa24f6eb7b 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-13   Diego Novillo  <dnovillo@google.com>
+
+       * class.c (sorted_fields_type_new): Factor out of ...
+       (finish_struct_1): ... here.
+
 2011-10-13  Jason Merrill  <jason@redhat.com>
 
        PR c++/50618
index 2df9177e47edc818106af62866b98d373e1b9ffd..61850543b5471983648b34f9076ef2a42f18c076 100644 (file)
@@ -5663,6 +5663,22 @@ determine_key_method (tree type)
   return;
 }
 
+
+/* Allocate and return an instance of struct sorted_fields_type with
+   N fields.  */
+
+static struct sorted_fields_type *
+sorted_fields_type_new (int n)
+{
+  struct sorted_fields_type *sft;
+  sft = ggc_alloc_sorted_fields_type (sizeof (struct sorted_fields_type)
+                                     + n * sizeof (tree));
+  sft->len = n;
+
+  return sft;
+}
+
+
 /* Perform processing required when the definition of T (a class type)
    is complete.  */
 
@@ -5792,9 +5808,7 @@ finish_struct_1 (tree t)
   n_fields = count_fields (TYPE_FIELDS (t));
   if (n_fields > 7)
     {
-      struct sorted_fields_type *field_vec = ggc_alloc_sorted_fields_type
-        (sizeof (struct sorted_fields_type) + n_fields * sizeof (tree));
-      field_vec->len = n_fields;
+      struct sorted_fields_type *field_vec = sorted_fields_type_new (n_fields);
       add_fields_to_record_type (TYPE_FIELDS (t), field_vec, 0);
       qsort (field_vec->elts, n_fields, sizeof (tree),
             field_decl_cmp);