1! { dg-do run }
2program main
3   character(len=*), parameter :: f='(3L1)'
4   character(len=*), parameter :: g='(3I1)'
5   real, dimension(3,3) :: a
6   logical(kind=1), dimension(3,3) :: m1
7   logical(kind=2), dimension(3,3) :: m2
8   logical(kind=4), dimension(3,3) :: m4
9   logical(kind=8), dimension(3,3) :: m8
10   character(len=3) :: res
11   data a /-1.0, -2.0, -3.0, 2.0, 1.0, -2.1, 1.0, 2.0, 3.0 /
12
13   m1 = a > 0
14   m2 = a > 0
15   m4 = a > 0
16   m8 = a > 0
17
18   write (unit=res,fmt=f) any(m1,dim=1)
19   if (res /= 'FTT') call abort
20   write (unit=res,fmt=f) any(m2,dim=1)
21   if (res /= 'FTT') call abort
22   write (unit=res,fmt=f) any(m4,dim=1)
23   if (res /= 'FTT') call abort
24   write (unit=res,fmt=f) any(m8,dim=1)
25   if (res /= 'FTT') call abort
26   write (unit=res,fmt=f) any(m1,dim=2)
27   if (res /= 'TTT') call abort
28   write (unit=res,fmt=f) any(m2,dim=2)
29   if (res /= 'TTT') call abort
30   write (unit=res,fmt=f) any(m4,dim=2)
31   if (res /= 'TTT') call abort
32   write (unit=res,fmt=f) any(m8,dim=2)
33   if (res /= 'TTT') call abort
34
35   write (unit=res,fmt=f) all(m1,dim=1)
36   if (res /= 'FFT') call abort
37   write (unit=res,fmt=f) all(m2,dim=1)
38   if (res /= 'FFT') call abort
39   write (unit=res,fmt=f) all(m4,dim=1)
40   if (res /= 'FFT') call abort
41   write (unit=res,fmt=f) all(m8,dim=1)
42   if (res /= 'FFT') call abort
43
44   write (unit=res,fmt=f) all(m1,dim=2)
45   if (res /= 'FFF') call abort
46   write (unit=res,fmt=f) all(m2,dim=2)
47   if (res /= 'FFF') call abort
48   write (unit=res,fmt=f) all(m4,dim=2)
49   if (res /= 'FFF') call abort
50   write (unit=res,fmt=f) all(m8,dim=2)
51   if (res /= 'FFF') call abort
52
53   write (unit=res,fmt=g) count(m1,dim=1)
54   if (res /= '023') call abort
55   write (unit=res,fmt=g) count(m2,dim=1)
56   if (res /= '023') call abort
57   write (unit=res,fmt=g) count(m4,dim=1)
58   if (res /= '023') call abort
59   write (unit=res,fmt=g) count(m8,dim=1)
60   if (res /= '023') call abort
61
62   write (unit=res,fmt=g) count(m1,dim=2)
63   if (res /= '221') call abort
64   write (unit=res,fmt=g) count(m2,dim=2)
65   if (res /= '221') call abort
66   write (unit=res,fmt=g) count(m4,dim=2)
67   if (res /= '221') call abort
68   write (unit=res,fmt=g) count(m8,dim=2)
69   if (res /= '221') call abort
70
71end program main
72