testsuite/libgomp.c/nestedfn-3.c

Go to the documentation of this file.
00001 /* { dg-do run } */
00002 
00003 #include <omp.h>
00004 
00005 extern void abort (void);
00006 
00007 int
00008 main (void)
00009 {
00010   int i = 5, l = 0;
00011   int foo (void) { return i == 6; }
00012   int bar (void) { return i - 3; }
00013 
00014   omp_set_dynamic (0);
00015 
00016 #pragma omp parallel if (foo ()) num_threads (bar ()) reduction (|:l)
00017   if (omp_get_num_threads () != 1)
00018     l = 1;
00019 
00020   i++;
00021 
00022 #pragma omp parallel if (foo ()) num_threads (bar ()) reduction (|:l)
00023   if (omp_get_num_threads () != 3)
00024     l = 1;
00025 
00026   i++;
00027 
00028 #pragma omp master
00029   if (bar () != 4)
00030     abort ();
00031 
00032 #pragma omp single
00033   {
00034     if (foo ())
00035       abort ();
00036     i--;
00037     if (! foo ())
00038       abort ();
00039   }
00040 
00041   if (l)
00042     abort ();
00043 
00044   i = 8;
00045 #pragma omp atomic
00046   l += bar ();
00047 
00048   if (l != 5)
00049     abort ();
00050 
00051   return 0;
00052 }

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