52 lines
1.2 KiB
Fortran
52 lines
1.2 KiB
Fortran
! Like array_constructor_6.f90, but check integer(8) iterators.
|
|
! { dg-do run }
|
|
program main
|
|
integer (kind = 8) :: i, l8, u8, step8
|
|
integer (kind = 4) :: l4, step4
|
|
integer (kind = 8), parameter :: big = 10000000000_8
|
|
|
|
l4 = huge (l4)
|
|
u8 = l4 + 10_8
|
|
step4 = 2
|
|
call test ((/ (i, i = l4, u8, step4) /), l4 + 0_8, u8, step4 + 0_8)
|
|
|
|
l8 = big
|
|
u8 = big * 20
|
|
step8 = big
|
|
call test ((/ (i, i = l8, u8, step8) /), l8, u8, step8)
|
|
|
|
u8 = big + 100
|
|
l8 = big
|
|
step4 = -20
|
|
call test ((/ (i, i = u8, l8, step4) /), u8, l8, step4 + 0_8)
|
|
|
|
u8 = big * 40
|
|
l8 = big * 20
|
|
step8 = -big * 2
|
|
call test ((/ (i, i = u8, l8, step8) /), u8, l8, step8)
|
|
|
|
u8 = big
|
|
l4 = big / 100
|
|
step4 = -big / 500
|
|
call test ((/ (i, i = u8, l4, step4) /), u8, l4 + 0_8, step4 + 0_8)
|
|
|
|
u8 = big * 40 + 200
|
|
l4 = 200
|
|
step8 = -big
|
|
call test ((/ (i, i = u8, l4, step8) /), u8, l4 + 0_8, step8)
|
|
contains
|
|
subroutine test (a, l, u, step)
|
|
integer (kind = 8), dimension (:), intent (in) :: a
|
|
integer (kind = 8), intent (in) :: l, u, step
|
|
integer (kind = 8) :: i
|
|
integer :: j
|
|
|
|
j = 1
|
|
do i = l, u, step
|
|
if (a (j) .ne. i) call abort
|
|
j = j + 1
|
|
end do
|
|
if (size (a, 1) .ne. j - 1) call abort
|
|
end subroutine test
|
|
end program main
|