Skip to content

Commit 86b4388

Browse files
authored
[OpenMP 5.2] Deprecate syntax of map modifiers without comma separators (#69534)
The syntax of modifiers without comma separators in the map clause was deprecated in OpenMP 5.2. Reference: OpenMP 5.2 Spec, page 627, line 19
1 parent ad7611d commit 86b4388

15 files changed

+59
-15
lines changed

clang/include/clang/Basic/DiagnosticParseKinds.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,6 +1534,7 @@ def warn_omp51_compat_attributes : Warning<
15341534
"standards before OpenMP 5.1">,
15351535
InGroup<OpenMPPre51Compat>, DefaultIgnore;
15361536
def err_omp_expected_colon : Error<"missing ':' in %0">;
1537+
def err_omp_missing_comma : Error< "missing ',' after %0">;
15371538
def err_omp_expected_context_selector
15381539
: Error<"expected valid context selector in %0">;
15391540
def err_omp_requires_out_inout_depend_type : Error<

clang/lib/Parse/ParseOpenMP.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4198,13 +4198,22 @@ bool Parser::parseMapTypeModifiers(Sema::OpenMPVarListDataTy &Data) {
41984198
TypeModifier == OMPC_MAP_MODIFIER_ompx_hold) {
41994199
Data.MapTypeModifiers.push_back(TypeModifier);
42004200
Data.MapTypeModifiersLoc.push_back(Tok.getLocation());
4201+
if (PP.LookAhead(0).isNot(tok::comma) &&
4202+
PP.LookAhead(0).isNot(tok::colon) && getLangOpts().OpenMP >= 52)
4203+
Diag(Tok.getLocation(), diag::err_omp_missing_comma)
4204+
<< "map type modifier";
42014205
ConsumeToken();
42024206
} else if (TypeModifier == OMPC_MAP_MODIFIER_mapper) {
42034207
Data.MapTypeModifiers.push_back(TypeModifier);
42044208
Data.MapTypeModifiersLoc.push_back(Tok.getLocation());
42054209
ConsumeToken();
42064210
if (parseMapperModifier(Data))
42074211
return true;
4212+
if (Tok.isNot(tok::comma) && Tok.isNot(tok::colon) &&
4213+
getLangOpts().OpenMP >= 52)
4214+
Diag(Data.MapTypeModifiersLoc.back(), diag::err_omp_missing_comma)
4215+
<< "map type modifier";
4216+
42084217
} else {
42094218
// For the case of unknown map-type-modifier or a map-type.
42104219
// Map-type is followed by a colon; the function returns when it

clang/test/OpenMP/declare_mapper_ast_print.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ int main(void) {
5858
// CHECK: #pragma omp declare mapper (id : struct vec v) map(tofrom: v.len)
5959
struct vec vv;
6060
struct dat dd[10];
61-
#pragma omp target map(mapper(id) alloc: vv)
61+
#pragma omp target map(mapper(id), alloc: vv)
6262
// CHECK: #pragma omp target map(mapper(id),alloc: vv)
6363
{ vv.len++; }
6464
#pragma omp target map(mapper(default), from: dd[0:10])

clang/test/OpenMP/declare_mapper_messages.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// RUN: %clang_cc1 -verify=omp50,expected -fopenmp -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
22
// RUN: %clang_cc1 -verify=omp51,expected -fopenmp -ferror-limit 100 %s
3-
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
3+
// RUN: %clang_cc1 -verify=expected,omp52 -fopenmp -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
44

55
// RUN: %clang_cc1 -verify=omp50,expected -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 -DOMP50 %s
66
// RUN: %clang_cc1 -verify=omp51-simd,expected -fopenmp-simd -ferror-limit 100 %s
7-
// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
7+
// RUN: %clang_cc1 -verify=expected,omp52 -fopenmp-simd -fopenmp-version=52 -ferror-limit 100 -DOMP52 %s
88

99
int temp; // expected-note {{'temp' declared here}}
1010

@@ -74,9 +74,9 @@ int fun(int arg) {
7474
{}
7575
#pragma omp target map(mapper(aa) :vv) // expected-error {{missing map type}}
7676
{}
77-
#pragma omp target map(mapper(aa) to:d) // expected-error {{mapper type must be of struct, union or class type}}
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}}
7878
{}
79-
#pragma omp target map(mapper(aa) to:vv) map(close mapper(aa) from:v1) map(mapper(aa) to:arr[0])
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}}
8080
{}
8181

8282
#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'}}

