exact version of gcc/g77 in this case minnie{root}154: f77 -v Reading specs from /usr/local/lib/gcc/i686-apple-darwin8.8.1/3.4.0/specs Configured with: ../gcc-3.4.0/configure --enable-languages=f77 Thread model: posix gcc version 3.4.0
command line that triggers the bug f77 -Dunix -DMacOSX -I. -c symbel.F compiler output is: /var/tmp//cccO5t2E.f: In subroutine `symbel': In file included from /var/tmp//cccO5t2E.f:59: /var/tmp//cccO5t2E.f:383: internal compiler error: in instantiate_virtual_regs_lossage, at function.c:3746 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. I ran I then ran: f77 -Dunix -DMacOSX -I. -c symbel.F -save-temps and it created only one file, symbel.s, included below. source code and included files follow below ------ symbel.F ------ SUBROUTINE SYMBEL(X,Y,DEGRES,HEIGHT,NCHAR,STRING) real x,y,degres,height integer nchar C** C** $Id: symbel.tplate.F,v 1.7 2001/11/21 23:04:59 dwd Exp $ C** C** 30-Aug-90 Had to modify stmt which reads font.list file. on C** hp9000s300 systems, hpux fortran wasnt reading the implied doloop C** properly. C** C********************************************************************* C** C** PLOT+ Scientific Graphics System C** C********************************************************************* C** C** C C CALL SYMBEL(X,Y,DEGRES,HEIGHT,NCHAR,STRING) C C THIS SUBROUTINE DRAWS A STRING OF CHARACTERS. C C THE VARIOUS PARAMETERS AND THEIR DEFINITIONS ARE LISTED C BELOW: C X,Y - COORDINATES OF THE LOWER LEFT-HAND CORNER OF C THE FIRST CHARACTER IN USER"S UNITS. C DEGRES - ANGLE AT WHICH THE CHARACTERS ARE TO BE DRAWN C IN DEGREES RELATIVE TO THE X-AXIS. C HEIGHT - HEIGHT OF THE CHARACTERS IN INCHES (OR MM). C NCHAR - NUMBER OF CHARACTERS TO BE DRAWN. C STRING - ARRAY CONTAINING THE DISPLAY CODES OF THE C CHARACTERS TO BE DRAWN. C #include "fontdef.inc" C LOGICAL SYMROT,READIR,PLOT,COLRF c CHARACTER PLTFIL*80 CHARACTER ICOM*2,ICHR*1,STRING*120 CHARACTER*1 KSUB,KSUPER,KBKSP,KCALL,PENS(16) real temp,symsin,symcos,xorg,yorg,xref,yref real charsc,width,slant,symwid real symsc,xmn,xmx,xy,xx,xsym,ysym,xtrns,ytrns integer nfnt,ii,id,ifont,nch,jj,i,icode,istat,ix,iy,k integer ipoint,ilen INTEGER COLOLD LOGICAL ASCFNT C C INCLUDE 'pltcom.dat' C #if ! defined(MacOSX) #if defined(unix) DATA KSUB,KSUPER,KBKSP,KCALL/'_','^','\','@'/ #else DATA KSUB,KSUPER,KBKSP,KCALL/'_','^','\','@'/ #endif #endif DATA PENS/'1','2','3','4','5','6','7','8','9','A', * 'B','C','D','E','F','G'/ DATA READIR/.FALSE./ #if defined(MacOSX) ksub = char(95) ksuper = char(94) kbksp = char(92) kcall = char(64) #endif C DEFINE THE SCALE FACTOR TO BE THE AMOUNT OF MAGNIFICATION C REQUIRED TO CONVERT THE CHARACTERS IN THE CHARACTER DEFI- C NITION TABLE TO THE SIZE SPECIFIED BY THE USER. COLRF=.FALSE. IF(.NOT.READIR)then C READ DIRECTORY call rddsym(nfnt) ioff(1)=0 ii=1 id=1 call rdfsym(id,ii) ifont=1 ascfnt=itype(ifont).eq.-1 readir=.true. endif SYMSC = HEIGHT * FACTOR / 21.0 C C ROTATE THE CHARACTER STRING. C IF(DEGRES .NE. 0.0)GO TO 10 C C RESET THE CHARACTER ROTATION FLAG. C SYMROT = .FALSE. GO TO 20 C C SET THE CHARACTER ROTATION FLAG. C 10 SYMROT = .TRUE. C C CONVERT THE ROTATION TO RADIANS. C TEMP = 0.01745329251994 * DEGRES C C COMPUTE THE SINE AND COSINE. C SYMSIN = SIN(TEMP) SYMCOS = COS(TEMP) C C SET VECTORS MODE. C 20 PMODE = VECTOR C C START AT THE LOWER LEFT-HAND CORNER OF THE FIRST CHARACTER. C IF(NCHAR .EQ. 0)RETURN if(mapproj)then xtemp=xtrns(x,y)*xscale ytemp=ytrns(x,y)*yscale else XTEMP = X * XSCALE YTEMP = Y * YSCALE endif PENF = .FALSE. PLOT=NCHAR.GT.0 IF(PLOT)CALL XYZPLT C C INITIALIZE CONTROL VARIABLES. C XORG = XTEMP YORG = YTEMP XREF = 0.0 YREF = 0.0 CHARSC = 1.0 WIDTH = 0.0 SLANT = 0.0 IFONT = 1 ASCFNT=ITYPE(1).EQ.-1 SYMWID=0.0 NCH=IABS(NCHAR) C C DRAW THE CHARACTERS IN THE STRING ONE BY ONE. C JJ=0 DO 170 I=1,NCH JJ=JJ+1 IF(JJ.GT.NCH)GOTO 180 ICHR = STRING(JJ:JJ) C C CHECK FOR A CONTROL CHARACTER. C IF(ICHAR(ICHR) .EQ.27)THEN ASCFNT=.FALSE. GOTO 170 ENDIF IF(ICHAR(ICHR) .EQ. 0)GOTO 180 #if defined(unix) IF(.NOT.ASCFNT.AND.(ICHR.EQ.'@'.OR. * (ICHR.GE.'\\'.AND.ICHR.LE.'_')))GOTO 80 #else IF(.NOT.ASCFNT.AND.(ICHR.EQ.'@'.OR. * (ICHR.GE.'\'.AND.ICHR.LE.'_')))GOTO 80 #endif C C CALCULATE POINTER C IF(ITYPE(IFONT).LE.0)THEN C CHARACTER FONT ICODE = ASCII(ICHAR(ICHR),IFONT) ELSE C SYMBOL FONT ICOM = STRING(JJ:JJ+1) JJ=JJ+1 READ(ICOM,999,IOSTAT=ISTAT)II 999 FORMAT(I2) IF(ISTAT.EQ.0)THEN ICODE = ASCII(II,IFONT) ELSE ICODE = 1 ENDIF ENDIF IPOINT = ICODE+IOFF(IFONT) XMN=SX(IPOINT) XMX=SY(IPOINT) IF(XMN.GT.50.)XMN=XMN-100. IF(XMX.GT.50.)XMX=XMX-100. WIDTH=(XMX-XMN)*CHARSC*RAST(IFONT) SYMWID=SYMWID+WIDTH IF(.NOT.PLOT)GOTO 70 IPOINT=IPOINT+1 PENF = .FALSE. C C DRAW THE CHARACTER C 30 IX=SX(IPOINT) IY=SY(IPOINT) IF(IX.GT.50)IX=IX-100 IF(IY.GT.50)IY=IY-100 IY=-IY IPOINT=IPOINT+1 C C CHECK FOR A CONTROL BYTE. C IF(IX .EQ. 50)GO TO 60 C C CALCULATE THE NEW PEN COORDINATES RELATIVE TO THE LOWER C LEFT-HAND CORNER OF THE FIRST CHARACTER. C XY=FLOAT(IY)-BASE(IFONT) XX=FLOAT(IX)-XMN+XY*SLANT XSYM =XREF+XX*CHARSC*RAST(IFONT) YSYM =YREF+XY*CHARSC*RAST(IFONT) C C SCALE AND ROTATE THE NEW COORDINATES. C IF(SYMROT)GO TO 40 XTEMP = XSYM * SYMSC + XORG YTEMP = YSYM * SYMSC + YORG GO TO 50 40 XTEMP = (XSYM * SYMCOS - YSYM * SYMSIN) * SYMSC + XORG YTEMP = (XSYM * SYMSIN + YSYM * SYMCOS) * SYMSC + YORG C C MOVE THE PEN TO THE NEW COORDINATES. C 50 CALL XYZPLT PENF = .TRUE. GO TO 30 C C CHECK FOR THE END OF THE CHARACTER. C 60 IF(IY .EQ. -50)GO TO 70 PENF = .FALSE. GO TO 30 C C ADJUST THE REFERENCE POSITION TO TAKE INTO ACCOUNT THE C CHARACTER THAT WAS JUST DRAWN. C 70 XREF = XREF + WIDTH IF(CHARSC .EQ. 1.0)GO TO 169 C XREF = XREF - 16.*(1.-CHARSC)*RAST(IFONT) YREF = 0.0 CHARSC = 1.0 GO TO 169 C C PROCESS CONTROL CHARACTERS. C 80 IF(ICHR .NE. KSUB)GO TO 150 CHARSC = 0.75 C XREF = XREF + 16.*(1.-CHARSC)*RAST(IFONT) YREF=-11.*CHARSC*RAST(IFONT) GO TO 169 150 IF(ICHR .NE. KSUPER)GO TO 160 CHARSC = 0.75 C XREF = XREF + 16.*(1.-CHARSC)*RAST(IFONT) YREF=21.-11.*CHARSC*RAST(IFONT) GO TO 169 160 IF(ICHR .NE. KBKSP)GO TO 310 SYMWID=SYMWID-WIDTH XREF = XREF - WIDTH WIDTH = 0.0 GOTO 169 310 IF(ICHR.NE.KCALL)GOTO 169 C C UNPACK COMMAND C ICOM = STRING(JJ+1:JJ+2) JJ=JJ+2 C C PROCESS COMMAND C CALL UPPER(ICOM,2) IF(ICOM.EQ.'CL')THEN C C CLEAR ALL FONTS FROM THE BUFFERS C DO 1002 II=1,10 IOFF(II)=25000 IFLEN(II)=0 IF(II)='@@' IFN(II)='@@' ITYPE(II)=0 BASE(II)=-9. RAST(II)=1. 1002 continue IOFF(1)=0 GOTO 169 ELSE IF(ICOM(1:1).EQ.'C')THEN C C LOOK FOR EXTENDED COLOR COMMAND OF THE FORM C @Cnnn WHERE nnn IS A 3 DIGIT NUMBER C IF(.NOT.COLRF)COLOLD=COLOUR COLRF=.TRUE. C C SEE IF THE FIRST CHARACTER IS A NUMBER C DO 2050 K=1,9 IF(ICOM(2:2).EQ.PENS(K))GOTO 2051 2050 CONTINUE C C NO NUMBER FOUND - MUST BE A FONT CHANGE COMMAND C IF(ICOM(2:2).NE.'0')GOTO 2010 2051 JJ=JJ+2 C C GET THE 3 DIGIT NUMBER C READ(STRING(JJ-2:JJ),'(I3)',ERR=169)K IF(.NOT.PLOT)GOTO 169 CALL COLOR(K) ELSE IF(ICOM(1:1).EQ.'P')THEN C C CHANGE PEN/COLOR C IF(.NOT.PLOT)GOTO 169 IF(.NOT.COLRF)COLOLD=COLOUR COLRF=.TRUE. DO 2030 K=1,16 IF(ICOM(2:2).EQ.PENS(K))GOTO 2031 2030 CONTINUE IF(ICOM(2:2).NE.'0')GOTO 2010 K=1 2031 CALL COLOR(K) GOTO 169 ELSE IF(ICOM(1:1).EQ.'Z')THEN DO 2040 K=1,16 IF(ICOM(2:2).EQ.PENS(K))GOTO 2041 2040 CONTINUE IF(ICOM(2:2).NE.'0')GOTO 2010 K=0 2041 SLANT=SIN(K*0.08726646) GOTO 169 ENDIF C SEARCH FOR FONT BY NAME THEN BY NUMBER 2010 DO 1003 K=1,10 IF(ICOM.EQ.IF(K).OR.ICOM.EQ.IFN(K))GOTO 302 1003 CONTINUE C NOT FOUND SEARCH MAIN DIRECTORY DO 1004 ID=1,NFNT IF(ICOM.EQ.DNME(ID).OR.ICOM.EQ.DNUM(ID))GOTO 1001 1004 CONTINUE C FONT NOT FOUND USE LAST FONT GOTO 169 1001 ILEN=DLEN(ID) C C FIND WHERE FONT WILL FIT C DO 1005 II=10,1,-1 IF(ILEN+IOFF(II).LE.25000)GOTO 1010 1005 CONTINUE 1010 call rdfsym(id,ii) k=ii C C ERROR IF NO ROOM ANYWHERE! C 302 IFONT=K 169 ASCFNT=ITYPE(IFONT).EQ.-1 170 CONTINUE 180 IF(.NOT.PLOT)THEN X=SYMWID*HEIGHT/21. RETURN END IF C C SCALE AND ROTATE THE FINAL COORDINATES. C IF(SYMROT)GO TO 190 XTEMP = XREF * SYMSC + XORG YTEMP = YORG GO TO 200 190 XTEMP = XREF * SYMCOS * SYMSC + XORG YTEMP = XREF * SYMSIN * SYMSC + YORG C C PLOT TO THE END OF THE CHARACTER STRING. C 200 PENF = .FALSE. CALL XYZPLT C C RESET COLOR C IF(COLRF.AND.(COLOLD.NE.COLOUR))CALL COLOR(COLOLD) RETURN C END REAL FUNCTION SYMWID(HEIGHT,NCHAR,STRING) real height integer nchar CHARACTER STRING*255 integer nc real ss NC=-IABS(NCHAR) C C THIS FUNCTION RETURNS THE WIDTH OF THE STRING WITHOUT DRAWING IT C SS=0. CALL SYMBEL(SS,0.,0.,HEIGHT,NC,STRING) SYMWID=SS RETURN END c subroutine rddsym(nfnt) integer nfnt c integer lnblk, ilen include 'pltcom.dat' #include "fontdef.inc" c #if defined(unix) || defined(win32) c c First, check the environmental variable "PPL_HOME" c CHARACTER pplhome*265 call getenv('PPL_HOME', pplhome) if(pplhome .ne. ' ') then ilen=lnblk(pplhome,265) fontdir = pplhome(:ilen)//"/lib/pplusfonts/" else c If not found, use compilation default pplhome = *'$(FONTDIR)' ilen=lnblk(pplhome,265) fontdir = pplhome(:ilen)//"/" endif #endif #if defined(vms) fontdir = 'plotfonts:' #endif NFNT=numfonts end c subroutine rdfsym(id,ii) integer id,ii c integer ij,iadd,slen,lnblk character*255 fontfile integer*2 icnt, ibase, irast, ilen include 'pltcom.dat' #include "fontdef.inc" c slen = lnblk(fontdir, 255) fontfile = fontdir(:slen)//dname(id) #if defined(unix) || defined(win32) OPEN(LUSY,FILE=fontfile,STATUS='OLD', *FORM='UNFORMATTED',ERR=169) #else open(lusy,file=fontfile,status='old',readonly, *form='unformatted',err=169) #endif C C SETUP FOR NEW FONT C IF(II)=DNME(ID) IFN(II)=DNUM(ID) ITYPE(II)=DTYPE(ID) IFLEN(II)=DLEN(ID) C C SETUP IOFF C IF(II.EQ.10)GOTO 1008 DO 1007 IJ=II+1,10 IOFF(IJ)=25000 IF(IJ)='@@' IFN(IJ)='@@' IFLEN(IJ)=0 1007 continue IOFF(II+1)=IOFF(II)+IFLEN(II) C C READ NEW FONT C 1008 READ(LUSY)ICNT,IBASE,IRAST,ILEN READ(LUSY)(ASCII(IJ,II),IJ=1,127) BASE(II)=FLOAT(IBASE) RAST(II)=21./FLOAT(IRAST) IADD=IOFF(II)+1 READ(LUSY)(SX(IJ),IJ=IADD,IADD+DLEN(ID)-1) READ(LUSY)(SY(IJ),IJ=IADD,IADD+DLEN(ID)-1) CLOSE(LUSY) C C DONE C 169 continue return end ------------------- fontdef.inc --------------------- C** C** $Id: fontdef.inc,v 1.1 2000/01/07 23:06:26 dwd Exp $ C** C** C*********************************************************************** C** C** PLOT+ Scientific Graphics System C** C*********************************************************************** C** C** #if defined(unix) || defined(win32) integer*2 sx(25000), sy(25000) #else byte sx(25000), sy(25000) #endif integer*2 ascii(127,10), dtype(35), dlen(35), ioff(10) integer*2 iflen(10), itype(10) real base(10), rast(10) integer numfonts c character*2 dnme(35), dnum(35), if(10), ifn(10) character*6 dname(35) character*255 fontdir c common/symcom/sx,sy,ascii,base,rast,dtype,dlen,ioff,iflen,itype, *numfonts common/sysstr/dnme,dnum,dname,if,ifn,fontdir -------------------- pltcom.dat ---------------------- C** C** $Id: pltcom.unx,v 1.4 2002/02/27 17:59:14 dwd Exp $ C** C** C*********************************************************************** C** C** PLOT+ Scientific Graphics System C** C*********************************************************************** C** C** CHARACTER ALPHA*1,DASH*1,POINT*1,VECTOR*1 CHARACTER PMODE*1,FILEZ*255,FILET*255,FILEZEXT*255 INTEGER BEL,ESC,GS,SYN,US LOGICAL GRAPHF,LPEN,MIRAF,MIRBF,PEN,PENF,PLTFLG,ROTAT,SAVEF, * VIEWF,WINDOF,NEWFIL,TEKOPN,GKSOPN,HAVEX INTEGER*4 OLDGZA,OLDGZB,OLDHTA,OLDHTB,oldhpa,oldhpb INTEGER BAUDR,COLOUR,OSFLG,OWFLG,PTYPE,TTYPE,FZCNT INTEGER TEKON(3),TEKOFF(5),HOME(5) integer idseg,idtk,iprim,iseq,lhia,lhib,lloba integer losflg,lowflg,luhp,lutk,lusy,maptype integer numclr,rdclr(256),grnclr(256),blclr(256) integer mpnone,mpmerc,mpplrst,mpcylind integer xwwdth,xwhgth,xwxorg,xwyorg integer canvas logical wrtclr,mapproj real pltoha,pltohb,pltota,pltotb,seg,maplat,maplong real a,amax,amin,anew,aold,aorign,aosold,aref,asize real b,bmax,bmin,bnew,bold,borign,bosold,bref,bsize real cold,cosrlat,cref,dseg,factor,hmark,hpscla,hpsclb real maxyp,rotcos,rotsin,tax,tay,taz,tbx,tby,tbz,tcx,tcy,tcz real thight,tscla,tsclb,twidth,vdist,xmax,xmin,xnew,xold real xscale,xtemp,ymax,ymin,ynew,yold,yscale,ytemp real znew,zold,zscale,ztemp C PARAMETER (ALPHA='A',DASH='D',POINT='P',VECTOR='V') PARAMETER (BEL=7,ESC=27,GS=29,SYN=22,US=31) PARAMETER (MPNONE=0,MPMERC=1,MPPLRST=2,MPCYLIND=3) C COMMON /PLTCM1/ A,AMAX,AMIN,ANEW,AOLD,AORIGN,AOSOLD,AREF,ASIZE,B, * BAUDR,BMAX,BMIN,BNEW,BOLD,BORIGN,BOSOLD,BREF,BSIZE,canvas,COLD, * COLOUR,cosrlat,CREF,DSEG(4),FACTOR,FZCNT,GKSOPN,GRAPHF,HAVEX, * HMARK,HPSCLA,HPSCLB,IDSEG,IDTK,IPRIM,ISEQ,LHIA,LHIB,LLOBA,LOSFLG, * LOWFLG,LPEN,LUHP,LUTK,LUSY,maplat,maplong,mapproj,maptype,maxyp, * MIRAF,MIRBF,NEWFIL,OLDGZA,OLDGZB,OLDHTA, * OLDHTB,OLDHPA,OLDHPB,OSFLG,OWFLG,PEN,PENF,PLTFLG,PLTOHA,PLTOHB, * PLTOTA,PLTOTB,PTYPE,ROTAT,ROTCOS,ROTSIN,SAVEF,SEG,TAX,TAY,TAZ, * TBX,TBY,TBZ,TCX,TCY,TCZ,TEKOPN,THIGHT,TSCLA,TSCLB,TTYPE,TWIDTH, * VDIST,VIEWF,XMAX,XMIN,XNEW,XOLD,XSCALE,XTEMP,YMAX,YMIN,YNEW,YOLD, * YSCALE,YTEMP,WINDOF,ZNEW,ZOLD,ZSCALE,ZTEMP COMMON /PLTCM2/ PMODE,FILEZ,FILET,FILEZEXT common /pltcm3/ numclr,rdclr,grnclr,blclr,wrtclr common /pltcm4/ xwwdth,xwhgth,xwxorg,xwyorg COMMON /TEKCM1/ TEKON,TEKOFF,HOME C ------------------ symbel.s -------------------------- .data .align 2 _readir.0: .space 4 _pens.1: .ascii "1" .ascii "2" .ascii "3" .ascii "4" .ascii "5" .ascii "6" .ascii "7" .ascii "8" .ascii "9" .ascii "A" .ascii "B" .ascii "C" .ascii "D" .ascii "E" .ascii "F" .ascii "G" .align 2 ___g77_icilist_0.3: .long 1 .long 0 .long 1 .long ___g77_format_999.2 .long 2 .long 1 .const_data ___g77_format_999.2: .ascii "(I2)" .data .cstring LC14: .ascii "(I3)\0" .data .align 2 ___g77_icilist_1.4: .long 1 .long 0 .long 0 .long LC14 .long 0 .long 1 -- Summary: g77/gcc version 3.4.0 bug Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: libf2c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dave dot kachel at noaa dot gov http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43754