On Thu, 20 Mar 2025, Filip Kastl wrote: > Hi, > > Ok to push if bootstrap and regtest (on x86_64 linux) succeeds?
OK. > 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)