00001
00002
00003
00004 extern void abort (void);
00005
00006 void
00007 foo (int *j)
00008 {
00009 int i = 5;
00010 int bar (void) { return i + 1; }
00011 #pragma omp sections
00012 {
00013 #pragma omp section
00014 {
00015 if (bar () != 6)
00016 #pragma omp atomic
00017 ++*j;
00018 }
00019 #pragma omp section
00020 {
00021 if (bar () != 6)
00022 #pragma omp atomic
00023 ++*j;
00024 }
00025 }
00026 }
00027
00028 int
00029 main (void)
00030 {
00031 int j = 0;
00032 #pragma omp parallel num_threads (2)
00033 foo (&j);
00034 if (j)
00035 abort ();
00036 return 0;
00037 }
00038