diff gcc/testsuite/g++.dg/torture/pr56694.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.dg/torture/pr56694.C	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// { dg-options "-fopenmp" }
+// { dg-require-effective-target fopenmp }
+
+class GException {
+public:
+    class vector_mismatch {
+    public:
+	vector_mismatch(int size1, int size2);
+    };
+};
+class GVector{
+public:
+    GVector& operator+=(const GVector& v);
+    int m_num;
+    double* m_data;
+};
+inline GVector& GVector::operator+= (const GVector& v)
+{
+  if (m_num != v.m_num)
+    throw GException::vector_mismatch(m_num, v.m_num);
+  for (int i = 0; i < m_num; ++i)  m_data[i] += v.m_data[i];
+};
+void eval(GVector* m_gradient, GVector* vect_cpy_grad, int n)
+{
+#pragma omp sections
+    {
+      for (int i = 0; i < n; ++i)
+	*m_gradient += vect_cpy_grad[i];
+    }
+}