PR ipa/83051
[official-gcc.git] / gcc / testsuite / gfortran.dg / minval_char_3.f90
blobeea9aa6cd4c93071ab407bf77f551c4feb69cfb4
1 ! { dg-do run }
2 program main
3 implicit none
4 integer, parameter :: n=5
5 character(len=6), dimension(n,n) :: a
6 integer, dimension(n,n) :: v
7 character(len=6), dimension(n) :: r1, r2
8 character(len=6), dimension(:,:), allocatable :: a_alloc
9 integer, dimension(:,:), allocatable :: v_alloc
10 character(len=6), parameter :: all_full = achar(255) // achar(255) // achar(255) // achar(255) // achar(255) // achar(255)
11 integer :: i
12 character(len=6),dimension(1) :: ret
13 logical, dimension(n,n) :: mask
14 logical :: smask
16 v = reshape([(i*i+200-17*i,i=1,n*n)],shape(v))
17 write (unit=a,fmt='(I6.6)') (i*i+200-17*i,i=1,n*n)
19 r1 = minval(a,dim=1)
20 write (unit=r2,fmt='(I6.6)') minval(v,dim=1)
21 if (any (r1 /= r2)) call abort
22 r1 = 'x'
23 write (unit=r1,fmt='(I6.6)') minval(v,dim=1)
24 if (any (r1 /= r2)) call abort
26 r1 = 'y'
27 r1 = minval(a,dim=2)
28 write (unit=r2,fmt='(I6.6)') minval(v,dim=2)
29 if (any (r1 /= r2)) call abort
30 r1 = 'z'
31 write (unit=r1,fmt='(I6.6)') minval(v,dim=2)
32 if (any (r1 /= r2)) call abort
34 allocate (a_alloc(0,1), v_alloc(0,1))
35 ret = 'what'
36 ret = minval(a_alloc,dim=1)
37 if (ret(1) /= all_full) call abort
39 r1 = 'qq'
40 r1 = minval(a, dim=1, mask=a>"000200");
41 if (any(r1 /= all_full .neqv. minval(v,dim=1, mask=v>200) < 1000)) call abort
42 if (any(minval(a, dim=1, mask=a>"000200") /= all_full .neqv. minval(v,dim=1, mask=v>200) < 1000)) call abort
44 r1 = 'rr'
45 r1 = minval(a, dim=2, mask=a>"000200");
46 if (any(r1 /= all_full .neqv. minval(v,dim=2, mask=v>200) < 1000)) call abort
47 if (any(minval(a, dim=2, mask=a>"000200") /= all_full .neqv. minval(v,dim=2, mask=v>200) < 1000)) call abort
49 mask = .true.
50 forall (i=1:n)
51 mask(i,i) = .false.
52 end forall
54 r1 = 'aa'
55 r1 = minval(a, dim=1, mask=mask)
56 write(unit=r2,fmt='(I6.6)') minval(v,dim=1, mask=mask)
57 if (any(r1 /= r2)) call abort
59 r1 = 'xyz'
60 smask = .true.
61 r1 = minval(a, dim=1, mask=smask)
62 write (unit=r2,fmt='(I6.6)') minval(v,dim=1)
63 if (any (r1 /= r2)) call abort
65 smask = .false.
66 r1 = 'foobar'
67 r1 = minval(a, dim=1, mask=smask)
68 if (any(r1 /= all_full)) call abort
69 end program main