! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp ! OpenMP Version 4.5 ! Various checks with the nesting of MASTER construct program omp_nest_master integer i, k, j k = 0; !$omp do do i = 1, 10 k = k + 1 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master j = j -1 !$omp end master end do !$omp sections !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master do i = 1, 10 k = k + 1 end do !$omp end master !$omp end sections !$omp single !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master do i = 1, 10 k = k + 1 end do !$omp end master !$omp end single !$omp task do i = 1, 10 k = k + 1 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master j = j -1 !$omp end master end do !$omp end task !$omp taskloop do i = 1, 10 k = k + 1 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master j = j -1 !$omp end master end do !$omp end taskloop !$omp target parallel do simd do i = 1, 10 k = k + 1 !ERROR: The only OpenMP constructs that can be encountered during execution of a 'SIMD' region are the `ATOMIC` construct, the `LOOP` construct, the `SIMD` construct and the `ORDERED` construct with the `SIMD` clause. !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master j = j -1 !$omp end master end do !$omp end target parallel do simd !$omp critical do i = 1, 10 k = k + 1 !$omp master j = j -1 !$omp end master end do !$omp end critical !$omp ordered do i = 1, 10 k = k + 1 !$omp master j = j -1 !$omp end master end do !$omp end ordered !$omp ordered do i = 1, 10 !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region !$omp teams !$omp distribute do k =1, 10 print *, "hello" !$omp master j = j -1 !$omp end master end do !$omp end distribute !$omp end teams end do !$omp end ordered !$omp critical do i = 1, 10 !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region !$omp teams !$omp distribute do k =1, 10 print *, "hello" !$omp master j = j -1 !$omp end master end do !$omp end distribute !$omp end teams end do !$omp end critical !$omp taskloop do i = 1, 10 !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region !$omp teams !$omp distribute do k =1, 10 print *, "hello" !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master j = j -1 !$omp end master end do !$omp end distribute !$omp end teams end do !$omp end taskloop !$omp task do i = 1, 10 !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region !$omp teams !$omp distribute do k =1, 10 print *, "hello" !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. !$omp master j = j -1 !$omp end master end do !$omp end distribute !$omp end teams end do !$omp end task end program omp_nest_master