diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a1159697da2..6345f67d2ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2012-03-21 Richard Guenther <rguenther@suse.de> + PR tree-optimizer/52636 + * tree-vect-slp.c (vect_get_constant_vectors): Convert constants + to the appropriate type. + +2012-03-21 Richard Guenther <rguenther@suse.de> + * Makefile.in (cfgexpand.o): Add $(REGS_H) and $(INTEGRATE_H) dependencies. * cfgexpand.c (gimple_expand_cfg): Fold in pass_init_function, diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index dbfe78d9351..c142bbb0201 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -2363,6 +2363,12 @@ vect_get_constant_vectors (tree op, slp_tree slp_node, /* Create 'vect_ = {op0,op1,...,opn}'. */ number_of_places_left_in_vector--; + if (constant_p + && !types_compatible_p (TREE_TYPE (vector_type), TREE_TYPE (op))) + { + op = fold_unary (VIEW_CONVERT_EXPR, TREE_TYPE (vector_type), op); + gcc_assert (op && CONSTANT_CLASS_P (op)); + } elts[number_of_places_left_in_vector] = op; if (number_of_places_left_in_vector == 0) |