Viewing file: member-1.C (4.23 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
struct T { T () {}; virtual ~T () {}; int t; }; struct S : virtual public T { int a; void foo (); }; template <typename T> struct U { U () {}; virtual ~U () {}; T t; }; template <typename T> struct V : virtual public U<T> { T a; void foo (); };
void S::foo () { #pragma omp parallel firstprivate (a, t) { int *q1 = &a; int *q2 = &this->a; int q3 = a; int q4 = this->a; int *q5 = &t; int *q6 = &this->t; int q7 = t; int q8 = this->t; int q9 = T::t; int q10 = this->T::t; int &q11 = a; int &q12 = this->a; int &q13 = t; int &q14 = this->t; int &q15 = S::a; int &q16 = this->S::a; int &q17 = T::t; int &q18 = this->T::t; } #pragma omp parallel private (a, t) { a = 7; S::a += 9; t = 10; T::t += 11; } #pragma omp parallel { #pragma omp sections lastprivate (S::a, T::t) { #pragma omp section { S::a = 6; T::t = 8; } } } #pragma omp parallel { #pragma omp for firstprivate (a, t) lastprivate (a, t) for (int i = 0; i < 10; i++) { int q19 = a + t; if (i == 9) { a = i; T::t = i + 2; } } } #pragma omp sections lastprivate (a, t) { #pragma omp section { a = 5; t = 6; } } #pragma omp for firstprivate (a, t) lastprivate (a, t) for (int i = 0; i < 10; i++) { int q20 = a + t; if (i == 9) { a = i; T::t = i + 2; } } #pragma omp parallel sections lastprivate (a, t) { #pragma omp section { a = 5; t = 6; } } #pragma omp parallel { #pragma omp task firstprivate (a, t) { S::a++; t++; } } #pragma omp parallel { #pragma omp taskloop firstprivate (a, t) lastprivate (t) for (int i = 0; i < a; i++) t++; } #pragma omp taskloop firstprivate (a, t) lastprivate (t) for (int i = 0; i < a; i++) t++; a = 1; t = 0; #pragma omp parallel sections reduction (*: S::a) reduction (+: t) { { a = 1; t = 2; } #pragma omp section { a = 2; t = 3; } #pragma omp section { a = 3; t = 4; } } }
template <typename T> void V<T>::foo () { #pragma omp parallel firstprivate (a, U<T>::t) { int *q1 = &a; int *q2 = &this->a; int q3 = a; int q4 = this->a; int *q5 = &(U<T>::t); int *q6 = &this->U<T>::t; int q7 = U<T>::t; int q8 = this->U<T>::t; int q9 = U<T>::t; int q10 = this->U<T>::t; int &q11 = a; int &q12 = this->a; int &q13 = U<T>::t; int &q14 = this->U<T>::t; int &q15 = V::a; int &q16 = this->V::a; int &q17 = U<T>::t; int &q18 = this->U<T>::t; } #pragma omp parallel private (a, U<T>::t) { a = 7; V::a += 9; U<T>::t = 10; U<T>::t += 11; } #pragma omp parallel { #pragma omp sections lastprivate (V::a, U<T>::t) { #pragma omp section { V::a = 6; U<T>::t = 8; } } } #pragma omp parallel { #pragma omp for firstprivate (a, U<T>::t) lastprivate (a, U<T>::t) for (int i = 0; i < 10; i++) { int q19 = a + U<T>::t; if (i == 9) { a = i; U<T>::t = i + 2; } } } #pragma omp sections lastprivate (a, U<T>::t) { #pragma omp section { a = 5; U<T>::t = 6; } } #pragma omp for firstprivate (a, U<T>::t) lastprivate (a, U<T>::t) for (int i = 0; i < 10; i++) { int q20 = a + U<T>::t; if (i == 9) { a = i; U<T>::t = i + 2; } } #pragma omp parallel sections lastprivate (a, U<T>::t) { #pragma omp section { a = 5; U<T>::t = 6; } } #pragma omp parallel { #pragma omp task firstprivate (a, U<T>::t) { V::a++; U<T>::t++; } } #pragma omp parallel { #pragma omp taskloop firstprivate (a, U<T>::t) lastprivate (U<T>::t) for (int i = 0; i < a; i++) U<T>::t++; } #pragma omp taskloop firstprivate (a, U<T>::t) lastprivate (U<T>::t) for (int i = 0; i < a; i++) U<T>::t++; a = 1; U<T>::t = 0; #pragma omp parallel sections reduction (*: V::a) reduction (+: U<T>::t) { { a = 1; U<T>::t = 2; } #pragma omp section { a = 2; U<T>::t = 3; } #pragma omp section { a = 3; U<T>::t = 4; } } }
void bar () { V<int> v; v.foo (); }
|