1  /* { dg-do compile } */
       2  /* { dg-options "-fopenmp" } */
       3  
       4  struct S {};
       5  void foo (void *, void *);
       6  void bar (void *, void *);
       7  void baz (void *);
       8  #pragma omp declare reduction(+:struct S:foo (&omp_out, &omp_in))initializer(bar(&omp_priv, &omp_orig))
       9  
      10  void
      11  test (void)
      12  {
      13    struct S b[10];
      14    #pragma omp parallel reduction(+:b[0:5])	/* { dg-error "zero length array section" } */
      15      baz (b);
      16    #pragma omp parallel reduction(+:b[:10])	/* { dg-error "zero length array section" } */
      17      baz (b);
      18    #pragma omp parallel reduction(+:b)		/* { dg-error "is a zero size array" } */
      19      baz (b);
      20  }