testsuite/libgomp.c/task-2.c

Go to the documentation of this file.
00001 extern void abort (void);
00002 
00003 int
00004 f1 (void)
00005 {
00006   int a = 6, e = 0;
00007   int nested (int x)
00008   {
00009     return x + a;
00010   }
00011   #pragma omp task
00012   {
00013     int n = nested (5);
00014     if (n != 11)
00015       #pragma omp atomic
00016     e += 1;
00017   }
00018   #pragma omp taskwait
00019   return e;
00020 }
00021 
00022 int
00023 f2 (void)
00024 {
00025   int a = 6, e = 0;
00026   int nested (int x)
00027   {
00028     return x + a;
00029   }
00030   a = nested (4);
00031   #pragma omp task
00032   {
00033     if (a != 10)
00034       #pragma omp atomic
00035     e += 1;
00036   }
00037   #pragma omp taskwait
00038   return e;
00039 }
00040 
00041 int
00042 main (void)
00043 {
00044   int e = 0;
00045   #pragma omp parallel num_threads(4) reduction(+:e)
00046   {
00047     e += f1 ();
00048     e += f2 ();
00049   }
00050   if (e)
00051     abort ();
00052   return 0;
00053 }

Generated on Fri Apr 5 05:38:10 2013 for Libgomp by  doxygen 1.4.7