From 552fd8e693c768ac355d6fa6bd2dfcb91eedafb7 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 20 Apr 2012 08:19:49 +0000 Subject: [PATCH] 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 * 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 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vect-loop.c | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a91416f7adb4..fa687185583b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-04-20 Richard Guenther + + * tree-vect-loop.c (vect_analyze_loop_operations): Do not + vectorize loops that can never run more often than the + vectorization factor. + 2012-04-19 Jan Hubicka * symtab.c (dump_symtab_base): Fix dumping of asm lists. diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 91a982957595..0c6ed39c1232 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."); -- 2.47.2