aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-slp.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-01-12 08:36:24 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-01-12 08:36:24 +0000
commit2935d9941464d64964a1885f5fcabcb0aa5290e5 (patch)
tree3282a8496433940cabf7c73d8381b6d2766dc370 /gcc/tree-vect-slp.c
parent66c16fd94fe26bcea334ffbe9a4f3b8aa2e1cf00 (diff)
downloadgcc-2935d9941464d64964a1885f5fcabcb0aa5290e5.zip
gcc-2935d9941464d64964a1885f5fcabcb0aa5290e5.tar.gz
gcc-2935d9941464d64964a1885f5fcabcb0aa5290e5.tar.bz2
re PR tree-optimization/69168 (ICE in vect_analyze_loop_2, at tree-vect-loop.c:2182)
2016-01-12 Richard Biener <rguenther@suse.de> PR tree-optimization/69168 * tree-vect-loop.c (vect_analyze_loop_2): Reset both main and pattern stmt SLP type. * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Patterns may end up unused so cope with that case. * gcc.dg/torture/pr69168.c: New testcase. From-SVN: r232261
Diffstat (limited to 'gcc/tree-vect-slp.c')
-rw-r--r--gcc/tree-vect-slp.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index d185838..7ad7c12 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -2016,10 +2016,10 @@ vect_detect_hybrid_slp_stmts (slp_tree node, unsigned i, slp_vect_type stype)
{
/* Check if a pure SLP stmt has uses in non-SLP stmts. */
gcc_checking_assert (PURE_SLP_STMT (stmt_vinfo));
- /* We always get the pattern stmt here, but for immediate
- uses we have to use the LHS of the original stmt. */
- gcc_checking_assert (!STMT_VINFO_IN_PATTERN_P (stmt_vinfo));
- if (STMT_VINFO_RELATED_STMT (stmt_vinfo))
+ /* If we get a pattern stmt here we have to use the LHS of the
+ original stmt for immediate uses. */
+ if (! STMT_VINFO_IN_PATTERN_P (stmt_vinfo)
+ && STMT_VINFO_RELATED_STMT (stmt_vinfo))
stmt = STMT_VINFO_RELATED_STMT (stmt_vinfo);
if (TREE_CODE (gimple_op (stmt, 0)) == SSA_NAME)
FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, gimple_op (stmt, 0))