1*404b540aSrobert /* { dg-do run } */ 2*404b540aSrobert /* { dg-options "-O2" } */ 3*404b540aSrobert 4*404b540aSrobert extern void abort (void); 5*404b540aSrobert 6*404b540aSrobert void foo(int * j)7*404b540aSrobertfoo (int *j) 8*404b540aSrobert { 9*404b540aSrobert int i = 5; 10*404b540aSrobert int bar (void) { return i + 1; } 11*404b540aSrobert #pragma omp sections 12*404b540aSrobert { 13*404b540aSrobert #pragma omp section 14*404b540aSrobert { 15*404b540aSrobert if (bar () != 6) 16*404b540aSrobert #pragma omp atomic 17*404b540aSrobert ++*j; 18*404b540aSrobert } 19*404b540aSrobert #pragma omp section 20*404b540aSrobert { 21*404b540aSrobert if (bar () != 6) 22*404b540aSrobert #pragma omp atomic 23*404b540aSrobert ++*j; 24*404b540aSrobert } 25*404b540aSrobert } 26*404b540aSrobert } 27*404b540aSrobert 28*404b540aSrobert int main(void)29*404b540aSrobertmain (void) 30*404b540aSrobert { 31*404b540aSrobert int j = 0; 32*404b540aSrobert #pragma omp parallel num_threads (2) 33*404b540aSrobert foo (&j); 34*404b540aSrobert if (j) 35*404b540aSrobert abort (); 36*404b540aSrobert return 0; 37*404b540aSrobert } 38*404b540aSrobert 39