summaryrefslogtreecommitdiff
path: root/gcc/tree-vect-slp.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vect-slp.c')
-rw-r--r--gcc/tree-vect-slp.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index d71384881b..b6a6fde40f 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -3050,7 +3050,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node,
if (integer_zerop (op))
op = build_int_cst (TREE_TYPE (vector_type), 0);
else if (integer_onep (op))
- op = build_int_cst (TREE_TYPE (vector_type), 1);
+ op = build_all_ones_cst (TREE_TYPE (vector_type));
else
gcc_unreachable ();
}
@@ -3065,8 +3065,14 @@ vect_get_constant_vectors (tree op, slp_tree slp_node,
gimple *init_stmt;
if (VECTOR_BOOLEAN_TYPE_P (vector_type))
{
+ tree true_val
+ = build_all_ones_cst (TREE_TYPE (vector_type));
+ tree false_val
+ = build_zero_cst (TREE_TYPE (vector_type));
gcc_assert (INTEGRAL_TYPE_P (TREE_TYPE (op)));
- init_stmt = gimple_build_assign (new_temp, NOP_EXPR, op);
+ init_stmt = gimple_build_assign (new_temp, COND_EXPR,
+ op, true_val,
+ false_val);
}
else
{