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