aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop-manip.c
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2017-06-07 10:56:54 +0000
committerBin Cheng <amker@gcc.gnu.org>2017-06-07 10:56:54 +0000
commit704c28eeebfa5fc3fb555eb980f149ca76a8b948 (patch)
tree41d76aa330fbf57d65b3adc3737650006fbd3a4c /gcc/tree-vect-loop-manip.c
parent7078979b291419f353804cc32ecfdb22367b6e0d (diff)
downloadgcc-704c28eeebfa5fc3fb555eb980f149ca76a8b948.zip
gcc-704c28eeebfa5fc3fb555eb980f149ca76a8b948.tar.gz
gcc-704c28eeebfa5fc3fb555eb980f149ca76a8b948.tar.bz2
tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop if versioning is required.
* tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop if versioning is required. * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop peeling with the check for versioning. From-SVN: r248959
Diffstat (limited to 'gcc/tree-vect-loop-manip.c')
-rw-r--r--gcc/tree-vect-loop-manip.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index 0156c97..d60b84e 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -1691,9 +1691,11 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree niters, tree nitersm1,
/* Prolog loop may be skipped. */
bool skip_prolog = (prolog_peeling != 0);
- /* Skip to epilog if scalar loop may be preferred. It's only used when
- we peel for epilog loop. */
- bool skip_vector = (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo));
+ /* Skip to epilog if scalar loop may be preferred. It's only needed
+ when we peel for epilog loop and when it hasn't been checked with
+ loop versioning. */
+ bool skip_vector = (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
+ && !LOOP_REQUIRES_VERSIONING (loop_vinfo));
/* Epilog loop must be executed if the number of iterations for epilog
loop is known at compile time, otherwise we need to add a check at
the end of vector loop and skip to the end of epilog loop. */