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