mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 23:26:16 +08:00
tree.h (record_layout_info): Change type of pending_statics field to a VEC.
* 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
This commit is contained in:
parent
d4fc0fb47f
commit
76d971ccfb
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user