Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/gomp/member-2.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do compile } // { dg-options "-fopenmp" } int d; struct A { A () : a(2), b(3), c(d) {} A (int x) : a(2), b(x), c(d) {} int a; A (const A &); A &operator= (const A &); const A &operator= (const A &) const; mutable int b; int &c; }; struct B : public A { B () : h(5) {} ~B (); B (const B &); A e; mutable A f; const A g; const int h; int m1 (); int m2 (); int m3 () const; int m4 () const; }; void foo (A &); #pragma omp declare reduction (+:A:omp_out.b += omp_in.b) initializer (foo (omp_priv)) int B::m1 () { #pragma omp parallel private (a, b, c, e, f, g) ; #pragma omp parallel firstprivate (a, b, c, e, f, g) ; #pragma omp parallel for lastprivate (a, b, c, e, f, g) for (int i = 0; i < 10; i++) ; #pragma omp simd linear (a, b, c : 1) for (int i = 0; i < 10; i++) { a++; b++; c++; } #pragma omp parallel for reduction (+:a, b, c, e, f) for (int i = 0; i < 10; i++) ; return 0; } int B::m2 () { #pragma omp parallel private (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } ; #pragma omp parallel firstprivate (h) ; #pragma omp parallel for lastprivate (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp simd linear (h : 1) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp parallel for reduction (+:h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp parallel for reduction (+:g) // { dg-error "has const type for .reduction." } for (int i = 0; i < 10; i++) ; #pragma omp parallel shared (a) ; #pragma omp parallel shared (b) ; #pragma omp parallel shared (c) ; #pragma omp parallel shared (e) ; #pragma omp parallel shared (f) ; #pragma omp parallel shared (g) ; #pragma omp parallel shared (h) ; return 0; } int B::m3 () const { #pragma omp parallel private (b, c, e, f, g) ; #pragma omp parallel firstprivate (b, c, e, f, g) ; #pragma omp parallel for lastprivate (b, c, e, f, g) for (int i = 0; i < 10; i++) ; #pragma omp simd linear (b, c : 1) for (int i = 0; i < 10; i++) { b++; c++; } #pragma omp parallel for reduction (+:b, c, f) for (int i = 0; i < 10; i++) ; return 0; } int B::m4 () const { #pragma omp parallel private (a) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } ; #pragma omp parallel firstprivate (a) ; #pragma omp parallel for lastprivate (a) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp simd linear (a : 1) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp parallel for reduction (+:a) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp parallel private (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } ; #pragma omp parallel firstprivate (h) ; #pragma omp parallel for lastprivate (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp simd linear (h : 1) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp parallel for reduction (+:h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" } for (int i = 0; i < 10; i++) ; #pragma omp parallel for reduction (+:e) // { dg-error "has const type for .reduction." } for (int i = 0; i < 10; i++) ; #pragma omp parallel for reduction (+:g) // { dg-error "has const type for .reduction." } for (int i = 0; i < 10; i++) ; #pragma omp parallel shared (a) ; #pragma omp parallel shared (b) ; #pragma omp parallel shared (c) ; #pragma omp parallel shared (e) ; #pragma omp parallel shared (f) ; #pragma omp parallel shared (g) ; #pragma omp parallel shared (h) ; return 0; }