This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

unroll.c (copy_loop_body): splittable_regs[src_regno] with src_regno == -1 - BWAM !


Detected with today's CVS contents, but might have been there longer (I
only came around today testing an abort with our NWP software - this
might or might not be the deeper cause).

Note the compiler options: -O1 -funroll-loops.  Originally, all of this
code was compiled with -O2 -funroll-loops.  The resulting executable
aborted due to an inconsistency detected by the program itself.  This,
however, is a genuine compiler crash.

[toon@moene g77-bugs]$ gdb
/usr/snp/lib/gcc-lib/i686-pc-linux-gnu/2.96/f771
GNU gdb 19990816
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) run  DATNUM.f -quiet -dumpbase DATNUM.f -O1 -version -fversion
-funroll-loops -o DATNUM.s
Starting program: /usr/snp/lib/gcc-lib/i686-pc-linux-gnu/2.96/f771
DATNUM.f -quiet -dumpbase DATNUM.f -O1 -version -fversion -funroll-loops
-o DATNUM.s
GNU F77 version 2.96 19990926 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 2.96 19990926 (experimental).
GNU Fortran Front End version 0.5.25 19990926 (experimental)

Program received signal SIGSEGV, Segmentation fault.
0x817c580 in copy_loop_body (copy_start=0x842afc0, copy_end=0x842b0ac,
map=0xbfff5fc8, exit_label=0x849941c, last_iteration=0, 
    unroll_type=UNROLL_MODULO, start_label=0x842aff8,
loop_end=0x842bac4, insert_before=0x842b104, copy_notes_from=0x842b104)
    at ../../egcs/gcc/unroll.c:1885
1885                      splittable_regs[regno]
(gdb) p regno
No symbol "regno" in current context.
(gdb) list
1880                      /* If non-reduced/final-value givs were split,
then
1881                         this would have to remap those givs also. 
See
1882                         find_splittable_regs.  */
1883    #endif
1884    
1885                      splittable_regs[regno]
1886                        = GEN_INT (INTVAL (giv_inc)
1887                                   + INTVAL
(splittable_regs[src_regno]));
1888                      giv_inc = splittable_regs[regno];
1889    
(gdb) p src_regno
$1 = -1

