http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52407
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-02-28 12:02:18 UTC --- Triggered by http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184435 Testcase: /* PR target/52407 */ extern void abort (void); typedef long long V __attribute__ ((vector_size (16))); V ul[4], vl[4] = { {1, 2}, {3, 4}, {5, 6}, {7, 8} }; static void foo (V *u, V *v, long long x, int m) { V w; long long *p = (long long *) &w; p[0] = p[1] = x; while (m--) *u++ = *v++ * w; } int main () { int i; long long *pl; pl = (long long *) &ul; foo (ul, vl, 2, 4); for (i = 0; i < 8; i++) if (pl[i] != 2 * (i + 1)) abort (); return 0; }