2007-09-27 15:39:26 +02:00
|
|
|
! { dg-do run }
|
2007-09-28 15:22:18 +02:00
|
|
|
program stack
|
2007-08-26 20:48:10 +02:00
|
|
|
implicit none
|
|
|
|
integer id
|
|
|
|
integer ilocs(2)
|
|
|
|
integer omp_get_thread_num, foo
|
|
|
|
call omp_set_num_threads (2)
|
|
|
|
!$omp parallel private (id)
|
|
|
|
id = omp_get_thread_num() + 1
|
|
|
|
ilocs(id) = foo()
|
|
|
|
!$omp end parallel
|
|
|
|
! Check that the two threads are not sharing a location for
|
|
|
|
! the array x in foo()
|
|
|
|
if (ilocs(1) .eq. ilocs(2)) call abort
|
2007-09-28 15:22:18 +02:00
|
|
|
end program stack
|
2007-08-26 20:48:10 +02:00
|
|
|
|
|
|
|
integer function foo ()
|
|
|
|
implicit none
|
|
|
|
real x(100,100)
|
|
|
|
foo = loc(x)
|
|
|
|
end function foo
|