URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.c++/] [ctor-11.C] - Rev 735
Compare with Previous | Blame | View Log
// PR c++/36308// { dg-do run }#include <omp.h>#include <assert.h>#define N 10struct B{static int icount;static int ccount;static int dcount;static int xcount;B ();B (const B &);virtual ~B ();B& operator= (const B &);void doit ();static void clear () { icount = ccount = dcount = xcount = 0; }};int B::icount;int B::ccount;int B::dcount;int B::xcount;B::B (){#pragma omp atomicicount++;}B::B (const B &){#pragma omp atomicccount++;}B::~B (){#pragma omp atomicdcount++;}voidB::doit (){#pragma omp atomicxcount++;}static int nthreads;voidtest1 (){B b[N];#pragma omp parallel private (b){#pragma omp masternthreads = omp_get_num_threads ();b[0].doit ();}}voidtest2 (){B b;#pragma omp parallel firstprivate (b){#pragma omp singlenthreads = omp_get_num_threads ();b.doit ();}}intmain (){omp_set_dynamic (0);omp_set_num_threads (4);B::clear ();test1 ();assert (B::xcount == nthreads);assert (B::ccount == 0);assert (B::icount == (nthreads + 1) * N);assert (B::dcount == (nthreads + 1) * N);B::clear ();test2 ();assert (B::xcount == nthreads);assert (B::ccount == nthreads);assert (B::icount == 1);assert (B::dcount == nthreads + 1);return 0;}
