From 50eeef0975bf57ba5c1d5f1da1c74fbc09de6473 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Wed, 21 Mar 2012 08:05:51 +0000 Subject: [PATCH] re PR tree-optimization/52636 (ICE: tree check: expected integer_cst, have string_cst in tree_to_double_int, at tree.h:4324) 2012-03-21 Richard Guenther PR tree-optimizer/52636 * tree-vect-slp.c (vect_get_constant_vectors): Convert constants to the appropriate type. From-SVN: r185599 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vect-slp.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a1159697da2..6345f67d2ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-03-21 Richard Guenther + + PR tree-optimizer/52636 + * tree-vect-slp.c (vect_get_constant_vectors): Convert constants + to the appropriate type. + 2012-03-21 Richard Guenther * Makefile.in (cfgexpand.o): Add $(REGS_H) and $(INTEGRATE_H) 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) -- 2.30.2