mirror of
https://review.haiku-os.org/buildtools
synced 2025-01-20 13:21:15 +01:00
a84f174425
git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@29033 a95241bf-73f2-0310-859d-f6bbb57e9c96
66 lines
880 B
C
66 lines
880 B
C
// PR c++/36308
|
|
// { dg-do run }
|
|
|
|
extern "C" void abort ();
|
|
|
|
static int n;
|
|
|
|
struct A
|
|
{
|
|
A ()
|
|
{
|
|
l = 0;
|
|
#pragma omp atomic
|
|
ctors++;
|
|
}
|
|
A (const A &x)
|
|
{
|
|
l = x.l;
|
|
#pragma omp atomic
|
|
copyctors++;
|
|
}
|
|
virtual A& operator= (const A &x)
|
|
{
|
|
l = x.l;
|
|
#pragma omp atomic
|
|
assignops++;
|
|
return *this;
|
|
}
|
|
virtual ~A ()
|
|
{
|
|
#pragma omp atomic
|
|
dtors++;
|
|
}
|
|
int l;
|
|
static int ctors, dtors, copyctors, assignops;
|
|
};
|
|
|
|
int A::ctors;
|
|
int A::dtors;
|
|
int A::copyctors;
|
|
int A::assignops;
|
|
|
|
int
|
|
main ()
|
|
{
|
|
A a;
|
|
#pragma omp parallel private (a)
|
|
{
|
|
a.l = 6;
|
|
#pragma omp single copyprivate (a)
|
|
{
|
|
a.l = 3;
|
|
}
|
|
if (a.l != 3)
|
|
abort ();
|
|
#pragma omp atomic
|
|
n++;
|
|
}
|
|
if (A::ctors != n + 1
|
|
|| A::copyctors != 0
|
|
|| A::dtors != n
|
|
|| A::assignops != n - 1)
|
|
abort ();
|
|
return 0;
|
|
}
|