aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2010-10-31 02:20:22 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2010-10-31 02:20:22 +0000
commitb9acc9f1de4ef8a1cff7c495a3b26fcd3e2448c4 (patch)
tree1690b9c80ac2985f27e7ba09fccad0152877304c /gcc/tree.c
parent76369a821b895c4d4bf1412d108716c4bb0a90de (diff)
downloadgcc-b9acc9f1de4ef8a1cff7c495a3b26fcd3e2448c4.zip
gcc-b9acc9f1de4ef8a1cff7c495a3b26fcd3e2448c4.tar.gz
gcc-b9acc9f1de4ef8a1cff7c495a3b26fcd3e2448c4.tar.bz2
fold-const.c (build_zero_vector): Use build_vector_from_val.
* fold-const.c (build_zero_vector): Use build_vector_from_val. * tree-vect-loop.c (get_initial_def_for_induction): Likewise. (get_initial_def_for_reduction): Likewise. * tree-vect-slp.c (vect_get_constant_vectors): Likewise. * tree-vect-stmts.c (vect_get_vec_def_for_operand): Likewise. * tree.c (build_one_cst): Likewise. (build_vector_from_val): Use types_compatible_p for assert. From-SVN: r166102
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 4eb13c1..4de73ee 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1376,7 +1376,8 @@ build_vector_from_val (tree vectype, tree sc)
if (sc == error_mark_node)
return sc;
- gcc_assert (TREE_TYPE (sc) == TREE_TYPE (vectype));
+ gcc_assert (lang_hooks.types_compatible_p (TREE_TYPE (sc),
+ TREE_TYPE (vectype)));
v = VEC_alloc (constructor_elt, gc, nunits);
for (i = 0; i < nunits; ++i)
@@ -1590,17 +1591,9 @@ build_one_cst (tree type)
case VECTOR_TYPE:
{
- tree scalar, cst;
- int i;
-
- scalar = build_one_cst (TREE_TYPE (type));
-
- /* Create 'vect_cst_ = {cst,cst,...,cst}' */
- cst = NULL_TREE;
- for (i = TYPE_VECTOR_SUBPARTS (type); --i >= 0; )
- cst = tree_cons (NULL_TREE, scalar, cst);
+ tree scalar = build_one_cst (TREE_TYPE (type));
- return build_vector (type, cst);
+ return build_vector_from_val (type, scalar);
}
case COMPLEX_TYPE: