|
1 | 1 | // RUN: %clang_cc1 -verify=omp50,expected -fopenmp -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
|
2 | 2 | // RUN: %clang_cc1 -verify=omp51,expected -fopenmp -ferror-limit 100 %s
|
3 | 3 | // RUN: %clang_cc1 -verify=expected,omp52 -fopenmp -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
|
| 4 | +// RUN: %clang_cc1 -verify=expected,omp60 -fopenmp -fopenmp-version=60 -ferror-limit 100 -DOMP60 %s |
4 | 5 |
|
5 | 6 | // RUN: %clang_cc1 -verify=omp50,expected -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
|
6 | 7 | // RUN: %clang_cc1 -verify=omp51-simd,expected -fopenmp-simd -ferror-limit 100 %s
|
7 | 8 | // RUN: %clang_cc1 -verify=expected,omp52 -fopenmp-simd -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
|
| 9 | +// RUN: %clang_cc1 -verify=expected,omp60-simd -fopenmp-simd -fopenmp-version=60 -ferror-limit 100 -DOMP60 %s |
8 | 10 |
|
9 | 11 | int temp; // expected-note {{'temp' declared here}}
|
10 | 12 |
|
@@ -32,11 +34,11 @@ struct vec { // expec
|
32 | 34 | #pragma omp declare mapper(struct vec v) map(v.len) // expected-error {{redefinition of user-defined mapper for type 'struct vec' with name 'default'}}
|
33 | 35 | #pragma omp declare mapper(int v) map(v) // expected-error {{mapper type must be of struct, union or class type}}
|
34 | 36 |
|
35 |
| -#ifndef OMP52 |
36 |
| -// omp51-simd-error@+6 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'present', 'ompx_hold'}} |
37 |
| -// omp50-error@+5 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'ompx_hold'}} |
38 |
| -// omp51-error@+4 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'present', 'ompx_hold'}} |
39 |
| -// expected-error@+3 {{only variable 'vvec' is allowed in map clauses of this 'omp declare mapper' directive}} |
| 37 | +#if !defined(OMP52) && !defined(OMP60) |
| 38 | +// omp51-simd-error@+6 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'present', 'ompx_hold'}} |
| 39 | +// omp50-error@+5 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'ompx_hold'}} |
| 40 | +// omp51-error@+4 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'present', 'ompx_hold'}} |
| 41 | +// expected-error@+3 {{only variable 'vvec' is allowed in map clauses of this 'omp declare mapper' directive}} |
40 | 42 | // expected-error@+2 {{expected at least one clause on '#pragma omp declare mapper' directive}}
|
41 | 43 | // expected-note@+1 {{'it' declared here}}
|
42 | 44 | #pragma omp declare mapper(id2: struct vec vvec) map(iterator(it=0:vvec.len:2), tofrom:vvec.data[it])
|
@@ -68,15 +70,28 @@ int fun(int arg) {
|
68 | 70 | {}
|
69 | 71 | #pragma omp target map(mapper(aa :vv) // expected-error {{use of undeclared identifier 'aa'}} expected-error {{expected ')'}} expected-error {{call to undeclared function 'mapper'}} expected-note {{to match this '('}}
|
70 | 72 | {}
|
| 73 | +#ifndef OMP60 |
71 | 74 | #pragma omp target map(mapper(ab) :vv) // expected-error {{missing map type}} expected-error {{cannot find a valid user-defined mapper for type 'struct vec' with name 'ab'}}
|
| 75 | +#endif |
72 | 76 | {}
|
| 77 | +#ifndef OMP60 |
73 | 78 | #pragma omp target map(mapper(ab) :arr[0:2]) // expected-error {{missing map type}} expected-error {{cannot find a valid user-defined mapper for type 'struct vec' with name 'ab'}}
|
| 79 | +#endif |
74 | 80 | {}
|
75 |
| -#pragma omp target map(mapper(aa) :vv) // expected-error {{missing map type}} |
| 81 | +#ifndef OMP60 |
| 82 | +#pragma omp target map(mapper(aa) :vv) // omp50-error {{missing map type}} omp51-error {{missing map type}} omp52-error {{missing map type}} omp51-simd-error {{missing map type}} |
76 | 83 | {}
|
77 |
| -#pragma omp target map(mapper(aa) to:d) // expected-error {{mapper type must be of struct, union or class type}} omp52-error{{missing ',' after map type modifier}} |
| 84 | +#endif |
| 85 | +// expected-error@+4 {{mapper type must be of struct, union or class type}} |
| 86 | +// omp52-error@+3 {{missing ',' after map type modifier}} |
| 87 | +// omp60-error@+2 {{missing ',' after map type modifier}} |
| 88 | +// omp60-simd-error@+1 {{missing ',' after map type modifier}} |
| 89 | +#pragma omp target map(mapper(aa) to:d) |
78 | 90 | {}
|
79 |
| -#pragma omp target map(mapper(aa) to:vv) map(close mapper(aa) from:v1) map(mapper(aa) to:arr[0]) // omp52-error 4 {{missing ',' after map type modifier}} |
| 91 | +// omp52-error@+3 4 {{missing ',' after map type modifier}} |
| 92 | +// omp60-error@+2 4 {{missing ',' after map type modifier}} |
| 93 | +// omp60-simd-error@+1 4 {{missing ',' after map type modifier}} |
| 94 | +#pragma omp target map(mapper(aa) to:vv) map(close mapper(aa) from:v1) map(mapper(aa) to:arr[0]) |
80 | 95 | {}
|
81 | 96 |
|
82 | 97 | #pragma omp target update to(mapper) // expected-error {{expected '(' after 'mapper'}} expected-error {{expected expression}} expected-error {{expected at least one 'to' clause or 'from' clause specified to '#pragma omp target update'}}
|
|
0 commit comments