1*404b540aSrobert // { dg-do run } 2*404b540aSrobert 3*404b540aSrobert extern void abort(void); 4*404b540aSrobert #define N 1000 5*404b540aSrobert foo()6*404b540aSrobertint 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*404b540aSrobertint main() 24*404b540aSrobert { 25*404b540aSrobert if (foo() != N) 26*404b540aSrobert abort (); 27*404b540aSrobert return 0; 28*404b540aSrobert } 29