aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-generic.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-03-16 09:47:09 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-03-16 09:47:09 +0000
commitd2a12ae77fa3efbe2329f7126b4acc24c35ef401 (patch)
tree61b2d8308768796bdf3f7e0c34b84aa6cc0bae11 /gcc/tree-vect-generic.c
parent20bfad56eb81a52c7449521282401c88deee391b (diff)
downloadgcc-d2a12ae77fa3efbe2329f7126b4acc24c35ef401.zip
gcc-d2a12ae77fa3efbe2329f7126b4acc24c35ef401.tar.gz
gcc-d2a12ae77fa3efbe2329f7126b4acc24c35ef401.tar.bz2
tree.h (TREE_VECTOR_CST_ELTS): Remove.
2012-03-16 Richard Guenther <rguenther@suse.de> * tree.h (TREE_VECTOR_CST_ELTS): Remove. (VECTOR_CST_NELTS, VECTOR_CST_ELTS, VECTOR_CST_ELT): New defines. (struct tree_vector): Remove elements member, add variable size elts array member. (build_vector_stat): Declare. (build_vector): Define in terms of build_vector_stat. * tree.c (build_vector): Rename to ... (build_vector_stat): ... this. Take array of trees as parameter. (build_vector_from_ctor): Adjust. (integer_zerop, integer_onep, integer_all_onesp, iterative_hash_expr, initializer_zerop): Adjust. * cfgexpand.c (expand_debug_expr): Likewise. * expr.c (categorize_ctor_elements_1, expand_expr_real_1, const_vector_from_tree): Likewise. * fold-const.c (const_binop, operand_equal_p, native_encode_vector, native_interpret_vector, fold_unary_loc, vec_cst_ctor_to_array, fold_vec_perm, fold_binary_loc, fold_ternary_loc): Likewise. * tree-streamer-in.c (streamer_alloc_tree): Handle TS_VECTOR. (lto_input_ts_vector_tree_pointers): Adjust. * tree-streamer-out.c (streamer_write_tree_header): Handle TS_VECTOR. (write_ts_vector_tree_pointers): Adjust. * varasm.c (const_hash_1, compare_constant, copy_constant, output_constant): Adjust. * gimple-fold.c (gimple_fold_stmt_to_constant_1): Adjust. * print-tree.c (print_node): Adjust. * tree-pretty-print.c (dump_generic_node): Adjust. * tree-vect-generic.c (uniform_vector_p, vector_element, lower_vec_perm): Adjust. * tree-vect-loop.c (get_initial_def_for_reduction): Adjust. * tree-vect-slp.c (vect_get_constant_vectors, vect_transform_slp_perm_load): Adjust. * tree-vect-stmts.c (vect_gen_perm_mask): Adjust. * expmed.c (make_tree): Adjust. * config/i386/i386.c (ix86_expand_builtin): Adjust. * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Adjust interface and implementation. (sparc_fold_builtin): Adjust. c-family/ * c-pretty-print.c (pp_c_initializer_list): Adjust. From-SVN: r185458
Diffstat (limited to 'gcc/tree-vect-generic.c')
-rw-r--r--gcc/tree-vect-generic.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index 83f1770..203f62c 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -334,7 +334,7 @@ expand_vector_addition (gimple_stmt_iterator *gsi,
static tree
uniform_vector_p (tree vec)
{
- tree first, t, els;
+ tree first, t;
unsigned i;
if (vec == NULL_TREE)
@@ -342,12 +342,9 @@ uniform_vector_p (tree vec)
if (TREE_CODE (vec) == VECTOR_CST)
{
- els = TREE_VECTOR_CST_ELTS (vec);
- first = TREE_VALUE (els);
- els = TREE_CHAIN (els);
-
- for (t = els; t; t = TREE_CHAIN (t))
- if (!operand_equal_p (first, TREE_VALUE (t), 0))
+ first = VECTOR_CST_ELT (vec, 0);
+ for (i = 1; i < VECTOR_CST_NELTS (vec); ++i)
+ if (!operand_equal_p (first, VECTOR_CST_ELT (vec, i), 0))
return NULL_TREE;
return first;
@@ -556,14 +553,7 @@ vector_element (gimple_stmt_iterator *gsi, tree vect, tree idx, tree *ptmpvec)
}
if (TREE_CODE (vect) == VECTOR_CST)
- {
- unsigned i;
- tree vals = TREE_VECTOR_CST_ELTS (vect);
- for (i = 0; vals; vals = TREE_CHAIN (vals), ++i)
- if (i == index)
- return TREE_VALUE (vals);
- return build_zero_cst (vect_elt_type);
- }
+ return VECTOR_CST_ELT (vect, index);
else if (TREE_CODE (vect) == CONSTRUCTOR)
{
unsigned i;
@@ -640,10 +630,10 @@ lower_vec_perm (gimple_stmt_iterator *gsi)
if (TREE_CODE (mask) == VECTOR_CST)
{
unsigned char *sel_int = XALLOCAVEC (unsigned char, elements);
- tree vals = TREE_VECTOR_CST_ELTS (mask);
- for (i = 0; i < elements; ++i, vals = TREE_CHAIN (vals))
- sel_int[i] = TREE_INT_CST_LOW (TREE_VALUE (vals)) & (2 * elements - 1);
+ for (i = 0; i < elements; ++i)
+ sel_int[i] = (TREE_INT_CST_LOW (VECTOR_CST_ELT (mask, i))
+ & (2 * elements - 1));
if (can_vec_perm_p (TYPE_MODE (vect_type), false, sel_int))
return;