diff options
author | Kirill Yukhin <kirill.yukhin@intel.com> | 2016-01-19 14:37:23 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2016-01-19 14:37:23 +0000 |
commit | f4d0971224c2218b6e954db26627933f3f2a49da (patch) | |
tree | f2b8207b977bf0f161cbd4afa5df0ad82bf3cd4f /gcc | |
parent | d6874f56624074a067b5f42bbacae030201e4520 (diff) | |
download | gcc-f4d0971224c2218b6e954db26627933f3f2a49da.zip gcc-f4d0971224c2218b6e954db26627933f3f2a49da.tar.gz gcc-f4d0971224c2218b6e954db26627933f3f2a49da.tar.bz2 |
Fix ICE in vectorizable_store ().
gcc/
* tree-vect-stmts.c (vectorizable_store): Check
rhs vectype.
From-SVN: r232568
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <kirill.yukhin@intel.com> + + * tree-vect-stmts.c (vectorizable_store): Check + rhs vectype. + 2016-01-19 David Malcolm <dmalcolm@redhat.com> PR jit/68446 diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 635c797..6be3c97d 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); |