https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83518
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- And beware of duplicate elements seen during the walk typedef int v2si __attribute__((vector_size(__SIZEOF_INT__ * 2))); int __attribute__((pure,noipa)) baz (int *a) { volatile int i = *a; } int main() { int a[4]; a[0] = 1; a[1] = 2; volatile int i = baz(a); a[1] = 3; v2si x = *(v2si *)a; *(v2si *)&a[2] = x; if (a[3] != 3) __builtin_abort (); return 0; }