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