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
test(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 }
21