Message ID | 8737is52us.fsf@e105548-lin.cambridge.arm.com |
---|---|
State | New |
Headers | show |
On Tue, Nov 15, 2016 at 1:44 PM, Richard Sandiford <richard.sandiford@arm.com> wrote: > We previously stored the number of loop iterations rather > than the number of latch iterations. So ->nb_iterations was unused without SVE? Otherwise can you please add a testcase? Thanks, Richard. > Tested on aarch64-linux-gnu and x86_64-linux-gnu. OK to install? > > Thanks, > Richard > > > [ This patch is part of the SVE series posted here: > https://gcc.gnu.org/ml/gcc/2016-11/msg00030.html ] > > 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. > > diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c > index 6bfd332..4c6b8c7 100644 > --- a/gcc/tree-vect-loop-manip.c > +++ b/gcc/tree-vect-loop-manip.c > @@ -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. >
Richard Biener <richard.guenther@gmail.com> writes: > On Tue, Nov 15, 2016 at 1:44 PM, Richard Sandiford > <richard.sandiford@arm.com> wrote: >> We previously stored the number of loop iterations rather >> than the number of latch iterations. > > So ->nb_iterations was unused without SVE? Otherwise can you please > add a testcase? TBH I can't remember whether we noticed this by inspection or whether it did manifest in the output somehow. If it did, it would have been an extra unnecessary iteration after complete unrolling, but usually a later patch would remove the iteration as dead. Thanks, Richard
On Tue, Nov 15, 2016 at 4:54 PM, Richard Sandiford <richard.sandiford@arm.com> wrote: > Richard Biener <richard.guenther@gmail.com> writes: >> On Tue, Nov 15, 2016 at 1:44 PM, Richard Sandiford >> <richard.sandiford@arm.com> wrote: >>> We previously stored the number of loop iterations rather >>> than the number of latch iterations. >> >> So ->nb_iterations was unused without SVE? Otherwise can you please >> add a testcase? > > TBH I can't remember whether we noticed this by inspection or whether > it did manifest in the output somehow. If it did, it would have been > an extra unnecessary iteration after complete unrolling, but usually > a later patch would remove the iteration as dead. Ok then. Thanks, Richard. > Thanks, > Richard
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index 6bfd332..4c6b8c7 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -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.