extern "C" void abort ();

struct S { S (); S (long int, long int); ~S (); static int cnt1, cnt2, cnt3; long int s, t; };

int S::cnt1;
int S::cnt2;
int S::cnt3;

S::S ()
{
  #pragma omp atomic
  cnt1++;
}

S::S (long int x, long int y) : s (x), t (y)
{
  #pragma omp atomic update
  ++cnt2;
}

S::~S ()
{
  #pragma omp atomic
  cnt3 = cnt3 + 1;
  if (t < 3 || t > 9 || (t & 1) == 0)
    abort ();
}

void
bar (S *p, S *o)
{
  p->s = 1;
  if (o->t != 5)
    abort ();
  p->t = 9;
}

static inline void
baz (S *o, S *i)
{
  if (o->t != 5 || i->t != 9)
    abort ();
  o->s *= i->s;
}

#pragma omp declare reduction (+: S : omp_out.s += omp_in.s) initializer (omp_priv (0, 3))
#pragma omp declare reduction (*: S : baz (&omp_out, &omp_in)) initializer (bar (&omp_priv, &omp_orig))

S a[2] = { { 0, 7 }, { 0, 7 } };
S b[7] = { { 9, 5 }, { 11, 5 }, { 1, 5 }, { 1, 5 }, { 1, 5 }, { 13, 5 }, { 15, 5 } };
S e[3] = { { 5, 7 }, { 0, 7 }, { 5, 7 } };
S f[5] = { { 6, 7 }, { 7, 7 }, { 0, 7 }, { 0, 7 }, { 9, 7 } };
S g[4] = { { 1, 7 }, { 0, 7 }, { 0, 7 }, { 2, 7 } };
S h[3] = { { 0, 7 }, { 1, 7 }, { 4, 7 } };
S k[4][2] = { { { 5, 7 }, { 6, 7 } }, { { 0, 7 }, { 0, 7 } }, { { 0, 7 }, { 0, 7 } }, { { 7, 7 }, { 8, 7 } } };
S *s;
S (*t)[2];

void
foo (int n, S *c, S *d, S m[3], S *r, S o[4], S *p, S q[4][2])
{
  int i;
  #pragma omp taskloop in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
		       in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
		       in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
		       in_reduction (*: s[1:2], t[2:2][:]) nogroup
  for (i = 0; i < 2; i++)
    {
      a[0].s += 7;
      a[1].s += 17;
      b[2].s *= 2;
      b[4].s *= 2;
      c[0].s += 6;
      d[1].s *= 2;
      e[1].s += 19;
      f[2].s += 21;
      f[3].s += 23;
      g[1].s += 25;
      g[2].s += 27;
      h[0].s += 29;
      k[1][0].s += 31;
      k[2][1].s += 33;
      m[1].s += 19;
      r[2].s += 21;
      r[3].s += 23;
      o[1].s += 25;
      o[2].s += 27;
      p[0].s += 29;
      q[1][0].s += 31;
      q[2][1].s += 33;
      s[1].s *= 2;
      t[2][0].s *= 2;
      t[3][1].s *= 2;
      if ((e[1].t != 7 && e[1].t != 3) || (h[0].t != 7 && h[0].t != 3)
	  || (m[1].t != 7 && m[1].t != 3) || (p[0].t != 7 && p[0].t != 3))
	abort ();
      for (int z = 0; z < 2; z++)
	if ((a[z].t != 7 && a[z].t != 3) || (c[z].t != 7 && c[z].t != 3)
	    || (d[z].t != 5 && d[z].t != 9) || (f[z + 2].t != 7 && f[z + 2].t != 3)
	    || (g[z + 1].t != 7 && g[z + 1].t != 3) || (r[z + 2].t != 7 && r[z + 2].t != 3)
	    || (s[z + 1].t != 5 && s[z + 1].t != 9) || (o[z + 1].t != 7 && o[z + 1].t != 3)
	    || (k[z + 1][0].t != 7 && k[z + 1][0].t != 3) || (k[z + 1][1].t != 7 && k[z + 1][1].t != 3)
	    || (q[z + 1][0].t != 7 && q[z + 1][0].t != 3) || (q[z + 1][1].t != 7 && q[z + 1][1].t != 3)
	    || (t[z + 2][0].t != 5 && t[z + 2][0].t != 9) || (t[z + 2][1].t != 5 && t[z + 2][1].t != 9))
	  abort ();
      for (int z = 0; z < 3; z++)
	if (b[z + 2].t != 5 && b[z + 2].t != 9)
	  abort ();
    }
}

