https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126079

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
A similar case can be seen in gcc.dg/vect/bb-slp-reduc-3.c where we have

t.c:3:18: note:   op template: _18 = MEM[(int *)b_24(D) + 16B];
t.c:3:18: note:         stmt 0 _18 = MEM[(int *)b_24(D) + 16B];
t.c:3:18: note:         stmt 1 _14 = MEM[(int *)b_24(D) + 12B];
t.c:3:18: note:         stmt 2 _10 = MEM[(int *)b_24(D) + 8B];
t.c:3:18: note:         stmt 3 _3 = *b_24(D);
t.c:3:18: note:         load permutation { 4 3 2 0 }

t.c:3:18: missed:   BB vectorization with gaps at the end of a load is not
supported

again the idea here is that for contiguous permuted loads we load N
vectors and then permute.  In this case this would include
{ b[4], b[5], b[6], b[7] } which we are afraid of.

I have some bits of patches to deal with this and the other case.

Reply via email to