On Thu, 5 Feb 2026, Josef Melcr wrote:
> Hi,
>
> I cvise'd the reproducer from the PR, would this be acceptable as a testcase?
> Not sure if it's placed correctly.
Sure, if you have sth reasonably small I can also try to sanitize
it to be "proper" fortran.
Richard.
>
> Thanks,
>
> Josef
>
> On 2/5/26 1:58 PM, Richard Biener wrote:
> > The following makes sure to release any SLP kind specific data when
> > rolling back earlier successful analysis. This avoids crashing
> > when re-analyzing such node via another graph entry.
> >
> > Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
> >
> > The testcase was on the big side, so not included.
> >
> > Richard.
> >
> > PR tree-optimization/123986
> > * tree-vect-slp.cc (vect_slp_analyze_operations): When
> > rolling back analyzed nodes, release node specific data
> > and reset SLP_TREE_TYPE.
> > ---
> > gcc/tree-vect-slp.cc | 13 +++++++++++--
> > 1 file changed, 11 insertions(+), 2 deletions(-)
> >
> > diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc
> > index c481efc749f..c932e8d5cba 100644
> > --- a/gcc/tree-vect-slp.cc
> > +++ b/gcc/tree-vect-slp.cc
> > @@ -9258,10 +9258,19 @@ vect_slp_analyze_operations (vec_info *vinfo)
> > dump_printf_loc (MSG_NOTE, vect_location,
> > "removing SLP instance operations starting from: %G",
> > stmt_info->stmt);
> > + while (!visited_vec.is_empty ())
> > + {
> > + slp_tree node = visited_vec.pop ();
> > + SLP_TREE_TYPE (node) = undef_vec_info_type;
> > + if (node->data)
> > + {
> > + delete node->data;
> > + node->data = nullptr;
> > + }
> > + visited.remove (node);
> > + }
> > vect_free_slp_instance (instance);
> > vinfo->slp_instances.ordered_remove (i);
> > - while (!visited_vec.is_empty ())
> > - visited.remove (visited_vec.pop ());
> > }
> > else
> > {
>
--
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)