1 #include <omp.h>
2 
3 extern void abort (void);
4 
5 struct X
6 {
7   int a;
8   char b;
9   int c;
10 };
11 
main()12 main()
13 {
14   int i = 0;
15   struct X x;
16   int bad = 0;
17 
18   #pragma omp parallel private (i, x) shared (bad)
19     {
20       i = 5;
21 
22       #pragma omp single copyprivate (i, x)
23 	{
24 	  i++;
25 	  x.a = 23;
26 	  x.b = 42;
27 	  x.c = 26;
28 	}
29 
30       if (i != 6 || x.a != 23 || x.b != 42 || x.c != 26)
31 	bad = 1;
32     }
33 
34   if (bad)
35     abort ();
36 
37   return 0;
38 }
39