Fix multiple issue in the testcase allocate-1.f90.
1. Thomas reported in https://gcc.gnu.org/pipermail/gcc-patches/2022-January/589039.html that this testcase is randomly failing. The problem was fixed pool size which was exhausted when there were a lot of threads. Fixed it by removing pool_size trait which causes default pool size to be used which should be big enough. 2. Array indices have been changed to check the last element in the array. 3. Remove a redundant assignment and move some code to better match C testcase. libgomp/ChangeLog: * testsuite/libgomp.fortran/allocate-1.f90: Remove pool_size trait. Test last index in w and v array. Remove redundant assignment to V(1). Move alignment checks at the end of parallel region.
This commit is contained in:
parent
4602a494e9
commit
7c2ac3cebd
1 changed files with 12 additions and 14 deletions
|
@ -74,31 +74,30 @@ subroutine foo (x, p, q, h, fl)
|
|||
if (x /= 42) then
|
||||
stop 1
|
||||
end if
|
||||
v(1) = 7
|
||||
if ( (and(fl, 2) /= 0) .and. &
|
||||
((is_64bit_aligned(x) == 0) .or. &
|
||||
(is_64bit_aligned(y) == 0) .or. &
|
||||
(is_64bit_aligned(v(1)) == 0))) then
|
||||
stop 2
|
||||
end if
|
||||
|
||||
!$omp barrier
|
||||
y = 1;
|
||||
x = x + 1
|
||||
v(1) = 7
|
||||
v(41) = 8
|
||||
v(42) = 8
|
||||
!$omp barrier
|
||||
if (x /= 43 .or. y /= 1) then
|
||||
stop 3
|
||||
end if
|
||||
if (v(1) /= 7 .or. v(41) /= 8) then
|
||||
if (v(1) /= 7 .or. v(42) /= 8) then
|
||||
stop 4
|
||||
end if
|
||||
if ( (and(fl, 2) /= 0) .and. &
|
||||
((is_64bit_aligned(x) == 0) .or. &
|
||||
(is_64bit_aligned(y) == 0) .or. &
|
||||
(is_64bit_aligned(v(1)) == 0))) then
|
||||
stop 2
|
||||
end if
|
||||
!$omp end parallel
|
||||
!$omp teams
|
||||
!$omp parallel private (y) firstprivate (x, w) allocate (h: x, y, w)
|
||||
|
||||
if (x /= 42 .or. w(17) /= 17 .or. w(41) /= 41) then
|
||||
if (x /= 42 .or. w(17) /= 17 .or. w(42) /= 42) then
|
||||
stop 5
|
||||
end if
|
||||
!$omp barrier
|
||||
|
@ -314,13 +313,12 @@ program main
|
|||
integer, dimension(4) :: p
|
||||
integer, dimension(4) :: q
|
||||
|
||||
type (omp_alloctrait) :: traits(3)
|
||||
type (omp_alloctrait) :: traits(2)
|
||||
integer (omp_allocator_handle_kind) :: a
|
||||
|
||||
traits = [omp_alloctrait (omp_atk_alignment, 64), &
|
||||
omp_alloctrait (omp_atk_fallback, omp_atv_null_fb), &
|
||||
omp_alloctrait (omp_atk_pool_size, 8192)]
|
||||
a = omp_init_allocator (omp_default_mem_space, 3, traits)
|
||||
omp_alloctrait (omp_atk_fallback, omp_atv_null_fb)]
|
||||
a = omp_init_allocator (omp_default_mem_space, 2, traits)
|
||||
if (a == omp_null_allocator) stop 1
|
||||
|
||||
call omp_set_default_allocator (omp_default_mem_alloc);
|
||||
|
|
Loading…
Add table
Reference in a new issue