2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / pr56217.C
blob19da9185350037431f17e0e914d1bf82bf85a9e9
1 // PR middle-end/56217
2 // { dg-do run }
3 // { dg-options "-std=c++0x" }
5 extern "C" void abort ();
7 template <typename T>
8 struct ptr {
9   T *p;
10   ptr () : p () {}
11   ptr (ptr &) = delete;
12   ptr (ptr &&o) : p(o) {}
13   operator T * () { return p; }
16 int a[6] = { 100, 101, 102, 103, 104, 105 };
18 static ptr<int>
19 f ()
21   ptr<int> pt;
22   #pragma omp task shared (pt)
23     pt.p = a + 2;
24   #pragma omp taskwait
25   return pt;
28 int
29 main ()
31   ptr<int> pt;
32   #pragma omp parallel
33   #pragma omp single
34   if (f () != a + 2 || *f () != 102)
35     abort ();