diff gcc/testsuite/gfortran.dg/minval_char_4.f90 @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gfortran.dg/minval_char_4.f90	Thu Oct 25 07:37:49 2018 +0900
@@ -0,0 +1,72 @@
+! { dg-do run }
+program main
+  implicit none
+  integer, parameter :: n=5
+  character(len=6,kind=4), dimension(n,n) :: a
+  integer, dimension(n,n) :: v
+  character(len=6,kind=4), dimension(n) :: r1, r2
+  character(len=6,kind=4), dimension(:,:), allocatable :: a_alloc
+  integer, dimension(:,:), allocatable :: v_alloc
+  character(len=6,kind=4):: all_full
+  integer :: i
+  character(len=6,kind=4),dimension(1) :: ret
+  logical, dimension(n,n) :: mask
+  logical :: smask
+  integer(kind=4), dimension(6) :: kmin
+
+  kmin = -1
+  all_full = transfer(kmin,all_full)
+  v = reshape([(i*i+200-17*i,i=1,n*n)],shape(v))
+  write (unit=a,fmt='(I6.6)') (i*i+200-17*i,i=1,n*n)
+
+  r1 =  minval(a,dim=1)
+  write (unit=r2,fmt='(I6.6)') minval(v,dim=1)
+  if (any (r1 /= r2)) STOP 1
+  r1 = 4_'x'
+  write (unit=r1,fmt='(I6.6)') minval(v,dim=1)
+  if (any (r1 /= r2)) STOP 2
+
+  r1 = 4_'y'
+  r1 =  minval(a,dim=2)
+  write (unit=r2,fmt='(I6.6)') minval(v,dim=2)
+  if (any (r1 /= r2)) STOP 3
+  r1 = 4_'z'
+  write (unit=r1,fmt='(I6.6)') minval(v,dim=2)
+  if (any (r1 /= r2)) STOP 4
+
+  allocate (a_alloc(0,1), v_alloc(0,1))
+  ret = 4_'what'
+  ret = minval(a_alloc,dim=1)
+  if (ret(1) /= all_full) STOP 5
+  
+  r1 = 4_'qq'
+  r1 = minval(a, dim=1, mask=a>4_"000200");
+  if (any(r1 /= all_full .neqv. minval(v,dim=1, mask=v>200) < 1000)) STOP 6
+  if (any(minval(a, dim=1, mask=a>4_"000200") /= all_full .neqv. minval(v,dim=1, mask=v>200) < 1000)) STOP 7
+
+  r1 = 4_'rr'
+  r1 = minval(a, dim=2, mask=a>4_"000200");
+  if (any(r1 /= all_full .neqv. minval(v,dim=2, mask=v>200) < 1000)) STOP 8
+  if (any(minval(a, dim=2, mask=a>4_"000200") /= all_full .neqv. minval(v,dim=2, mask=v>200) < 1000)) STOP 9
+
+  mask = .true.
+  forall (i=1:n)
+     mask(i,i) = .false.
+  end forall
+
+  r1 = 4_'aa'
+  r1 = minval(a, dim=1, mask=mask)
+  write(unit=r2,fmt='(I6.6)') minval(v,dim=1, mask=mask)
+  if (any(r1 /= r2)) STOP 10
+
+  r1 = 4_'xyz'
+  smask = .true.
+  r1 = minval(a, dim=1, mask=smask)
+  write (unit=r2,fmt='(I6.6)') minval(v,dim=1)
+  if (any (r1 /= r2)) STOP 11
+
+  smask = .false.
+  r1 = 4_'foobar'
+  r1 = minval(a, dim=1, mask=smask)
+  if (any(r1 /= all_full)) STOP 12
+end program main