This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
g77 (1.0.3) gets signal 6
- To: egcs-bugs at cygnus dot com
- Subject: g77 (1.0.3) gets signal 6
- From: Michal Jaegermann <michal at ellpspace dot math dot ualberta dot ca>
- Date: Sun, 31 May 1998 23:55:41 +1800 (MDT)
Compiler: g77
Version: (reported by g77 -v)
gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
OS: Linux on Alpha
Compiling an attached program with any optimizatin above -O1 and with
a flag -mieee causes results like that:
g77 -Wall -g -O4 -mieee -c intboundhel.f -o intboundhel.o
intboundhel.f: In program `MAIN__':
intboundhel.f:53: internal error--unrecognizable insn:
(insn 917 962 955 (clobber (mem:TI (plus:DI (reg:DI 30 $30)
(const_int 408)))) -1 (insn_list 916 (insn_list:REG_DEP_ANTI 1567 (nil)))
(nil))
g77: Internal compiler error: program f771 got fatal signal 6
Dropping -mieee from options causes the program to compile but it
needs extra library subroutines for that (available on request).
It even runs correctly with the following input data
1.E-7 5000 :WERR NVX
11.88441302 0.3610634767 590.9713397 :x_g g_d U_d
12.25860117 0.18743183 11.37334649 :x_0 g_0 U_0
10 10 :NLEVS NLEVE
0.0 0.03 501 :TST TDEL NT
when missing SAVE is added in SUBROUTINE SETPBS but still does not
compile with -mieee flag.
The compiler, when compiling, compliains 'might be used uninitialized'
only about variables FACL, TSIG, PY, X0, G0 and SIG0. Still adding
only 'SAVE FACL,TSIG,PY,X0,G0,SIG0' instead of 'SAVE' is not good enough.
Remarks: yes, I know that the program as given is incorrect and no, I
was never writing Fortran like that; still it is syntactically valid.
Michal Jaegermann,
michal@ellpspace.math.ualberta.ca
michal@harddata.com
c Program intboundhel.f
IMPLICIT REAL*8(A,B,D-H,O-Z),COMPLEX*16(C)
DATA PI/3.1415926535897932D0/
RPIQ=PI**(-0.25D0)
SIGD=0.25D0
CALL OPENS()
READ(5,*,END=90)WERR,NVX
READ(5,*,END=90)XG,GD,UD
READ(5,*,END=90)X0,G0,U0
READ(5,*,END=90)NLEVS,NLEVE
SIG0=DSQRT(2.D0*U0)/G0
NLMAX=SIG0-0.5D0
NLEVS=MAX0(NLEVS,0)
NLEVE=MIN0(NLEVE,NLMAX)
READ(5,*,END=90)TST,TDEL,NT
WRITE(6,200)XG,GD,UD,SIGD
200 FORMAT(1X,4G15.7)
WRITE(6,200)X0,G0,U0
WRITE(6,205)NT
205 FORMAT(1X,I5)
WELN=-DLOG(WERR)
EGX=EXP(-GD*XG)
RK0=SQRT((UD+UD)*EGX)
GK0=GD*RK0
HGK0=0.5D0*GK0
DO 50 NL=NLEVS,NLEVE
WRITE(6,210)NL
210 FORMAT(5X,I5)
CALL SETPBS(NL,SIG0,G0,X0)
DO 40 IT=1,NT
TL=(IT-1)*TDEL+TST
RCH=EXP(-GK0*TL)
RCH=4.D0*RCH/(1.D0+RCH)**2
TNH=TANH(HGK0*TL)
XT=-LOG(EGX*RCH)/GD
PT=RK0*TNH
CZT=DCMPLX(1.D0-HGK0*TNH*TL,TNH/HGK0)
CFX2=DCMPLX(-HGK0*(TNH+HGK0*RCH*TL),RCH)/(CZT+CZT)
CFAC=EXP(DCMPLX(0.D0,.5D0*RK0*RK0*TL-2.*RK0/GD*TNH))/
1 SQRT(CZT)*RPIQ
DELX=DSQRT(WELN/DIMAG(CFX2))/NVX
CM=0.D0
DO 20 IX=1,NVX
X=(IX+IX-NVX-1)*DELX
CALL BSWAVE(X+XT,WF)
CM=EXP((X*X*CFX2+PT*X)*(0.D0,1.D0))*WF+CM
20 CONTINUE
CM=CM*CFAC*(DELX+DELX)
WRITE(6,215)TL,CM
215 FORMAT(1X,G15.7,2G18.10)
40 CONTINUE
50 CONTINUE
90 STOP
END
SUBROUTINE SETPBS(NI,SIGI,GI,XI)
IMPLICIT REAL*8(A-H,O-Z)
NL=NI
SIG0=SIGI
G0=GI
X0=XI
PY=SIG0-0.5D0-NL
TSIG=SIG0+SIG0
ALF=PY+PY
FACL=0.5D0*(DLGAMA(NL+1.D0)+DLOG(ALF)-DLGAMA(TSIG-NL)
$ +DLOG(G0))+PY*DLOG(TSIG)
RETURN
ENTRY BSWAVE(X,U)
EX=-G0*(X-X0)
YV=DEXP(EX)
U=DLAGPL(NL,ALF,TSIG*YV)*DEXP(PY*EX-SIG0*YV+FACL)
RETURN
END
FUNCTION DLAGPL(N,A,X)
C DLAGPL(N,A,X) = LAGUERRE POLYNOMIAL OF DEGREE N AND ORDER A
IMPLICIT REAL*8(A-H,O-Z)
PN=1.D0
IF(N.LT.1)GO TO 50
PNP=PN
PN=A+1.D0-X
IF(N.EQ.1)GO TO 50
DO 10 K=1,N-1
PNPP=PNP
PNP=PN
10 PN=((K+K+1+A-X)*PNP-(K+A)*PNPP)/(K+1)
50 DLAGPL=PN
RETURN
END