1! Like array_constructor_6.f90, but check integer(8) iterators.
2! { dg-do run }
3program main
4  integer (kind = 8) :: i, l8, u8, step8
5  integer (kind = 4) :: l4, step4
6  integer (kind = 8), parameter :: big = 10000000000_8
7
8  l4 = huge (l4)
9  u8 = l4 + 10_8
10  step4 = 2
11  call test ((/ (i, i = l4, u8, step4) /), l4 + 0_8, u8, step4 + 0_8)
12
13  l8 = big
14  u8 = big * 20
15  step8 = big
16  call test ((/ (i, i = l8, u8, step8) /), l8, u8, step8)
17
18  u8 = big + 100
19  l8 = big
20  step4 = -20
21  call test ((/ (i, i = u8, l8, step4) /), u8, l8, step4 + 0_8)
22
23  u8 = big * 40
24  l8 = big * 20
25  step8 = -big * 2
26  call test ((/ (i, i = u8, l8, step8) /), u8, l8, step8)
27
28  u8 = big
29  l4 = big / 100
30  step4 = -big / 500
31  call test ((/ (i, i = u8, l4, step4) /), u8, l4 + 0_8, step4 + 0_8)
32
33  u8 = big * 40 + 200
34  l4 = 200
35  step8 = -big
36  call test ((/ (i, i = u8, l4, step8) /), u8, l4 + 0_8, step8)
37contains
38  subroutine test (a, l, u, step)
39    integer (kind = 8), dimension (:), intent (in) :: a
40    integer (kind = 8), intent (in) :: l, u, step
41    integer (kind = 8) :: i
42    integer :: j
43
44    j = 1
45    do i = l, u, step
46      if (a (j) .ne. i) call abort
47      j = j + 1
48    end do
49    if (size (a, 1) .ne. j - 1) call abort
50  end subroutine test
51end program main
52