tree-eh.c (leh_tf_state): Change the type of dest_array to VEC(tree,heap)*.

* tree-eh.c (leh_tf_state): Change the type of dest_array to
	VEC(tree,heap)*.
	(maybe_record_in_goto_queue, lower_try_finally_onedest,
	lower_try_finally_copy, lower_try_finally_switch,
	lower_try_finally): Use VEC instead of VARRAY.

From-SVN: r99693
This commit is contained in:
Kazu Hirata 2005-05-14 03:25:44 +00:00 committed by Kazu Hirata
parent 8238307080
commit 59ebc70406
2 changed files with 19 additions and 19 deletions

View File

@ -1,3 +1,11 @@
2005-05-14 Kazu Hirata <kazu@cs.umass.edu>
* tree-eh.c (leh_tf_state): Change the type of dest_array to
VEC(tree,heap)*.
(maybe_record_in_goto_queue, lower_try_finally_onedest,
lower_try_finally_copy, lower_try_finally_switch,
lower_try_finally): Use VEC instead of VARRAY.
2005-05-14 Hans-Peter Nilsson <hp@axis.com> 2005-05-14 Hans-Peter Nilsson <hp@axis.com>
* config/cris/cris.h (Node: Register Classes): Remove obsoleted * config/cris/cris.h (Node: Register Classes): Remove obsoleted

View File

@ -320,7 +320,7 @@ struct leh_tf_state
size_t goto_queue_active; size_t goto_queue_active;
/* The set of unique labels seen as entries in the goto queue. */ /* The set of unique labels seen as entries in the goto queue. */
varray_type dest_array; VEC(tree,heap) *dest_array;
/* A label to be added at the end of the completed transformed /* A label to be added at the end of the completed transformed
sequence. It will be set if may_fallthru was true *at one time*, sequence. It will be set if may_fallthru was true *at one time*,
@ -501,18 +501,18 @@ maybe_record_in_goto_queue (struct leh_state *state, tree stmt)
if (! tf->dest_array) if (! tf->dest_array)
{ {
VARRAY_TREE_INIT (tf->dest_array, 10, "dest_array"); tf->dest_array = VEC_alloc (tree, heap, 10);
VARRAY_PUSH_TREE (tf->dest_array, lab); VEC_quick_push (tree, tf->dest_array, lab);
index = 0; index = 0;
} }
else else
{ {
int n = VARRAY_ACTIVE_SIZE (tf->dest_array); int n = VEC_length (tree, tf->dest_array);
for (index = 0; index < n; ++index) for (index = 0; index < n; ++index)
if (VARRAY_TREE (tf->dest_array, index) == lab) if (VEC_index (tree, tf->dest_array, index) == lab)
break; break;
if (index == n) if (index == n)
VARRAY_PUSH_TREE (tf->dest_array, lab); VEC_safe_push (tree, heap, tf->dest_array, lab);
} }
} }
break; break;
@ -996,7 +996,7 @@ lower_try_finally_onedest (struct leh_state *state, struct leh_tf_state *tf)
do_goto_redirection (q, finally_label, NULL); do_goto_redirection (q, finally_label, NULL);
replace_goto_queue (tf); replace_goto_queue (tf);
if (VARRAY_TREE (tf->dest_array, 0) == tf->fallthru_label) if (VEC_index (tree, tf->dest_array, 0) == tf->fallthru_label)
{ {
/* Reachable by goto to fallthru label only. Redirect it /* Reachable by goto to fallthru label only. Redirect it
to the new label (already created, sadly), and do not to the new label (already created, sadly), and do not
@ -1060,10 +1060,7 @@ lower_try_finally_copy (struct leh_state *state, struct leh_tf_state *tf)
tree label; tree label;
} *labels; } *labels;
if (tf->dest_array) return_index = VEC_length (tree, tf->dest_array);
return_index = VARRAY_ACTIVE_SIZE (tf->dest_array);
else
return_index = 0;
labels = xcalloc (sizeof (*labels), return_index + 1); labels = xcalloc (sizeof (*labels), return_index + 1);
q = tf->goto_queue; q = tf->goto_queue;
@ -1152,10 +1149,7 @@ lower_try_finally_switch (struct leh_state *state, struct leh_tf_state *tf)
lower_eh_constructs_1 (state, &finally); lower_eh_constructs_1 (state, &finally);
/* Prepare for switch statement generation. */ /* Prepare for switch statement generation. */
if (tf->dest_array) nlabels = VEC_length (tree, tf->dest_array);
nlabels = VARRAY_ACTIVE_SIZE (tf->dest_array);
else
nlabels = 0;
return_index = nlabels; return_index = nlabels;
eh_index = return_index + tf->may_return; eh_index = return_index + tf->may_return;
fallthru_index = eh_index + tf->may_throw; fallthru_index = eh_index + tf->may_throw;
@ -1389,10 +1383,7 @@ lower_try_finally (struct leh_state *state, tree *tp)
how many destinations are reached by the finally block. Use this to how many destinations are reached by the finally block. Use this to
determine how we process the finally block itself. */ determine how we process the finally block itself. */
if (this_tf.dest_array) ndests = VEC_length (tree, this_tf.dest_array);
ndests = VARRAY_ACTIVE_SIZE (this_tf.dest_array);
else
ndests = 0;
ndests += this_tf.may_fallthru; ndests += this_tf.may_fallthru;
ndests += this_tf.may_return; ndests += this_tf.may_return;
ndests += this_tf.may_throw; ndests += this_tf.may_throw;
@ -1424,6 +1415,7 @@ lower_try_finally (struct leh_state *state, tree *tp)
append_to_statement_list (x, tp); append_to_statement_list (x, tp);
} }
VEC_free (tree, heap, this_tf.dest_array);
if (this_tf.goto_queue) if (this_tf.goto_queue)
free (this_tf.goto_queue); free (this_tf.goto_queue);
} }