diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-19 15:00:10 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-19 15:00:10 +0000 |
commit | f3d6d99e7b0120ebedc4934983c464053af3c917 (patch) | |
tree | 5b3c0ad04fec2e6b97a7b70107dd6744aa6ee116 /gcc/tree-vect-loop.c | |
parent | 3388d323ccf77c3f4318f67d2efa38264ceb607c (diff) | |
download | gcc-f3d6d99e7b0120ebedc4934983c464053af3c917.tar.gz |
2013-11-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/59164
* tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
Uncomment assert.
* tree-vect-loop.c (vect_analyze_loop_operations): Adjust
check whether we can create an epilogue loop to reflect the
cases where we create one.
* gcc.dg/torture/pr59164.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205030 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 4a277ae419a..a97d413f5cd 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1588,24 +1588,19 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp) return false; } - if (LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo) + if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) || ((int) tree_ctz (LOOP_VINFO_NITERS (loop_vinfo)) < exact_log2 (vectorization_factor))) { if (dump_enabled_p ()) - dump_printf_loc (MSG_NOTE, vect_location, "epilog loop required.\n"); - if (!vect_can_advance_ivs_p (loop_vinfo)) - { - if (dump_enabled_p ()) - dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "not vectorized: can't create epilog loop 1.\n"); - return false; - } - if (!slpeel_can_duplicate_loop_p (loop, single_exit (loop))) + dump_printf_loc (MSG_NOTE, vect_location, "epilog loop required\n"); + if (!vect_can_advance_ivs_p (loop_vinfo) + || !slpeel_can_duplicate_loop_p (loop, single_exit (loop))) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "not vectorized: can't create epilog loop 2.\n"); + "not vectorized: can't create required " + "epilog loop\n"); return false; } } |