]> gcc.gnu.org Git - gcc.git/commitdiff
tree.h (record_layout_info): Change type of pending_statics field to a VEC.
authorNathan Froyd <froydnj@codesourcery.com>
Fri, 18 Jun 2010 15:49:55 +0000 (15:49 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Fri, 18 Jun 2010 15:49:55 +0000 (15:49 +0000)
* tree.h (record_layout_info): Change type of pending_statics field
to a VEC.
* stor-layout.c (start_record_layout): Store NULL into
pending_statics.
(debug_rli): Call debug_vec_tree instead of debug_tree.
(place_field): Likewise.
(finish_record_layout): Likewise.

From-SVN: r161000

gcc/ChangeLog
gcc/stor-layout.c
gcc/tree.h

index 2af7e6ba212a6ddfd0beb7b6b38d5bdfa8dcd4c8..ef71ff7d304c31fe66103b573f34e53e29808531 100644 (file)
@@ -1,3 +1,13 @@
+2010-06-18  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.h (record_layout_info): Change type of pending_statics field
+       to a VEC.
+       * stor-layout.c (start_record_layout): Store NULL into
+       pending_statics.
+       (debug_rli): Call debug_vec_tree instead of debug_tree.
+       (place_field): Likewise.
+       (finish_record_layout): Likewise.
+
 2010-06-18  Alan Modra  <amodra@gmail.com>
 
        * config/rs6000/linux64.h (SET_CMODEL): Don't expand to empty.
index d38a375224a9907f1c96fbe5a4fbcfa425122840..7e144325a55ab07db48071d1f1b3b7d58cb47f2a 100644 (file)
@@ -743,7 +743,7 @@ start_record_layout (tree t)
   rli->offset = size_zero_node;
   rli->bitpos = bitsize_zero_node;
   rli->prev_field = 0;
-  rli->pending_statics = 0;
+  rli->pending_statics = NULL;
   rli->packed_maybe_necessary = 0;
   rli->remaining_in_alignment = 0;
 
@@ -827,10 +827,12 @@ debug_rli (record_layout_info rli)
   if (rli->packed_maybe_necessary)
     fprintf (stderr, "packed may be necessary\n");
 
-  if (rli->pending_statics)
+  if (!VEC_empty (tree, rli->pending_statics))
     {
+      unsigned ix;
+      tree t;
       fprintf (stderr, "pending statics:\n");
-      debug_tree (rli->pending_statics);
+      debug_vec_tree (rli->pending_statics);
     }
 }
 
@@ -1041,8 +1043,7 @@ place_field (record_layout_info rli, tree field)
      it *after* the record is laid out.  */
   if (TREE_CODE (field) == VAR_DECL)
     {
-      rli->pending_statics = tree_cons (NULL_TREE, field,
-                                       rli->pending_statics);
+      VEC_safe_push (tree, gc, rli->pending_statics, field);
       return;
     }
 
@@ -1718,15 +1719,15 @@ finish_record_layout (record_layout_info rli, int free_p)
 
   /* Lay out any static members.  This is done now because their type
      may use the record's type.  */
-  while (rli->pending_statics)
-    {
-      layout_decl (TREE_VALUE (rli->pending_statics), 0);
-      rli->pending_statics = TREE_CHAIN (rli->pending_statics);
-    }
+  while (!VEC_empty (tree, rli->pending_statics))
+    layout_decl (VEC_pop (tree, rli->pending_statics), 0);
 
   /* Clean up.  */
   if (free_p)
-    free (rli);
+    {
+      VEC_free (tree, gc, rli->pending_statics);
+      free (rli);
+    }
 }
 \f
 
index 0d8eefaedef86fac5b6fa001a5327e56701c8f33..80f97eeb46f45df68127bd6537e99c1648c4675b 100644 (file)
@@ -4334,7 +4334,7 @@ typedef struct record_layout_info_s
   tree prev_field;
   /* The static variables (i.e., class variables, as opposed to
      instance variables) encountered in T.  */
-  tree pending_statics;
+  VEC(tree,gc) *pending_statics;
   /* Bits remaining in the current alignment group */
   int remaining_in_alignment;
   /* True if we've seen a packed field that didn't have normal
This page took 0.093298 seconds and 5 git commands to generate.