1  /* PR c++/91987 */
       2  
       3  int bar (void);
       4  void baz (int *);
       5  #pragma omp declare target to (baz)
       6  
       7  void
       8  foo (int *a, int (*b)[10][10])
       9  {
      10    #pragma omp target map(a[bar ()])
      11    baz (a);
      12    #pragma omp target map(a[bar ():1])
      13    baz (a);
      14    #pragma omp target map(a[10:bar ()])
      15    baz (a);
      16    #pragma omp task depend(inout:a[10:bar ()])
      17    baz (a);
      18    #pragma omp task depend(inout:a[10:bar ()])
      19    baz (a);
      20    #pragma omp parallel reduction(+:a[bar ():2])
      21    baz (a);
      22    #pragma omp parallel reduction(+:a[2:bar ()])
      23    baz (a);
      24    #pragma omp parallel reduction(+:b[bar ():2][bar ():10][bar ():10])
      25    baz (a);
      26  }