annotate gcc/testsuite/gfortran.dg/minloc_string_1.f90 @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 ! { dg-do run }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 ! Test minloc for strings for different code paths
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 program main
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 implicit none
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 integer, parameter :: n=4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 character(len=4), dimension(n,n) :: c
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 integer, dimension(n,n) :: a
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 integer, dimension(2) :: res1, res2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 real, dimension(n,n) :: r
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 logical, dimension(n,n) :: amask
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 logical(kind=8) :: smask
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 integer :: i,j
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 integer, dimension(n) :: q1, q2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 character(len=4,kind=4), dimension(n,n) :: c4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 character(len=4), dimension(n*n) :: e
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 integer, dimension(n*n) :: f
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 logical, dimension(n*n) :: cmask
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 call random_number (r)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 a = int(r*100)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 do j=1,n
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 do i=1,n
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 write (unit=c(i,j),fmt='(I4.4)') a(i,j)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 write (unit=c4(i,j),fmt='(I4.4)') a(i,j)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 end do
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 end do
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 res1 = minloc(c)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 res2 = minloc(a)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 if (any(res1 /= res2)) STOP 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 res1 = minloc(c4)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 if (any(res1 /= res2)) STOP 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 amask = a < 50
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 res1 = minloc(c,mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 res2 = minloc(a,mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 if (any(res1 /= res2)) STOP 3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 amask = .false.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 res1 = minloc(c,mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 if (any(res1 /= 0)) STOP 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 amask(2,3) = .true.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 res1 = minloc(c,mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 if (any(res1 /= [2,3])) STOP 5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 res1 = minloc(c,mask=.false.)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 if (any(res1 /= 0)) STOP 6
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 res2 = minloc(a)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 res1 = minloc(c,mask=.true.)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 if (any(res1 /= res2)) STOP 7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 q1 = minloc(c, dim=1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 q2 = minloc(a, dim=1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 if (any(q1 /= q2)) STOP 8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 q1 = minloc(c, dim=2)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 q2 = minloc(a, dim=2)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 if (any(q1 /= q2)) STOP 9
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 q1 = minloc(c, dim=1, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 q2 = minloc(a, dim=1, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 if (any(q1 /= q2)) STOP 10
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 q1 = minloc(c, dim=2, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 q2 = minloc(a, dim=2, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 if (any(q1 /= q2)) STOP 11
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 amask = a < 50
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 q1 = minloc(c, dim=1, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 q2 = minloc(a, dim=1, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 if (any(q1 /= q2)) STOP 12
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 q1 = minloc(c, dim=2, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 q2 = minloc(a, dim=2, mask=amask)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 if (any(q1 /= q2)) STOP 13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 e = reshape(c, shape(e))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 f = reshape(a, shape(f))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 if (minloc(e,dim=1) /= minloc(f,dim=1)) STOP 14
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 cmask = .false.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 if (minloc(e,dim=1,mask=cmask) /= 0) STOP 15
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 cmask = f > 50
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 if ( minloc(e, dim=1, mask=cmask) /= minloc (f, dim=1, mask=cmask)) STOP 16
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 end program main