module m implicit none (type, external) integer, volatile :: v contains subroutine foo (p, i) integer :: p(0:*) integer :: i !$omp task depend (out: p(0)) v = v + 1 !$omp end task !$omp task depend (in: p(0)) v = v + 1 !$omp end task !$omp task depend (inout: p(0)) v = v + 1 !$omp end task !$omp task depend (mutexinoutset: p(0)) v = v + 1 !$omp end task !$omp task depend (out: p(0)) depend (in: p(1)) v = v + 1 !$omp end task !$omp task depend (in: p(0)) depend (inout: p(1)) v = v + 1 !$omp end task !$omp task depend (inout: p(0)) depend (mutexinoutset: p(1)) v = v + 1 !$omp end task !$omp task depend (mutexinoutset: p(0)) depend (out: p(1)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , out : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , in : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , inout : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , mutexinoutset : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , out : p(j)) depend (iterator (j=0:2) , in : p(j + 2)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , in : p(j)) depend (iterator (j=0:2) , inout : p(j + 2)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , inout : p(j)) depend (iterator (j=0:2) , mutexinoutset : p(j + 2)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:2) , mutexinoutset : p(j)) depend (iterator (j=0:2) , out : p(j + 2)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , out : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , in : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , inout : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , mutexinoutset : p(j)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , out : p(j)) depend (iterator (j=0:i) , in : p(j + 2)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , in : p(j)) depend (iterator (j=0:i) , inout : p(j + 2)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , inout : p(j)) depend (iterator (j=0:i) , mutexinoutset : p(j + 2)) v = v + 1 !$omp end task !$omp task depend (iterator (j=0:i) , mutexinoutset : p(j)) depend (iterator (j=0:i) , out : p(j + 2)) v = v + 1 !$omp end task end end module program main use m implicit none (external, type) integer p(4) call foo (p, 2) call foo (p, -1) end