Trunk: jump.c:3494: Internal compiler error in functionmark_jump_label
Toon Moene
toon@moene.indiv.nluug.nl
Fri Sep 4 01:16:00 GMT 1998
With:
% /usr/snp/bin/g77 -v -O2 -funroll-loops -c b.f
g77 version egcs-2.92.02 19980903 (gcc2 ss-980609 experimental)
(from FSF-g77 version 0.5.24-19980804)
Reading specs from
/usr/snp/lib/gcc-lib/m68k-next-nextstep3/egcs-2.92.02/specs
gcc version egcs-2.92.02 19980903 (gcc2 ss-980609 experimental)
/usr/snp/lib/gcc-lib/m68k-next-nextstep3/egcs-2.92.02/f771 b.f
-quiet -dumpbase b.f -O2 -version -fversion -funroll-loops -o
/usr/tmp/cc87g5a1.s
GNU F77 version egcs-2.92.02 19980903 (gcc2 ss-980609 experimental)
(m68k-next-nextstep3) compiled by GNU C version egcs-2.92.02
19980903 (gcc2 ss-980609 experimental).
GNU Fortran Front End version 0.5.24-19980804
I get:
../../egcs/gcc/jump.c:3494: Internal compiler error in function
mark_jump_label
If I leave out -funroll-loops the source compiles OK.
Here's the "problematic" Fortran code:
SUBROUTINE BUENS4(KSEC3,KSEC4,KELEM,KVALS,VALUES,CVALS,
1 KBUFL,KBUFF,KERR)
IMPLICIT LOGICAL(L,O,G), CHARACTER*8(C,H,Y)
INTEGER JSUP, JSEC0, JSEC1, JSEC2, JSEC3, JSEC4, JELEM
INTEGER JSUBS, JCVAL, JBUFL, JBPW, JTAB, JCTAB, JCTST
INTEGER JCTEXT, JWORK, JKEY
PARAMETER(JSUP = 9,JSEC0= 3,JSEC1= 40,JSEC2= 64 ,JSEC3= 4,
1 JSEC4= 2,JELEM=8000,JSUBS=400,JCVAL=150 ,JBUFL= 8192,
2 JBPW = 64,JTAB = 800,JCTAB=1500,JCTST=1800,JCTEXT=1500,
3 JWORK=40000,JKEY=46)
COMMON /BCMWORK/ NBPW,NWPT,NBPT,NWPTB,NBPTB,NMASK(JBPW)
1, NVIND,RVIND,NBENP,NLTVNP,NXXP,NYYP,NZZP
COMMON /BCMWT/ NDWINC,NSCAM,NAFDW,NWT ,ODREPF,
1 N221,MREL,NFCM,MBMP,OMARKER,
2 MBMPL,NSTACK(JELEM),NWTEN(JELEM),
3 NWTR (JELEM),NWTS (JELEM),NWTRV (JELEM),
4 NWTDW(JELEM),NWTIW(JELEM),NWTIWS(JELEM)
COMMON /BCMWTC/ CWTEN(JELEM),CWTU (JELEM)
COMMON /BCMBEF / M,MM,N,JCV
CHARACTER*64 CWTEN
CHARACTER*24 CWTU
DIMENSION KBUFF(KBUFL)
DIMENSION VALUES(KVALS)
DIMENSION KSEC3(JSEC3),KSEC4(JSEC4)
DIMENSION IVALS(JWORK),INC(JSUBS)
CHARACTER*80 CVALS(KVALS)
CHARACTER*80 YVAL
DIMENSION IMASK(8),IMAXV(31)
DATA IMASK/1,2,4,8,16,32,64,128/
DATA IMAXV/1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,
1 16383,32767,65535,131071,262143,524287,1048575,2097151,
2 4194305,8388607,16777215,33554431,671108863,134217727,
3 268435455,536870911,1073741823,2147483647/
100 CONTINUE
IF(KERR.NE.0) RETURN
110 CONTINUE
IWPTB = NWPT
IBPTB = NBPT
120 CONTINUE
CALL BUPCK(NBPW,KBUFF(NWPT),0,NWPT,NBPT,24,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing length of section 4.'
RETURN
END IF
140 CONTINUE
CALL BUPCK(NBPW,KBUFF(NWPT),0,NWPT,NBPT, 8,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing reserved byte in section 4.'
RETURN
END IF
200 CONTINUE
IKK=KELEM*KSEC3(3)
IF(IKK.GT.JWORK) THEN
KERR=17
CALL BUERR(KERR)
PRINT*,'Check values of KELEM and number of subsets ksec3(3).'
RETURN
END IF
IF(IKK.GT.KVALS) THEN
KERR=14
CALL BUERR(KERR)
PRINT*,'KVALS must be greater than KELEM*KSEC3(3).'
RETURN
END IF
210 CONTINUE
IB=0
IF (IAND(KSEC3(4), IMASK(7)) .NE. 0) IB = 1
300 CONTINUE
IF(IB.EQ.0) THEN
DO 301 I=1,KSEC3(3)
IM1K=(I-1)*KELEM
DO 302 J=1,M
IF(NWTDW(J).EQ.0) GO TO 302
IREF =NWTRV(J)
ISCALE=NWTS (J)
IBDW =NWTDW(J)
YUNIT =CWTU(J)
JI=J+IM1K
VAL=VALUES(JI)
IF(YUNIT.EQ.'CCITTIA5') THEN
IST=NINT(VAL)/1000
YVAL=CVALS(IST)
NCHAR=NINT(VAL)-IST*1000
DO 303 II=1,NCHAR
IPACK=ICHAR(YVAL(II:II))
IF(IPACK.GT.IMAXV(8)) IPACK=IMAXV(8)
CALL BUPCK(NBPW,KBUFF(NWPT),IPACK,NWPT,NBPT,8,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing ',ji,' value for ',j,' element.'
RETURN
END IF
303 CONTINUE
GO TO 302
END IF
IF(VAL.EQ.RVIND) THEN
CALL BUPCK(NBPW,KBUFF(NWPT),NMASK(IBDW),NWPT,NBPT,IBDW,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing ',ji,' value for ',j,' element.'
RETURN
END IF
ELSE
IF(ISCALE.LT.0) THEN
ISCALE=IABS(ISCALE)
IPACK=NINT(VAL/10.**ISCALE) - IREF
ELSE
IPACK=NINT(VAL*10.**ISCALE) - IREF
END IF
IF(IPACK.LT.0) THEN
KERR=33
PRINT*,'Buens4:'
CALL BUERR(KERR)
PRINT*,'Probably reference value too big.'
PRINT*,j,' element = ',nwtr(j),' reference value = ',iref
RETURN
END IF
IF(IPACK.GT.IMAXV(IBDW)) THEN
PRINT*,'Error packing ',ji,' value for ',j,' element.'
PRINT*,'Value ',ipack,' data width ',ibdw,' bits'
PRINT*,'Value packed as missing.'
END IF
CALL BUPCK(NBPW,KBUFF(NWPT),IPACK,NWPT,NBPT,IBDW,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing ',ji,' value for ',j,' element.'
PRINT*,'Value ',ipack,' data width ',ibdw,' bits'
RETURN
END IF
END IF
302 CONTINUE
301 CONTINUE
END IF
400 CONTINUE
IF(IB.EQ.1) THEN
DO 402 J=1,M
IF(NWTDW(J).EQ.0) GO TO 402
IREF =NWTRV(J)
ISCALE=NWTS (J)
IBDW =NWTDW(J)
YUNIT =CWTU(J)
DO 401 I=1,KSEC3(3)
JI=J+(I-1)*KELEM
IF(YUNIT.EQ.'CCITTIA5') THEN
IVALS(JI)=VALUES(JI)
GO TO 401
END IF
IF(VALUES(JI).EQ.RVIND) THEN
IVALS(JI)=NMASK(IBDW)
ELSE
IF(ISCALE.LT.0) THEN
ISCAL=IABS(ISCALE)
IPACK=NINT(VALUES(JI)/10.**ISCAL ) - IREF
ELSE
IPACK=NINT(VALUES(JI)*10.**ISCALE) - IREF
END IF
IF(IPACK.LT.0) THEN
PRINT*,'Buens4 :'
KERR=33
CALL BUERR(KERR)
PRINT*,'Probably reference value too big.'
PRINT*,j,'element = ',nwtr(j),' reference value = ',iref
RETURN
END IF
IF(IPACK.GT.IMAXV(IBDW)) IPACK=IMAXV(IBDW)
IVALS(JI)=IPACK
END IF
401 CONTINUE
402 CONTINUE
410 CONTINUE
DO 411 I=1,M
IF(NWTDW(I).EQ.0) GO TO 411
IBDW =NWTDW(I)
YUNIT =CWTU(I)
OMIS=.TRUE.
IF(YUNIT.EQ.'CCITTIA5') THEN
OMIS=.FALSE.
ELSE
DO 412 J=1,KSEC3(3)
IJ=I+(J-1)*KELEM
IF(IVALS(IJ).NE.NMASK(IBDW)) THEN
OMIS=.FALSE.
END IF
412 CONTINUE
END IF
IF(.NOT.OMIS) THEN
IF(YUNIT.NE.'CCITTIA5') THEN
MIN=IVALS(I)
DO 413 J=1,KSEC3(3)
IJ=I+(J-1)*KELEM
IF(IVALS(IJ).LT.MIN) MIN=IVALS(IJ)
413 CONTINUE
DO 414 J=1,KSEC3(3)
IJ=I+(J-1)*KELEM
INC(J)=IVALS(IJ)-MIN
IF(IVALS(IJ).EQ.NMASK(IBDW)) INC(J)=NVIND
414 CONTINUE
MAX=0
DO 415 J=1,KSEC3(3)
IF(INC(J).NE.NVIND.AND.INC(J).GT.MAX) MAX=INC(J)
415 CONTINUE
INC0=0
DO 419 J=1,KSEC3(3)
IF(INC(J).NE.0) INC0=1
419 CONTINUE
IF(INC0.NE.0) THEN
MAX=MAX+1
DO 416 J=1,32
IR=MAX/2
IF(IR.EQ.0) GO TO 417
MAX=IR
416 CONTINUE
END IF
417 CONTINUE
INCBIT=0
IF(INC0.NE.0) INCBIT=J
DO 418 J=1,KSEC3(3)
IF(INC(J).EQ.NVIND) INC(J)=NMASK(INCBIT)
418 CONTINUE
END IF
END IF
420 CONTINUE
IF(YUNIT.EQ.'CCITTIA5') THEN
INCHAR=NWTDW(I)/8
CALL BUPKS(NBPW,KBUFF(NWPT),0,NWPT,NBPT,8,0,INCHAR,KERR)
IF(KERR.NE.0) RETURN
CALL BUPCK(NBPW,KBUFF(NWPT),INCHAR,NWPT,NBPT,6,KERR)
IF(KERR.NE.0) RETURN
DO 421 J=1,KSEC3(3)
JI=I+(J-1)*KELEM
IST=IVALS(JI)/1000
YVAL=CVALS(IST)
INCHAR=IVALS(JI)-IST*1000
DO 423 II=1,INCHAR
IPACK=ICHAR(YVAL(II:II))
CALL BUPCK(NBPW,KBUFF(NWPT),IPACK,NWPT,NBPT,8,KERR)
IF(KERR.NE.0) RETURN
423 CONTINUE
421 CONTINUE
ELSE
IF(OMIS) THEN
CALL BUPCK(NBPW,KBUFF(NWPT),NMASK(IBDW),NWPT,NBPT,
1 IBDW,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing local reference value '
PRINT*,I,' element.'
RETURN
END IF
CALL BUPCK(NBPW,KBUFF(NWPT),0,NWPT,NBPT,6,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing number of bits for'
PRINT*,'increments for ',i,' element.'
RETURN
END IF
ELSE
IF(INCBIT.EQ.0) THEN
CALL BUPCK(NBPW,KBUFF(NWPT),MIN,NWPT,NBPT,IBDW,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing local reference value'
PRINT*,'for ',i,' element in ',ibdw,' bits.'
RETURN
END IF
CALL BUPCK(NBPW,KBUFF(NWPT),INCBIT,NWPT,NBPT,6,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing number of bits for'
PRINT*,'increments for ',i,' element.'
RETURN
END IF
ELSE
CALL BUPCK(NBPW,KBUFF(NWPT),MIN,NWPT,NBPT,IBDW,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing local reference value'
PRINT*,'for ',i,' element.'
RETURN
END IF
CALL BUPCK(NBPW,KBUFF(NWPT),INCBIT,NWPT,NBPT,6,KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing number of bits for'
PRINT*,'increments for ',i,' element.'
RETURN
END IF
CALL BUPKS(NBPW,KBUFF(NWPT),INC,NWPT,NBPT,
1 INCBIT,0,KSEC3(3),KERR)
IF(KERR.NE.0) THEN
PRINT*,'Error packing increments for',i,' element'
RETURN
END IF
END IF
END IF
END IF
411 CONTINUE
END IF
500 CONTINUE
CALL BUOCTN(IWPTB,IBPTB,KBUFL,KBUFF,KERR)
IF(KERR.NE.0) RETURN
RETURN
END
This didn't give me any problems in the egcs-1.1 branch or release.
Thanks in advance,
Toon.
More information about the Gcc-bugs
mailing list