Commit 292cba13 by Richard Biener Committed by Richard Biener

tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo access on whether the use…

tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo access on whether the use is in the BB we currently try to vectorize.

2013-05-29  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo
	access on whether the use is in the BB we currently try to
	vectorize.
	(vect_bb_vectorization_profitable_p): Pass the BB we currently
	vectorize to vect_bb_slp_scalar_cost.

From-SVN: r199403
parent 6eddf228
2013-05-29 Richard Biener <rguenther@suse.de> 2013-05-29 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo
access on whether the use is in the BB we currently try to
vectorize.
(vect_bb_vectorization_profitable_p): Pass the BB we currently
vectorize to vect_bb_slp_scalar_cost.
2013-05-29 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_bb_slp_scalar_cost): New function * tree-vect-slp.c (vect_bb_slp_scalar_cost): New function
computing scalar cost offsetted by stmts that are kept live computing scalar cost offsetted by stmts that are kept live
by scalar uses. by scalar uses.
......
...@@ -1904,7 +1904,8 @@ vect_slp_analyze_operations (bb_vec_info bb_vinfo) ...@@ -1904,7 +1904,8 @@ vect_slp_analyze_operations (bb_vec_info bb_vinfo)
update LIFE according to uses of NODE. */ update LIFE according to uses of NODE. */
static unsigned static unsigned
vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life) vect_bb_slp_scalar_cost (basic_block bb,
slp_tree node, vec<bool, va_stack> life)
{ {
unsigned scalar_cost = 0; unsigned scalar_cost = 0;
unsigned i; unsigned i;
...@@ -1931,7 +1932,7 @@ vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life) ...@@ -1931,7 +1932,7 @@ vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life)
imm_use_iterator use_iter; imm_use_iterator use_iter;
gimple use_stmt; gimple use_stmt;
FOR_EACH_IMM_USE_STMT (use_stmt, use_iter, DEF_FROM_PTR (def_p)) FOR_EACH_IMM_USE_STMT (use_stmt, use_iter, DEF_FROM_PTR (def_p))
if (!vinfo_for_stmt (use_stmt) if (gimple_bb (use_stmt) != bb
|| !STMT_VINFO_VECTORIZABLE (vinfo_for_stmt (use_stmt))) || !STMT_VINFO_VECTORIZABLE (vinfo_for_stmt (use_stmt)))
{ {
life[i] = true; life[i] = true;
...@@ -1956,7 +1957,7 @@ vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life) ...@@ -1956,7 +1957,7 @@ vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life)
} }
FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), i, child) FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), i, child)
scalar_cost += vect_bb_slp_scalar_cost (child, life); scalar_cost += vect_bb_slp_scalar_cost (bb, child, life);
return scalar_cost; return scalar_cost;
} }
...@@ -1995,7 +1996,8 @@ vect_bb_vectorization_profitable_p (bb_vec_info bb_vinfo) ...@@ -1995,7 +1996,8 @@ vect_bb_vectorization_profitable_p (bb_vec_info bb_vinfo)
vec<bool, va_stack> life; vec<bool, va_stack> life;
vec_stack_alloc (bool, life, SLP_INSTANCE_GROUP_SIZE (instance)); vec_stack_alloc (bool, life, SLP_INSTANCE_GROUP_SIZE (instance));
life.quick_grow_cleared (SLP_INSTANCE_GROUP_SIZE (instance)); life.quick_grow_cleared (SLP_INSTANCE_GROUP_SIZE (instance));
scalar_cost += vect_bb_slp_scalar_cost (SLP_INSTANCE_TREE (instance), scalar_cost += vect_bb_slp_scalar_cost (BB_VINFO_BB (bb_vinfo),
SLP_INSTANCE_TREE (instance),
life); life);
life.release (); life.release ();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment