// PR tree-optimization/30558 | |
// { dg-do compile } | |
// { dg-options "-fopenmp" } | |
template <typename T> struct F | |
{ | |
~F (); | |
F (T); | |
const T &operator[] (unsigned i) const; | |
}; | |
template <typename T> F<T> foo (const F<T> &x) | |
{ | |
return F<T> (x[1]); | |
} | |
struct G | |
{ | |
G () { bar (2); } | |
F<int> &operator () (F<int> x); | |
void bar (int); | |
}; | |
int | |
main () | |
{ | |
try | |
{ | |
G g; | |
#pragma omp parallel for | |
for (int i = 0; i < 10; ++i) | |
{ | |
F<int> j (i); | |
F<int> f = g (j); | |
F<int> h = foo (f); | |
} | |
} | |
catch (int &e) | |
{ | |
} | |
} |