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

Reply via email to