diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-16 09:47:09 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-16 09:47:09 +0000 |
commit | fadf62f4b9d615ed6a94be7cec091b02dd69cf8e (patch) | |
tree | 61b2d8308768796bdf3f7e0c34b84aa6cc0bae11 /gcc/gimple-fold.c | |
parent | e55b581dfa231b70aa01ea2b85758369f98386be (diff) | |
download | gcc-fadf62f4b9d615ed6a94be7cec091b02dd69cf8e.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185458 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r-- | gcc/gimple-fold.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index d4028398079..a1eba65e042 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -2467,21 +2467,22 @@ gimple_fold_stmt_to_constant_1 (gimple stmt, tree (*valueize) (tree)) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (rhs)))) { unsigned i; - tree val, list; + tree val, *vec; - list = NULL_TREE; + vec = XALLOCAVEC (tree, + TYPE_VECTOR_SUBPARTS (TREE_TYPE (rhs))); FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (rhs), i, val) { val = (*valueize) (val); if (TREE_CODE (val) == INTEGER_CST || TREE_CODE (val) == REAL_CST || TREE_CODE (val) == FIXED_CST) - list = tree_cons (NULL_TREE, val, list); + vec[i] = val; else return NULL_TREE; } - return build_vector (TREE_TYPE (rhs), nreverse (list)); + return build_vector (TREE_TYPE (rhs), vec); } if (kind == tcc_reference) |