PR ipa/83051
[official-gcc.git] / gcc / testsuite / gfortran.dg / maxval_char_3.f90
blob3fd5aa559d4302c4383f443f61b04b39c4a75f44
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 :: zero = achar(0) // achar(0) // achar(0) // achar(0) // achar(0) // achar(0)
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 = maxval(a,dim=1)
20 write (unit=r2,fmt='(I6.6)') maxval(v,dim=1)
21 if (any (r1 /= r2)) call abort
22 r1 = 'x'
23 write (unit=r1,fmt='(I6.6)') maxval(v,dim=1)
24 if (any (r1 /= r2)) call abort
26 r1 = 'y'
27 r1 = maxval(a,dim=2)
28 write (unit=r2,fmt='(I6.6)') maxval(v,dim=2)
29 if (any (r1 /= r2)) call abort
30 r1 = 'z'
31 write (unit=r1,fmt='(I6.6)') maxval(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 = maxval(a_alloc,dim=1)
37 if (ret(1) /= zero) call abort
39 r1 = 'qq'
40 r1 = maxval(a, dim=1, mask=a>"000200");
41 if (any(r1 /= zero .neqv. maxval(v,dim=1, mask=v>200) > 0)) call abort
42 if (any(maxval(a, dim=1, mask=a>"000200") /= zero .neqv. maxval(v,dim=1, mask=v>200) > 0)) call abort
44 r1 = 'rr'
45 r1 = maxval(a, dim=2, mask=a>"000200");
46 if (any(r1 /= zero .neqv. maxval(v,dim=2, mask=v>200) > 0)) call abort
47 if (any(maxval(a, dim=2, mask=a>"000200") /= zero .neqv. maxval(v,dim=2, mask=v>200) > 0)) call abort
49 mask = .true.
50 forall (i=1:n)
51 mask(i,i) = .false.
52 end forall
54 r1 = 'aa'
55 r1 = maxval(a, dim=1, mask=mask)
56 write(unit=r2,fmt='(I6.6)') maxval(v,dim=1, mask=mask)
57 if (any(r1 /= r2)) call abort
59 r1 = 'xyz'
60 smask = .true.
61 r1 = maxval(a, dim=1, mask=smask)
62 write (unit=r2,fmt='(I6.6)') maxval(v,dim=1)
63 if (any (r1 /= r2)) call abort
65 smask = .false.
66 r1 = 'foobar'
67 r1 = maxval(a, dim=1, mask=smask)
68 if (any(r1 /= zero)) call abort
69 end program main