aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/unsigned_33.f90
blob: 7ff11e6c9bbc19954494f11a93cae9961b7e9eac (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
! { dg-do run }
! { dg-options "-funsigned" }
! Check compile-time simplification of FINDLOC
! Mostly lifted from findloc_5.f90.
program memain
  implicit none
  call test1
  call test2
contains
  subroutine test1
    unsigned, dimension(4) :: a1
    integer :: i1, i2, i3, i4
    unsigned, dimension(2,2) :: a, b
    integer, dimension(2) :: t8, t9, t10
    unsigned, dimension(2,3) :: c
    integer, dimension(3) :: t13
    integer, dimension(2) :: t14

    a1 = [1u,  2u,  3u,  1u]
    i1 = findloc(a1, 1u, dim=1)
    if (i1 /= 1) stop 1
    i2 = findloc(a1, 2u, dim=1)
    if (i2 /= 2) stop 2
    i3 = findloc(a1,3u, dim=1)
    if (i3 /= 3) stop 3
    i4 = findloc(a1, 1u, dim=1, back=.true.)
    if (i4 /= 4) stop 4
    a = reshape([1u,2u,3u,4u], [2,2])
    b = reshape([1u,2u,1u,2u], [2,2])
    t8 = findloc(a,5u)
    if (any(t8 /= [0,0])) stop 8
    t9 = findloc(a,5u,back=.true.)
    if (any(t9 /= [0,0])) stop 9
    c = reshape([1u,2u,2u,2u,-9u,6u], [2,3])
    t13 = findloc (c, value=2u, dim=1)
    if (any(t13 /= [2,1,0])) stop 13
    t14 = findloc (c, value=2u, dim=2)
    if (any(t14 /= [2,1])) stop 14
  end subroutine test1
  subroutine test2
    unsigned,  dimension(4),  parameter :: a1 = [1u,  2u,  3u,  1u]
    integer,  parameter :: i1 = findloc(a1, 1u, dim=1)
    integer,  parameter :: i2 = findloc(a1, 2u, dim=1)
    integer,  parameter :: i3 = findloc(a1, 3u, dim=1)
    integer,  parameter :: i4 = findloc(a1, 1u, dim=1, back=.true.)
    integer,  parameter :: i0 = findloc(a1, -1u, dim=1)
    logical,  dimension(4),  parameter :: msk = [.false., .true., .true., .true.]
    integer,  parameter :: i4a = findloc(a1, 1u, dim=1, mask=msk)
    integer,  parameter :: i4b = findloc(a1, 1u, dim=1, mask=msk, back=.true.)
    unsigned, dimension(2,2), parameter :: a = reshape([1u,2u,3u,4u], [2,2]), &
       b =  reshape([1u,2u,1u,2u], [2,2])
    integer, parameter, dimension(2) :: t8 = findloc(a, 5u), t9 = findloc(a, 5u, back=.true.)
    integer, parameter, dimension(2) :: t10= findloc(a, 2u), t11= findloc(a, 2u, back=.true.)
    logical, dimension(2,2), parameter :: lo = reshape([.true., .false., .true., .true. ], [2,2])
    integer, parameter, dimension(2) :: t12 = findloc(b,2u, mask=lo)

    unsigned, dimension(2,3), parameter :: c = reshape([1u,2u,2u,2u,-9u,6u], [2,3])
    integer, parameter, dimension(3) :: t13 = findloc(c, value=2u, dim=1)
    integer, parameter, dimension(2) :: t14 = findloc(c, value=2u, dim=2)

    if (i1 /= 1) stop 1
    if (i2 /= 2) stop 2
    if (i3 /= 3) stop 3
    if (i4 /= 4) stop 4
    if (i0 /= 0) stop 5
    if (i4a /= 4) stop 6
    if (i4b /= 4) stop 7
    if (any(t8 /= [0,0])) stop 8
    if (any(t9 /= [0,0])) stop 9
    if (any(t10 /= [2,1])) stop 10
    if (any(t11 /= [2,1])) stop 11
    if (any(t12 /= [2,2])) stop 12
    if (any(t13 /= [2,1,0])) stop 13
    if (any(t14 /= [2,1])) stop 14
  end subroutine test2
end program memain