http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53366

--- Comment #8 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-05-18 
10:36:04 UTC ---
(In reply to comment #7)
> Indeed,
> 
> --- gcc/tree-vect-slp.c.jj    2012-04-19 11:09:13.000000000 +0200
> +++ gcc/tree-vect-slp.c    2012-05-17 10:47:30.124290361 +0200
> @@ -1199,7 +1199,8 @@ vect_supported_load_permutation_p (slp_i
> 
>    /* We checked that this case ok, so there is no need to proceed with 
>       permutation tests.  */
> -  if (complex_numbers == 2)
> +  if (complex_numbers == 2
> +      && VEC_length (slp_tree, SLP_INSTANCE_LOADS (slp_instn)) == 2)
>      {
>        VEC_free (slp_tree, heap, SLP_INSTANCE_LOADS (slp_instn));
>        VEC_free (int, heap, SLP_INSTANCE_LOAD_PERMUTATION (slp_instn));
> 
> alone fixes this as the further load permutation checks fail.  Whether this is
> the right fix and whether it is sufficient, no idea unfortunately, not 
> familiar
> enough with the interleaving code.  Richard or Michael, any thoughts?

I'm not very familiar with the code, but the above looks sensible and safe
at least.

Reply via email to