Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.c/pr33880.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 /* PR middle-end/33880 */ | |
2 /* { dg-do run } */ | |
3 | |
4 extern void abort (void); | |
5 | |
6 void | |
7 test1 (void) | |
8 { | |
9 int i = 0, j = 0; | |
10 void bar (void) | |
11 { | |
12 i++; | |
13 j++; | |
14 } | |
15 bar (); | |
16 #pragma omp parallel for num_threads(4) | |
17 for (i = 0; i < 100; i++) | |
18 #pragma omp atomic | |
19 j += 1; | |
20 if (j != 101) | |
21 abort (); | |
22 #pragma omp parallel for lastprivate(i) num_threads(2) | |
23 for (i = 0; i < 100; i++) | |
24 #pragma omp atomic | |
25 j += 1; | |
26 if (i != 100) | |
27 abort (); | |
28 i = 3; | |
29 bar (); | |
30 if (j != 202) | |
31 abort (); | |
32 if (i != 4) | |
33 abort (); | |
34 } | |
35 | |
36 void | |
37 test2 (void) | |
38 { | |
39 int i = -1, j = 99, k, l = 9, m = 0; | |
40 void bar (void) | |
41 { | |
42 i++; | |
43 j++; | |
44 l++; | |
45 m++; | |
46 } | |
47 bar (); | |
48 #pragma omp parallel for num_threads(4) | |
49 for (k = i; k < j; k += l) | |
50 #pragma omp atomic | |
51 m += 1; | |
52 bar (); | |
53 if (i != 1 || j != 101 || l != 11 || m != 12) | |
54 abort (); | |
55 } | |
56 | |
57 void | |
58 test3 (void) | |
59 { | |
60 int i, j, k, l, m; | |
61 void bar (void) | |
62 { | |
63 #pragma omp parallel for num_threads(4) | |
64 for (i = j; i < k; i += l) | |
65 #pragma omp atomic | |
66 m += 1; | |
67 } | |
68 void baz (void) | |
69 { | |
70 #pragma omp parallel for num_threads(2) lastprivate(i) | |
71 for (i = j; i < k * 2; i += l / 2) | |
72 #pragma omp atomic | |
73 m += 1; | |
74 } | |
75 i = 7; | |
76 j = 0; | |
77 k = 100; | |
78 l = 2; | |
79 m = 0; | |
80 bar (); | |
81 if (j != 0 || k != 100 || l != 2 || m != 50) | |
82 abort (); | |
83 baz (); | |
84 if (i != 200 || j != 0 || k != 100 || l != 2 || m != 250) | |
85 abort (); | |
86 } | |
87 | |
88 void | |
89 test4 (void) | |
90 { | |
91 int i, j, k, l, m = 0; | |
92 int foo (void) | |
93 { | |
94 return j; | |
95 } | |
96 int bar (void) | |
97 { | |
98 return k; | |
99 } | |
100 int baz (void) | |
101 { | |
102 return l; | |
103 } | |
104 j = 0; | |
105 k = 1000; | |
106 l = 2; | |
107 #pragma omp parallel for num_threads(8) lastprivate(i) | |
108 for (i = foo (); i < bar (); i += baz ()) | |
109 #pragma omp atomic | |
110 m += 1; | |
111 if (i != 1000 || m != 500 || j != 0 || k != 1000 || l != 2) | |
112 abort (); | |
113 } | |
114 | |
115 int | |
116 main (void) | |
117 { | |
118 test1 (); | |
119 test2 (); | |
120 test3 (); | |
121 test4 (); | |
122 return 0; | |
123 } |