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