145
|
1 #ifdef __cplusplus
|
|
2 extern "C" {
|
|
3 #endif
|
|
4 int omp_get_thread_num (void);
|
|
5 #ifdef __cplusplus
|
|
6 }
|
|
7 #endif
|
|
8
|
|
9 void
|
|
10 f1 (int *a)
|
|
11 {
|
|
12 int i;
|
|
13 #pragma omp loop /* { dg-error "'bind' clause not specified on a 'loop' construct not nested inside another OpenMP construct" } */
|
|
14 for (i = 0; i < 64; i++)
|
|
15 a[i] = i;
|
|
16 }
|
|
17
|
|
18 void
|
|
19 f2 (int *a)
|
|
20 {
|
|
21 int i, j;
|
|
22 #pragma omp parallel num_threads (4)
|
|
23 {
|
|
24 int j = omp_get_thread_num ();
|
|
25 #pragma omp loop private (i) bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
26 for (i = 0; i < 64; i++)
|
|
27 a[j * 64 + i] = i;
|
|
28 }
|
|
29 #pragma omp critical
|
|
30 {
|
|
31 #pragma omp loop lastprivate (i) bind(teams)/* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
32 for (i = 0; i < 64; i++)
|
|
33 a[i] = i;
|
|
34 }
|
|
35 #pragma omp master
|
|
36 {
|
|
37 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
38 for (i = 0; i < 64; i++)
|
|
39 a[i] = i;
|
|
40 }
|
|
41 #pragma omp sections
|
|
42 {
|
|
43 #pragma omp loop bind(teams) lastprivate(i) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
44 for (i = 0; i < 64; i++)
|
|
45 a[i] = i;
|
|
46 }
|
|
47 #pragma omp single
|
|
48 {
|
|
49 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
50 for (i = 0; i < 64; i++)
|
|
51 a[i] = i;
|
|
52 }
|
|
53 #pragma omp task
|
|
54 {
|
|
55 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
56 for (i = 0; i < 64; i++)
|
|
57 a[i] = i;
|
|
58 }
|
|
59 #pragma omp taskgroup
|
|
60 {
|
|
61 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
62 for (i = 0; i < 64; i++)
|
|
63 a[i] = i;
|
|
64 }
|
|
65 #pragma omp teams
|
|
66 {
|
|
67 #pragma omp distribute
|
|
68 for (j = 0; j < 64; ++j)
|
|
69 {
|
|
70 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
71 for (i = 0; i < 64; i++)
|
|
72 a[64 * j + i] = i;
|
|
73 }
|
|
74 }
|
|
75 #pragma omp for
|
|
76 for (j = 0; j < 64; ++j)
|
|
77 {
|
|
78 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
79 for (i = 0; i < 64; i++)
|
|
80 a[64 * j + i] = i;
|
|
81 }
|
|
82 #pragma omp parallel
|
|
83 #pragma omp loop
|
|
84 for (j = 0; j < 64; ++j)
|
|
85 {
|
|
86 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
87 for (i = 0; i < 64; i++)
|
|
88 a[64 * j + i] = i;
|
|
89 }
|
|
90 #pragma omp loop bind(thread)
|
|
91 for (j = 0; j < 64; ++j)
|
|
92 {
|
|
93 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
94 for (i = 0; i < 64; i++)
|
|
95 a[64 * j + i] = i;
|
|
96 }
|
|
97 #pragma omp loop bind(parallel)
|
|
98 for (j = 0; j < 64; ++j)
|
|
99 {
|
|
100 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
101 for (i = 0; i < 64; i++)
|
|
102 a[64 * j + i] = i;
|
|
103 }
|
|
104 #pragma omp for ordered
|
|
105 for (j = 0; j < 64; ++j)
|
|
106 {
|
|
107 #pragma omp ordered threads
|
|
108 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
109 for (i = 0; i < 64; i++)
|
|
110 a[64 * j + i] = i;
|
|
111 }
|
|
112 #pragma omp simd
|
|
113 for (j = 0; j < 64; ++j)
|
|
114 {
|
|
115 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
116 for (i = 0; i < 64; i++)
|
|
117 a[64 * j + i] = i;
|
|
118 }
|
|
119 #pragma omp taskloop
|
|
120 for (j = 0; j < 64; ++j)
|
|
121 {
|
|
122 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
123 for (i = 0; i < 64; i++)
|
|
124 a[64 * j + i] = i;
|
|
125 }
|
|
126 #pragma omp target
|
|
127 {
|
|
128 #pragma omp loop bind(teams) /* { dg-error "'bind\\(teams\\)' on a 'loop' region not strictly nested inside of a 'teams' region" } */
|
|
129 for (i = 0; i < 64; i++)
|
|
130 a[i] = i;
|
|
131 }
|
|
132 }
|
|
133
|
|
134 void
|
|
135 f3 (int *a)
|
|
136 {
|
|
137 int i, j;
|
|
138 #pragma omp simd
|
|
139 for (j = 0; j < 64; j++)
|
|
140 {
|
|
141 #pragma omp loop bind(parallel) /* { dg-error "'bind\\(parallel\\)' on a 'loop' construct nested inside 'simd' construct" } */
|
|
142 for (i = 0; i < 64; i++)
|
|
143 a[64 * j + i] = i;
|
|
144 }
|
|
145 }
|