Commit 3cc2fa2a by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/66718 (Non-invariant ADDR_EXPR not vectorized)

	PR tree-optimization/66718
	* tree-vect-stmts.c (vectorizable_call): Replace uses of
	GOMP_SIMD_LANE outside of loop with vf - 1 rather than 0.

From-SVN: r225434
parent 465c8c19
2015-07-05 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/66718
* tree-vect-stmts.c (vectorizable_call): Replace uses of
GOMP_SIMD_LANE outside of loop with vf - 1 rather than 0.
PR tree-optimization/66718
* tree-vect-stmts.c (vectorizable_assignment, vectorizable_store,
vectorizable_load, vectorizable_condition): Move vectype,
nunits, ncopies computation after checking what kind of statement
......
......@@ -2601,6 +2601,30 @@ vectorizable_call (gimple gs, gimple_stmt_iterator *gsi, gimple *vec_stmt,
lhs = gimple_call_lhs (STMT_VINFO_RELATED_STMT (stmt_info));
else
lhs = gimple_call_lhs (stmt);
if (gimple_call_internal_p (stmt)
&& gimple_call_internal_fn (stmt) == IFN_GOMP_SIMD_LANE)
{
/* Replace uses of the lhs of GOMP_SIMD_LANE call outside the loop
with vf - 1 rather than 0, that is the last iteration of the
vectorized loop. */
imm_use_iterator iter;
use_operand_p use_p;
gimple use_stmt;
FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs)
{
basic_block use_bb = gimple_bb (use_stmt);
if (use_bb
&& !flow_bb_inside_loop_p (LOOP_VINFO_LOOP (loop_vinfo), use_bb))
{
FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
SET_USE (use_p, build_int_cst (TREE_TYPE (lhs),
ncopies * nunits_out - 1));
update_stmt (use_stmt);
}
}
}
new_stmt = gimple_build_assign (lhs, build_zero_cst (type));
set_vinfo_for_stmt (new_stmt, stmt_info);
set_vinfo_for_stmt (stmt, NULL);
......
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