diff options
author | Nathan Froyd <froydnj@cs.rice.edu> | 2010-05-17 16:03:46 +0000 |
---|---|---|
committer | Nathan Froyd <froydnj@gcc.gnu.org> | 2010-05-17 16:03:46 +0000 |
commit | 8748ad99e9aba52146166e3e6df7802226189dec (patch) | |
tree | 9c8c1c0b6f4a3f0d03993988523ce0723cbeefc2 /gcc/fortran/trans-array.c | |
parent | 2882bfcc5b1d377551de2d44c5d5edb11c137bb2 (diff) | |
download | gcc-8748ad99e9aba52146166e3e6df7802226189dec.zip gcc-8748ad99e9aba52146166e3e6df7802226189dec.tar.gz gcc-8748ad99e9aba52146166e3e6df7802226189dec.tar.bz2 |
trans-array.c (gfc_trans_array_constructor_value): Use build_constructor instead of build_constructor_from_list.
* trans-array.c (gfc_trans_array_constructor_value): Use
build_constructor instead of build_constructor_from_list.
(gfc_build_constant_array_constructor): Likewise.
* trans-decl.c (create_main_function): Likewise.
* trans-stmt.c (gfc_trans_character_select): Likewise.
From-SVN: r159490
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 8ece643..a94c8d2 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1308,14 +1308,13 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type, else { /* Collect multiple scalar constants into a constructor. */ - tree list; + VEC(constructor_elt,gc) *v = NULL; tree init; tree bound; tree tmptype; HOST_WIDE_INT idx = 0; p = c; - list = NULL_TREE; /* Count the number of consecutive scalar constants. */ while (p && !(p->iterator || p->expr->expr_type != EXPR_CONSTANT)) @@ -1332,8 +1331,10 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type, (gfc_get_pchar_type (p->expr->ts.kind), se.expr); - list = tree_cons (build_int_cst (gfc_array_index_type, - idx++), se.expr, list); + CONSTRUCTOR_APPEND_ELT (v, + build_int_cst (gfc_array_index_type, + idx++), + se.expr); c = p; p = gfc_constructor_next (p); } @@ -1344,7 +1345,7 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type, gfc_index_zero_node, bound); tmptype = build_array_type (type, tmptype); - init = build_constructor_from_list (tmptype, nreverse (list)); + init = build_constructor (tmptype, v); TREE_CONSTANT (init) = 1; TREE_STATIC (init) = 1; /* Create a static variable to hold the data. */ @@ -1671,17 +1672,17 @@ gfc_constant_array_constructor_p (gfc_constructor_base base) tree gfc_build_constant_array_constructor (gfc_expr * expr, tree type) { - tree tmptype, list, init, tmp; + tree tmptype, init, tmp; HOST_WIDE_INT nelem; gfc_constructor *c; gfc_array_spec as; gfc_se se; int i; + VEC(constructor_elt,gc) *v = NULL; /* First traverse the constructor list, converting the constants to tree to build an initializer. */ nelem = 0; - list = NULL_TREE; c = gfc_constructor_first (expr->value.constructor); while (c) { @@ -1692,8 +1693,8 @@ gfc_build_constant_array_constructor (gfc_expr * expr, tree type) else if (POINTER_TYPE_P (type)) se.expr = gfc_build_addr_expr (gfc_get_pchar_type (c->expr->ts.kind), se.expr); - list = tree_cons (build_int_cst (gfc_array_index_type, nelem), - se.expr, list); + CONSTRUCTOR_APPEND_ELT (v, build_int_cst (gfc_array_index_type, nelem), + se.expr); c = gfc_constructor_next (c); nelem++; } @@ -1723,7 +1724,7 @@ gfc_build_constant_array_constructor (gfc_expr * expr, tree type) tmptype = gfc_get_nodesc_array_type (type, &as, PACKED_STATIC, true); - init = build_constructor_from_list (tmptype, nreverse (list)); + init = build_constructor (tmptype, v); TREE_CONSTANT (init) = 1; TREE_STATIC (init) = 1; |