diff options
author | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-02-16 11:35:03 +0000 |
---|---|---|
committer | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-02-16 11:35:03 +0000 |
commit | 07be02da583ec431d0e0bbffc96970e289e1e020 (patch) | |
tree | e9f104bb7db8c23a9f89870f72aee6f61efe9bce /gcc/tree-vect-slp.c | |
parent | 40f9e245ee4986ab7dd13df3c0a480437a564810 (diff) | |
download | gcc-07be02da583ec431d0e0bbffc96970e289e1e020.tar.gz |
PR tree-optimization/43074
* tree-vectorizer.h (VECTORIZABLE_CYCLE_DEF): New.
* tree-vect-loop.c (vect_analyze_loop_operations): Add
vectorizable cycles in hybrid SLP check.
* tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156800 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vect-slp.c')
-rw-r--r-- | gcc/tree-vect-slp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index bbf2bd31820..5a11b84a953 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -1102,6 +1102,7 @@ vect_detect_hybrid_slp_stmts (slp_tree node) gimple stmt; imm_use_iterator imm_iter; gimple use_stmt; + stmt_vec_info stmt_vinfo; if (!node) return; @@ -1110,9 +1111,10 @@ vect_detect_hybrid_slp_stmts (slp_tree node) if (PURE_SLP_STMT (vinfo_for_stmt (stmt)) && TREE_CODE (gimple_op (stmt, 0)) == SSA_NAME) FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, gimple_op (stmt, 0)) - if (vinfo_for_stmt (use_stmt) - && !STMT_SLP_TYPE (vinfo_for_stmt (use_stmt)) - && STMT_VINFO_RELEVANT (vinfo_for_stmt (use_stmt))) + if ((stmt_vinfo = vinfo_for_stmt (use_stmt)) + && !STMT_SLP_TYPE (stmt_vinfo) + && (STMT_VINFO_RELEVANT (stmt_vinfo) + || VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_vinfo)))) vect_mark_slp_stmts (node, hybrid, i); vect_detect_hybrid_slp_stmts (SLP_TREE_LEFT (node)); |