aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanne Blomqvist <jb@gcc.gnu.org>2016-08-29 08:29:16 +0000
committerJanne Blomqvist <jb@gcc.gnu.org>2016-08-29 08:29:16 +0000
commit29f5fdbef5d6390917ff1813d514afc52ac49e71 (patch)
treea0f4be16906bd09717a41d1613c0310c870fe9d2
parent4642ffcd838f86d376c8dbdf601c93e85e984e71 (diff)
PR fortran/77261 Run random_3 testcase only when real(10) is available.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@239817 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/random_3.f9036
2 files changed, 27 insertions, 15 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ae34d886459..13f0282809a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2016-08-29 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/77261
+ * gfortran.dg/random_3.f90: Run testcase only when real(10) is
+ available.
+
2016-08-28 Tom de Vries <tom@codesourcery.com>
PR lto/70955
diff --git a/gcc/testsuite/gfortran.dg/random_3.f90 b/gcc/testsuite/gfortran.dg/random_3.f90
index 8e087c48267..04910002c1f 100644
--- a/gcc/testsuite/gfortran.dg/random_3.f90
+++ b/gcc/testsuite/gfortran.dg/random_3.f90
@@ -1,10 +1,10 @@
! { dg-do run }
! { dg-require-effective-target fortran_large_real }
-! Check that the random_seed for real(10) or real(16) exists and that
-! real(8) and real(10) or real(16) random number generators
+! Check that the random_seed for real(10) exists and that
+! real(8) and real(10) random number generators
! return the same sequence of values.
! Mostly copied from random_2.f90
-program random_4
+program random_3
integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1)
integer, dimension(:), allocatable :: seed
@@ -13,17 +13,23 @@ program random_4
real, parameter :: delta = 1.d-10
integer n
- call random_seed (size=n)
- allocate (seed(n))
- call random_seed (get=seed)
- ! Test both array valued and scalar routines.
- call random_number(r8)
- call random_number (r8(10))
+ ! Run the test only if real(10) is available. With the current
+ ! xorshift1024* PRNG the real(16) generator uses two uint64_t values
+ ! for every real(16) value generated, and hence the sequences won't
+ ! be the same as with real(4,8,10).
+ if (k == 10) then
+ call random_seed (size=n)
+ allocate (seed(n))
+ call random_seed (get=seed)
+ ! Test both array valued and scalar routines.
+ call random_number(r8)
+ call random_number (r8(10))
- ! Reset the seed and get the real(8) values.
- call random_seed (put=seed)
- call random_number(r10)
- call random_number (r10(10))
+ ! Reset the seed and get the real(8) values.
+ call random_seed (put=seed)
+ call random_number(r10)
+ call random_number (r10(10))
- if (any ((r8 - r10) .gt. delta)) call abort
-end program random_4
+ if (any ((r8 - r10) .gt. delta)) call abort
+ end if
+end program random_3