From: Richard Biener Date: Wed, 27 Mar 2024 10:37:16 +0000 (+0100) Subject: tree-optimization/114057 - handle BB reduction remain defs as LIVE X-Git-Tag: basepoints/gcc-15~452 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b02da5b99e89347f5f8bf875ec8318f84adff18;p=thirdparty%2Fgcc.git tree-optimization/114057 - handle BB reduction remain defs as LIVE The following makes sure to record the scalars we add to the BB reduction vectorization result as scalar uses for the purpose of computing live lanes. This restores vectorization in the bondfree.c TU of 435.gromacs. PR tree-optimization/114057 * tree-vect-slp.cc (vect_bb_slp_mark_live_stmts): Mark BB reduction remain defs as scalar uses. --- diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 23f9593191ad..f57684ca6856 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -6646,8 +6646,14 @@ vect_bb_slp_mark_live_stmts (bb_vec_info bb_vinfo) auto_vec worklist; for (slp_instance instance : bb_vinfo->slp_instances) - if (!visited.add (SLP_INSTANCE_TREE (instance))) - worklist.safe_push (SLP_INSTANCE_TREE (instance)); + { + if (SLP_INSTANCE_KIND (instance) == slp_inst_kind_bb_reduc) + for (tree op : SLP_INSTANCE_REMAIN_DEFS (instance)) + if (TREE_CODE (op) == SSA_NAME) + scalar_use_map.put (op, 1); + if (!visited.add (SLP_INSTANCE_TREE (instance))) + worklist.safe_push (SLP_INSTANCE_TREE (instance)); + } do { @@ -6665,7 +6671,8 @@ vect_bb_slp_mark_live_stmts (bb_vec_info bb_vinfo) if (child && !visited.add (child)) worklist.safe_push (child); } - } while (!worklist.is_empty ()); + } + while (!worklist.is_empty ()); visited.empty ();