OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [gfortran.dg/] [do_1.f90] - Diff between revs 149 and 154

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
! { dg-do run }
! { dg-do run }
! Program to check corner cases for DO statements.
! Program to check corner cases for DO statements.
program do_1
program do_1
  implicit none
  implicit none
  integer i, j
  integer i, j
  ! limit=HUGE(i), step 1
  ! limit=HUGE(i), step 1
  j = 0
  j = 0
  do i = HUGE(i) - 10, HUGE(i), 1
  do i = HUGE(i) - 10, HUGE(i), 1
    j = j + 1
    j = j + 1
  end do
  end do
  if (j .ne. 11) call abort
  if (j .ne. 11) call abort
  ! limit=HUGE(i), step > 1
  ! limit=HUGE(i), step > 1
  j = 0
  j = 0
  do i = HUGE(i) - 10, HUGE(i), 2
  do i = HUGE(i) - 10, HUGE(i), 2
    j = j + 1
    j = j + 1
  end do
  end do
  if (j .ne. 6) call abort
  if (j .ne. 6) call abort
  j = 0
  j = 0
  do i = HUGE(i) - 9, HUGE(i), 2
  do i = HUGE(i) - 9, HUGE(i), 2
    j = j + 1
    j = j + 1
  end do
  end do
  if (j .ne. 5) call abort
  if (j .ne. 5) call abort
  ! Same again, but unknown loop step
  ! Same again, but unknown loop step
  if (test1(10, 1) .ne. 11) call abort
  if (test1(10, 1) .ne. 11) call abort
  if (test1(10, 2) .ne. 6) call abort
  if (test1(10, 2) .ne. 6) call abort
  if (test1(9, 2) .ne. 5) call abort
  if (test1(9, 2) .ne. 5) call abort
  ! Zero iterations
  ! Zero iterations
  j = 0
  j = 0
  do i = 1, 0, 1
  do i = 1, 0, 1
    j = j + 1
    j = j + 1
  end do
  end do
  if (j .ne. 0) call abort
  if (j .ne. 0) call abort
  j = 0
  j = 0
  do i = 1, 0, 2
  do i = 1, 0, 2
    j = j + 1
    j = j + 1
  end do
  end do
  if (j .ne. 0) call abort
  if (j .ne. 0) call abort
  j = 0
  j = 0
  do i = 1, 2, -1
  do i = 1, 2, -1
    j = j + 1
    j = j + 1
  end do
  end do
  if (j .ne. 0) call abort
  if (j .ne. 0) call abort
  call test2 (0, 1)
  call test2 (0, 1)
  call test2 (0, 2)
  call test2 (0, 2)
  call test2 (2, -1)
  call test2 (2, -1)
  call test2 (2, -2)
  call test2 (2, -2)
  ! Bound near smallest value
  ! Bound near smallest value
  j = 0;
  j = 0;
  do i = -HUGE(i), -HUGE(i), 10
  do i = -HUGE(i), -HUGE(i), 10
    j = j + 1
    j = j + 1
  end do
  end do
  if (j .ne. 1) call abort
  if (j .ne. 1) call abort
contains
contains
! Returns the number of iterations performed.
! Returns the number of iterations performed.
function test1(r, step)
function test1(r, step)
  implicit none
  implicit none
  integer test1, r, step
  integer test1, r, step
  integer k, n
  integer k, n
  k = 0
  k = 0
  do n = HUGE(n) - r, HUGE(n), step
  do n = HUGE(n) - r, HUGE(n), step
    k = k + 1
    k = k + 1
  end do
  end do
  test1 = k
  test1 = k
end function
end function
subroutine test2 (lim, step)
subroutine test2 (lim, step)
  implicit none
  implicit none
  integer lim, step
  integer lim, step
  integer k, n
  integer k, n
  k = 0
  k = 0
  do n = 1, lim, step
  do n = 1, lim, step
    k = k + 1
    k = k + 1
  end do
  end do
  if (k .ne. 0) call abort
  if (k .ne. 0) call abort
end subroutine
end subroutine
end program
end program
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.