PR target/81988
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / udr-4.C
blob3e717467a0efb73e44a430cec5136c3a157c1501
1 // { dg-do run }
3 extern "C" void abort ();
5 struct S
7   int s;
8   S () : s (0) {}
9   ~S () {}
12 #pragma omp declare reduction (+:S:omp_out.s += omp_in.s)
13 #pragma omp declare reduction (foo:S:omp_out.s += omp_in.s)
14 #pragma omp declare reduction (foo:int:omp_out += omp_in)
16 int
17 main ()
19   int i, u = 0, q = 0;
20   S s, t;
21   if (s.s != 0 || t.s != 0) abort ();
22   #pragma omp parallel reduction(+:s, q) reduction(foo:t, u)
23   {
24     if (s.s != 0 || t.s != 0 || u != 0 || q != 0) abort ();
25     s.s = 6;
26     t.s = 8;
27     u = 9;
28     q++;
29   }
30   if (s.s != 6 * q || t.s != 8 * q || u != 9 * q) abort ();
31   return 0;