1! { dg-do run }
2program stack
3  implicit none
4  integer id
5  integer ilocs(2)
6  integer omp_get_thread_num, foo
7  call omp_set_num_threads (2)
8!$omp parallel private (id)
9  id = omp_get_thread_num() + 1
10  ilocs(id) = foo()
11!$omp end parallel
12  ! Check that the two threads are not sharing a location for
13  ! the array x in foo()
14  if (ilocs(1) .eq. ilocs(2)) call abort
15end program stack
16
17integer function foo ()
18  implicit none
19  real x(100,100)
20  foo = loc(x)
21end function foo
22