diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/gomp/pr31598.C')
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr31598.C | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/gomp/pr31598.C b/gcc/testsuite/g++.dg/gomp/pr31598.C new file mode 100644 index 000000000..3ebcead5a --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr31598.C @@ -0,0 +1,59 @@ +// PR c++/31598 +// { dg-do compile } +// +// Copyright (C) 2007 Free Software Foundation, Inc. +// Contributed by Theodore.Papadopoulo +// 16 Apr 2007 <Theodore.Papadopoulo@sophia.inria.fr> + +int i; +template <typename> struct A { A() {} }; +template <typename> struct C { C() { i++; } C(const C &) { i += 2; } }; +struct D { D() {} }; + +struct M { typedef double E; }; + +template <typename T> +struct R +{ + R() + { + typedef A<typename T::E> B; + B b; + #pragma omp parallel for firstprivate(b) schedule(guided) + for (int t = 0; t < 10; ++t) + ; + } +}; + +template <typename T> +struct S +{ + S() + { + typedef C<typename T::E> B; + B b; + #pragma omp parallel for firstprivate(b) + for (int t = 0; t < 10; ++t) + ; + } +}; + +struct U +{ + U() + { + D b; + #pragma omp parallel for firstprivate(b) + for (int t = 0; t < 10; ++t) + ; + } +}; + +int +main () +{ + R<M> r; + S<M> s; + U u; + return 0; +} |