/* PR c++/91987 */ int bar (void); void baz (int *); #pragma omp declare target to (baz) void foo (int *a, int (*b)[10][10]) { #pragma omp target map(a[bar ()]) baz (a); #pragma omp target map(a[bar ():1]) baz (a); #pragma omp target map(a[10:bar ()]) baz (a); #pragma omp task depend(inout:a[10:bar ()]) baz (a); #pragma omp task depend(inout:a[10:bar ()]) baz (a); #pragma omp parallel reduction(+:a[bar ():2]) baz (a); #pragma omp parallel reduction(+:a[2:bar ()]) baz (a); #pragma omp parallel reduction(+:b[bar ():2][bar ():10][bar ():10]) baz (a); }