aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHafiz Abid Qadeer <abidh@codesourcery.com>2022-01-31 19:02:14 +0000
committerHafiz Abid Qadeer <abidh@codesourcery.com>2022-03-10 18:43:50 +0000
commit7c2ac3cebd5d41441e38142fca7ba5206f0d0027 (patch)
treef6e255d60d1c958bb888101ed1b34fcbccff7232
parent4602a494e94835f693a9230adb69ce92249ebf15 (diff)
downloadgcc-7c2ac3cebd5d41441e38142fca7ba5206f0d0027.zip
gcc-7c2ac3cebd5d41441e38142fca7ba5206f0d0027.tar.gz
gcc-7c2ac3cebd5d41441e38142fca7ba5206f0d0027.tar.bz2
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.
-rw-r--r--libgomp/testsuite/libgomp.fortran/allocate-1.f9026
1 files changed, 12 insertions, 14 deletions
diff --git a/libgomp/testsuite/libgomp.fortran/allocate-1.f90 b/libgomp/testsuite/libgomp.fortran/allocate-1.f90
index 0a31d35..1547d2b 100644
--- a/libgomp/testsuite/libgomp.fortran/allocate-1.f90
+++ b/libgomp/testsuite/libgomp.fortran/allocate-1.f90
@@ -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);