00001 #include <omp.h>
00002
00003 extern void abort (void);
00004
00005 struct X
00006 {
00007 int a;
00008 char b;
00009 int c;
00010 };
00011
00012 main()
00013 {
00014 int i = 0;
00015 struct X x;
00016 int bad = 0;
00017
00018 #pragma omp parallel private (i, x) shared (bad)
00019 {
00020 i = 5;
00021
00022 #pragma omp single copyprivate (i, x)
00023 {
00024 i++;
00025 x.a = 23;
00026 x.b = 42;
00027 x.c = 26;
00028 }
00029
00030 if (i != 6 || x.a != 23 || x.b != 42 || x.c != 26)
00031 bad = 1;
00032 }
00033
00034 if (bad)
00035 abort ();
00036
00037 return 0;
00038 }