? code->ext.omp_clauses->depobj_update : n->u.depend_op)
{
case OMP_DEPEND_IN: k = GOMP_DEPEND_IN; break;
- case OMP_DEPEND_OUT: k = GOMP_DEPEND_IN; break;
- case OMP_DEPEND_INOUT: k = GOMP_DEPEND_IN; break;
+ case OMP_DEPEND_OUT: k = GOMP_DEPEND_OUT; break;
+ case OMP_DEPEND_INOUT: k = GOMP_DEPEND_INOUT; break;
case OMP_DEPEND_MUTEXINOUTSET: k = GOMP_DEPEND_MUTEXINOUTSET; break;
default: gcc_unreachable ();
}
end
subroutine dep2
- integer, pointer :: x
integer(omp_depend_kind) :: d1, d2
pointer :: d1
- allocate(d1, x)
- call dep2i(d1, d2, x)
+ allocate(d1)
+ call dep2i(d1, d2)
deallocate(d1)
contains
- subroutine dep2i(d1, d2, x)
+ subroutine dep2i(d1, d2)
integer(omp_depend_kind) :: d1
integer(omp_depend_kind), optional :: d2
- integer, pointer, optional :: x
pointer :: d1
!$omp parallel
!$omp single
+ block
+ integer :: x
x = 1
!$omp depobj (d1) depend(out: x)
!$omp depobj (d2) depend (in:x)
!$omp taskwait
!$omp depobj(d1)destroy
!$omp depobj(d2) destroy
+ end block
!$omp end single
!$omp end parallel
end
end
subroutine dep3
- integer :: x
integer(omp_depend_kind) :: d(2)
!$omp parallel
+ block
+ integer :: x
x = 1
!$omp single
!$omp depobj(d(1)) depend(out:x)
stop 3
!$omp end task
!$omp end single
+ end block
!$omp end parallel
!$omp depobj(d(1)) destroy
!$omp depobj(d(2)) destroy