/* { dg-do compile } */
/* { dg-require-effective-target vect_int } */

struct a
{
  int length;
  int a1[256];
};

struct a *malloc1(__SIZE_TYPE__) __attribute__((malloc));
void free(void*);

void f(void)
{
   struct a *a = malloc1(sizeof(struct a));
   struct a *b = malloc1(sizeof(struct a));
   struct a *c = malloc1(sizeof(struct a));
   int i;

   for (i = 0; i < 256; i++) 
   {
      b->a1[i] = i;
      c->a1[i] = i;
   }
   for (i = 0; i < 256; i++) 
   {
      a->a1[i] = b->a1[i] + c->a1[i];
   }
   free(a);
   free(b);
   free(c);
}

/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */

