diff options
author | Richard Biener <rguenther@suse.de> | 2016-01-12 08:36:24 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-01-12 08:36:24 +0000 |
commit | 2935d9941464d64964a1885f5fcabcb0aa5290e5 (patch) | |
tree | 3282a8496433940cabf7c73d8381b6d2766dc370 /gcc/tree-vect-loop.c | |
parent | 66c16fd94fe26bcea334ffbe9a4f3b8aa2e1cf00 (diff) | |
download | gcc-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-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index a797f70..706a25d 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2189,10 +2189,11 @@ again: !gsi_end_p (si); gsi_next (&si)) { stmt_vec_info stmt_info = vinfo_for_stmt (gsi_stmt (si)); + STMT_SLP_TYPE (stmt_info) = loop_vect; if (STMT_VINFO_IN_PATTERN_P (stmt_info)) { - gcc_assert (STMT_SLP_TYPE (stmt_info) == loop_vect); stmt_info = vinfo_for_stmt (STMT_VINFO_RELATED_STMT (stmt_info)); + STMT_SLP_TYPE (stmt_info) = loop_vect; for (gimple_stmt_iterator pi = gsi_start (STMT_VINFO_PATTERN_DEF_SEQ (stmt_info)); !gsi_end_p (pi); gsi_next (&pi)) @@ -2201,7 +2202,6 @@ again: STMT_SLP_TYPE (vinfo_for_stmt (pstmt)) = loop_vect; } } - STMT_SLP_TYPE (stmt_info) = loop_vect; } } /* Free optimized alias test DDRS. */ |