blob: a7f41cb69cab1cae06a4c7f00ebfcf97413a5fc4 [file] [log] [blame]
! { dg-do compile }
! { dg-options "-fopenmp" }
! Test that errors are given for cases where there are constraints
! disallowing nonrectangular loops.
! Work-sharing loop disallows "schedule" and "ordered" clauses.
subroutine s1 (a1, a2)
integer :: a1, a2
integer :: i, j
!$omp do collapse(2) schedule(static) ! { dg-error "'schedule' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp do collapse(2) schedule(static) ! { dg-error "'schedule' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp do collapse(2) ordered ! { dg-error "'ordered' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp do collapse(2) ordered ! { dg-error "'ordered' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = i, 16
end do
end do
! Derived constructs
!$omp do simd collapse(2) schedule(static) ! { dg-error "'schedule' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp parallel do collapse(2) schedule(static) ! { dg-error "'schedule' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp parallel do simd collapse(2) schedule(static) ! { dg-error "'schedule' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp target parallel do collapse(2) schedule(static) ! { dg-error "'schedule' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp target parallel do collapse(2) schedule(static) ! { dg-error "'schedule' clause may not appear on non-rectangular 'do'" }
do i = 1, 16
do j = 1, i
end do
end do
end subroutine
! Distribute construct disallows "dist_schedule" clause.
subroutine s2 (a1, a2)
integer :: a1, a2
integer :: i, j
!$omp distribute collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp distribute collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
! Derived constructs
!$omp distribute simd collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp distribute parallel do collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp distribute parallel do simd collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp teams distribute collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp teams distribute simd collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp teams distribute parallel do collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp teams distribute parallel do simd collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp target teams distribute collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp target teams distribute simd collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp target teams distribute parallel do collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp target teams distribute parallel do simd collapse(2) dist_schedule(static) ! { dg-error "'dist_schedule' clause may not appear on non-rectangular 'distribute'" }
do i = 1, 16
do j = i, 16
end do
end do
end subroutine
! Taskloop construct disallows "grainsize" and "num_tasks" clauses.
subroutine s3 (a1, a2)
integer :: a1, a2
integer :: i, j
!$omp taskloop collapse(2) grainsize(4) ! { dg-error "'grainsize' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp taskloop collapse(2) grainsize(4) ! { dg-error "'grainsize' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = i, 16
end do
end do
!$omp taskloop collapse(2) num_tasks(4) ! { dg-error "'num_tasks' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp taskloop collapse(2) num_tasks(4) ! { dg-error "'num_tasks' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = i, 16
end do
end do
! Derived constructs
!$omp taskloop simd collapse(2) grainsize(4) ! { dg-error "'grainsize' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp masked taskloop collapse(2) grainsize(4) ! { dg-error "'grainsize' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp masked taskloop simd collapse(2) grainsize(4) ! { dg-error "'grainsize' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp parallel masked taskloop collapse(2) grainsize(4) ! { dg-error "'grainsize' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = 1, i
end do
end do
!$omp parallel masked taskloop simd collapse(2) grainsize(4) ! { dg-error "'grainsize' clause may not appear on non-rectangular 'taskloop'" }
do i = 1, 16
do j = 1, i
end do
end do
end subroutine
! TODO: not yet implemented
! The tile construct disallows all non-rectangular loops.