Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.c++/task-2.C @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 // { dg-do run } | |
2 | |
3 #include <omp.h> | |
4 extern "C" void abort (); | |
5 | |
6 int l = 5; | |
7 | |
8 int | |
9 foo (int i) | |
10 { | |
11 int j = 7; | |
12 const int k = 8; | |
13 #pragma omp task firstprivate (i) shared (j, l) | |
14 { | |
15 #pragma omp critical | |
16 { | |
17 j += i; | |
18 l += k; | |
19 } | |
20 } | |
21 i++; | |
22 #pragma omp task firstprivate (i) shared (j, l) | |
23 { | |
24 #pragma omp critical | |
25 { | |
26 j += i; | |
27 l += k; | |
28 } | |
29 } | |
30 i++; | |
31 #pragma omp task firstprivate (i) shared (j, l) | |
32 { | |
33 #pragma omp critical | |
34 { | |
35 j += i; | |
36 l += k; | |
37 } | |
38 } | |
39 i++; | |
40 #pragma omp task firstprivate (i) shared (j, l) | |
41 { | |
42 #pragma omp critical | |
43 { | |
44 j += i; | |
45 l += k; | |
46 } | |
47 } | |
48 i++; | |
49 #pragma omp taskwait | |
50 return (i != 8 * omp_get_thread_num () + 4 | |
51 || j != 4 * i - 3 | |
52 || k != 8); | |
53 } | |
54 | |
55 int | |
56 main (void) | |
57 { | |
58 int r = 0; | |
59 #pragma omp parallel num_threads (4) reduction(+:r) | |
60 if (omp_get_num_threads () != 4) | |
61 { | |
62 #pragma omp master | |
63 l = 133; | |
64 } | |
65 else if (foo (8 * omp_get_thread_num ())) | |
66 r++; | |
67 if (r || l != 133) | |
68 abort (); | |
69 return 0; | |
70 } |