/* PR libgomp/32468 */ /* { dg-do compile } */ /* { dg-options "-O2 -fopenmp -fdump-tree-ompexp" } */ extern int printf (const char *, ...); extern int omp_get_thread_num (void), omp_get_num_threads (void); extern int bar (void); extern int baz (const char *, ...); void f1 (void) { #pragma omp parallel { baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); #pragma omp sections { #pragma omp section printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); #pragma omp section printf ("section2 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); } } } void f2 (void) { #pragma omp parallel { #pragma omp sections { #pragma omp section printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); #pragma omp section printf ("section2 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); } baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); } } void f3 (void) { #pragma omp parallel { int bb = bar (); #pragma omp sections { #pragma omp section printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); #pragma omp section printf ("section2 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); } } } void f4 (void) { int i; #pragma omp parallel { baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); #pragma omp for schedule (dynamic, 15) for (i = 0; i < 10000; i++) printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); } } void f5 (void) { int i; #pragma omp parallel { #pragma omp for schedule (dynamic, 15) for (i = 0; i < 10000; i++) printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); } } void f6 (void) { int i; #pragma omp parallel { int bb = bar (); #pragma omp for schedule (runtime) for (i = 0; i < 10000; i++) printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ()); } } /* There should not be a GOMP_parallel_{loop,sections}* call. */ /* { dg-final { scan-tree-dump-times "GOMP_parallel_loop" 0 "ompexp"} } */ /* { dg-final { scan-tree-dump-times "GOMP_parallel_sections" 0 "ompexp"} } */ /* { dg-final { cleanup-tree-dump "ompexp" } } */