Looks no good.  Here's the relevant Fortran source:

      SUBROUTINE DATNUM(YPMODE,PLATN,PLATS,PLONW,PLONE,KOBS,KDAT,KSLDAT,
     &                  PILATN,PILATS,PILONW,PILONE,LPINND,
     > ALAT    ,DLONM   ,MSPTAB  ,NLON    ,NPATAB  ,RPA     ,NPA     ,
     > SUPPA   ,NSUPPA  ,WLONM   )
                             I M P L I C I T
     1 INTEGER(H),LOGICAL(L),CHARACTER*8 (Y)

      DIMENSION ALAT(NLATM+1)
      DIMENSION DLONM(NLATM+1)
      DIMENSION MSPTAB(NLONMX+1,NLATM+1)
      DIMENSION NLON(NLATM+1)
      DIMENSION NPATAB(NLONMX+1,NLATM+1)
      DIMENSION RPA(MCURRL+NPALNT)
      DIMENSION SUPPA(NMXSPA)
      DIMENSION WLONM(NLATM+1)
      CHARACTER*(*) YPMODE

      COMMON/COMRES/
     I NLATM,    NHLATM,   NLONMX,   NLP2,     NMP1,     NNP1,
     I NKP1,     NSP,      NLEVM,    NLVMP1,   DLLAT2,   DLLON2


                             C O M M O N/COFHDR/
     1 NHEADR
     2,NCFRLN         ,NCFONM         ,NCFMBN         ,NCFOTP
     3,NCFICT         ,NCFLAT         ,NCFLON         ,NCFDAT
     4,NCFSTM         ,NCFETM
     5,NCFSID(      2),NCFALT         ,NCFOFL         ,NCFKY1
     6,NCFKY2         ,NCFNLV         ,NCFOEC         ,NCFST1
     7,NCFST2         ,NCFST3         ,NCFST4         ,NCFDHM
     8,NCFCHK         ,NCFISP         ,NCFSCH
     1,NCFMHH         ,NCFMSL         ,NCFMRL         ,NCFMAL
     2,NCFMPP         ,NCFMT2         ,NCFMTS         ,NCFMTD
     3,NCFMQ2         ,NCFMWS         ,NCFMWD         ,NCFMSD
     4,NCFESC
                             C O M M O N/COFHDR/
     1 NICDBP         ,NICDOC         ,NOCDBP         ,NOCDOC
     +,NCI4BP         ,NCI4OC         ,NCAPBP         ,NCAPOC
     +,NCBPBP         ,NCBPOC
     2,NONMBP         ,NONMOC         ,NBOXBP         ,NBOXOC
     3,NRBFBP         ,NRBFOC         ,NRFBPS(      5),NRFBOC
     4,NRFIBP(      5),NRFIOC(      5)
     5,NSTDBP         ,NSTDOC         ,NSNDBP         ,NSNDOC
     6,N2TDBP         ,N2TDOC         ,N2RDBP         ,N2RDOC
     7,NPREBP         ,NPREOC
     1,NMAWBP         ,NMAWOC         ,NHUMBP         ,NHUMOC
     2,NSSTBP         ,NSSTOC         ,NSNWBP         ,NSNWOC
     3,NT2MBP         ,NT2MOC         ,NR2MBP         ,NR2MOC
     +,NPRCBP         ,NPRCOC         ,NANYBP         ,NANYOC
     4,NRACBP(      1),NRACOC(      1),NRPSBP(      1),NRPSOC(      1)
     5,NRRJBP(      1),NRRJOC(      1),NREVBP( 13,  1),NREVOC(      1)


                             C O M M O N/COFBDY/
     1 NCFBLN         ,NCFFLGLN
     1,NCFVNM         ,NCFPPP         ,NCFPRL         ,NCFPOB
     +,NCFVAR         ,NCFVOB
     3,NCFFGS         ,NCFOMF         ,NCFOMA         ,NCFOMI
     4,NCFOF1         ,NCFOF2         ,NCFOF3
     5,NCFOER         ,NCFOBS         ,NCFFGE         ,NCFPER
     6,NCFFLG(      2),NCFFL1(      2)
     1,NFDBBP         ,NFDBOC         ,NPDBBP         ,NVDBBP
     2,NINLBP         ,NCDPBP         ,NLIDPT(      9)
     3,NPDBOC         ,NVDBOC         ,NCFBPS(      7),NCFBOC(      7)
     4,NINLOC         ,NCDPOC         ,NLIDPO
     5,NDACBP         ,NDACOC         ,NDPSBP         ,NDPSOC
     6,NDRJBP         ,NDRJOC         ,NFGFBP         ,NFGFOC
     7,NDPFBP         ,NDPFOC         ,NFNFBP         ,NFNFOC
     8,NCHKBP         ,NCHKOC         ,NSOBBP         ,NSOBOC
     9,NDEVBP(     25),NDEVOC
     +,NPPOBP         ,NPPOOC         ,NPFOBP         ,NPFOOC
                             C O M M O N/COFBDY/
     1 NPDBWO         ,NINLWO         ,NCDPWO         ,NVDBWO
     2,NDACWO         ,NDPSWO         ,NDRJWO         ,NFGFWO
     3,NDPFWO         ,NFNFWO         ,NCHKWO         ,NSOBWO
     4,NDEVWO


                             C O M M O N/OBCDTP/
     1 NSYNOP         ,NAIREP         ,NSATOB         ,NDRIBU
     2,NTEMP          ,NPILOT         ,NSATEM         ,NPAOB
     1,NSRSCD         ,NATSCD
     2,NSHSCD         ,NABSCD         ,NSHRED         ,NATSHS
     3,NAIRCD         ,NCODAR         ,NCOLBA          ,NAMDAR
     &,NMBTMP         ,NACARS         ,NWINPR
     4,NSTBCD         ,NSST
     5,NDRBCD         ,NBATHY         ,NTESAC         ,NERS1W
     6,NLDTCD         ,NSHTCD         ,NTDROP         ,NROCOB
     7,                                                NROCSH
     8,NLDPCD         ,NSHPCD
     9,NSTMCD         ,NSTOVS
     3,NPABCD


      COMMON /COMSUP/
     &   NTYPSO , MTYPSO(20)
     & , NSOMIN(20) , NSZMIN(20) , NSUMIN(20), NSVMIN(20) , NSFMIN(20)
     & , NSRMIN(20)
     & , NSATLV(4) , SATPRE(20,4) , SATREF(20,4)


      COMMON /COMOBS/
     &   NTYPOB , NMXOBS , NMXDAT , N2MXDT , NMXDATO , NMXOBSO
     & , NDCHCL , NMXDTC , NMXDRJ , NLDCST , NLFDCS  , NLMATS
     & , NMXSTO , NMXSPA , NMXSLA , NMXARL
     & , ASATHC , BSATHC
     & , NDVAR  , MCODEZ , MCODEU , MCODEV , MCODEF
     & , MCODHRS, MCODHSA, MCODHSY(5), NCODHSY
     & , LSAVHO
     & , NMXGRP , NMXELV , NMXEPT
     & , NMXAGP , NMXALV , NMXAPT , MROWLE
     & , NMXBOV , NMXREA
     & , NPOIUF


      COMMON /COMCRI/
     &   ANOVL  , DSOVLMN   , DSOVLMX   , RATMXS
     & , NSLABS , BDLSLA(8) , BDUSLA(8)


      COMMON/COMPHY/
     R RPI,      RTWOPI,   RPIO2,    RDIANS,   RDTODG,
     R REARTH,   OMEGA,    G,        RD,       RV,       RGOR,
     R CPD,      CPV,      VTMPC1,   VTMPC2,
     R TMELT,    C1ES,     C2ES,     C3LES,
     R C3IES,    C4LES,    C4IES,
     R RCONST,   RSINAG,   RCOSAG,   RKELVN,   RPSCAL,
     R RYDAYS,   RHRDAY,   RMINHR,   RHOUR,    RHR03,
     R CKAP,     CSPN,     CSPU,     CSPS,
     R CVROOTS,  CVROOTD,  CVROOTC,
     R CQSNCR,   WSMAX,    WLMAX,    CVLT
     R,RLAPSE
     R,RCIP,     RLAMDA,   RDT,      RD1,      RD2,      RD3
     R,RGAMA,    VORMIN,   VORMAX,   EPSF
     R,RCS,      RCD   ,   RCC   ,   WCR,      WPWP


                             C O M M O N/PAFORM/
     1 NPAHDL
     2,NPARLN         ,NPAPNL         ,NPAOBN         ,NPAMBN
     3,NPALAT         ,NPALON         ,NPAALT         ,NPAOMA
     4,NPASID(      2),NPAICT         ,NPAOFL         ,NPANDT
     5,NPAECT         ,NPASTS
     1,NPRRBP         ,NPRROC         ,NNXRBP         ,NNXROC
     2,NOBTBP         ,NOBTOC         ,NECTBP         ,NECTOC
     3,NESCBP         ,NESCOC
     1,NPABDL         ,NPAVAR         ,NPAPRS         ,NPANED
     2,NPABD2(      2)
     1,NPPPBP         ,NPPPOC         ,NPRLBP         ,NPRLOC
     3,NPNDBP         ,NPNDOC         ,NPNEBP         ,NPNEOC
     4,NSLDBP(4)      ,NSLDOC(4)

                             C O M M O N/COMOBF/
     1 NFDRAO(14),         NDDRAO(17),
     2 NMXLOB,   NLNARR,   NCOUNT,   NLNCOF,   NLNPMX,   NPAGLB,
     3 NLNCCF,   NLNCPA,   NLENPR,   NPARRL,   NPCOUN,   NZCOUN,
     4 NRHCOUN,  MXLVOB,   NLNRET,   NPALNT,   NCURRL,   NANMOD,
     5 NCDDRS,   NMXDCL,   NPDDRS,   NMXDPL,   NINLEN,   NDQLEN,
     6 NSLOT,    MCURRL,   MCOREC,
     L LBFAOF


                             C O M M O N/NUMCON/
     1 RMDI,     NMDI
     1,RMULTF(      3),RMULWF(      3),RMULGF(      3),DCRJLI(  3,0:2)
     2,NOBITS         ,RFACT (     16),RMULHF(      3),RFGFAC( 12,  3)
     4,NPFACT(     12),NZFACT(     12),NPFLFC(     12),NZFLFC(     12)
     5,RPSET (     12),RZSET (     12)
     6,NTMPLC         ,NSATMC
     7,NTNDMX         ,RSTYLI(3)      ,RSTYTD(3)
     8,RDENST         ,RWSNCL         ,RWSNFA         ,RMTOMM
     9,RMSNCN         ,RSNGR1         ,RSNGR2         ,RSNCRV
     1,RSCHDP


                             C O M M O N/NMBRING/
     1 NVAR  (     13),NVNUMB(     46),NVRPOE(      5),NOBNUM
     1,NDZEX (      8),NZEX  (      8),NUEX  (      8),NVEX  (      8)
     2,NTEX  (      8),NTDEX (      8),NQEX  (      8),NT2EX (      8)
     3,NTD2EX(      8),NSTEX (      8),NPTEX (      8),NPRLEX(      8)
     4,NWWEX (      3),NGCLEX(      6),NACLEX(      3),NGRNEX(      3)
     5,NSPPEX(      2),NICEEX(      3),NRAINE(      3),NSHIPE(      2)
     6,NWAVEE(      3)
     1,NDZOT (      8),NZOT  (      8),NUOT  (      8),NVOT  (      8)
     2,NTOT  (      8),NTDOT (      8),NQOT  (      8),NT2OT (      8)
     3,NTD2OT(      8),NSTOT (      8),NPTOT (      8),NRHOT (      8)
     4,NWWOT (      3),NGCLOT(      6),NACLOT(      3),NGRNOT(      3)
     5,NSPPOT(      2),NICEOT(      3),NRAINO(      3),NSHIPO(      2)
     6,NWAVEO(      3),NCLOUT
     5,NORESN         ,NODREV         ,NODDEV         ,NRESON(      25)
     6,NVRSEC(      4)
      COMMON/COMIOD/
     I NIN,       NOUT,      NSPECI,    NG3I,      NG3PI,     NCLIMI
     I,NLEGI,     NLEGD,     NAOF,      NGPFG,     NRETRV,    NPAIO(7)
     I,NCFIO,     NGPAN,     NSPECO,    NG3O,      NG3A,      NDQF
     I,NBLHFI,    NBLHFO
     I,NFWORK,    NWRDIA,    NAERR,     NEVAER,    NCLERR
     I,NFCOUN,    NFBTUN,    NORZUN,    NORUUN,    NOSFUN
     I,NACOUN,    NMTTUN(4), NSUPUN,    NOUTTA,    NSAVOU
     I,NMCSL5,    NMCSL2,    NMSTIO,    NECSLI,    NFDSIO(3)

      DIMENSION KOBS(NSLABS),KDAT(NSLABS),KSLDAT(NSLABS),LPINND(NSLABS)
      DIMENSION NPA(MCURRL+NPALNT)
      DIMENSION NSUPPA(NMXSPA)
      DIMENSION IDWOR2(2)


      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)) )

 110  CONTINUE
      ITYPE=1
 200  CONTINUE
      IFSTLT=IFIX((ALAT(1)-PLATN)*NLATM/(ALAT(1)-ALAT(NLATM)))+1
      ILSTLT=IFIX((ALAT(1)-PLATS)*NLATM/(ALAT(1)-ALAT(NLATM)))+3
      IFSTLT=MIN(MAX(IFSTLT,2),NLATM)
      ILSTLT=MIN(MAX(ILSTLT,2),NLATM)
      ZCELAT=0.5*(PLATN+PLATS)
      DO 2010 J=2,NLATM
      IF(ABS(ALAT(J)-ZCELAT).GT.ABS(ALAT(J-1)-ZCELAT))THEN
         IMDLRW=J-1
         GOTO 2011
      ENDIF
 2010 CONTINUE
      IMDLRW=NLATM
 2011 CONTINUE
      IF(PLONE .LT. PLONW) THEN
         ILONW=1
         ILONE=NLONMX+1
      ELSE
         ILONW=IFIX((PLONW-WLONM(IMDLRW))/DLONM(IMDLRW))+1
         ILONE=IFIX((PLONE-WLONM(IMDLRW))/DLONM(IMDLRW))+3
         ILONW=MAX(MIN(ILONW,NLON(IMDLRW)),2)
         ILONE=MAX(MIN(ILONE,NLON(IMDLRW)),2)
      ENDIF
 210  CONTINUE
      DO 212 JSL=1,NSLABS
      KDAT(JSL)=0
      KOBS(JSL)=0
      LPINND(JSL)=.FALSE.
 212  CONTINUE
 220  CONTINUE
      LOSUPO=.FALSE.
 230  CONTINUE
      IF(YPMODE.EQ.'ANALYS' .OR. YPMODE.EQ.'HUMAN')
     & THEN
           LOANAL=.TRUE.
       ELSE
           LOANAL=.FALSE.
       ENDIF
      ZLONW=PLONW
      ZLONE=PLONE
      ZILONW=PILONW
      ZILONE=PILONE
      IF(ZILONW.GE.180.) ZILONW=ZILONW-360.
      IF(ZILONE.GE.180.) ZILONE=ZILONE-360.
      IF(ZLONW.GE.180.) ZLONW=ZLONW-360.
      IF(ZLONE.GE.180.) ZLONE=ZLONE-360.
      ZCELON=0.5*(ZILONW+ZILONE)
 300  CONTINUE
      DO 390 JLAT=IFSTLT,ILSTLT
 310  CONTINUE
      IF(LOSUPO)THEN
         IP=MSPTAB(ILONW,JLAT)-1
         IPLST=MSPTAB(ILONE,JLAT)-1
      ELSE
         IP=NPATAB(ILONW,JLAT)-1
         IPLST=NPATAB(ILONE,JLAT)-1
      ENDIF
      IF(IP .GE. IPLST) GOTO 390
 320  CONTINUE
      IF(LOSUPO)THEN
         ZOBLAT=SUPPA(IP+NPALAT)
         ZOBLON=SUPPA(IP+NPALON)
      ELSE
         ZOBLAT=RPA  (IP+NPALAT)
         ZOBLON=RPA  (IP+NPALON)
      ENDIF
      LOTHOB=.FALSE.
      ZEPS = 1.0E-5     ! Note: dependent on REAL a 32-bit quantity.
      IF(ZOBLAT.LE.(PLATN + ZEPS) .AND. ZOBLAT.GT.(PLATS - ZEPS))
     & THEN
           IF(ZLONW.LT.ZLONE)
     &      THEN
             IF(ZOBLON.GE.(ZLONW - ZEPS) .AND. ZOBLON.LT.(ZLONE + ZEPS))
     &          LOTHOB=.TRUE.
            ELSE
             IF(ZOBLON.GE.(ZLONW - ZEPS) .OR. ZOBLON.LT.(ZLONE + ZEPS))
     &          LOTHOB=.TRUE.
            ENDIF
       ENDIF
      IF(.NOT.LOTHOB) GO TO 370
 322  CONTINUE
      LOINNO=.FALSE.
      IF(.NOT.LOANAL .AND. .NOT. LOSUPO)
     &THEN
           IF(ZOBLAT.LE.PILATN .AND. ZOBLAT.GT.PILATS)
     &      THEN
                IF(ZILONW.LT.ZILONE)
     &           THEN
                     IF(ZOBLON.GE.ZILONW .AND. ZOBLON.LT.ZILONE)
     &               LOINNO=.TRUE.
                 ELSE
                     IF(ZOBLON.GE.ZILONW .OR. ZOBLON.LT.ZILONE)
     &               LOINNO=.TRUE.
                 ENDIF
            ENDIF
      ENDIF
 330  CONTINUE
      IF(LOSUPO)THEN
         I1=NSUPPA(IP+NPAOFL)
         I2=NSUPPA(IP+NPAICT)
      ELSE
         I1=NPA   (IP+NPAOFL)
         I2=NPA   (IP+NPAICT)
      ENDIF
      IF(LOOREJ(I1) .AND.  .NOT. LOOPAS(I1) ) GOTO 370
      IOBTYP=IBITS( I2 , NOBTBP , NBITS(NOBTOC) )
      LOSING=.FALSE.
          IF(YPMODE.EQ.'ANALYS' .AND. ( IOBTYP.EQ.0 .OR.
     &       IOBTYP.EQ.NSYNOP .OR. IOBTYP.EQ.NDRIBU .OR.
     &       IOBTYP.EQ.NPAOB          )
     &      )                              LOSING=.TRUE.
      DO 331 JSL=1,NSLABS
      KSLDAT(JSL)=0
 331  CONTINUE
      IF(LOSUPO)THEN
         I1=NSUPPA(IP+NPANDT)
      ELSE
         I1=NPA   (IP+NPANDT)
      ENDIF
      DO 333 JDAT=1,INSLDT( I1 , 0 )
      IF(LOSUPO)THEN
         IDWORP=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPAPRS)
         IDWORV=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPAVAR)
         IDWOR2(1)=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL+NPABD2(1))
         IDWOR2(2)=NSUPPA(IP+NPAHDL + (JDAT-1)*NPABDL+NPABD2(2))
      ELSE
         IDWORP=NPA   (IP+NPAHDL + (JDAT-1)*NPABDL + NPAPRS)
         IDWORV=NPA   (IP+NPAHDL + (JDAT-1)*NPABDL + NPAVAR)
         IDWOR2(1)=NPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPABD2(1))
         IDWOR2(2)=NPA(IP+NPAHDL + (JDAT-1)*NPABDL + NPABD2(2))
      ENDIF
      ZPRESS=SOBPR(IDWORP)
      IF(LODSOB(IDWOR2(NSOBWO))) GOTO 333
      IF(LODREJ(IDWOR2(NDRJWO)))
     & THEN
           IF(LOANAL)
     &     THEN
               GO TO 333
           ELSE
               IF(.NOT.LODPAS(IDWOR2(NDPSWO)) .AND. .NOT.
     &         LODACT(IDWOR2(NDACWO))) GO TO 333
           ENDIF
       ENDIF
      DO 332 JSL=1,NSLABS
      IF(ZPRESS.LT.BDUSLA(JSL) .OR. ZPRESS.GT.BDLSLA(JSL)) GO TO 332
      KDAT(JSL)=KDAT(JSL)+1
      KSLDAT(JSL)=KSLDAT(JSL)+1
      IF( IDWORV .EQ. MCODEZ
     &   .AND. LOSING )
     & THEN
           KDAT(JSL)=KDAT(JSL)+1
           KSLDAT(JSL)=KSLDAT(JSL)+1
       ENDIF
      IF(JSL.EQ.1 .AND. LOINNO) LPINND(JSL)=.TRUE.
      IF(JSL.GT.1 .AND. LOINNO) THEN
         IF(ZPRESS.LT.BDUSLA(JSL-1)) LPINND(JSL)=.TRUE.
      ENDIF
 332  CONTINUE
 333  CONTINUE
      DO 334 JSL=1,NSLABS
      IF(KSLDAT(JSL).GT.0) KOBS(JSL)=KOBS(JSL)+1
 334  CONTINUE
 340  CONTINUE
      IF(LOSUPO)THEN
         INDTOT=INSLDT( NSUPPA(IP+NPANDT) , 0 )
         NSUPPA(IP+NPANDT)=INDTOT
      ELSE
         INDTOT=INSLDT( NPA   (IP+NPANDT) , 0 )
         NPA   (IP+NPANDT)=INDTOT
      ENDIF
      DO 341 JSL=1,NSLABS
      IPACK=KSLDAT(JSL)
      IF(IPACK.GE.NBITS(NSLDOC(JSL+1)))
     & THEN
           WRITE(NOUT,'('' ** NUMBER OF DATA IN SLAB TOO LARGE TO BE''
     &                  '' PACKED IN DATNUM :'',I8)') IPACK
           CALL ENDRUN
       ELSE
           IF(LOSUPO)THEN
              NSUPPA(IP+NPANDT)=INSERT( NSUPPA(IP+NPANDT) ,
     &                                  IPACK , NSLDBP(JSL+1) )
           ELSE
              NPA   (IP+NPANDT)=INSERT( NPA   (IP+NPANDT) ,
     &                                  IPACK , NSLDBP(JSL+1) )
           ENDIF
       ENDIF
 341  CONTINUE
 370  CONTINUE
      IF(LOSUPO)THEN
         IP=IP+NSUPPA(IP+NPARLN)
      ELSE
         IP=IP+NPA   (IP+NPARLN)
      ENDIF
      IF(IP .LT. IPLST) GOTO 320
 390  CONTINUE
 400  CONTINUE
      IF(.NOT. LOSUPO) THEN
         LOSUPO=.TRUE.
         GOTO 300
      ENDIF
      RETURN
      END

-- 
Toon Moene (toon@moene.indiv.nluug.nl)
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
Phone: +31 346 214290; Fax: +31 346 214286
GNU Fortran: http://gcc.gnu.org/onlinedocs/g77_news.html


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]