ping
> -----Original Message-----
> From: Tamar Christina
> Sent: Wednesday, January 15, 2025 2:08 PM
> To: Alex Coplan <alex.cop...@arm.com>; gcc-patches@gcc.gnu.org
> Cc: Richard Biener <rguent...@suse.de>; Jan Hubicka <hubi...@ucw.cz>
> Subject: RE: [PATCH 3/4] vect: Ensure profile consistency when adding epilog
> guard [PR117790]
>
> Ping
>
> > -----Original Message-----
> > From: Alex Coplan <alex.cop...@arm.com>
> > Sent: Monday, January 6, 2025 11:35 AM
> > To: gcc-patches@gcc.gnu.org
> > Cc: Richard Biener <rguent...@suse.de>; Jan Hubicka <hubi...@ucw.cz>; Tamar
> > Christina <tamar.christ...@arm.com>
> > Subject: [PATCH 3/4] vect: Ensure profile consistency when adding epilog
> > guard
> > [PR117790]
> >
> > This patch tries to make the CFG profile consistent when adding a guard
> > edge to skip the epilog during peeling.
> >
> > The changes can be summarized as follows:
> > - We avoid adding the guard edge entirely if the guard condition folds
> > to false, otherwise the profile will become inconsistent since
> > the cfgcleanup code doesn't attempt to update it on removing the dead
> > edge.
> > - If the guard condition instead folds to true, we account for this by
> > giving the skip edge 100% probability (otherwise the profile will
> > again become inconsistent when removing the other now-dead edge).
> > - Finally, we use the new helper scale_loop_freqs_with_new_exit_count
> > instead
> > of scale_loop_profile to update the epilog frequencies / probabiltiies.
> > We make the assumption here that if the IV exit is taken in the vector
> > loop,
> > then it will also be taken in the epilog (and not an early exit). Since
> > we
> > add the guard to the vector iv exit, we know any reduction in count
> > associated with the epilog skip should be accounted for by a reduction
> > in the
> > epilog's iv exit edge count.
> >
> > Bootstrapped/regtested as a series on aarch64-linux-gnu,
> > arm-linux-gnueabihf,
> > and x86_64-linux-gnu. OK for trunk?
> >
> > Thanks,
> > Alex
> >
> > gcc/ChangeLog:
> >
> > PR tree-optimization/117790
> > * tree-vect-loop-manip.cc (vect_do_peeling): Attempt to maintain
> > consistency of the CFG profile when adding an epilog skip edge.
> >
> > gcc/testsuite/ChangeLog:
> >
> > PR tree-optimization/117790
> > * gcc.dg/vect/vect-early-break-profile-1.c: New test.
> > ---
> > .../gcc.dg/vect/vect-early-break-profile-1.c | 10 ++++
> > gcc/tree-vect-loop-manip.cc | 48 ++++++++++++++-----
> > 2 files changed, 47 insertions(+), 11 deletions(-)
> > create mode 100644 gcc/testsuite/gcc.dg/vect/vect-early-break-profile-1.c