From: Richard Biener Date: Thu, 5 Feb 2026 11:26:18 +0000 (+0100) Subject: tree-optimization/123986 - upon SLP analysis rollback, release data X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12e97ffdb516bae81b823a247250dc2d7ce8e566;p=thirdparty%2Fgcc.git tree-optimization/123986 - upon SLP analysis rollback, release data 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. 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. --- 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 {