gfortran crashes when I use -ffast-math in this subroutine: C ================================================================== SUBROUTINE GRADEN(RHOE,V,GRAD,VTMP) C ==--------------------------------------------------------------== C == SMOOTHING OF THE DENSITY AND CALCULATION OF |nabla.RHO| == C == ON INPUT : RHOE : DENSITY IN REAL SPACE == C == V : UNDEFINED == C == GRAD : UNDEFINED == C == VTMP : UNDEFINED == C == ON OUTPUT: RHOE : DENSITY IN REAL SPACE (SMOOTH) == C == V : UNDEFINED == C == GRAD : (GRADIENT OF RHO)^2 IN REAL SPACE == C == VTMP : DENSITY IN G SPACE (SMOOTH) == C ==--------------------------------------------------------------== IMPLICIT NONE INCLUDE 'system.h' INCLUDE 'cnst.inc' INCLUDE 'fft.inc' INCLUDE 'cppt.inc' C Arguments COMPLEX*16 V(MAXFFT),VTMP(NHG) REAL*8 RHOE(NNR1),GRAD(NNR1,4) C Variables REAL*8 GMAX,GCS,SMFAC,EG INTEGER ISUB,IR,IG C ==--------------------------------------------------------------== C == TRANSFORM DENSITY TO G SPACE == C ==--------------------------------------------------------------== CALL TISET(' GRADEN',ISUB) C$OMP parallel do private(IR) DO IR=1,NNR1 V(IR) = DCMPLX(RHOE(IR),0.0D0) ENDDO CALL FWFFT(V) C ==--------------------------------------------------------------== C == SMOOTHING == C ==--------------------------------------------------------------== IF(TSMOOTH) THEN GMAX=HG(NHG)
GCS=SMF*GMAX C$OMP parallel do private(IG,EG,SMFAC) DO IG=1,NHG EG=(HG(IG)-GCS)/(SDELTA*GMAX) SMFAC=1.0D0/(1.0D0+EXP(EG)) VTMP(IG)=V(NZH(IG))*SMFAC ENDDO ELSE CALL ZGTHR(NHG,V,VTMP,NZH) ENDIF C ==--------------------------------------------------------------== C == FFT OF RHO AND NABLA(X)*RHOE == C ==--------------------------------------------------------------== CALL ZAZZERO(V,MAXFFT) C$OMP parallel do private(IG) DO IG=1,NHG V(NZH(IG))=VTMP(IG)-TPIBA*GK(1,IG)*VTMP(IG) V(INDZ(IG))=DCONJG(VTMP(IG)+TPIBA*GK(1,IG)*VTMP(IG)) ENDDO CALL INVFFT(V) C$OMP parallel do private(IR) DO IR=1,NNR1 RHOE(IR)=DREAL(V(IR)) GRAD(IR,1)=DIMAG(V(IR))*DIMAG(V(IR)) GRAD(IR,2)=DIMAG(V(IR)) ENDDO C ==--------------------------------------------------------------== C == FFT OF NABLA(Y)*RHO AND NABLA(Z)*RHOE == C ==--------------------------------------------------------------== CALL ZAZZERO(V,MAXFFT) C$OMP parallel do private(IG) DO IG=1,NHG V(NZH(IG))=TPIBA*(UIMAG*GK(2,IG)-GK(3,IG))*VTMP(IG) V(INDZ(IG))=TPIBA*(-UIMAG*GK(2,IG)+GK(3,IG))*DCONJG(VTMP(IG)) ENDDO CALL INVFFT(V) C$OMP parallel do private(IR) DO IR=1,NNR1 GRAD(IR,1)=GRAD(IR,1)+DREAL(V(IR)*DCONJG(V(IR))) GRAD(IR,3)=DREAL(V(IR)) GRAD(IR,4)=DIMAG(V(IR)) ENDDO CALL TIHALT(' GRADEN',ISUB) C ==--------------------------------------------------------------== RETURN END C ================================================================== -- Summary: -ffast-math crash Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: nuno dot bandeira at ist dot utl dot pt http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27069