This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/23374] New: Reallocate problem (Numerical Recipes fortran source)


I have downloaded "Native Windows build: download the latest installer 
(2005-08-06)" from http://gcc.gnu.org/wiki/GFortranBinaries.

I have a problem with the attached code from Numerical Recipes; ifort 
(Intel) and LF95 Ver. 5.7 (Lahey) produce executables which work fine, but 
the gfortran compiled code fails at run time. I am using Windows XP 
professional.

My compile command is:

gfortran test_reallocate.f90 -O2 -malign-double -march=pentium3 -ffast-math -
funroll-loops -o test_reallocate.exe

Source code that demos the problem is as follows:-

! NRTYPE.F90
MODULE nrtype
        INTEGER, PARAMETER :: I4B = SELECTED_INT_KIND(9)
        INTEGER, PARAMETER :: I2B = SELECTED_INT_KIND(4)
        INTEGER, PARAMETER :: I1B = SELECTED_INT_KIND(2)
        INTEGER, PARAMETER :: SP = KIND(1.0)
        INTEGER, PARAMETER :: DP = KIND(1.0D0)
        INTEGER, PARAMETER :: SPC = KIND((1.0,1.0))
        INTEGER, PARAMETER :: DPC = KIND((1.0D0,1.0D0))
        INTEGER, PARAMETER :: LGT = KIND(.true.)
        REAL(SP), PARAMETER :: PI=3.141592653589793238462643383279502884197_sp
        REAL(SP), PARAMETER :: 
PIO2=1.57079632679489661923132169163975144209858_sp
        REAL(SP), PARAMETER :: 
TWOPI=6.283185307179586476925286766559005768394_sp
        REAL(SP), PARAMETER :: 
SQRT2=1.41421356237309504880168872420969807856967_sp
        REAL(SP), PARAMETER :: 
EULER=0.5772156649015328606065120900824024310422_sp
        REAL(DP), PARAMETER :: 
PI_D=3.141592653589793238462643383279502884197_dp
        REAL(DP), PARAMETER :: 
PIO2_D=1.57079632679489661923132169163975144209858_dp
        REAL(DP), PARAMETER :: 
TWOPI_D=6.283185307179586476925286766559005768394_dp
        TYPE sprs2_sp
                INTEGER(I4B) :: n,len
                REAL(SP), DIMENSION(:), POINTER :: val
                INTEGER(I4B), DIMENSION(:), POINTER :: irow
                INTEGER(I4B), DIMENSION(:), POINTER :: jcol
        END TYPE sprs2_sp

        TYPE sprs2_dp
                INTEGER(I4B) :: n,len
                REAL(DP), DIMENSION(:), POINTER :: val
                INTEGER(I4B), DIMENSION(:), POINTER :: irow
                INTEGER(I4B), DIMENSION(:), POINTER :: jcol
        END TYPE sprs2_dp
END MODULE nrtype
! NRUTIL.F90
MODULE nrutil
        USE nrtype
        IMPLICIT NONE
        INTERFACE reallocate

                MODULE PROCEDURE reallocate_rv,reallocate_rm,&
                        reallocate_iv,reallocate_im,reallocate_hv
        END INTERFACE
CONTAINS
!BL
        SUBROUTINE nrerror(string)

        CHARACTER(LEN=*), INTENT(IN) :: string
        write (*,*) 'nrerror: ',string
        STOP 'program terminated by nrerror'
        END SUBROUTINE nrerror
!BL
        FUNCTION reallocate_rv(p,n)
        REAL(SP), DIMENSION(:), POINTER :: p, reallocate_rv
        INTEGER(I4B), INTENT(IN) :: n
        INTEGER(I4B) :: nold,ierr
        allocate(reallocate_rv(n),stat=ierr)
        if (ierr /= 0) call &
                nrerror('reallocate_rv: problem in attempt to allocate memory')
        if (.not. associated(p)) RETURN
        nold=size(p)
        reallocate_rv(1:min(nold,n))=p(1:min(nold,n))
        deallocate(p)
        END FUNCTION reallocate_rv
!BL
        FUNCTION reallocate_iv(p,n)
        INTEGER(I4B), DIMENSION(:), POINTER :: p, reallocate_iv
        INTEGER(I4B), INTENT(IN) :: n
        INTEGER(I4B) :: nold,ierr
        allocate(reallocate_iv(n),stat=ierr)
        if (ierr /= 0) call &
                nrerror('reallocate_iv: problem in attempt to allocate memory')

        if (.not. associated(p)) RETURN
        nold=size(p)
        reallocate_iv(1:min(nold,n))=p(1:min(nold,n))
        deallocate(p)
        END FUNCTION reallocate_iv
!BL
        FUNCTION reallocate_hv(p,n)
        CHARACTER(1), DIMENSION(:), POINTER :: p, reallocate_hv
        INTEGER(I4B), INTENT(IN) :: n
        INTEGER(I4B) :: nold,ierr
        allocate(reallocate_hv(n),stat=ierr)
        if (ierr /= 0) call &
                nrerror('reallocate_hv: problem in attempt to allocate memory')
        if (.not. associated(p)) RETURN
        nold=size(p)
        reallocate_hv(1:min(nold,n))=p(1:min(nold,n))
        deallocate(p)
        END FUNCTION reallocate_hv
!BL
        FUNCTION reallocate_rm(p,n,m)
        REAL(SP), DIMENSION(:,:), POINTER :: p, reallocate_rm
        INTEGER(I4B), INTENT(IN) :: n,m
        INTEGER(I4B) :: nold,mold,ierr
        allocate(reallocate_rm(n,m),stat=ierr)
        if (ierr /= 0) call &
                nrerror('reallocate_rm: problem in attempt to allocate memory')
        if (.not. associated(p)) RETURN
        nold=size(p,1)
        mold=size(p,2)
        reallocate_rm(1:min(nold,n),1:min(mold,m))=&
                p(1:min(nold,n),1:min(mold,m))
        deallocate(p)

        END FUNCTION reallocate_rm
!BL
        FUNCTION reallocate_im(p,n,m)
        INTEGER(I4B), DIMENSION(:,:), POINTER :: p, reallocate_im
        INTEGER(I4B), INTENT(IN) :: n,m
        INTEGER(I4B) :: nold,mold,ierr
        allocate(reallocate_im(n,m),stat=ierr)
        if (ierr /= 0) call &
                nrerror('reallocate_im: problem in attempt to allocate memory')
        if (.not. associated(p)) RETURN
        nold=size(p,1)
        mold=size(p,2)
        reallocate_im(1:min(nold,n),1:min(mold,m))=&
                p(1:min(nold,n),1:min(mold,m))
        deallocate(p)
        END FUNCTION reallocate_im
!BL
END MODULE nrutil
!BL
        program Realloc
        USE nrtype; USE nrutil
        IMPLICIT NONE
        REAL(SP), DIMENSION(:), POINTER :: x
        INTEGER(I4B) :: i
        allocate(x(10))
        forall(i=1:ubound(x,1)) x(i)=i
        write(*,"(10F6.2)") x
        x => reallocate(x,20)
        forall(i=1:ubound(x,1)) x(i)=2*i
        write(*,"(20F6.2)") x
        end program Realloc

-- 
           Summary: Reallocate problem (Numerical Recipes fortran source)
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: edunlop at utvinternet dot ie
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23374


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]