diff options
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r-- | gcc/tree-vect-stmts.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 0e7914f026e..13859aff0b2 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -4091,7 +4091,7 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, tree vect_gen_perm_mask (tree vectype, unsigned char *sel) { - tree mask_elt_type, mask_type, mask_vec; + tree mask_elt_type, mask_type, mask_vec, *mask_elts; int i, nunits; nunits = TYPE_VECTOR_SUBPARTS (vectype); @@ -4103,11 +4103,10 @@ vect_gen_perm_mask (tree vectype, unsigned char *sel) (int_mode_for_mode (TYPE_MODE (TREE_TYPE (vectype))), 1); mask_type = get_vectype_for_scalar_type (mask_elt_type); - mask_vec = NULL; + mask_elts = XALLOCAVEC (tree, nunits); for (i = nunits - 1; i >= 0; i--) - mask_vec = tree_cons (NULL, build_int_cst (mask_elt_type, sel[i]), - mask_vec); - mask_vec = build_vector (mask_type, mask_vec); + mask_elts[i] = build_int_cst (mask_elt_type, sel[i]); + mask_vec = build_vector (mask_type, mask_elts); return mask_vec; } |