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)11test (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