| // 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) | |
| { | |
| } | |
| } |