(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
reduction-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-fopenmp" } */
       3  
       4  void bar (int a[10][10][10]);
       5  extern int f[][2];					/* { dg-error "has incomplete type" "" { target c++ } } */
       6  extern int g[];						/* { dg-error "has incomplete type" "" { target c++ } } */
       7  void
       8  foo (int a[10][10][10], int **b, int x)
       9  {
      10    int c[10][10][0];
      11    int d[0];
      12    char e[12];
      13    #pragma omp parallel reduction(+: a[:4][:0][:7])	/* { dg-error "zero length array section" } */
      14      bar (a);
      15    #pragma omp parallel reduction(+: b[:7][0:0][:0])	/* { dg-error "zero length array section" } */
      16      bar (a);
      17    #pragma omp parallel reduction(+: c[:][:][0:])	/* { dg-error "zero length array section|for unknown bound array type length expression must be specified" } */
      18      bar (a);
      19    #pragma omp parallel reduction(+: a[:4][:0][:x])	/* { dg-error "zero length array section" } */
      20      bar (a);
      21    #pragma omp parallel reduction(+: b[:x][0:0][:0])	/* { dg-error "zero length array section" } */
      22      bar (a);
      23    #pragma omp parallel reduction(+: c[:][:x][0:])	/* { dg-error "zero length array section|for unknown bound array type length expression must be specified" } */
      24      bar (a);
      25    #pragma omp parallel reduction(+: d)			/* { dg-error "is a zero size array" } */
      26      bar (a);
      27    #pragma omp parallel reduction(+: a[0:4])
      28      bar (a);
      29    #pragma omp parallel reduction(+: a[2:4])
      30      bar (a);
      31    #pragma omp parallel reduction(+: e[2:4])
      32      bar (a);
      33    #pragma omp parallel reduction(+: a[x:4])
      34      bar (a);
      35    #pragma omp parallel reduction(+: e[x:4])
      36      bar (a);
      37    #pragma omp parallel reduction(+: a[x:x])
      38      bar (a);
      39    #pragma omp parallel reduction(+: e[x:x])
      40      bar (a);
      41    #pragma omp parallel reduction(+: a[0.5:2])		/* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      42      bar (a);
      43    #pragma omp parallel reduction(+: a[0:2.5])		/* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      44      bar (a);
      45    #pragma omp parallel reduction(+: f[:][0:2])		/* { dg-error "for unknown bound array type length expression must be specified" } */
      46      bar (a);
      47    #pragma omp parallel reduction(+: a[:][0:10])		/* { dg-error "for array function parameter length expression must be specified" } */
      48      bar (a);
      49    #pragma omp parallel reduction(+: a[:10][0:12])	/* { dg-error "above array section size" } */
      50      bar (a);
      51    #pragma omp parallel reduction(+: b[0:10][0:10])	/* { dg-error "array section is not contiguous" } */
      52      bar (a);
      53    #pragma omp parallel reduction(+: a[0:2][0:9])	/* { dg-error "array section is not contiguous" } */
      54      bar (a);
      55    #pragma omp parallel reduction(+: f)			/* { dg-error "has an incomplete type|invalid use of array with unspecified bounds" } */
      56      bar (a);
      57    #pragma omp parallel reduction(+: g)			/* { dg-error "has an incomplete type|invalid use of array with unspecified bounds" } */
      58      bar (a);
      59  }