clang/test/OpenMP/target_ast_print.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ T tmain(T argc, T *argv) {
4040
{always++;i++;}
4141
#pragma omp target map(close,alloc: i)
4242
foo();
43-
#pragma omp target map(close from: i)
43+
#pragma omp target map(close, from: i)
4444
foo();
4545
#pragma omp target map(close)
4646
{close++;}
@@ -393,15 +393,15 @@ T tmain(T argc, T *argv) {
393393
foo();
394394
#pragma omp target map(always,alloc: i)
395395
foo();
396-
#pragma omp target map(always from: i)
396+
#pragma omp target map(always, from: i)
397397
foo();
398398
#pragma omp target map(always)
399399
{always++;}
400400
#pragma omp target map(always,i)
401401
{always++;i++;}
402402
#pragma omp target map(close,alloc: i)
403403
foo();
404-
#pragma omp target map(close from: i)
404+
#pragma omp target map(close, from: i)
405405
foo();
406406
#pragma omp target map(close)
407407
{close++;}
@@ -857,7 +857,7 @@ int main (int argc, char **argv) {
857857
foo();
858858
// OMP5-NEXT: foo();
859859

860-
#pragma omp target map(always from: i)
860+
#pragma omp target map(always, from: i)
861861
// OMP5-NEXT: #pragma omp target map(always,from: i)
862862
foo();
863863
// OMP5-NEXT: foo();
@@ -882,7 +882,7 @@ int main (int argc, char **argv) {
882882
foo();
883883
// OMP5-NEXT: foo();
884884

885-
#pragma omp target map(close from: i)
885+
#pragma omp target map(close, from: i)
886886
// OMP5-NEXT: #pragma omp target map(close,from: i)
887887
foo();
888888
// OMP5-NEXT: foo();

clang/test/OpenMP/target_map_messages.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// RUN: %clang_cc1 -verify=expected,lt50,lt51,omp,lt51-omp -fopenmp -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 300 %s -Wno-openmp-target -Wuninitialized -Wno-vla
55
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp,lt51-omp -fopenmp -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 300 %s -Wno-openmp-target -Wuninitialized -Wno-vla
66
// RUN: %clang_cc1 -verify=expected,ge50,ge51,omp,ge51-omp -fopenmp -fno-openmp-extensions -fopenmp-version=51 -ferror-limit 300 %s -Wno-openmp-target -Wuninitialized -Wno-vla
7-
// RUN: %clang_cc1 -verify=expected,ge50,ge51,ge52,omp,ge52-omp -fopenmp -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 300 %s -Wno-openmp-target -Wuninitialized -Wno-vla
7+
// RUN: %clang_cc1 -verify=expected,ge50,ge51,ge52,omp,ge52-omp,omp52 -fopenmp -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 300 %s -Wno-openmp-target -Wuninitialized -Wno-vla
88
// RUN: %clang_cc1 -DCCODE -verify -fopenmp -fno-openmp-extensions -ferror-limit 300 -x c %s -Wno-openmp -Wuninitialized -Wno-vla
99

1010
// -fopenmp-simd, -fno-openmp-extensions
@@ -232,10 +232,11 @@ struct SA {
232232
// expected-error@+1 {{missing map type}}
233233
#pragma omp target map( , f, : a)
234234
{}
235-
#pragma omp target map(always close: a) // expected-error {{missing map type}}
235+
#pragma omp target map(always close: a) // expected-error {{missing map type}} omp52-error{{missing ',' after map type modifier}}
236236
{}
237-
#pragma omp target map(always close bf: a) // expected-error {{incorrect map type, expected one of 'to', 'from', 'tofrom', 'alloc', 'release', or 'delete'}}
237+
#pragma omp target map(always close bf: a) // omp52-error 2 {{missing ',' after map type modifier}} expected-error {{incorrect map type, expected one of 'to', 'from', 'tofrom', 'alloc', 'release', or 'delete'}}
238238
{}
239+
// omp52-error@+4 {{missing ',' after map type modifier}}
239240
// ge51-error@+3 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'present'}}
240241
// lt51-error@+2 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper'}}
241242
// expected-error@+1 {{missing map type}}
@@ -245,7 +246,7 @@ struct SA {
245246
// lt51-error@+1 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper'}}
246247
#pragma omp target map(tofrom from: a)
247248
{}
248-
#pragma omp target map(close bf: a) // expected-error {{incorrect map type, expected one of 'to', 'from', 'tofrom', 'alloc', 'release', or 'delete'}}
249+
#pragma omp target map(close bf: a) // omp52-error {{missing ',' after map type modifier}} expected-error {{incorrect map type, expected one of 'to', 'from', 'tofrom', 'alloc', 'release', or 'delete'}}
249250
{}
250251
#pragma omp target map(([b[I]][bf])f) // lt50-error {{expected ',' or ']' in lambda capture list}} lt50-error {{expected ')'}} lt50-note {{to match this '('}}
251252
{}

clang/test/OpenMP/target_parallel_for_map_messages.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
22
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
33
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp -fno-openmp-extensions -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
4+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
45

56
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
67
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
78
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp-simd -fno-openmp-extensions -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
9+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
810

911
void foo() {
1012
}
@@ -307,6 +309,8 @@ int main(int argc, char **argv) {
307309
for (i = 0; i < argc; ++i) foo();
308310
#pragma omp target parallel for map(always, tofrom: always, tofrom, x)
309311
for (i = 0; i < argc; ++i) foo();
312+
#pragma omp target parallel for map(always tofrom: x) // omp52-error {{missing ',' after map type modifier}}
313+
for (i = 0; i < argc; ++i) foo();
310314
#pragma omp target parallel for map(tofrom j) // expected-error {{expected ',' or ')' in 'map' clause}}
311315
for (i = 0; i < argc; ++i) foo();
312316
#pragma omp target parallel for map(delete: j) // expected-error {{map type 'delete' is not allowed for '#pragma omp target parallel for'}}

clang/test/OpenMP/target_parallel_for_simd_map_messages.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=45 %s -Wno-openmp-mapping -Wuninitialized
22
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=50 %s -Wno-openmp-mapping -Wuninitialized
33
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp -fno-openmp-extensions %s -Wno-openmp-mapping -Wuninitialized
4+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp -fno-openmp-extensions -fopenmp-version=52 %s -Wno-openmp-mapping -Wuninitialized
45

56
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=45 %s -Wno-openmp-mapping -Wuninitialized
67
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=50 %s -Wno-openmp-mapping -Wuninitialized
78
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp-simd -fno-openmp-extensions %s -Wno-openmp-mapping -Wuninitialized
9+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=52 %s -Wno-openmp-mapping -Wuninitialized
810

911
void foo() {
1012
}
@@ -307,6 +309,8 @@ int main(int argc, char **argv) {
307309
for (i = 0; i < argc; ++i) foo();
308310
#pragma omp target parallel for simd map(always, tofrom: always, tofrom, x)
309311
for (i = 0; i < argc; ++i) foo();
312+
#pragma omp target parallel for simd map(always tofrom: x) // omp52-error {{missing ',' after map type modifier}}
313+
for (i = 0; i < argc; ++i) foo();
310314
#pragma omp target parallel for simd map(tofrom j) // expected-error {{expected ',' or ')' in 'map' clause}}
311315
for (i = 0; i < argc; ++i) foo();
312316
#pragma omp target parallel for simd map(delete: j) // expected-error {{map type 'delete' is not allowed for '#pragma omp target parallel for simd'}}

clang/test/OpenMP/target_parallel_map_messages.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
22
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
33
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp -fno-openmp-extensions -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
4+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
45

56
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
67
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
78
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp-simd -fno-openmp-extensions -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
9+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
810

911
void foo() {
1012
}
@@ -303,6 +305,8 @@ int main(int argc, char **argv) {
303305
foo();
304306
#pragma omp target parallel map(always, tofrom: always, tofrom, x)
305307
foo();
308+
#pragma omp target parallel map(always tofrom: x) // omp52-error {{missing ',' after map type modifier}}
309+
foo();
306310
#pragma omp target parallel map(tofrom j) // expected-error {{expected ',' or ')' in 'map' clause}}
307311
foo();
308312
#pragma omp target parallel map(delete: j) // expected-error {{map type 'delete' is not allowed for '#pragma omp target parallel'}}

clang/test/OpenMP/target_simd_map_messages.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp -fopenmp-version=45 %s -Wno-openmp-mapping -Wuninitialized
22
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp -fopenmp-version=50 %s -Wno-openmp-mapping -Wuninitialized
33
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp %s -Wno-openmp-mapping -Wuninitialized
4+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp -fopenmp-version=52 %s -Wno-openmp-mapping -Wuninitialized
45

56
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp-simd -fopenmp-version=45 %s -Wno-openmp-mapping -Wuninitialized
67
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp-simd -fopenmp-version=50 %s -Wno-openmp-mapping -Wuninitialized
78
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp-simd %s -Wno-openmp-mapping -Wuninitialized
9+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp-simd -fopenmp-version=52 %s -Wno-openmp-mapping -Wuninitialized
810

911
void foo() {
1012
}
@@ -300,6 +302,8 @@ int main(int argc, char **argv) {
300302
for (i = 0; i < argc; ++i) foo();
301303
#pragma omp target simd map(always, tofrom: always, tofrom, x)
302304
for (i = 0; i < argc; ++i) foo();
305+
#pragma omp target simd map(always tofrom: x) // omp52-error {{missing ',' after map type modifier}}
306+
for (i = 0; i < argc; ++i) foo();
303307
#pragma omp target simd map(tofrom j) // expected-error {{expected ',' or ')' in 'map' clause}}
304308
for (i = 0; i < argc; ++i) foo();
305309
#pragma omp target simd map(delete: j) // expected-error {{map type 'delete' is not allowed for '#pragma omp target simd'}}

clang/test/OpenMP/target_teams_distribute_map_messages.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
22
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
33
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
4+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
45

56
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp-simd -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
67
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
78
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp-simd -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
9+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp-simd -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
810

911
void foo() {
1012
}
@@ -307,6 +309,8 @@ int main(int argc, char **argv) {
307309
for (i = 0; i < argc; ++i) foo();
308310
#pragma omp target teams distribute map(always, tofrom: always, tofrom, x)
309311
for (i = 0; i < argc; ++i) foo();
312+
#pragma omp target teams distribute map(always close tofrom: x) // omp52-error 2 {{missing ',' after map type modifier}}
313+
for (i = 0; i < argc; ++i) foo();
310314
#pragma omp target teams distribute map(tofrom j) // expected-error {{expected ',' or ')' in 'map' clause}}
311315
for (i = 0; i < argc; ++i) foo();
312316
#pragma omp target teams distribute map(delete: j) // expected-error {{map type 'delete' is not allowed for '#pragma omp target teams distribute'}}

clang/test/OpenMP/target_teams_distribute_parallel_for_map_messages.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
22
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
33
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp -fno-openmp-extensions -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
4+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
45

56
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
67

@@ -309,6 +310,8 @@ int main(int argc, char **argv) {
309310
for (i = 0; i < argc; ++i) foo();
310311
#pragma omp target teams distribute parallel for map(always, tofrom: always, tofrom, x)
311312
for (i = 0; i < argc; ++i) foo();
313+
#pragma omp target teams distribute parallel for map(always close tofrom: x) // omp52-error 2 {{missing ',' after map type modifier}}
314+
for (i = 0; i < argc; ++i) foo();
312315
#pragma omp target teams distribute parallel for map(tofrom j) // expected-error {{expected ',' or ')' in 'map' clause}}
313316
for (i = 0; i < argc; ++i) foo();
314317
#pragma omp target teams distribute parallel for map(delete: j) // expected-error {{map type 'delete' is not allowed for '#pragma omp target teams distribute parallel for'}}

clang/test/OpenMP/target_teams_distribute_parallel_for_simd_map_messages.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
22
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
33
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp -fno-openmp-extensions -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
4+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
45

56
// RUN: %clang_cc1 -verify=expected,lt50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=45 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
67
// RUN: %clang_cc1 -verify=expected,ge50,lt51 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=50 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
78
// RUN: %clang_cc1 -verify=expected,ge50,ge51 -fopenmp-simd -fno-openmp-extensions -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
9+
// RUN: %clang_cc1 -verify=expected,ge50,lt51,omp52 -fopenmp-simd -fno-openmp-extensions -fopenmp-version=52 -ferror-limit 100 %s -Wno-openmp-mapping -Wuninitialized
810

911
void foo() {
1012
}
@@ -180,6 +182,8 @@ T tmain(T argc) {
180182

181183
#pragma omp target teams distribute parallel for simd map(always, tofrom: x)
182184
for (i = 0; i < argc; ++i) foo();
185+
#pragma omp target teams distribute parallel for simd map(always tofrom: x) // omp52-error {{missing ',' after map type modifier}}
186+
for (i = 0; i < argc; ++i) foo();
183187
#pragma omp target teams distribute parallel for simd map(always: x) // expected-error {{missing map type}}
184188
for (i = 0; i < argc; ++i) foo();
185189
// ge51-error@+3 {{incorrect map type modifier, expected one of: 'always', 'close', 'mapper', 'present'}}

0 commit comments

Comments
 (0)