1! PR c/81887
2! { dg-do compile }
3! { dg-options "-fno-openmp -fopenmp-simd -fdump-tree-gimple" }
4! { dg-final { scan-tree-dump-times "#pragma omp simd" 2 "gimple" } }
5! { dg-final { scan-tree-dump-times "#pragma omp ordered simd\[ \t]*\[\n\r]" 2 "gimple" } }
6! { dg-final { scan-tree-dump-times "#pragma omp" 4 "gimple" } }
7
8subroutine f1 (x)
9  integer :: i, x(100)
10  !$omp simd
11  do i = 2, 101
12    !$omp ordered simd
13    x(i / 2) = i
14    !$omp end ordered
15  end do
16end subroutine
17
18subroutine f2 (x)
19  integer :: i, x(100)
20  !$omp parallel do simd ordered
21  do i = 2, 101
22    !$omp ordered threads simd
23    x(i / 2) = i
24    !$omp end ordered
25  end do
26end subroutine
27
28subroutine f3 (x)
29  integer :: i, x(100)
30  !$omp parallel do ordered
31  do i = 2, 101
32    !$omp ordered
33    x(i / 2) = i
34    !$omp end ordered
35  end do
36end subroutine
37
38subroutine f4 (x)
39  integer :: i, x(100)
40  !$omp parallel do ordered
41  do i = 2, 101
42    !$omp ordered threads
43    x(i / 2) = i
44    !$omp end ordered
45  end do
46end subroutine
47
48subroutine f5(x, n)
49  integer :: i, j, k, n, x(100,100,100)
50  !$omp parallel do ordered(3)
51  do i = 1, n
52    do j = 1, n
53      do k = 1, n
54	!$omp ordered depend(sink:i-8,j-2,k+2) depend(sink:i, j-1,k) depend(sink:i-4,j-3,k+6) depend(sink:i-6,j-4,k-6)
55	x(i, j, k) = i + j + k
56	!$omp ordered depend(source)
57      end do
58    end do
59  end do
60  !$omp end parallel do
61end subroutine
62