From: Kirill Yukhin Date: Tue, 19 Jan 2016 14:37:23 +0000 (+0000) Subject: Fix ICE in vectorizable_store (). X-Git-Tag: basepoints/gcc-7~1493 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f4d0971224c2218b6e954db26627933f3f2a49da;p=thirdparty%2Fgcc.git Fix ICE in vectorizable_store (). gcc/ * tree-vect-stmts.c (vectorizable_store): Check rhs vectype. From-SVN: r232568 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 56890c1b9761..9687f3f014e5 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 635c7970fca0..6be3c97d4592 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);