| ! { 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. |
| |
| |