dwarf2 default for alpha-elf
Toon Moene
toon@moene.indiv.nluug.nl
Sun Nov 19 06:27:00 GMT 2000
Richard Henderson wrote:
> So I'm making dwarf2 the default on alpha/elf. I strongly
> urge folks to also get today's binutils cvs as well, though
> that is not required for correct operation.
Somehow this screws up the compilation of the following Fortran routine
(Red Hat 6.0) - it dies in dwarf2out:loc_descriptor_from_tree. This is
what gdb has to say about it:
Starting program:
/usr/snp/lib/gcc-lib/alphaev6-unknown-linux-gnu/2.97/f771 datsel2.f
-quiet -dumpbase datsel2.f -g -O2 -version -o /tmp/cc8yWf7a.s
GNU F77 version 2.97 20001119 (experimental)
(alphaev6-unknown-linux-gnu) compiled by GNU C version 2.97 20001119
(experimental).
Breakpoint 1, loc_descriptor_from_tree (loc=0x200000a1d00, addressp=0)
at ../../gcc/gcc/dwarf2out.c:7716
7716 abort ();
(gdb) p debug_tree(loc)
<function_decl 0x200000a1d00 datsel2_
type <function_type 0x20000096100
type <void_type 0x20000090600 void asm_written VOID
align 8 symtab 0 alias set -1
pointer_to_this <pointer_type 0x20000090700>>
[ ... etc ... ]
Strange, this function_decl ...
Here's the source:
SUBROUTINE DATSEL2(
> ALAT ,ALATN ,ALATS ,ALONE ,ALONW ,CENLAT ,CENLON ,
> ICUROW ,IDSLAB ,IFIRST ,ILAST ,IMXOUT ,IMXSEL ,INODAT ,
> INOUTO ,IOBPNT ,IOBTYP ,IRECL ,KENDLN ,KENDRW ,KOBTYP ,
> KSTLON ,KSTROW ,LOPOLE ,LOSEL ,LOSUPM ,LOSUPO ,MOUTPO ,
> MSELPO ,NLARPN ,NLATM ,NLON ,NLONMX ,NMXOBS ,
> NOBTBP ,NOBTOC ,NOUT ,NOUTDT ,NPA ,NPAICT ,NPALAT ,
> NPALNT ,NPALON ,NPANDT ,NPARLN ,NPASTS ,NPATAB ,NPSELO ,
> NRPSBP ,NRPSOC ,NRRJBP ,NRRJOC ,NSLDBP ,NSLDOC ,RDIANS ,
> RPA ,ZCELAT ,ZCOALA ,ZDISTX ,ZDISTY ,ZOBLAT ,ZOBLON )
I M P L I C I T
1 INTEGER(H),LOGICAL(L),CHARACTER*8 (Y)
DIMENSION ALAT(NLATM+1)
DIMENSION MOUTPO(IMXOUT)
DIMENSION MSELPO(2*NMXOBS)
DIMENSION NLON(NLATM+1)
DIMENSION NOUTDT(IMXOUT)
DIMENSION NPA(NLARPN+NPALNT)
DIMENSION NPATAB(NLONMX+1,NLATM+1)
DIMENSION NRPSBP(1)
DIMENSION NRPSOC(1)
DIMENSION NRRJBP(1)
DIMENSION NRRJOC(1)
DIMENSION NSLDBP(4)
DIMENSION NSLDOC(4)
DIMENSION RPA(NLARPN+NPALNT)
DIMENSION ZDISTX(IMXOUT)
DIMENSION ZDISTY(IMXOUT)
I15BIT(INVAR,IBIT15)=IAND(ISHFT(INVAR,(1-IBIT15)*15),2**15-1)
I6BIT(INVAR,IBIT6)=IAND(ISHFT(INVAR,(1-IBIT6)*6),2**6-1)
IBITS (INVAR,IPOS,ICOVR)=IAND(ISHFT(INVAR,-IPOS),ICOVR)
INSERT(INVAR,INVAL,NBIT)=IOR(INVAR,ISHFT(INVAL,NBIT))
ICHBPT(IVAR,IBP,IBO)=IAND(IVAR,
& IOR(ISHFT(NOT(0),IBP+IBO),
& NOT(ISHFT(NOT(0),IBP))))
NBITS(NBIT)=NOT(ISHFT(NOT(0),NBIT))
SWVPRS(T) =EXP(1.809851 + 17.27 * T / (T + 237.3))
RELHUM(T,TD) =SWVPRS(TD) / SWVPRS(T) * 100.
IPSSDP(DP) =MAX(0,MIN(32767,IFIX((DP+16.)*1024.)))
IPSSSN(SN) =MAX(0,MIN(32767,IFIX((SN+350.)*32.)))
IPSSER(ER) =MAX(0,MIN(32767,INT ( ER*1024.+0.5 )))
IPSSES(PES) =MAX(0,MIN(32767,INT(PES*16384.+0.5 )))
LOOACT(K)= IBITS( K , NRACBP(1) , NBITS(NRACOC(1)) ) .EQ. 1
LOOPAS(K)= IBITS( K , NRPSBP(1) , NBITS(NRPSOC(1)) ) .EQ. 1
LOOREJ(K)= IBITS( K , NRRJBP(1) , NBITS(NRRJOC(1)) ) .EQ. 1
LOOSAC(K)= LOOACT(K) .AND. .NOT.LOOPAS(K) .AND. .NOT.LOOREJ(K)
LODACT(K)= IBITS( K , NDACBP , NBITS(NDACOC) ) .EQ. 1
LODPAS(K)= IBITS( K , NDPSBP , NBITS(NDPSOC) ) .EQ. 1
LODREJ(K)= IBITS( K , NDRJBP , NBITS(NDRJOC) ) .EQ. 1
LODSOB(K)= IBITS( K , NSOBBP , NBITS(NSOBOC) ) .EQ. 1
LODCHK(K)= IBITS( K , NCHKBP , NBITS(NCHKOC) ) .EQ. 1
LODOVR(K)= IBITS( K , NVDBBP+NF1BPS(3) , NBITS(NF1BOC(3)) ) .EQ. 1
SOBDEV(K)= IBITS( K , NPNDBP , NBITS(NPNDOC ) ) / 1024. - 16.
SOBDSN(K)= ((IBITS( K ,NPNDBP ,NBITS(NPNDOC))/32.)-350.)
SOBERR(K)= IBITS( K , NPNEBP , NBITS(NPNEOC ) ) / 1024.
SERRSC(K)= IBITS( K , NESCBP , NBITS(NESCOC ) ) / 16384.
SOBPR(K)=IBITS(K,NPPPBP,NBITS(NPPPOC))*RFACT(NVAR(1))
SOLTH(K)=IBITS(K,NPRLBP,NBITS(NPRLOC))*RFACT(NVAR(1))
INSLDT(K,KSL)=IBITS( K , NSLDBP(KSL+1) , NBITS(NSLDOC(KSL+1)) )
ICUROW=KSTROW
ZCOALA=COS( (CENLAT+ALAT(ICUROW))/2.*RDIANS )
IF(KENDLN.GT.KSTLON)
& THEN
IFIRST=NPATAB(KSTLON,KSTROW)-1
ILAST=NPATAB(KENDLN,KENDRW)-1
ELSE
IFIRST=NPATAB(1,KSTROW)-1
ILAST=NPATAB(NLON(KENDRW)+1,KENDRW)-1
ENDIF
IF(IFIRST.EQ.-1 .OR. ILAST.EQ.IFIRST ) GO TO 290
IOBPNT=IFIRST
220 CONTINUE
IF(IOBPNT.GE.ILAST) GO TO 290
IF(KENDLN.GT.KSTLON)
& THEN
IF(IOBPNT.GE.NPATAB(KENDLN,ICUROW)-1)
& THEN
ICUROW=ICUROW+1
IF(ICUROW.GT.KENDRW) GO TO 220
ZCOALA=COS( (CENLAT+ALAT(ICUROW))/2.*RDIANS )
IOBPNT=MAX( NPATAB(KSTLON,ICUROW)-1 , IOBPNT )
IF(IOBPNT.EQ.NPATAB(KENDLN,ICUROW)-1) GO TO 220
ENDIF
ELSE
IF(IOBPNT.EQ.NPATAB(KENDLN,ICUROW)-1)
& THEN
IOBPNT=NPATAB(KSTLON,ICUROW)-1
ENDIF
IF(IOBPNT.GE.NPATAB(NLON(ICUROW)+1,ICUROW)-1)
& THEN
ICUROW=ICUROW+1
IF(ICUROW.GT.KENDRW) GO TO 220
ZCOALA=COS( (CENLAT+ALAT(ICUROW))/2.*RDIANS )
IOBPNT=MAX( NPATAB(1,ICUROW)-1 , IOBPNT )
IF(IOBPNT.EQ.NPATAB(KENDLN,ICUROW)-1) GO TO 220
ENDIF
ENDIF
IRECL=NPA(IOBPNT+NPARLN)
INODAT=INSLDT( NPA(IOBPNT+NPANDT) , IDSLAB )
IF(INODAT.EQ.0) GO TO 280
IF(LOOREJ(NPA(IOBPNT+NPASTS)) .AND.
& .NOT.LOOPAS(NPA(IOBPNT+NPASTS)) ) GO TO 280
IF(LOSUPM)
& THEN
IOBTYP=IBITS( NPA(IOBPNT+NPAICT) , NOBTBP , NBITS(NOBTOC) )
IF (IOBTYP.NE.KOBTYP) GO TO 280
ENDIF
LOSEL=.FALSE.
ZOBLAT=RPA(IOBPNT+NPALAT)
ZOBLON=RPA(IOBPNT+NPALON)
ZEPS = 1.0E-5 ! Note: dependent on REAL a 32-bit quantity.
IF(ALONW.LT.ALONE)
& THEN
LOSEL = ZOBLON .GE. ALONW - ZEPS .AND.
& ZOBLON .LT. ALONE + ZEPS
ELSE
LOSEL = ZOBLON .GE. ALONW + ZEPS .OR.
& ZOBLON .LT. ALONE - ZEPS
ENDIF
IF(.NOT.LOSEL) GO TO 260
IF (ZOBLAT .GT. ALATN + ZEPS .OR.
& ZOBLAT .LE. ALATS - ZEPS) GO TO 260
NPSELO=NPSELO+1
IF(NPSELO.GT.IMXSEL)
& THEN
WRITE(NOUT,'('' MAX NUMBER OF PRE-SELECTED OBSERVATIONS'',
& '' EXCEEDED ='',I5)') NPSELO
WRITE(NOUT,'('' CENLAT='',F7.2,'' CENLON='',F8.2)') CENLAT,
& CENLON
NPSELO=NPSELO-1
GO TO 290
ENDIF
MSELPO(NPSELO)=IOBPNT
IF(LOSUPO) MSELPO(NPSELO)=IOBPNT+NLARPN
IOBPNT=IOBPNT+IRECL
GO TO 220
260 CONTINUE
if(losupm)then
write(6,*)'datsel2 after label 260: fatal error.'
write(6,*)'outer observation while superobbing.'
write(6,*)' ypmode: ',ypmode
write(6,*)' kstrow, kendrw, icurow: ',kstrow,kendrw,icurow
write(6,*)' kstlon, kendln: ',kstlon,kendln
write(6,'(A,4F25.16)')' alatn, alats, alonw, alone: ',
& alatn,alats,alonw,alone
write(6,'(A,I5,2F25.16)')' iobtyp, zoblat, zoblon: ',
& iobtyp,zoblat,zoblon
close(6)
call endrun
endif
INOUTO=INOUTO+1
IF(INOUTO.GT.IMXOUT)
& THEN
WRITE(NOUT,'('' MAX NUMBER OF MAXIMUM AREA OBSERVATIONS'',
& '' EXCEEDED ='',I5)') INOUTO
WRITE(NOUT,'('' CENLAT='',F7.2,'' CENLON='',F8.2)') CENLAT,
& CENLON
INOUTO=INOUTO-1
GO TO 290
ENDIF
MOUTPO(INOUTO)=IOBPNT
IF(LOSUPO) MOUTPO(INOUTO)=IOBPNT+NLARPN
ZDISTY(INOUTO)=ZOBLAT-ZCELAT
ZDISTX(INOUTO)=ABS(ZOBLON-CENLON)
IF(ZDISTX(INOUTO).GT.180.) ZDISTX(INOUTO)=360.-ZDISTX(INOUTO)
ZDISTX(INOUTO)=ZDISTX(INOUTO)*ZCOALA
IF(LOPOLE) ZDISTX(INOUTO)=ZDISTX(INOUTO) + ZDISTX(INOUTO)**2/
& (180.*ZCOALA)**2 * ( 180.-ABS(ZCELAT)-ABS(ZOBLAT)-180.*ZCOALA)
NOUTDT(INOUTO)=INODAT
280 CONTINUE
IOBPNT=IOBPNT+IRECL
GO TO 220
290 CONTINUE
RETURN
END
--
Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html
GNU Fortran 95: http://g95.sourceforge.net/ (under construction)
More information about the Gcc-patches
mailing list