I have a helper subroutine that basically calls the MKL getrf/getrs functions like this:
INTERFACE GETRF SUBROUTINE SGETRF(M,N,A,NMAX,IR,ISING) INTEGER NMAX,M,N,ISING INTEGER, DIMENSION(NMAX) :: IR REAL(4), DIMENSION(NMAX,NMAX) :: A END SUBROUTINE SUBROUTINE DGETRF(M,N,A,NMAX,IR,ISING) INTEGER NMAX,M,N,ISING INTEGER, DIMENSION(NMAX) :: IR REAL(8), DIMENSION(NMAX,NMAX) :: A END SUBROUTINE END INTERFACE GETRF C INTERFACE GETRS SUBROUTINE SGETRS(TRANS,M,N,A,NMAX,IR,B,NMAX2,ISING) INTEGER NMAX,NMAX2,M,N,ISING INTEGER, DIMENSION(NMAX) :: IR CHARACTER TRANS REAL(4), DIMENSION(NMAX) :: B REAL(4), DIMENSION(NMAX,NMAX) :: A END SUBROUTINE SUBROUTINE DGETRS(TRANS,M,N,A,NMAX,IR,B,NMAX2,ISING) INTEGER NMAX,NMAX2,M,N,ISING INTEGER, DIMENSION(NMAX) :: IR CHARACTER TRANS REAL(8), DIMENSION(NMAX) :: B REAL(8), DIMENSION(NMAX,NMAX) :: A END SUBROUTINE END INTERFACE GETRS
I just upgraded from Update 2 to Update 4 of the 2013 compiler (version 13.1.2.190).
My incoming real arguments can be either real(4) or real(8). My integer arguments are always (project setting /integer_size:64) integer(8).
If I run this code with real(8) and Win32 project configuration, the IR() array gets corrupted. If I run it with real(8) and x64 project configuration, IR() does not get corrupted. What am I doing wrong now?