! { dg-do run } program stack 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)) stop 1 end program stack integer function foo () implicit none real x(100,100) foo = loc(x) end function foo