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