Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.c/task-3.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | a06113de4d67 |
children |
line wrap: on
line source
/* { dg-do run } */ #include <omp.h> extern void abort (); int l = 5; int foo (int i) { int j = 7; const int k = 8; #pragma omp task firstprivate (i) shared (j, l) { #pragma omp critical { j += i; l += k; } } i++; #pragma omp task firstprivate (i) shared (j, l) { #pragma omp critical { j += i; l += k; } } i++; #pragma omp task firstprivate (i) shared (j, l) { #pragma omp critical { j += i; l += k; } } i++; #pragma omp task firstprivate (i) shared (j, l) { #pragma omp critical { j += i; l += k; } } i++; #pragma omp taskwait return (i != 8 * omp_get_thread_num () + 4 || j != 4 * i - 3 || k != 8); } int main (void) { int r = 0; #pragma omp parallel num_threads (4) reduction(+:r) if (omp_get_num_threads () != 4) { #pragma omp master l = 133; } else if (foo (8 * omp_get_thread_num ())) r++; if (r || l != 133) abort (); return 0; }