On Thu 2025-03-20 13:31:38, Richard Biener wrote:
> On Thu, 20 Mar 2025, Filip Kastl wrote:
> 
> > Hi,
> > 
> > Ok to push if bootstrap and regtest (on x86_64 linux) succeeds?
> 
> OK.
> 

And I again almost forgot:  Can I backport this to releases/gcc-14 branch?

Filip

> > Thanks,
> > Filip Kastl
> > 
> > 
> > -- 8< --
> > 
> > 
> > I increment the index variable in a loop even when I do
> > vec::unordered_remove() which causes the vector traversal to miss some
> > elements.  Mikael notified me of this mistake I made in my last patch.
> > 
> > gcc/ChangeLog:
> > 
> >     * gimple-ssa-sccopy.cc (scc_copy_prop::propagate): Don't
> >     increment after vec::unordered_remove().
> > 
> > Reported-by: Mikael Morin <mik...@gcc.gnu.org>
> > Signed-off-by: Filip Kastl <fka...@suse.cz>
> > ---
> >  gcc/gimple-ssa-sccopy.cc | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/gcc/gimple-ssa-sccopy.cc b/gcc/gimple-ssa-sccopy.cc
> > index 298feb05571..ee2a7fa8a72 100644
> > --- a/gcc/gimple-ssa-sccopy.cc
> > +++ b/gcc/gimple-ssa-sccopy.cc
> > @@ -582,9 +582,11 @@ scc_copy_prop::propagate ()
> >      get removed.  That means parts of CFG get removed.  Those may
> >      contain copy statements.  For that reason we prune SCCs here.  */
> >        unsigned i;
> > -      for (i = 0; i < scc.length (); i++)
> > +      for (i = 0; i < scc.length ();)
> >     if (gimple_bb (scc[i]) == NULL)
> >       scc.unordered_remove (i);
> > +   else
> > +     i++;
> >        if (scc.is_empty ())
> >     {
> >       scc.release ();
> > 
> 
> -- 
> 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)

Reply via email to