/* { dg-do compile } */
/* { dg-require-effective-target tls } */

extern int omp_get_num_threads (void);
int x, y, t, z[1000];
#pragma omp threadprivate(x)
void
a24 (int a)
{
  const int c = 1;
  int i = 0;
  int l = 0;
#pragma omp parallel default(none) private(a) shared(z)
  {
    int j = omp_get_num_threads ();
    /* O.K. - j is declared within parallel region */
    /* O.K.  -  a is listed in private clause */
    /*       -  z is listed in shared clause */
    x = c;			/* O.K.  -  x is threadprivate */
    				/*       -  c has const-qualified type */
    z[i] = y;
    /* { dg-error "'i' not specified" "" { target *-*-* } 21 } */
    /* { dg-error "enclosing parallel" "" { target *-*-* } 13 } */
    /* { dg-error "'y' not specified" "" { target *-*-* } 21 }  */
#pragma omp for firstprivate(y)
    for (i = 0; i < 10; i++)
      {
	z[i] = y;		/* O.K. - i is the loop iteration variable */
				/*      - y is listed in firstprivate clause */
      }
    z[l] = t;
    /* { dg-error "'l' not specified" "" { target *-*-* } 31 } */
    /* { dg-error "'t' not specified" "" { target *-*-* } 31 }  */
  }
}
