Hi Prathamesh,

Thanks for the review, I missed that code up above.
I've looking into this and it seems to me at least, that what you have 
suggested, is equivalent.
I'll make the change and repost.

Thanks,
Richard
________________________________
From: Prathamesh Kulkarni <[email protected]>
Sent: 30 January 2024 17:36
To: Richard Ball <[email protected]>
Cc: [email protected] <[email protected]>; Richard Sandiford 
<[email protected]>; Kyrylo Tkachov <[email protected]>; Richard 
Earnshaw <[email protected]>; Marcus Shawcroft <[email protected]>
Subject: Re: [PATCH] aarch64: Fix ICE in poly-int.h due to SLP.

On Tue, 30 Jan 2024 at 20:13, Richard Ball <[email protected]> wrote:
>
> Adds a check to ensure that the input vector arguments
> to a function are not variable length. Previously, only the
> output vector of a function was checked.
Hi,
Quoting from patch:
@@ -8989,6 +8989,14 @@ vectorizable_slp_permutation_1 (vec_info
*vinfo, gimple_stmt_iterator *gsi,
       instead of relying on the pattern described above.  */
       if (!nunits.is_constant (&npatterns))
      return -1;
+  FOR_EACH_VEC_ELT (children, i, child)
+     if (SLP_TREE_VECTYPE (child))
+       {
+         tree child_vectype = SLP_TREE_VECTYPE (child);
+         poly_uint64 child_nunits = TYPE_VECTOR_SUBPARTS (child_vectype);
+         if (!child_nunits.is_constant ())
+           return -1;
+       }

Just wondering if that'd be equivalent to checking:
if (!TYPE_VECTOR_SUBPARTS (op_vectype).is_constant ())
  return -1;
Instead of (again) iterating over children since we bail out in the
function above,
if SLP_TREE_VECTYPE (child) and op_vectype are not compatible types ?

Also, could you please include the offending test-case in the patch ?

Thanks,
Prathamesh

>
> gcc/ChangeLog:
>
>         * tree-vect-slp.cc (vectorizable_slp_permutation_1):
>         Add variable-length check for vector input arguments
>         to a function.

Reply via email to