summaryrefslogtreecommitdiff
path: root/test/OpenMP/target_map_messages.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/OpenMP/target_map_messages.cpp')
-rw-r--r--test/OpenMP/target_map_messages.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/test/OpenMP/target_map_messages.cpp b/test/OpenMP/target_map_messages.cpp
index 9ffbec472572..03a81ee575b6 100644
--- a/test/OpenMP/target_map_messages.cpp
+++ b/test/OpenMP/target_map_messages.cpp
@@ -1,5 +1,8 @@
-// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 200 %s
-// RUN: %clang_cc1 -DCCODE -verify -fopenmp -ferror-limit 200 -x c %s
+// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 200 %s -Wno-openmp-target
+// RUN: %clang_cc1 -DCCODE -verify -fopenmp -ferror-limit 200 -x c %s -Wno-openmp-target
+
+// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 200 %s -Wno-openmp-target
+// RUN: %clang_cc1 -DCCODE -verify -fopenmp-simd -ferror-limit 200 -x c %s -Wno-openmp-target
#ifdef CCODE
void foo(int arg) {
const int n = 0;
@@ -16,6 +19,13 @@ void foo(int arg) {
{}
}
#else
+
+struct SREF {
+ int &a;
+ int b;
+ SREF(int &a) : a(a) {}
+};
+
template <typename T, int I>
struct SA {
static int ss;
@@ -28,13 +38,14 @@ struct SA {
T *f;
int bf : 20;
void func(int arg) {
+ SREF sref(arg);
#pragma omp target
{
a = 0.0;
func(arg);
bf = 20;
}
- #pragma omp target map(arg,a,d)
+ #pragma omp target map(arg,a,d,sref.b)
{}
#pragma omp target map(arg[2:2],a,d) // expected-error {{subscripted value is not an array or pointer}}
{}
@@ -232,9 +243,17 @@ void SAclient(int arg) {
{}
#pragma omp target map(r.ArrS[0].A, t.ArrS[1].A)
{}
- #pragma omp target map(r.PtrS[0], r.PtrS->B) // expected-error {{same pointer derreferenced in multiple different ways in map clause expressions}} expected-note {{used here}}
+ #pragma omp target map(r.PtrS[0], r.PtrS->B) // expected-error {{same pointer dereferenced in multiple different ways in map clause expressions}} expected-note {{used here}}
+ {}
+ #pragma omp target map(r.PtrS, r.PtrS->B) // expected-error {{pointer cannot be mapped along with a section derived from itself}} expected-note {{used here}}
+ {}
+ #pragma omp target map(r.PtrS->A, r.PtrS->B)
+ {}
+ #pragma omp target map(r.RPtrS[0], r.RPtrS->B) // expected-error {{same pointer dereferenced in multiple different ways in map clause expressions}} expected-note {{used here}}
+ {}
+ #pragma omp target map(r.RPtrS, r.RPtrS->B) // expected-error {{pointer cannot be mapped along with a section derived from itself}} expected-note {{used here}}
{}
- #pragma omp target map(r.RPtrS[0], r.RPtrS->B) // expected-error {{same pointer derreferenced in multiple different ways in map clause expressions}} expected-note {{used here}}
+ #pragma omp target map(r.RPtrS->A, r.RPtrS->B)
{}
#pragma omp target map(r.S.Arr[:12])
{}