From: Richard Biener Date: Thu, 31 Jul 2025 10:20:34 +0000 (+0200) Subject: tree-optimization/121256 - re-instantiate check on SLP node X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=295dd134318068d253f09786b523718fd6951967;p=thirdparty%2Fgcc.git 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 --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index f22cf2ec894..5ccd64adbf2 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 (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 (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 ())