PR fortran/77261 Run random_3 testcase only when real(10) is available.
authorJanne Blomqvist <jb@gcc.gnu.org>
Mon, 29 Aug 2016 08:29:16 +0000 (11:29 +0300)
committerJanne Blomqvist <jb@gcc.gnu.org>
Mon, 29 Aug 2016 08:29:16 +0000 (11:29 +0300)
From-SVN: r239817

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/random_3.f90

index ae34d88645980a07cf89d5909e67488a55ef8f7c..13f0282809ac630282a2a2aa6679360c87bc27cf 100644 (file)
@@ -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
index 8e087c4826771ff6348e26710f93f5df32363027..04910002c1fc4e860514bd3222701d6b80ce7ac2 100644 (file)
@@ -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