On Sat, 9 Dec 2023, Richard Sandiford wrote: > Tamar Christina <tamar.christ...@arm.com> writes: > > Hi All, > > > > What do people think about having the ability to force only the latch > > connected > > exit as the exit as a param? I.e. what's in the patch but as a param. > > > > I found this useful when debugging large example failures as it tells me > > where > > I should be looking. No hard requirement but just figured I'd ask if we > > should. > > If it's useful for that, then perhaps it would be worth making it a > DEBUG_COUNTER instead of a --param, for easy bisection.
Or even better, make a debug counter that would skip the IV edge and choose the "next". Richard. > Thanks, > Richard > > > > > Thanks, > > Tamar > > > > gcc/ChangeLog: > > > > * tree-vect-loop.cc (vec_init_loop_exit_info): Allow forcing of exit. > > > > --- inline copy of patch -- > > diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc > > index > > 27ab6abfa854f14f8a4cf3d9fcb1ac1c203a4198..d6b35372623e94e02965510ab557cb568c302ebe > > 100644 > > --- a/gcc/tree-vect-loop.cc > > +++ b/gcc/tree-vect-loop.cc > > @@ -964,6 +964,7 @@ vec_init_loop_exit_info (class loop *loop) > > if (exits.length () == 1) > > return exits[0]; > > > > +#if 0 > > /* If we have multiple exits we only support counting IV at the moment. > > Analyze > > all exits and return one */ > > class tree_niter_desc niter_desc; > > @@ -982,6 +983,16 @@ vec_init_loop_exit_info (class loop *loop) > > } > > > > return candidate; > > +#else > > + basic_block bb = ip_normal_pos (loop); > > + if (!bb) > > + return NULL; > > + > > + edge exit = EDGE_SUCC (bb, 0); > > + if (exit->dest == loop->latch) > > + return EDGE_SUCC (bb, 1); > > + return exit; > > +#endif > > } > > > > /* Function bb_in_loop_p > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)