summaryrefslogtreecommitdiff
path: root/test/OpenMP/declare_reduction_messages.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-12-18 20:11:37 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-12-18 20:11:37 +0000
commit461a67fa15370a9ec88f8f8a240bf7c123bb2029 (patch)
tree6942083d7d56bba40ec790a453ca58ad3baf6832 /test/OpenMP/declare_reduction_messages.cpp
parent75c3240472ba6ac2669ee72ca67eb72d4e2851fc (diff)
Diffstat (limited to 'test/OpenMP/declare_reduction_messages.cpp')
-rw-r--r--test/OpenMP/declare_reduction_messages.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/OpenMP/declare_reduction_messages.cpp b/test/OpenMP/declare_reduction_messages.cpp
index 198d7756d0351..3e5a15ee3dd91 100644
--- a/test/OpenMP/declare_reduction_messages.cpp
+++ b/test/OpenMP/declare_reduction_messages.cpp
@@ -134,3 +134,21 @@ int main() {
}
return fun(15) + foo(15); // expected-note {{in instantiation of function template specialization 'foo<int>' requested here}}
}
+
+#if __cplusplus == 201103L
+struct A {
+ A() {}
+ // expected-note@+1 {{copy constructor is implicitly deleted because 'A' has a user-declared move assignment operator}}
+ A& operator=(A&&) = default;
+};
+
+int A_TEST() {
+ A test;
+// expected-error@+1 {{call to implicitly-deleted copy constructor of 'A'}}
+#pragma omp declare reduction(+ : A : omp_out) initializer(omp_priv = A())
+// expected-error@+1 {{invalid operands to binary expression ('A' and 'A')}}
+#pragma omp parallel reduction(+ : test)
+ {}
+ return 0;
+}
+#endif