blob: 3a1679a1eec2dad53841a0fd3912d090d7520d0f [file] [log] [blame]
subroutine foo (n)
integer i, n
!$omp do ordered
do i = 1, 8, n
!$omp ordered doacross(source:)
!$omp ordered doacross(sink: i - 2)
end do
end
subroutine bar (n)
integer :: i, j, n
!$omp do collapse(2) ordered(2)
do i = 1, 8, n
do j = 1, 8, n
!$omp ordered doacross(source:omp_cur_iteration)
!$omp ordered doacross(sink: i - 2, j + 2)
end do
end do
end
subroutine baz ()
integer :: i, j
!$omp do ordered(1)
do i = 1, 64
!$omp ordered ! { dg-error "'ordered' construct without 'doacross' or 'depend' clauses must not have the same binding region as 'ordered' construct with those clauses" }
!$omp end ordered
!$omp ordered doacross(source:)
!$omp ordered doacross(sink: i - 1)
end do
!$omp do ordered
do i = 1, 64
!$omp ordered doacross(source: omp_cur_iteration )
!$omp ordered doacross(sink: i - 1)
!$omp ordered threads ! { dg-error "'ordered' construct without 'doacross' or 'depend' clauses must not have the same binding region as 'ordered' construct with those clauses" }
!$omp end ordered
end do
!$omp do ordered(2)
do i = 1, 64
do j = 1, 64
!$omp ordered ! { dg-error "'ordered' construct without 'doacross' or 'depend' clauses binds to loop where 'collapse' argument 1 is different from 'ordered' argument 2" }
!$omp end ordered
end do
end do
!$omp do ordered(2) collapse(1)
do i = 1, 8
do j = 1, 8
!$omp ordered threads ! { dg-error "'ordered' construct without 'doacross' or 'depend' clauses binds to loop where 'collapse' argument 1 is different from 'ordered' argument 2" }
!$omp end ordered
end do
end do
end
subroutine qux ()
integer :: i, j
j = 0
!$omp do ordered linear(j)
do i = 1, 64
j = j + 1
!$omp ordered
!$omp end ordered
end do
!$omp do ordered linear(j) ! { dg-error "'linear' clause may not be specified together with 'ordered' clause if stand-alone 'ordered' construct is nested in it" }
do i = 1, 64
j = j + 1
!$omp ordered doacross(source:)
!$omp ordered doacross(sink:i-1)
end do
!$omp do ordered(1) linear(j)
do i = 1, 64
j = j + 1
!$omp ordered
!$omp end ordered
end do
!$omp do ordered(1) linear(j) ! { dg-error "'linear' clause may not be specified together with 'ordered' clause if stand-alone 'ordered' construct is nested in it" }
do i = 1, 64
j = j + 1
!$omp ordered doacross(source:)
!$omp ordered doacross(sink:i-1)
end do
end