1- // RUN: %clang_cc1 -verify=omp50,expected -fopenmp -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
2- // RUN: %clang_cc1 -verify=omp51,expected -fopenmp -ferror-limit 100 %s
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
1+ // RUN: %clang_cc1 -verify=omp50,omp5x, expected -fopenmp -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
2+ // RUN: %clang_cc1 -verify=omp51,omp5x, expected -fopenmp -ferror-limit 100 %s
3+ // RUN: %clang_cc1 -verify=expected,omp52,omp5x -fopenmp -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
4+ // RUN: %clang_cc1 -verify=expected,omp60,omp60-maybe-simd -fopenmp -fopenmp-version=60 -ferror-limit 100 -DOMP60 %s
55
6- // RUN: %clang_cc1 -verify=omp50,expected -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
7- // RUN: %clang_cc1 -verify=omp51-simd,expected -fopenmp-simd -ferror-limit 100 %s
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
6+ // RUN: %clang_cc1 -verify=omp50,omp5x, expected -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
7+ // RUN: %clang_cc1 -verify=omp51-simd,omp5x, expected -fopenmp-simd -ferror-limit 100 %s
8+ // RUN: %clang_cc1 -verify=expected,omp52,omp5x -fopenmp-simd -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
9+ // RUN: %clang_cc1 -verify=expected,omp60-simd,omp60-maybe-simd -fopenmp-simd -fopenmp-version=60 -ferror-limit 100 -DOMP60 %s
1010
1111int temp ; // expected-note {{'temp' declared here}}
1212
@@ -16,17 +16,38 @@ struct vec { // expec
1616 double * data ;
1717};
1818
19- #pragma omp declare mapper // expected-error {{expected '(' after 'declare mapper'}}
20- #pragma omp declare mapper { // expected-error {{expected '(' after 'declare mapper'}}
21- #pragma omp declare mapper( // expected-error {{expected a type}} expected-error {{expected declarator on 'omp declare mapper' directive}}
22- #pragma omp declare mapper(# // expected-error {{expected a type}} expected-error {{expected declarator on 'omp declare mapper' directive}}
23- #pragma omp declare mapper(struct v // expected-error {{expected declarator on 'omp declare mapper' directive}}
24- #pragma omp declare mapper(struct vec // expected-error {{expected declarator on 'omp declare mapper' directive}}
25- #pragma omp declare mapper(S v // expected-error {{unknown type name 'S'}}
26- #pragma omp declare mapper(struct vec v // expected-error {{expected ')'}} expected-note {{to match this '('}}
27- #pragma omp declare mapper(aa:struct vec v) // expected-error {{expected at least one clause on '#pragma omp declare mapper' directive}}
28- #pragma omp declare mapper(bb:struct vec v) private(v) // expected-error {{expected at least one clause on '#pragma omp declare mapper' directive}} // expected-error {{unexpected OpenMP clause 'private' in directive '#pragma omp declare mapper'}}
29- #pragma omp declare mapper(cc:struct vec v) map(v) ( // expected-warning {{extra tokens at the end of '#pragma omp declare mapper' are ignored}}
19+ // omp60-maybe-simd-error@+2 {{expected '(' after 'declare_mapper'}}
20+ // omp5x-error@+1 {{expected '(' after 'declare mapper'}}
21+ #pragma omp declare mapper
22+ // omp60-maybe-simd-error@+2 {{expected '(' after 'declare_mapper'}}
23+ // omp5x-error@+1 {{expected '(' after 'declare mapper'}}
24+ #pragma omp declare mapper {
25+ // expected-error@+2 {{expected a type}}
26+ // expected-error@+1 {{expected declarator on 'omp declare mapper' directive}}
27+ #pragma omp declare mapper(
28+ // expected-error@+2 {{expected a type}}
29+ // expected-error@+1 {{expected declarator on 'omp declare mapper' directive}}
30+ #pragma omp declare mapper(#
31+ // expected-error@+1 {{expected declarator on 'omp declare mapper' directive}}
32+ #pragma omp declare mapper(struct v
33+ // expected-error@+1 {{expected declarator on 'omp declare mapper' directive}}
34+ #pragma omp declare mapper(struct vec
35+ // expected-error@+1 {{unknown type name 'S'}}
36+ #pragma omp declare mapper(S v
37+ // expected-error@+2 {{expected ')'}}
38+ // expected-note@+1 {{to match this '('}}
39+ #pragma omp declare mapper(struct vec v
40+ // omp60-maybe-simd-error@+2 {{expected at least one clause on '#pragma omp declare_mapper' directive}}
41+ // omp5x-error@+1 {{expected at least one clause on '#pragma omp declare mapper' directive}}
42+ #pragma omp declare mapper(aa:struct vec v)
43+ // omp60-maybe-simd-error@+4 {{expected at least one clause on '#pragma omp declare_mapper' directive}}
44+ // omp60-maybe-simd-error@+3 {{unexpected OpenMP clause 'private' in directive '#pragma omp declare_mapper'}}
45+ // omp5x-error@+2 {{expected at least one clause on '#pragma omp declare mapper' directive}}
46+ // omp5x-error@+1 {{unexpected OpenMP clause 'private' in directive '#pragma omp declare mapper'}}
47+ #pragma omp declare mapper(bb:struct vec v) private(v)
48+ // omp60-maybe-simd-warning@+2 {{extra tokens at the end of '#pragma omp declare_mapper' are ignored}}
49+ // omp5x-warning@+1 {{extra tokens at the end of '#pragma omp declare mapper' are ignored}}
50+ #pragma omp declare mapper(cc:struct vec v) map(v) (
3051
3152#pragma omp declare mapper(++: struct vec v) map(v.len) // expected-error {{illegal OpenMP user-defined mapper identifier}}
3253#pragma omp declare mapper(id1: struct vec v) map(v.len, temp) // expected-error {{only variable 'v' is allowed in map clauses of this 'omp declare mapper' directive}}
@@ -58,7 +79,9 @@ int fun(int arg) {
5879#pragma omp declare mapper(id: struct vec v) map(v.len) // expected-note {{previous definition is here}}
5980#pragma omp declare mapper(id: struct vec v) map(v.len) // expected-error {{redefinition of user-defined mapper for type 'struct vec' with name 'id'}}
6081 {
61- #pragma omp declare mapper(id: struct vec v) map(v.len) allocate(v) // expected-error {{unexpected OpenMP clause 'allocate' in directive '#pragma omp declare mapper'}}
82+ // omp60-maybe-simd-error@+2 {{unexpected OpenMP clause 'allocate' in directive '#pragma omp declare_mapper'}}
83+ // omp5x-error@+1 {{unexpected OpenMP clause 'allocate' in directive '#pragma omp declare mapper'}}
84+ #pragma omp declare mapper(id: struct vec v) map(v.len) allocate(v)
6285 struct vec vv , v1 ;
6386 struct vec arr [10 ];
6487 double d ;
0 commit comments