/* { dg-do compile } */ /* { dg-options "-fopenmp" } */ struct T { int c[3]; }; struct S { int a; struct T *b; struct T g; }; struct S d[10]; struct S *e[10]; struct S *f; struct S h; void foo (void) { #pragma omp task depend(inout: d) ; #pragma omp task depend(out: d[2]) ; #pragma omp task depend(in: d[:]) ; #pragma omp task depend(in: d[2:2]) ; #pragma omp task depend(in: d[:2]) ; #pragma omp task depend(inout: d[1].b->c[2]) ; #pragma omp task depend(out: d[0].a) ; #pragma omp task depend(in: e[3]->a) ; #pragma omp task depend(inout: e[2]->b->c) ; #pragma omp task depend(in: e[1]->b->c[2]) ; #pragma omp task depend(out: (*f).a) ; #pragma omp task depend(inout: f->b->c[0]) ; #pragma omp task depend(in: f) ; #pragma omp task depend(out: *f) ; #pragma omp task depend(inout: f[0]) ; #pragma omp task depend(in: f[0].a) ; #pragma omp task depend(inout: h.g.c[2]) ; }