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

#include <stdarg.h>
#include "tree-vect.h"

#define N 16 

typedef struct {
   int a;
   int b;
   int c;
   int d;
} s;


s arr[N] = {{7,0,1,5}, {7,2,3,5}, {7,4,5,5}, {7,6,7,5}, {7,8,9,5}, {7,10,11,5}, {7,12,13,5}, {7,14,15,5}, {7,16,17,5}, {7,18,19,5}, {7,20,21,5}, {7,22,23,5}, {7,24,25,5}, {7,26,27,5}, {7,28,29,5}, {7,30,31,5}};

__attribute__ ((noinline)) int
main1 ()
{
  s *p = arr, *q = arr + 1;
  int res[N];
  int i;

  for (i = 0; i < N-1; i++)
    {
      res[i] = p->b + p->d + q->b;
      p++;
      q++;
    }
  
  /* check results:  */
  for (i = 0; i < N-1; i++)
    {
      if (res[i] != arr[i].b + arr[i].d + arr[i+1].b)
	abort ();
    }

  return 0;
}

int main (void)
{
  int i;
  
  check_vect ();

  main1 ();

  return 0;
}

  
