blob: cb391d568ba20936b9b2e78a1cf517457357261a [file] [log] [blame]
! RUN: %S/test_errors.sh %s %t %flang_fc1 -fopenmp
! REQUIRES: shell
! 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
!$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
!$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
!$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
!$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