https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96133
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- Interestingly it works for int[4] but fails for int[2]. typedef int T; static const T a[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } }; typedef T v2 __attribute__((vector_size(2*sizeof(T)))); int main() { const T *p = &a[0][2]; v2 x = *(const v2 *)p; T z = x[1]; if (z != 4) __builtin_abort (); return 0; }