diff options
author | Richard Biener <rguenther@suse.de> | 2017-06-02 10:26:10 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-06-02 10:26:10 +0000 |
commit | 643a9684fadd71e0b89bc737e937e22fe621a4e7 (patch) | |
tree | ee45fe7845f42edf39217d19020ca988a2ef1daf /gcc/tree-vect-stmts.c | |
parent | e7754973ed3f91db45ae9257197966e1030e1e85 (diff) | |
download | gcc-643a9684fadd71e0b89bc737e937e22fe621a4e7.zip gcc-643a9684fadd71e0b89bc737e937e22fe621a4e7.tar.gz gcc-643a9684fadd71e0b89bc737e937e22fe621a4e7.tar.bz2 |
tree-vect-loop.c (vect_analyze_loop_operations): Not relevant PHIs are ok.
2017-06-02 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vect_analyze_loop_operations): Not relevant
PHIs are ok.
* tree-vect-stmts.c (process_use): Do not mark backedge defs
for inductions as relevant.
From-SVN: r248820
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r-- | gcc/tree-vect-stmts.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 7490b08..1e9d42c 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -579,6 +579,20 @@ process_use (gimple *stmt, tree use, loop_vec_info loop_vinfo, gcc_unreachable (); } } + /* We are also not interested in uses on loop PHI backedges that are + inductions. Otherwise we'll needlessly vectorize the IV increment + and cause hybrid SLP for SLP inductions. */ + else if (gimple_code (stmt) == GIMPLE_PHI + && STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_induction_def + && (PHI_ARG_DEF_FROM_EDGE (stmt, loop_latch_edge (bb->loop_father)) + == use)) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, + "induction value on backedge.\n"); + return true; + } + vect_mark_relevant (worklist, def_stmt, relevant, false); return true; |