1  int r, l;
       2  
       3  void
       4  f1 (int *a)
       5  {
       6    int i;
       7    #pragma omp master
       8    {
       9      #pragma omp loop bind		/* { dg-error "expected" } */
      10      for (i = 0; i < 64; ++i)
      11        a[i] = i;
      12      #pragma omp loop bind )		/* { dg-error "expected" } */
      13      for (i = 0; i < 64; ++i)
      14        a[i] = i;
      15      #pragma omp loop bind (		/* { dg-error "expected" } */
      16      for (i = 0; i < 64; ++i)
      17        a[i] = i;
      18      #pragma omp loop bind ()		/* { dg-error "expected" } */
      19      for (i = 0; i < 64; ++i)
      20        a[i] = i;
      21      #pragma omp loop bind ( foobar )	/* { dg-error "expected" } */
      22      for (i = 0; i < 64; ++i)
      23        a[i] = i;
      24      #pragma omp loop bind (default)	/* { dg-error "expected" } */
      25      for (i = 0; i < 64; ++i)
      26        a[i] = i;
      27      #pragma omp loop bind (parallel	/* { dg-error "expected" } */
      28      for (i = 0; i < 64; ++i)
      29        a[i] = i;
      30    }
      31  }
      32  
      33  void
      34  f2 (int *a)
      35  {
      36    int i;
      37    #pragma omp loop bind(parallel) reduction(task, +: r)	/* { dg-error "invalid 'task' reduction modifier on construct other than 'parallel', 'for' or 'sections'" } */
      38    for (i = 0; i < 64; ++i)
      39      a[i] = i;
      40    #pragma omp loop bind(thread) reduction(inscan, +: r)	/* { dg-error "'inscan' 'reduction' clause on 'loop' construct" } */
      41    for (i = 0; i < 64; ++i)
      42      a[i] = i;
      43    #pragma omp loop bind(parallel) lastprivate (l)	/* { dg-error "'lastprivate' clause on a 'loop' construct refers to a variable 'l' which is not the loop iterator" } */
      44    for (i = 0; i < 64; ++i)
      45      l = i;
      46  }