aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-04-20 08:19:49 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-04-20 08:19:49 +0000
commit552fd8e693c768ac355d6fa6bd2dfcb91eedafb7 (patch)
tree9f80c862880b6594b0bc89bda379872a0f6253a4 /gcc/tree-vect-loop.c
parent1bde7dabc9b3c63fd69c6436fe35a2a409c31d52 (diff)
downloadgcc-552fd8e693c768ac355d6fa6bd2dfcb91eedafb7.zip
gcc-552fd8e693c768ac355d6fa6bd2dfcb91eedafb7.tar.gz
gcc-552fd8e693c768ac355d6fa6bd2dfcb91eedafb7.tar.bz2
tree-vect-loop.c (vect_analyze_loop_operations): Do not vectorize loops that can never run more often than the vectorization factor.
2012-04-20 Richard Guenther <rguenther@suse.de> * tree-vect-loop.c (vect_analyze_loop_operations): Do not vectorize loops that can never run more often than the vectorization factor. From-SVN: r186614
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 91a9829..0c6ed39 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -1235,6 +1235,7 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp)
int min_scalar_loop_bound;
unsigned int th;
bool only_slp_in_loop = true, ok;
+ HOST_WIDE_INT max_niter;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "=== vect_analyze_loop_operations ===");
@@ -1407,8 +1408,10 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp)
"vectorization_factor = %d, niters = " HOST_WIDE_INT_PRINT_DEC,
vectorization_factor, LOOP_VINFO_INT_NITERS (loop_vinfo));
- if (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
- && (LOOP_VINFO_INT_NITERS (loop_vinfo) < vectorization_factor))
+ if ((LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
+ && (LOOP_VINFO_INT_NITERS (loop_vinfo) < vectorization_factor))
+ || ((max_niter = max_stmt_executions_int (loop)) != -1
+ && max_niter < vectorization_factor))
{
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
fprintf (vect_dump, "not vectorized: iteration count too small.");