SLP: Have vectorizable_slp_permutation set type on invariants

This modifies vectorizable_slp_permutation to update the type of the children
of a perm node before trying to permute them.  This allows us to be able to
permute invariant nodes.

This will be covered by test from the SLP pattern matcher.

gcc/ChangeLog:

	* tree-vect-slp.c (vectorizable_slp_permutation): Update types on nodes
	when needed.
This commit is contained in:
Tamar Christina 2020-11-20 13:32:32 +00:00
parent 640ebeb336
commit ad318e3f1d

View File

@ -5187,7 +5187,8 @@ vectorizable_slp_permutation (vec_info *vinfo, gimple_stmt_iterator *gsi,
slp_tree child;
unsigned i;
FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), i, child)
if (!types_compatible_p (SLP_TREE_VECTYPE (child), vectype))
if (!vect_maybe_update_slp_op_vectype (child, vectype)
|| !types_compatible_p (SLP_TREE_VECTYPE (child), vectype))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,