URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.fortran/] [threadprivate2.f90] - Rev 763
Go to most recent revision | Compare with Previous | Blame | View Log
! { dg-do run }! { dg-require-effective-target tls_runtime }module threadprivate2integer, dimension(:,:), allocatable :: foo!$omp threadprivate (foo)end module threadprivate2use omp_libuse threadprivate2integer, dimension(:), pointer :: bar1integer, dimension(2), target :: bar2common /thrc/ bar1, bar2!$omp threadprivate (/thrc/)integer, dimension(:), pointer, save :: bar3 => NULL()!$omp threadprivate (bar3)logical :: ltype ttinteger :: ainteger :: b = 32end type tttype (tt), save :: baz!$omp threadprivate (baz)l = .false.call omp_set_dynamic (.false.)call omp_set_num_threads (4)!$omp parallel num_threads (4) reduction (.or.:l)l = allocated (foo)allocate (foo (6 + omp_get_thread_num (), 3))l = l.or..not.allocated (foo)l = l.or.size (foo).ne.(18 + 3 * omp_get_thread_num ())foo = omp_get_thread_num () + 1bar2 = omp_get_thread_num ()l = l.or.associated (bar3)bar1 => bar2l = l.or..not.associated (bar1)l = l.or..not.associated (bar1, bar2)l = l.or.any (bar1.ne.omp_get_thread_num ())nullify (bar1)l = l.or.associated (bar1)allocate (bar3 (4))l = l.or..not.associated (bar3)bar3 = omp_get_thread_num () - 2l = l.or.(baz%b.ne.32)baz%a = omp_get_thread_num () * 2baz%b = omp_get_thread_num () * 2 + 1!$omp end parallelif (l) call abortif (.not.allocated (foo)) call abortif (size (foo).ne.18) call abortif (any (foo.ne.1)) call abortif (associated (bar1)) call abortif (.not.associated (bar3)) call abortif (any (bar3 .ne. -2)) call abortdeallocate (bar3)if (associated (bar3)) call abort!$omp parallel num_threads (4) reduction (.or.:l)l = l.or..not.allocated (foo)l = l.or.size (foo).ne.(18 + 3 * omp_get_thread_num ())l = l.or.any (foo.ne.(omp_get_thread_num () + 1))if (omp_get_thread_num () .ne. 0) thendeallocate (foo)l = l.or.allocated (foo)end ifl = l.or.associated (bar1)if (omp_get_thread_num () .ne. 0) thenl = l.or..not.associated (bar3)l = l.or.any (bar3 .ne. omp_get_thread_num () - 2)deallocate (bar3)end ifl = l.or.associated (bar3)l = l.or.(baz%a.ne.(omp_get_thread_num () * 2))l = l.or.(baz%b.ne.(omp_get_thread_num () * 2 + 1))!$omp end parallelif (l) call abortif (.not.allocated (foo)) call abortif (size (foo).ne.18) call abortif (any (foo.ne.1)) call abortdeallocate (foo)if (allocated (foo)) call abortend! { dg-final { cleanup-modules "threadprivate2" } }
Go to most recent revision | Compare with Previous | Blame | View Log
