/* PR middle-end/111683 */
/* { dg-do run } */
/* { dg-options "-O2" } */

long long b[6] = { 3, 4, 5, 6, 7, 8 }, c[16];
long long d[9] = { 3, 7, 12, 18, 22, 26, 21, 15, 8 };
typedef long long U __attribute__ ((vector_size(16), may_alias, aligned(1)));
typedef long long V __attribute__ ((vector_size(16), may_alias));

int
main ()
{
  for (int f = 0; f < 6; f++)
    {
      *(U *) &c[f] = *(U *) &c[f] + (V) { b[f], b[f] };
      *(U *) &c[f + 2] = *(U *) &c[f + 2] + (V) { b[f], b[f] };
    }
  for (int f = 0; f < 9; f++)
    if (c[f] != d[f])
      __builtin_abort ();
  return 0;
}