blob: 19da9185350037431f17e0e914d1bf82bf85a9e9 [file] [log] [blame]
// PR middle-end/56217
// { dg-do run }
// { dg-options "-std=c++0x" }
extern "C" void abort ();
template <typename T>
struct ptr {
T *p;
ptr () : p () {}
ptr (ptr &) = delete;
ptr (ptr &&o) : p(o) {}
operator T * () { return p; }
};
int a[6] = { 100, 101, 102, 103, 104, 105 };
static ptr<int>
f ()
{
ptr<int> pt;
#pragma omp task shared (pt)
pt.p = a + 2;
#pragma omp taskwait
return pt;
}
int
main ()
{
ptr<int> pt;
#pragma omp parallel
#pragma omp single
if (f () != a + 2 || *f () != 102)
abort ();
}