diff options
author | Kazu Hirata <kazu@codesourcery.com> | 2005-06-02 20:21:54 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2005-06-02 20:21:54 +0000 |
commit | 84c76d40cb01e478b20c284161178e55ef2afc57 (patch) | |
tree | 38d4b53b1cc72915b75f7dc98649c0a3cb2894b1 | |
parent | 984dfd8c52a42e3e0ce4838ab77839c4abce4697 (diff) | |
download | gcc-84c76d40cb01e478b20c284161178e55ef2afc57.zip gcc-84c76d40cb01e478b20c284161178e55ef2afc57.tar.gz gcc-84c76d40cb01e478b20c284161178e55ef2afc57.tar.bz2 |
gimplify.c (gimplify_ctx): Change the type of case_labels to VEC from VARRAY.
* gimplify.c (gimplify_ctx): Change the type of case_labels to
VEC from VARRAY.
(gimplify_switch_expr, gimplify_case_label_expr): Adjust uses
of case_labels.
From-SVN: r100513
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gimplify.c | 18 |
2 files changed, 17 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 530350c..bf6c5c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-06-02 Kazu Hirata <kazu@codesourcery.com> + + * gimplify.c (gimplify_ctx): Change the type of case_labels to + VEC from VARRAY. + (gimplify_switch_expr, gimplify_case_label_expr): Adjust uses + of case_labels. + 2005-06-02 Richard Guenther <rguenth@gcc.gnu.org> * c-typeck.c (build_indirect_ref): Build INDIRECT_REF diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 3370f44..c86d9d0 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -54,7 +54,7 @@ static struct gimplify_ctx tree conditional_cleanups; tree exit_label; tree return_temp; - varray_type case_labels; + VEC(tree,heap) *case_labels; /* The formal temporary table. Should this be persistent? */ htab_t temp_htab; int conditions; @@ -1138,7 +1138,7 @@ gimplify_switch_expr (tree *expr_p, tree *pre_p) if (SWITCH_BODY (switch_expr)) { - varray_type labels, saved_labels; + VEC(tree,heap) *labels, *saved_labels; tree label_vec, default_case = NULL_TREE; size_t i, len; @@ -1147,23 +1147,23 @@ gimplify_switch_expr (tree *expr_p, tree *pre_p) gcc_assert (!SWITCH_LABELS (switch_expr)); saved_labels = gimplify_ctxp->case_labels; - VARRAY_TREE_INIT (gimplify_ctxp->case_labels, 8, "case_labels"); + gimplify_ctxp->case_labels = VEC_alloc (tree, heap, 8); gimplify_to_stmt_list (&SWITCH_BODY (switch_expr)); labels = gimplify_ctxp->case_labels; gimplify_ctxp->case_labels = saved_labels; - len = VARRAY_ACTIVE_SIZE (labels); + len = VEC_length (tree, labels); for (i = 0; i < len; ++i) { - tree t = VARRAY_TREE (labels, i); + tree t = VEC_index (tree, labels, i); if (!CASE_LOW (t)) { /* The default case must be the last label in the list. */ default_case = t; - VARRAY_TREE (labels, i) = VARRAY_TREE (labels, len - 1); + VEC_replace (tree, labels, i, VEC_index (tree, labels, len - 1)); len--; break; } @@ -1187,9 +1187,11 @@ gimplify_switch_expr (tree *expr_p, tree *pre_p) *expr_p = SWITCH_BODY (switch_expr); for (i = 0; i < len; ++i) - TREE_VEC_ELT (label_vec, i) = VARRAY_TREE (labels, i); + TREE_VEC_ELT (label_vec, i) = VEC_index (tree, labels, i); TREE_VEC_ELT (label_vec, len) = default_case; + VEC_free (tree, heap, labels); + sort_case_labels (label_vec); SWITCH_BODY (switch_expr) = NULL; @@ -1206,7 +1208,7 @@ gimplify_case_label_expr (tree *expr_p) tree expr = *expr_p; gcc_assert (gimplify_ctxp->case_labels); - VARRAY_PUSH_TREE (gimplify_ctxp->case_labels, expr); + VEC_safe_push (tree, heap, gimplify_ctxp->case_labels, expr); *expr_p = build (LABEL_EXPR, void_type_node, CASE_LABEL (expr)); return GS_ALL_DONE; } |