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.
This commit is contained in:
Richard Biener 2024-03-27 11:37:16 +01:00
parent aac30f8416
commit 0b02da5b99

View File

@ -6646,8 +6646,14 @@ vect_bb_slp_mark_live_stmts (bb_vec_info bb_vinfo)
auto_vec<slp_tree> 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 ();