Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.c++/task-5.C @ 44:a14cd9f25ac4
merge.
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 Jan 2010 17:27:45 +0900 |
parents | a06113de4d67 |
children |
line wrap: on
line source
// { dg-do run } extern "C" void abort (); struct A { A (); ~A (); A (const A &); unsigned long l; }; int e; A::A () { l = 17; } A::~A () { if (l > 130) #pragma omp atomic e++; } A::A (const A &r) { l = r.l + 64; } void check (int i, A &a, int j, A &b) { if (i != 6 || a.l != 21 + 64 || j != 0 || b.l != 23 + 64) #pragma omp atomic e++; } A b; int j; void foo (int i) { A a; a.l = 21; #pragma omp task firstprivate (j, b) check (i, a, j, b); } void bar (int i, A a) { a.l = 21; #pragma omp task firstprivate (j, b) check (i, a, j, b); } A baz () { A a, c; a.l = 21; c.l = 23; #pragma omp task firstprivate (a, c) check (6, a, 0, c); return a; } int main () { b.l = 23; foo (6); bar (6, A ()); baz (); #pragma omp parallel num_threads (4) { #pragma omp single for (int i = 0; i < 64; i++) { foo (6); bar (6, A ()); baz (); } } if (e) abort (); }