https://gcc.gnu.org/g:295dd134318068d253f09786b523718fd6951967
commit r15-10171-g295dd134318068d253f09786b523718fd6951967 Author: Richard Biener <rguent...@suse.de> Date: Thu Jul 31 12:20:34 2025 +0200 tree-optimization/121256 - re-instantiate check on SLP node On the gcc-15 branch we can have no SLP node. We have to be careful with cherry-picks from trunk. PR tree-optimization/121256 * tree-vect-loop.cc (vectorizable_recurr): Handle the case of a NULL SLP node. Diff: --- gcc/tree-vect-loop.cc | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index f22cf2ec894a..5ccd64adbf22 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -9649,18 +9649,21 @@ vectorizable_recurr (loop_vec_info loop_vinfo, stmt_vec_info stmt_info, are uniform. */ tree uniform_initval = NULL_TREE; edge pe = loop_preheader_edge (LOOP_VINFO_LOOP (loop_vinfo)); - for (stmt_vec_info s : SLP_TREE_SCALAR_STMTS (slp_node)) - { - gphi *phi = as_a <gphi *> (s->stmt); - if (! uniform_initval) - uniform_initval = PHI_ARG_DEF_FROM_EDGE (phi, pe); - else if (! operand_equal_p (uniform_initval, - PHI_ARG_DEF_FROM_EDGE (phi, pe))) - { - uniform_initval = NULL_TREE; - break; - } - } + if (slp_node) + for (stmt_vec_info s : SLP_TREE_SCALAR_STMTS (slp_node)) + { + gphi *phi = as_a <gphi *> (s->stmt); + if (! uniform_initval) + uniform_initval = PHI_ARG_DEF_FROM_EDGE (phi, pe); + else if (! operand_equal_p (uniform_initval, + PHI_ARG_DEF_FROM_EDGE (phi, pe))) + { + uniform_initval = NULL_TREE; + break; + } + } + else + uniform_initval = PHI_ARG_DEF_FROM_EDGE (phi, pe); if (!uniform_initval && !nunits.is_constant ()) { if (dump_enabled_p ())