There has been a number of deprecation warnings that have been added to Flang, however these features are only deprecated when the OpenMP Version being used is 5.2 or later. Previously, flang did not consider the version with the warnings so would always be emitted. Flang now ensures warnings are emitted for the appropriate version of OpenMP, and tests are updated to reflect this change.
154 lines
3.8 KiB
Fortran
154 lines
3.8 KiB
Fortran
! 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, the `SCAN` 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
|