aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/unsigned_34.f90
blob: 238f11a6e58832375c3e5bbe07165c9ad1cf59c6 (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 }
! { dg-options "-funsigned" }
program memain
  implicit none
  call test1
  call test2
contains
  subroutine test1
    unsigned, dimension(3) :: v
    unsigned :: t1, t2
    unsigned(2), dimension(3,3) :: w
    integer, dimension(3,3) :: j
    integer :: di
    v = [1u, 2u, 4294967286u]
    t1 = maxval(v,dim=1) 
    if (t1 /= 4294967286u) error stop 1
    t2 = minval(v,dim=1)
    if (t2 /= 1u) error stop 2
    call check_empty(0)
    j = reshape([1,2,3,65534,5,1,65000,2,1],[3,3])
    w = uint(j,2)
    if (any(maxval(j,dim=1) /= int(maxval(w,dim=1)))) error stop 5
    di = 2
    if (any(maxval(j,dim=di) /= int(maxval(w,dim=di)))) error stop 6
  end subroutine test1
  subroutine check_empty(n)
    integer, intent(in) :: n
    unsigned, dimension(n) :: empty
    if (minval(empty,dim=1) /= 4294967295u) error stop 3
    if (maxval(empty,dim=1) /= 0u) error stop 4
  end subroutine check_empty
  subroutine test2
    integer :: i
    unsigned, dimension(3), parameter :: v = [1u, 2u, 4294967286u]
    unsigned, parameter :: t1 = maxval(v,dim=1)
    unsigned, parameter :: t2 = minval(v,dim=1)
    unsigned, parameter, dimension(2:1) :: empty = [(0u,i=2,1)]
    unsigned, parameter :: t3 = minval(empty,1)
    unsigned, parameter :: t4 = maxval(empty,1)
    unsigned(2), parameter, dimension(2:1,2:1) :: e2 = reshape(empty,[0,0])
    integer, parameter, dimension(3,3) :: j = reshape([1,2,3,65534,5,1,65000,2,1],[3,3])
    integer, parameter, dimension(3) :: maxvj = maxval(j,1), minvj=minval(j,2)
    unsigned, parameter, dimension(3,3) :: w = uint(j,2)
    unsigned(2), parameter, dimension(3) :: maxvw = maxval(w,1), minvw = minval(w,2)

    if (t1 /= 4294967286u) error stop 11
    if (t2 /= 1u) error stop 12
    if (t3 /= 4294967295u) error stop 13
    if (t4 /= 0u) error stop 14
    if (any(maxvj /= int(maxvw))) error stop 15
    if (any(minvj /= int(minvw))) error stop 16
  end subroutine test2
end program memain