Fix nb_iterations calculation in tree-vect-loop-manip.c
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 16 Nov 2016 14:21:32 +0000 (14:21 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 16 Nov 2016 14:21:32 +0000 (14:21 +0000)
We previously stored the number of loop iterations rather
than the number of latch iterations.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Set
nb_iterations to the number of latch iterations rather than the
number of loop iterations.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r242493

gcc/ChangeLog
gcc/tree-vect-loop-manip.c

index 722b94bff35b498c3279c87fdd98962857285889..cd59b0280c83545c078588bbee78eec444106503 100644 (file)
@@ -1,3 +1,11 @@
+2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
+           Alan Hayward  <alan.hayward@arm.com>
+           David Sherwood  <david.sherwood@arm.com>
+
+       * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Set
+       nb_iterations to the number of latch iterations rather than the
+       number of loop iterations.
+
 2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood  <david.sherwood@arm.com>
index 6bfd332a1019f7a72365b61a5aba28f4a0b3c47e..4c6b8c7459c4699154bf7c54fe74da130c29381a 100644 (file)
@@ -285,7 +285,10 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters)
                     LOCATION_LINE (loop_loc));
       dump_gimple_stmt (MSG_NOTE, TDF_SLIM, cond_stmt, 0);
     }
-  loop->nb_iterations = niters;
+
+  /* Record the number of latch iterations.  */
+  loop->nb_iterations = fold_build2 (MINUS_EXPR, TREE_TYPE (niters), niters,
+                                    build_int_cst (TREE_TYPE (niters), 1));
 }
 
 /* Helper routine of slpeel_tree_duplicate_loop_to_edge_cfg.