/* PR regression/21897 */ extern void abort (void); typedef short v4hi __attribute__ ((vector_size (8))); typedef float v4sf __attribute__ ((vector_size (16))); union { v4hi v; short s[4]; } u; union { v4sf v; float f[4]; } v; void foo (void) { unsigned int i; for (i = 0; i < 2; i++) u.v += (v4hi) { 12, 14 }; for (i = 0; i < 2; i++) v.v += (v4sf) { 18.0, 20.0, 22 }; } int main (void) { foo (); if (u.s[0] != 24 || u.s[1] != 28 || u.s[2] || u.s[3]) abort (); if (v.f[0] != 36.0 || v.f[1] != 40.0 || v.f[2] != 44.0 || v.f[3] != 0.0) abort (); return 0; }