From 0b02da5b99e89347f5f8bf875ec8318f84adff18 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 27 Mar 2024 11:37:16 +0100 Subject: [PATCH] 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. --- gcc/tree-vect-slp.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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 (); -- 2.47.2