From f4d0971224c2218b6e954db26627933f3f2a49da Mon Sep 17 00:00:00 2001 From: Kirill Yukhin Date: Tue, 19 Jan 2016 14:37:23 +0000 Subject: [PATCH] Fix ICE in vectorizable_store (). gcc/ * tree-vect-stmts.c (vectorizable_store): Check rhs vectype. From-SVN: r232568 --- gcc/ChangeLog | 5 +++++ gcc/tree-vect-stmts.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 56890c1..9687f3f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-01-19 Kirill Yukhin + + * tree-vect-stmts.c (vectorizable_store): Check + rhs vectype. + 2016-01-19 David Malcolm PR jit/68446 diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 635c797..6be3c97 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -5282,7 +5282,7 @@ vectorizable_store (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, gcc_assert (gimple_assign_single_p (stmt)); - tree vectype = STMT_VINFO_VECTYPE (stmt_info); + tree vectype = STMT_VINFO_VECTYPE (stmt_info), rhs_vectype = NULL_TREE; unsigned int nunits = TYPE_VECTOR_SUBPARTS (vectype); if (loop_vinfo) @@ -5308,7 +5308,8 @@ vectorizable_store (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, } op = gimple_assign_rhs1 (stmt); - if (!vect_is_simple_use (op, vinfo, &def_stmt, &dt)) + + if (!vect_is_simple_use (op, vinfo, &def_stmt, &dt, &rhs_vectype)) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, @@ -5316,6 +5317,9 @@ vectorizable_store (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, return false; } + if (rhs_vectype && !useless_type_conversion_p (vectype, rhs_vectype)) + return false; + elem_type = TREE_TYPE (vectype); vec_mode = TYPE_MODE (vectype); -- 2.7.4