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.