diff options
Diffstat (limited to 'gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c++/ctor-4.C')
-rw-r--r-- | gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c++/ctor-4.C | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c++/ctor-4.C b/gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c++/ctor-4.C deleted file mode 100644 index e4f8f82db..000000000 --- a/gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c++/ctor-4.C +++ /dev/null @@ -1,90 +0,0 @@ -// { dg-do run } - -#include <omp.h> -#include <assert.h> - -struct B -{ - static int ccount; - static int dcount; - static int ecount; - static B *e_inner; - static B *e_outer; - - B(); - B(int); - B(const B &); - ~B(); - B& operator=(const B &); - void doit(); -}; - -int B::ccount; -int B::dcount; -int B::ecount; -B * B::e_inner; -B * B::e_outer; - -B::B(int) -{ - e_outer = this; -} - -B::B(const B &b) -{ - assert (&b == e_outer); - #pragma omp atomic - ccount++; -} - -B::~B() -{ - #pragma omp atomic - dcount++; -} - -B& B::operator= (const B &b) -{ - assert (&b == e_inner); - assert (this == e_outer); - #pragma omp atomic - ecount++; - return *this; -} - -void B::doit() -{ - #pragma omp critical - { - assert (e_inner == 0); - e_inner = this; - } -} - -static int nthreads; - -void foo() -{ - B b(0); - - #pragma omp parallel sections firstprivate(b) lastprivate(b) - { - #pragma omp section - nthreads = omp_get_num_threads (); - #pragma omp section - b.doit (); - } -} - -int main() -{ - omp_set_dynamic (0); - omp_set_num_threads (4); - foo(); - - assert (B::ecount == 1); - assert (B::ccount == nthreads); - assert (B::dcount == nthreads+1); - - return 0; -} |