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]

g77 (1.0.3) gets signal 6



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




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