URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gfortran.dg/] [do_1.f90] - Rev 816
Compare with Previous | Blame | View Log
! { dg-do run }
! Program to check corner cases for DO statements.
program do_1
implicit none
integer i, j
! limit=HUGE(i), step 1
j = 0
do i = HUGE(i) - 10, HUGE(i), 1
j = j + 1
end do
if (j .ne. 11) call abort
! limit=HUGE(i), step > 1
j = 0
do i = HUGE(i) - 10, HUGE(i), 2
j = j + 1
end do
if (j .ne. 6) call abort
j = 0
do i = HUGE(i) - 9, HUGE(i), 2
j = j + 1
end do
if (j .ne. 5) call abort
! Same again, but unknown loop step
if (test1(10, 1) .ne. 11) call abort
if (test1(10, 2) .ne. 6) call abort
if (test1(9, 2) .ne. 5) call abort
! Zero iterations
j = 0
do i = 1, 0, 1
j = j + 1
end do
if (j .ne. 0) call abort
j = 0
do i = 1, 0, 2
j = j + 1
end do
if (j .ne. 0) call abort
j = 0
do i = 1, 2, -1
j = j + 1
end do
if (j .ne. 0) call abort
call test2 (0, 1)
call test2 (0, 2)
call test2 (2, -1)
call test2 (2, -2)
! Bound near smallest value
j = 0;
do i = -HUGE(i), -HUGE(i), 10
j = j + 1
end do
if (j .ne. 1) call abort
contains
! Returns the number of iterations performed.
function test1(r, step)
implicit none
integer test1, r, step
integer k, n
k = 0
do n = HUGE(n) - r, HUGE(n), step
k = k + 1
end do
test1 = k
end function
subroutine test2 (lim, step)
implicit none
integer lim, step
integer k, n
k = 0
do n = 1, lim, step
k = k + 1
end do
if (k .ne. 0) call abort
end subroutine
end program