60 lines
907 B
C
60 lines
907 B
C
// 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;
|
|
}
|