blob: fc4992bd6692877c49019544cf7c36f0c7016f14 [file] [log] [blame]
! { dg-do run }
! { dg-options "-std=legacy" }
!
! Series of routines for testing a loc() implementation
program test
common /errors/errors(12)
integer i
logical errors
errors = .false.
call testloc
do i=1,12
if (errors(i)) then
STOP 1
endif
end do
end program test
! Test loc
subroutine testloc
common /errors/errors(12)
logical errors
integer, parameter :: n = 9
integer, parameter :: m = 10
integer, parameter :: o = 11
integer :: offset
integer :: i,j,k,intsize,realsize,dblsize,chsize,ch8size
integer itarg1 (n)
integer itarg2 (m,n)
integer itarg3 (o,m,n)
real rtarg1(n)
real rtarg2(m,n)
real rtarg3(o,m,n)
character chtarg1(n)
character chtarg2(m,n)
character chtarg3(o,m,n)
character*8 ch8targ1(n)
character*8 ch8targ2(m,n)
character*8 ch8targ3(o,m,n)
intsize = kind(itarg1(1))
realsize = kind(rtarg1(1))
chsize = kind(chtarg1(1))*len(chtarg1(1))
ch8size = kind(ch8targ1(1))*len(ch8targ1(1))
do, i=1,n
offset = i-1
if (loc(itarg1).ne.loc(itarg1(i))-offset*intsize) then
! Error #1
errors(1) = .true.
end if
if (loc(rtarg1).ne.loc(rtarg1(i))-offset*realsize) then
! Error #2
errors(2) = .true.
end if
if (loc(chtarg1).ne.loc(chtarg1(i))-offset*chsize) then
! Error #3
errors(3) = .true.
end if
if (loc(ch8targ1).ne.loc(ch8targ1(i))-offset*ch8size) then
! Error #4
errors(4) = .true.
end if
do, j=1,m
offset = (j-1)+m*(i-1)
if (loc(itarg2).ne. &
loc(itarg2(j,i))-offset*intsize) then
! Error #5
errors(5) = .true.
end if
if (loc(rtarg2).ne. &
loc(rtarg2(j,i))-offset*realsize) then
! Error #6
errors(6) = .true.
end if
if (loc(chtarg2).ne. &
loc(chtarg2(j,i))-offset*chsize) then
! Error #7
errors(7) = .true.
end if
if (loc(ch8targ2).ne. &
loc(ch8targ2(j,i))-offset*ch8size) then
! Error #8
errors(8) = .true.
end if
do k=1,o
offset = (k-1)+o*(j-1)+o*m*(i-1)
if (loc(itarg3).ne. &
loc(itarg3(k,j,i))-offset*intsize) then
! Error #9
errors(9) = .true.
end if
if (loc(rtarg3).ne. &
loc(rtarg3(k,j,i))-offset*realsize) then
! Error #10
errors(10) = .true.
end if
if (loc(chtarg3).ne. &
loc(chtarg3(k,j,i))-offset*chsize) then
! Error #11
errors(11) = .true.
end if
if (loc(ch8targ3).ne. &
loc(ch8targ3(k,j,i))-offset*ch8size) then
! Error #12
errors(12) = .true.
end if
end do
end do
end do
end subroutine testloc