xref: /openbsd-src/gnu/gcc/libgomp/testsuite/libgomp.c/omp-nested-1.c (revision 404b540a9034ac75a6199ad1a32d1bbc7a0d4210)
1*404b540aSrobert // { dg-do run }
2*404b540aSrobert 
3*404b540aSrobert extern void abort(void);
4*404b540aSrobert #define N 1000
5*404b540aSrobert 
foo()6*404b540aSrobert int foo()
7*404b540aSrobert {
8*404b540aSrobert   int i = 0, j;
9*404b540aSrobert 
10*404b540aSrobert   #pragma omp parallel for num_threads(2) shared (i)
11*404b540aSrobert   for (j = 0; j < N; ++j)
12*404b540aSrobert     {
13*404b540aSrobert       #pragma omp parallel num_threads(1) shared (i)
14*404b540aSrobert       {
15*404b540aSrobert 	#pragma omp atomic
16*404b540aSrobert 	i++;
17*404b540aSrobert       }
18*404b540aSrobert     }
19*404b540aSrobert 
20*404b540aSrobert   return i;
21*404b540aSrobert }
22*404b540aSrobert 
main()23*404b540aSrobert int main()
24*404b540aSrobert {
25*404b540aSrobert   if (foo() != N)
26*404b540aSrobert     abort ();
27*404b540aSrobert   return 0;
28*404b540aSrobert }
29