From ad318e3f1d372c4e720979d1eb13bebb8fb852d8 Mon Sep 17 00:00:00 2001 From: Tamar Christina Date: Fri, 20 Nov 2020 13:32:32 +0000 Subject: [PATCH] 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. --- gcc/tree-vect-slp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 37356850ca4..59a8630f74a 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -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, -- 2.30.2