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-slp.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-slp.c')
-rw-r--r-- | gcc/tree-vect-slp.c | 8 |
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)) |