1  void
       2  foo (int i, int *a)
       3  {
       4    #pragma omp assume no_openmp no_openmp			/* { dg-error "too many 'no_openmp' clauses" } */
       5    ;
       6    #pragma omp assume no_openmp_routines, no_openmp_routines	/* { dg-error "too many 'no_openmp_routines' clauses" } */
       7    ;
       8    #pragma omp assume no_parallelism, no_parallelism		/* { dg-error "too many 'no_parallelism' clauses" } */
       9    ;
      10    #pragma omp assume absent (target, target)			/* { dg-error "'target' directive mentioned multiple times in 'absent' clauses" } */
      11    ;
      12    #pragma omp assume absent (target, teams) absent (teams, parallel)	/* { dg-error "'teams' directive mentioned multiple times in 'absent' clauses" } */
      13    ;
      14    #pragma omp assume contains (cancellation point, cancellation point)	/* { dg-error "'cancellation point' directive mentioned multiple times in 'contains' clauses" } */
      15    ;
      16    #pragma omp assume contains (target enter data, target exit data) contains (target exit data, parallel)	/* { dg-error "target exit data' directive mentioned multiple times in 'contains' clauses" } */
      17    ;
      18    #pragma omp assume absent (target enter data, target exit data) contains (target exit data, parallel)		/* { dg-error "'target exit data' directive mentioned in both 'absent' and 'contains' clauses" } */
      19    ;
      20    #pragma omp assume contains (target enter data, target exit data) absent (target enter data, parallel)	/* { dg-error "'target enter data' directive mentioned in both 'absent' and 'contains' clauses" } */
      21    ;
      22    #pragma omp assume contains (declare target)			/* { dg-error "unknown OpenMP directive name in 'contains' clause argument" } */
      23    ;
      24    #pragma omp assume absent (parallel for simd)			/* { dg-error "unknown OpenMP directive name in 'absent' clause argument" } */
      25    ;
      26    #pragma omp assume contains (target parallel)			/* { dg-error "unknown OpenMP directive name in 'contains' clause argument" } */
      27    ;
      28    #pragma omp assume absent (assume)				/* { dg-error "unknown OpenMP directive name in 'absent' clause argument" } */
      29    ;
      30    #pragma omp assume absent (assumes)				/* { dg-error "unknown OpenMP directive name in 'absent' clause argument" } */
      31    ;
      32    #pragma omp assume contains (begin assumes)			/* { dg-error "unknown OpenMP directive name in 'contains' clause argument" } */
      33    ;
      34    #pragma omp assume contains (end assumes)			/* { dg-error "unknown OpenMP directive name in 'contains' clause argument" } */
      35    ;
      36    #pragma omp assume contains (foo)				/* { dg-error "unknown OpenMP directive name in 'contains' clause argument" } */
      37    ;
      38    #pragma omp assume absent (target enter something)		/* { dg-error "unknown OpenMP directive name in 'absent' clause argument" } */
      39    ;
      40    #pragma omp assume foobar					/* { dg-error "expected assumption clause" } */
      41    ;
      42    #pragma omp assume ext_GCC_foobarbaz, ext_GCC_baz (1, 12, 1 < 17), no_parallelism	/* { dg-warning "unknown assumption clause 'ext_GCC_foobarbaz'" } */
      43    ;								/* { dg-warning "unknown assumption clause 'ext_GCC_baz'" "" { target *-*-* } .-1 } */
      44    #pragma omp assume						/* { dg-error "expected at least one assumption clause" } */
      45    ;
      46  }