1  void
       2  foo (int i, int *a)
       3  {
       4    #pragma omp assume no_openmp, absent (target, teams) holds (i < 32U) holds (i < 32U)
       5    ;
       6    #pragma omp assume no_openmp_routines, contains (simd)
       7    {
       8      #pragma omp simd
       9      for (int j = 0; j < i; j++)
      10        a[j] = j;
      11    }
      12    #pragma omp assume no_parallelism, contains (error)
      13    {
      14      if (i >= 32)
      15        {
      16  	#pragma omp error at (execution) message ("Should not happen")
      17        }
      18    }
      19    #pragma omp assume absent (for)
      20    ;
      21    #pragma omp assume absent (atomic, barrier, cancel, cancellation point) absent (critical, depobj)
      22    ;
      23    #pragma omp assume absent (distribute, flush, loop, masked, master, nothing, ordered)
      24    ;
      25    #pragma omp assume absent (parallel, scan, scope, section, sections, simd, single, task)
      26    ;
      27    #pragma omp assume absent (taskgroup, taskloop, taskwait, taskyield)
      28    ;
      29  }