tree-optimization/97886 - deal with strange LC PHI nodes

This makes vectorization properly assign vector types to PHI
nodes that copy from externals on loop exit edges.

2020-11-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/97886
	* tree-vect-loop.c (vectorizable_lc_phi): Properly assign
	vector types to invariants for SLP.
This commit is contained in:
Richard Biener 2020-11-18 10:32:29 +01:00
parent 798bdfa0eb
commit 30270bf042
1 changed files with 11 additions and 0 deletions

View File

@ -7593,6 +7593,17 @@ vectorizable_lc_phi (loop_vec_info loop_vinfo,
if (!vec_stmt) /* transformation not required. */
{
/* Deal with copies from externs or constants that disguise as
loop-closed PHI nodes (PR97886). */
if (slp_node
&& !vect_maybe_update_slp_op_vectype (SLP_TREE_CHILDREN (slp_node)[0],
SLP_TREE_VECTYPE (slp_node)))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
"incompatible vector types for invariants\n");
return false;
}
STMT_VINFO_TYPE (stmt_info) = lc_phi_info_type;
return true;
}