1! { dg-do compile } 2! { dg-options "-O2 -fopenmp -fdump-tree-optimized" } 3! { dg-final { scan-tree-dump-times "__builtin_GOMP_loop(?:_ull)?_doacross_start \[^\n\r]*, (?:2147483649|-2147483647), 0, " 1 "optimized" } } 4! { dg-final { scan-tree-dump-times "__builtin_GOMP_loop_end " 1 "optimized" } } 5! { dg-final { scan-tree-dump-times "__builtin_GOMP_doacross(?:_ull)?_post " 1 "optimized" } } 6! { dg-final { scan-tree-dump-times "__builtin_GOMP_doacross(?:_ull)?_wait " 1 "optimized" } } 7! { dg-final { scan-tree-dump-times "__builtin_GOMP_loop(?:_ull)?_static_next " 1 "optimized" } } 8! { dg-final { scan-tree-dump-times "__builtin_GOMP_workshare_task_reduction_unregister \\(0\\)" 1 "optimized" } } 9! { dg-final { scan-tree-dump-times "__builtin_GOMP_parallel " 1 "optimized" } } 10 11module m 12 implicit none (type, external) 13 integer(8) :: j 14 interface 15 subroutine bar(i) 16 integer(8) :: i 17 end subroutine 18 end interface 19end module m 20 21subroutine foo(a, b, c) 22 use m 23 implicit none (type, external) 24 integer(8) :: a, b ,c 25 integer(8) :: i 26 !$omp parallel 27 !$omp do ordered(1) reduction (task, *: j) 28 do i = a, b, c 29 call bar (j) 30 !$omp ordered depend(sink: i - 1) 31 j = j + 1 32 !$omp ordered depend(source) 33 end do 34 !$omp end parallel 35end 36