pr32468-1.c

来自「用于进行gcc测试」· C语言 代码 · 共 101 行

C
101
字号
/* 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 *, ...);voidf1 (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 ());      }  }}voidf2 (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 ());  }}voidf3 (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 ());      }  }}voidf4 (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 ());  }}voidf5 (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 ());  }}voidf6 (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" } } */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?