Trunk: jump.c:3494: Internal compiler error in function mark_jump_label
Jeffrey A Law
law@cygnus.com
Wed Dec 30 23:39:00 GMT 1998
This seems to be working OK now. Not sure if it is by accident or design...
In message <9809040742.AA22718@moene.indiv.nluug.nl>you write:
> 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