@@ -135,6 +135,9 @@ struct S {
135
135
// CHECK-NEXT: #pragma omp threadprivate(S<long>::TS)
136
136
// CHECK-NEXT: }
137
137
138
+ int thrp;
139
+ #pragma omp threadprivate(thrp)
140
+
138
141
template <typename T, int C>
139
142
T tmain (T argc, T *argv) {
140
143
T b = argc, c, d, e, f, g;
@@ -143,7 +146,7 @@ T tmain(T argc, T *argv) {
143
146
T arr[C][10 ], arr1[C];
144
147
#pragma omp parallel
145
148
a=2 ;
146
- #pragma omp parallel default(none), private(argc,b) firstprivate(argv) shared (d) if (parallel:argc > 0) num_threads(C) copyin(S<T>::TS) proc_bind(master) reduction(+:c, arr1[argc]) reduction(max:e, arr[:C][0:10])
149
+ #pragma omp parallel default(none), private(argc,b) firstprivate(argv) shared (d) if (parallel:argc > 0) num_threads(C) copyin(S<T>::TS, thrp ) proc_bind(master) reduction(+:c, arr1[argc]) reduction(max:e, arr[:C][0:10])
147
150
foo ();
148
151
#pragma omp parallel if (C) num_threads(s) proc_bind(close) reduction(^:e, f, arr[0:C][:argc]) reduction(&& : g)
149
152
foo ();
@@ -157,7 +160,7 @@ T tmain(T argc, T *argv) {
157
160
// CHECK-NEXT: T arr[C][10], arr1[C];
158
161
// CHECK-NEXT: #pragma omp parallel
159
162
// CHECK-NEXT: a = 2;
160
- // CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(C) copyin(S<T>::TS) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:C][0:10])
163
+ // CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(C) copyin(S<T>::TS,thrp ) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:C][0:10])
161
164
// CHECK-NEXT: foo()
162
165
// CHECK-NEXT: #pragma omp parallel if(C) num_threads(s) proc_bind(close) reduction(^: e,f,arr[0:C][:argc]) reduction(&&: g)
163
166
// CHECK-NEXT: foo()
@@ -168,7 +171,7 @@ T tmain(T argc, T *argv) {
168
171
// CHECK-NEXT: int arr[5][10], arr1[5];
169
172
// CHECK-NEXT: #pragma omp parallel
170
173
// CHECK-NEXT: a = 2;
171
- // CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(5) copyin(S<int>::TS) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:5][0:10])
174
+ // CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(5) copyin(S<int>::TS,thrp ) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:5][0:10])
172
175
// CHECK-NEXT: foo()
173
176
// CHECK-NEXT: #pragma omp parallel if(5) num_threads(s) proc_bind(close) reduction(^: e,f,arr[0:5][:argc]) reduction(&&: g)
174
177
// CHECK-NEXT: foo()
@@ -179,7 +182,7 @@ T tmain(T argc, T *argv) {
179
182
// CHECK-NEXT: long arr[1][10], arr1[1];
180
183
// CHECK-NEXT: #pragma omp parallel
181
184
// CHECK-NEXT: a = 2;
182
- // CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(1) copyin(S<long>::TS) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:1][0:10])
185
+ // CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(1) copyin(S<long>::TS,thrp ) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:1][0:10])
183
186
// CHECK-NEXT: foo()
184
187
// CHECK-NEXT: #pragma omp parallel if(1) num_threads(s) proc_bind(close) reduction(^: e,f,arr[0:1][:argc]) reduction(&&: g)
185
188
// CHECK-NEXT: foo()
0 commit comments