aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKirill Yukhin <kirill.yukhin@intel.com>2016-01-19 14:37:23 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2016-01-19 14:37:23 +0000
commitf4d0971224c2218b6e954db26627933f3f2a49da (patch)
treef2b8207b977bf0f161cbd4afa5df0ad82bf3cd4f /gcc
parentd6874f56624074a067b5f42bbacae030201e4520 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/tree-vect-stmts.c8
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);