Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.c/vla-1.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 #include <stdlib.h> | |
5 #include <string.h> | |
6 | |
7 int | |
8 main (int argc, char **argv[]) | |
9 { | |
10 int n = argc < 5 ? 12 : 31, i, m, l; | |
11 char a[n + 3]; | |
12 unsigned short b[n / 2 - 1]; | |
13 int c[n * 2 + 1]; | |
14 | |
15 for (i = 0; i < n + 3; i++) | |
16 a[i] = i; | |
17 for (i = 0; i < n / 2 - 1; i++) | |
18 b[i] = (i << 8) | i; | |
19 for (i = 0; i < n * 2 + 1; i++) | |
20 c[i] = (i << 24) | i; | |
21 l = 0; | |
22 m = n; | |
23 #pragma omp parallel default (shared) num_threads (4) \ | |
24 firstprivate (a, m) private (b, i) reduction (+:l) | |
25 { | |
26 for (i = 0; i < m + 3; i++) | |
27 if (a[i] != i) | |
28 l++; | |
29 for (i = 0; i < m * 2 + 1; i++) | |
30 if (c[i] != ((i << 24) | i)) | |
31 l++; | |
32 #pragma omp barrier | |
33 memset (a, omp_get_thread_num (), m + 3); | |
34 for (i = 0; i < m / 2 - 1; i++) | |
35 b[i] = a[0] + 7; | |
36 #pragma omp master | |
37 { | |
38 for (i = 0; i < m * 2 + 1; i++) | |
39 c[i] = a[0] + 16; | |
40 } | |
41 #pragma omp barrier | |
42 if (a[0] != omp_get_thread_num ()) | |
43 l++; | |
44 for (i = 1; i < m + 3; i++) | |
45 if (a[i] != a[0]) | |
46 l++; | |
47 for (i = 0; i < m / 2 - 1; i++) | |
48 if (b[i] != a[0] + 7) | |
49 l++; | |
50 for (i = 0; i < m * 2 + 1; i++) | |
51 if (c[i] != 16) | |
52 l++; | |
53 } | |
54 if (l) | |
55 abort (); | |
56 for (i = 0; i < n * 2 + 1; i++) | |
57 if (c[i] != 16) | |
58 l++; | |
59 return 0; | |
60 } |