summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/findloc_6.f90
blob: 6fa72d84c65f59ac69188abb0810f35a69326fae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
! { dg-do run }
! Test different code paths for findloc with scalar result.

program main
  integer, dimension(0:5) :: a = [1,2,3,1,2,3]
  logical, dimension(6) :: mask = [.false.,.false.,.false.,.true.,.true.,.true.]
  logical, dimension(6) :: mask2
  logical :: true, false
  character(len=2), dimension(6) :: ch = ["AA", "BB", "CC", "AA", "BB", "CC"]

  true = .true.
  false = .false.
  mask2 = .not. mask

! Tests without mask

  if (findloc(a,2,dim=1,back=false) /= 2) stop 1
  if (findloc(a,2,dim=1,back=.false.) /= 2) stop 2
  if (findloc(a,2,dim=1) /= 2) stop 3
  if (findloc(a,2,dim=1,back=.true.) /= 5) stop 4
  if (findloc(a,2,dim=1,back=true) /= 5) stop 5

! Test with array mask
  if (findloc(a,2,dim=1,mask=mask) /= 5) stop 6
  if (findloc(a,2,dim=1,mask=mask,back=.true.) /= 5) stop 7
  if (findloc(a,2,dim=1,mask=mask,back=.false.) /= 5) stop 8
  if (findloc(a,2,dim=1,mask=mask2) /= 2) stop 9
  if (findloc(a,2,dim=1,mask=mask2,back=.true.) /= 2) stop 10
  if (findloc(a,2,dim=1,mask=mask2,back=true) /= 2) stop 11

! Test with scalar mask

  if (findloc(a,2,dim=1,mask=.true.) /= 2) stop 12
  if (findloc(a,2,dim=1,mask=.false.) /= 0) stop 13
  if (findloc(a,2,dim=1,mask=true) /= 2) stop 14
  if (findloc(a,2,dim=1,mask=false) /= 0) stop 15

! Some character tests

  if (findloc(ch,"AA",dim=1) /= 1) stop 16
  if (findloc(ch,"AA",dim=1,mask=mask) /= 4) stop 17
  if (findloc(ch,"AA",dim=1,back=.true.) /= 4) stop 18
  if (findloc(ch,"AA",dim=1,mask=mask2,back=.true.) /= 1) stop 19

! Nothing to be found here...
  if (findloc(ch,"DD",dim=1) /= 0) stop 20
  if (findloc(a,4,dim=1) /= 0) stop 21

! Finally, character tests with a scalar mask.

  if (findloc(ch,"CC ",dim=1,mask=true) /= 3) stop 22
  if (findloc(ch,"CC ",dim=1,mask=false) /= 0) stop 23
end program main