2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / reference-1.C
blobf2a78614a138c3c98a8961f6f2c2845f1b144a87
1 // { dg-do run }
3 #include <omp.h>
5 __attribute__((noinline, noclone)) void
6 foo (int &a, short &d, char &g)
8   unsigned long b = 12;
9   unsigned long &c = b;
10   long long e = 21;
11   long long &f = e;
12   unsigned int h = 12;
13   unsigned int &k = h;
14   #pragma omp parallel default(none) private(a, c) firstprivate(d, f) shared(g, k)
15     {
16       int i = omp_get_thread_num ();
17       a = i;
18       c = 2 * i;
19       if (d != 27 || f != 21)
20         __builtin_abort ();
21       d = 3 * (i & 0xfff);
22       f = 4 * i;
23       #pragma omp barrier
24       if (a != i || c != 2 * i || d != 3 * (i & 0xfff) || f != 4 * i)
25         __builtin_abort ();
26       #pragma omp for lastprivate(g, k)
27       for (int j = 0; j < 32; j++)
28         {
29           g = j;
30           k = 3 * j;
31         }
32     }
33   if (g != 31 || k != 31 * 3)
34     __builtin_abort ();
35   #pragma omp parallel for firstprivate (g, k) lastprivate (g, k)
36   for (int j = 0; j < 32; j++)
37     {
38       if (g != 31 || k != 31 * 3)
39         __builtin_abort ();
40       if (j == 31)
41         {
42           g = 29;
43           k = 138;
44         }
45     }
46   if (g != 29 || k != 138)
47     __builtin_abort ();
50 int
51 main ()
53   int a = 5;
54   short d = 27;
55   char g = ' ';
56   foo (a, d, g);