Per OpenMP 6.0 specification, section 7.5.1, default Clause Page 224, lines 3-5 default Clause, Semantics If data-sharing-attribute is shared then the clause has no effect on a target construct; otherwise, its effect on a target construct is equivalent to specifying the defaultmap clause with the same data-sharing-attribute and variable-category. Testing: OpenMP LIT tests check-all
54 lines
2.1 KiB
C++
54 lines
2.1 KiB
C++
|
|
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -DOMP60 %s -Wuninitialized
|
|
|
|
// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=60 -DOMP60 %s -Wuninitialized
|
|
|
|
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=52 -DOMP52 %s -Wuninitialized
|
|
|
|
void foo();
|
|
|
|
namespace {
|
|
static int y = 0;
|
|
}
|
|
static int x = 0;
|
|
|
|
int main(int argc, char **argv) {
|
|
#ifdef OMP60
|
|
#pragma omp target default // expected-error {{expected '(' after 'default'}}
|
|
for (int i=0; i<200; i++) foo();
|
|
#pragma omp target default( // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
|
|
for (int i=0; i<200; i++) foo();
|
|
#pragma omp target default() // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}}
|
|
for (int i=0; i<200; i++) foo();
|
|
#pragma omp target default (none // expected-error {{expected ')'}} expected-note {{to match this '('}}
|
|
for (int i=0; i<200; i++) foo();
|
|
#pragma omp target default(x) // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}}
|
|
for (int i=0; i<200; i++) foo();
|
|
#pragma omp target default(none) // expected-note {{explicit data sharing attribute, data mapping attribute, or is_device_ptr clause requested here}}
|
|
x++; // expected-error {{variable 'x' must have explicitly specified data sharing attributes, data mapping attributes, or in an is_device_ptr clause}}
|
|
#endif
|
|
|
|
#ifdef OMP52
|
|
#pragma omp target default(firstprivate) // expected-error {{unexpected OpenMP clause 'default' in directive '#pragma omp target'}}
|
|
for (int i = 0; i < 200; i++) {
|
|
++x;
|
|
++y;
|
|
}
|
|
#pragma omp target default(private) // expected-error {{unexpected OpenMP clause 'default' in directive '#pragma omp target'}}
|
|
for (int i = 0; i < 200; i++) {
|
|
++x;
|
|
++y;
|
|
}
|
|
|
|
int j = 0, i = 0, nn = 10;
|
|
#pragma omp target teams distribute simd default(shared) // expected-error {{unexpected OpenMP clause 'default' in directive '#pragma omp target teams distribute simd'}}
|
|
for (j = 0; j < nn; j++ ) {
|
|
for (i = 0; i < nn; i++ ) {
|
|
;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
return 0;
|
|
}
|