void
test (int n)
{
  S c[2] = { { 0, 7 }, { 0, 7 } };
  S p[3] = { { 0, 7 }, { 1, 7 }, { 4, 7 } };
  S q[4][2] = { { { 5, 7 }, { 6, 7 } }, { { 0, 7 }, { 0, 7 } }, { { 0, 7 }, { 0, 7 } }, { { 7, 7 }, { 8, 7 } } };
  S ss[4] = { { 5, 5 }, { 1, 5 }, { 1, 5 }, { 6, 5 } };
  S tt[5][2] = { { { 9, 5 }, { 10, 5 } }, { { 11, 5 }, { 12, 5 } }, { { 1, 5 }, { 1, 5 } }, { { 1, 5 }, { 1, 5 } }, { { 13, 5 }, { 14, 5 } } };
  s = ss;
  t = tt;
  #pragma omp parallel
  #pragma omp single
  {
    S d[] = { { 1, 5 }, { 1, 5 } };
    S m[3] = { { 5, 7 }, { 0, 7 }, { 5, 7 } };
    S r[5] = { { 6, 7 }, { 7, 7 }, { 0, 7 }, { 0, 7 }, { 9, 7 } };
    S o[4] = { { 1, 7 }, { 0, 7 }, { 0, 7 }, { 2, 7 } };
    int i;
    #pragma omp taskloop reduction (+: a, c) reduction (*: b[2 * n:3 * n], d) \
			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
			 reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
			 reduction (*: t[2:2][:], s[1:n + 1])
    for (i = 0; i < 4; i++)
      {
	int j;
	a[0].s += 2;
	a[1].s += 3;
	b[2].s *= 2;
	f[3].s += 8;
	g[1].s += 9;
	g[2].s += 10;
	h[0].s += 11;
	k[1][1].s += 13;
	k[2][1].s += 15;
	m[1].s += 16;
	r[2].s += 8;
	s[1].s *= 2;
	t[2][1].s *= 2;
	t[3][1].s *= 2;
	if ((e[1].t != 7 && e[1].t != 3) || (h[0].t != 7 && h[0].t != 3)
	     || (m[1].t != 7 && m[1].t != 3) || (p[0].t != 7 && p[0].t != 3))
	  abort ();
	for (int z = 0; z < 2; z++)
	  if ((a[z].t != 7 && a[z].t != 3) || (c[z].t != 7 && c[z].t != 3)
	       || (d[z].t != 5 && d[z].t != 9) || (f[z + 2].t != 7 && f[z + 2].t != 3)
	       || (g[z + 1].t != 7 && g[z + 1].t != 3) || (r[z + 2].t != 7 && r[z + 2].t != 3)
	       || (s[z + 1].t != 5 && s[z + 1].t != 9) || (o[z + 1].t != 7 && o[z + 1].t != 3)
	       || (k[z + 1][0].t != 7 && k[z + 1][0].t != 3) || (k[z + 1][1].t != 7 && k[z + 1][1].t != 3)
	       || (q[z + 1][0].t != 7 && q[z + 1][0].t != 3) || (q[z + 1][1].t != 7 && q[z + 1][1].t != 3)
	       || (t[z + 2][0].t != 5 && t[z + 2][0].t != 9) || (t[z + 2][1].t != 5 && t[z + 2][1].t != 9))
	    abort ();
	for (int z = 0; z < 3; z++)
	  if (b[z + 2].t != 5 && b[z + 2].t != 9)
	    abort ();
	#pragma omp taskloop in_reduction (+: a, c[:2]) \
			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
			     in_reduction (*: s[n:2], t[2:2][:]) nogroup
	for (j = 0; j < 2; j++)
	  {
	    m[1].s += 6;
	    r[2].s += 7;
	    q[1][0].s += 17;
	    q[2][0].s += 19;
	    a[0].s += 4;
	    a[1].s += 5;
	    b[3].s *= 2;
	    b[4].s *= 2;
	    f[3].s += 18;
	    g[1].s += 29;
	    g[2].s += 18;
	    h[0].s += 19;
	    s[2].s *= 2;
	    t[2][0].s *= 2;
	    t[3][0].s *= 2;
	    foo (n, c, d, m, r, o, p, q);
	    if ((e[1].t != 7 && e[1].t != 3) || (h[0].t != 7 && h[0].t != 3)
		 || (m[1].t != 7 && m[1].t != 3) || (p[0].t != 7 && p[0].t != 3))
	      abort ();
	    for (int z = 0; z < 2; z++)
	      if ((a[z].t != 7 && a[z].t != 3) || (c[z].t != 7 && c[z].t != 3)
		   || (d[z].t != 5 && d[z].t != 9) || (f[z + 2].t != 7 && f[z + 2].t != 3)
		   || (g[z + 1].t != 7 && g[z + 1].t != 3) || (r[z + 2].t != 7 && r[z + 2].t != 3)
		   || (s[z + 1].t != 5 && s[z + 1].t != 9) || (o[z + 1].t != 7 && o[z + 1].t != 3)
		   || (k[z + 1][0].t != 7 && k[z + 1][0].t != 3) || (k[z + 1][1].t != 7 && k[z + 1][1].t != 3)
		   || (q[z + 1][0].t != 7 && q[z + 1][0].t != 3) || (q[z + 1][1].t != 7 && q[z + 1][1].t != 3)
		   || (t[z + 2][0].t != 5 && t[z + 2][0].t != 9) || (t[z + 2][1].t != 5 && t[z + 2][1].t != 9))
		abort ();
	    for (int z = 0; z < 3; z++)
	      if (b[z + 2].t != 5 && b[z + 2].t != 9)
		abort ();
	    r[3].s += 18;
	    o[1].s += 29;
	    o[2].s += 18;
	    p[0].s += 19;
	    c[0].s += 4;
	    c[1].s += 5;
	    d[0].s *= 2;
	    e[1].s += 6;
	    f[2].s += 7;
	    k[1][0].s += 17;
	    k[2][0].s += 19;
	  }
	r[3].s += 8;
	o[1].s += 9;
	o[2].s += 10;
	p[0].s += 11;
	q[1][1].s += 13;
	q[2][1].s += 15;
	b[3].s *= 2;
	c[0].s += 4;
	c[1].s += 9;
	d[0].s *= 2;
	e[1].s += 16;
	f[2].s += 8;
      }
    if (d[0].s != 1LL << (8 + 4)
	|| d[1].s != 1LL << 16
	|| m[0].s != 5
	|| m[1].s != 19 * 16 + 6 * 8 + 16 * 4
	|| m[2].s != 5
	|| r[0].s != 6
	|| r[1].s != 7
	|| r[2].s != 21 * 16 + 7 * 8 + 8 * 4
	|| r[3].s != 23 * 16 + 18 * 8 + 8 * 4
	|| r[4].s != 9
	|| o[0].s != 1
	|| o[1].s != 25 * 16 + 29 * 8 + 9 * 4
	|| o[2].s != 27 * 16 + 18 * 8 + 10 * 4
	|| o[3].s != 2)
      abort ();
    if (e[1].t != 7 || h[0].t != 7 || m[1].t != 7 || p[0].t != 7)
      abort ();
    for (int z = 0; z < 2; z++)
      if (a[z].t != 7 || c[z].t != 7 || d[z].t != 5 || f[z + 2].t != 7
	  || g[z + 1].t != 7 || r[z + 2].t != 7 || s[z + 1].t != 5 || o[z + 1].t != 7
	  || k[z + 1][0].t != 7 || k[z + 1][1].t != 7 || q[z + 1][0].t != 7 || q[z + 1][1].t != 7
	  || t[z + 2][0].t != 5 || t[z + 2][1].t != 5)
	abort ();
    for (int z = 0; z < 3; z++)
      if (b[z + 2].t != 5)
	abort ();
  }
  if (a[0].s != 7 * 16 + 4 * 8 + 2 * 4
      || a[1].s != 17 * 16 + 5 * 8 + 3 * 4
      || b[0].s != 9 || b[1].s != 11
      || b[2].s != 1LL << (16 + 4)
      || b[3].s != 1LL << (8 + 4)
      || b[4].s != 1LL << (16 + 8)
      || b[5].s != 13 || b[6].s != 15
      || c[0].s != 6 * 16 + 4 * 8 + 4 * 4
      || c[1].s != 5 * 8 + 9 * 4
      || e[0].s != 5
      || e[1].s != 19 * 16 + 6 * 8 + 16 * 4
      || e[2].s != 5
      || f[0].s != 6
      || f[1].s != 7
      || f[2].s != 21 * 16 + 7 * 8 + 8 * 4
      || f[3].s != 23 * 16 + 18 * 8 + 8 * 4
      || f[4].s != 9
      || g[0].s != 1
      || g[1].s != 25 * 16 + 29 * 8 + 9 * 4
      || g[2].s != 27 * 16 + 18 * 8 + 10 * 4
      || g[3].s != 2
      || h[0].s != 29 * 16 + 19 * 8 + 11 * 4
      || h[1].s != 1 || h[2].s != 4
      || k[0][0].s != 5 || k[0][1].s != 6
      || k[1][0].s != 31 * 16 + 17 * 8
      || k[1][1].s != 13 * 4
      || k[2][0].s != 19 * 8
      || k[2][1].s != 33 * 16 + 15 * 4
      || k[3][0].s != 7 || k[3][1].s != 8
      || p[0].s != 29 * 16 + 19 * 8 + 11 * 4
      || p[1].s != 1 || p[2].s != 4
      || q[0][0].s != 5 || q[0][1].s != 6
      || q[1][0].s != 31 * 16 + 17 * 8
      || q[1][1].s != 13 * 4
      || q[2][0].s != 19 * 8
      || q[2][1].s != 33 * 16 + 15 * 4
      || q[3][0].s != 7 || q[3][1].s != 8
      || ss[0].s != 5
      || ss[1].s != 1LL << (16 + 4)
      || ss[2].s != 1LL << 8
      || ss[3].s != 6
      || tt[0][0].s != 9 || tt[0][1].s != 10 || tt[1][0].s != 11 || tt[1][1].s != 12
      || tt[2][0].s != 1LL << (16 + 8)
      || tt[2][1].s != 1LL << 4
      || tt[3][0].s != 1LL << 8
      || tt[3][1].s != 1LL << (16 + 4)
      || tt[4][0].s != 13 || tt[4][1].s != 14)
    abort ();
}

int
main ()
{
  int c1 = S::cnt1, c2 = S::cnt2, c3 = S::cnt3;
  test (1);
  if (S::cnt1 + S::cnt2 - c1 - c2 != S::cnt3 - c3)
    abort ();
  return 0;
}
