Annotation of 43BSDReno/pgrm/f77/pass1.tahoe/defs.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)defs.h      5.1 (Berkeley) 6/7/85
                      7:  */
                      8: 
                      9: /*
                     10:  * defs.h
                     11:  *
                     12:  * Definitions for f77pass1
                     13:  *
                     14:  * University of Utah CS Dept modification history:
                     15:  *
                     16:  * $Header: defs.h,v 2.3 85/06/07 21:06:48 root Exp $
                     17:  * $Log:       defs.h,v $
                     18:  * Revision 2.3  85/06/07  21:06:48  root
                     19:  * Add copyright
                     20:  * 
                     21:  * Revision 2.2  85/01/11  21:02:58  donn
                     22:  * Added 'issaved' bit to addrblocks to help implement SAVE statements.
                     23:  * 
                     24:  * Revision 2.1  84/07/19  12:02:46  donn
                     25:  * Changed comment headers for UofU.
                     26:  * 
                     27:  * Revision 1.2  84/02/27  00:49:40  donn
                     28:  * Added external references to lists of argument temporaries, used in the
                     29:  * Berkeley changes to reduce offsets of data.
                     30:  * 
                     31:  */
                     32: 
                     33: #include <stdio.h>
                     34: 
                     35: #ifdef unix
                     36: #      include <ctype.h>
                     37: #endif
                     38: 
                     39: #include "ftypes.h"
                     40: #include "defines.h"
                     41: #include "machdefs.h"
                     42: 
                     43: #define VL 16
                     44: 
                     45: #define MAXDIM 20
                     46: #define MAXINCLUDES 10
                     47: #define MAXLITERALS 30
                     48: #define MAXCTL 20
                     49: #define MAXHASH 1009
                     50: #define MAXSTNO 401
                     51: #define MAXEXT 200
                     52: #define MAXEQUIV 150
                     53: #define MAXLABLIST 256
                     54: #define MAXDEBUGFLAG 20
                     55: 
                     56: typedef union Expression *expptr;
                     57: typedef union Taggedblock *tagptr;
                     58: typedef struct Chain *chainp;
                     59: typedef struct Addrblock *Addrp;
                     60: typedef struct Tempblock *Tempp;
                     61: typedef struct Constblock *Constp;
                     62: typedef struct Exprblock *Exprp;
                     63: typedef struct Nameblock *Namep;
                     64: 
                     65: extern FILEP infile;
                     66: extern FILEP diagfile;
                     67: extern FILEP textfile;
                     68: extern FILEP asmfile;
                     69: extern FILEP initfile;
                     70: extern long int headoffset;
                     71: 
                     72: extern char token [ ];
                     73: extern int toklen;
                     74: extern int lineno;
                     75: extern char *infname;
                     76: extern int needkwd;
                     77: extern struct Labelblock *thislabel;
                     78: 
                     79: extern int maxctl;
                     80: extern int maxequiv;
                     81: extern int maxstno;
                     82: extern int maxhash;
                     83: extern int maxext;
                     84: 
                     85: extern flag profileflag;
                     86: extern flag optimflag;
                     87: extern flag nowarnflag;
                     88: extern flag ftn66flag;
                     89: extern flag no66flag;
                     90: extern flag noextflag;
                     91: extern flag shiftcase;
                     92: extern flag undeftype;
                     93: extern flag shortsubs;
                     94: extern flag onetripflag;
                     95: extern flag checksubs;
                     96: extern flag debugflag[];
                     97: extern flag equivdcl;
                     98: extern int nerr;
                     99: extern int nwarn;
                    100: extern int ndata;
                    101: 
                    102: extern int parstate;
                    103: extern flag headerdone;
                    104: extern int blklevel;
                    105: extern flag saveall;
                    106: extern flag substars;
                    107: extern int impltype[ ];
                    108: extern int implleng[ ];
                    109: extern int implstg[ ];
                    110: 
                    111: extern int tyint;
                    112: extern int tylogical;
                    113: extern ftnint typesize[];
                    114: extern int typealign[];
                    115: extern int procno;
                    116: extern int proctype;
                    117: extern char * procname;
                    118: extern int rtvlabel[ ];
                    119: extern int fudgelabel; /* to confuse the pdp11 optimizer */
                    120: extern Addrp typeaddr;
                    121: extern Addrp retslot;
                    122: extern int cxslot;
                    123: extern int chslot;
                    124: extern int chlgslot;
                    125: extern int procclass;
                    126: extern ftnint procleng;
                    127: extern int nentry;
                    128: extern flag multitype;
                    129: extern int blklevel;
                    130: extern int lastlabno;
                    131: extern int lastvarno;
                    132: extern int lastargslot;
                    133: extern int argloc;
                    134: extern ftnint autoleng;
                    135: extern ftnint bssleng;
                    136: extern int retlabel;
                    137: extern int ret0label;
                    138: extern int dorange;
                    139: extern int regnum[ ];
                    140: extern Namep regnamep[ ];
                    141: extern int maxregvar;
                    142: extern int highregvar;
                    143: extern int nregvar;
                    144: extern ftnint lowbss;
                    145: extern ftnint highbss;
                    146: extern int bsslabel;
                    147: extern flag anyinits;
                    148: extern flag anylocals;
                    149: 
                    150: extern chainp templist;
                    151: extern chainp argtemplist;
                    152: extern chainp activearglist;
                    153: extern int maxdim;
                    154: extern chainp holdtemps;
                    155: extern struct Entrypoint *entries;
                    156: extern struct Rplblock *rpllist;
                    157: extern struct Chain *curdtp;
                    158: extern ftnint curdtelt;
                    159: extern flag toomanyinit;
                    160: 
                    161: extern flag inioctl;
                    162: extern int iostmt;
                    163: extern Addrp ioblkp;
                    164: extern int nioctl;
                    165: extern int nequiv;
                    166: extern int eqvstart;   /* offset to eqv number to guarantee uniqueness */
                    167: extern int nintnames;
                    168: 
                    169: #ifdef SDB
                    170: extern int dbglabel;
                    171: extern flag sdbflag;
                    172: #endif
                    173: 
                    174: extern int cdatafile;
                    175: extern int cchkfile;
                    176: extern int vdatafile;
                    177: extern int vchkfile;
                    178: 
                    179: extern char cdatafname[];
                    180: extern char cchkfname[];
                    181: extern char vdatafname[];
                    182: extern char vchkfname[];
                    183: 
                    184: extern long cdatahwm;
                    185: extern long vdatahwm;
                    186: 
                    187: 
                    188: struct Chain
                    189:        {
                    190:        chainp nextp;
                    191:        tagptr datap;
                    192:        };
                    193: 
                    194: extern chainp chains;
                    195: 
                    196: struct Headblock
                    197:        {
                    198:        field tag;
                    199:        field vtype;
                    200:        field vclass;
                    201:        field vstg;
                    202:        expptr vleng;
                    203:        } ;
                    204: 
                    205: struct Ctlframe
                    206:        {
                    207:        unsigned ctltype:8;
                    208:        unsigned dostepsign:8;
                    209:        int ctlabels[4];
                    210:        int dolabel;
                    211:        Namep donamep;
                    212:        expptr domax;
                    213:        expptr dostep;
                    214:        };
                    215: #define endlabel ctlabels[0]
                    216: #define elselabel ctlabels[1]
                    217: #define dobodylabel ctlabels[1]
                    218: #define doposlabel ctlabels[2]
                    219: #define doneglabel ctlabels[3]
                    220: extern struct Ctlframe *ctls;
                    221: extern struct Ctlframe *ctlstack;
                    222: extern struct Ctlframe *lastctl;
                    223: 
                    224: struct Extsym
                    225:        {
                    226:        char extname[XL+1];
                    227:        field extstg;
                    228:        unsigned extsave:1;
                    229:        unsigned extinit:1;
                    230:        chainp extp;
                    231:        ftnint extleng;
                    232:        ftnint maxleng;
                    233:        char init;
                    234:        long initoffset;
                    235:        };
                    236: 
                    237: extern struct Extsym *extsymtab;
                    238: extern struct Extsym *nextext;
                    239: extern struct Extsym *lastext;
                    240: 
                    241: struct Labelblock
                    242:        {
                    243:        int labelno;
                    244:        unsigned blklevel:8;
                    245:        unsigned labused:1;
                    246:        unsigned labinacc:1;
                    247:        unsigned labdefined:1;
                    248:        unsigned labtype:2;
                    249:        ftnint stateno;
                    250:        };
                    251: 
                    252: extern struct Labelblock *labeltab;
                    253: extern struct Labelblock *labtabend;
                    254: extern struct Labelblock *highlabtab;
                    255: 
                    256: struct Entrypoint
                    257:        {
                    258:        struct Entrypoint *entnextp;
                    259:        struct Extsym *entryname;
                    260:        chainp arglist;
                    261:        int entrylabel;
                    262:        int typelabel;
                    263:        Namep enamep;
                    264:        };
                    265: 
                    266: struct Primblock
                    267:        {
                    268:        field tag;
                    269:        field vtype;
                    270:        Namep namep;
                    271:        struct Listblock *argsp;
                    272:        expptr fcharp;
                    273:        expptr lcharp;
                    274:        };
                    275: 
                    276: 
                    277: struct Hashentry
                    278:        {
                    279:        int hashval;
                    280:        Namep varp;
                    281:        };
                    282: extern struct Hashentry *hashtab;
                    283: extern struct Hashentry *lasthash;
                    284: 
                    285: struct Intrpacked      /* bits for intrinsic function description */
                    286:        {
                    287:        unsigned f1:3;
                    288:        unsigned f2:4;
                    289:        unsigned f3:7;
                    290:        };
                    291: 
                    292: struct Nameblock
                    293:        {
                    294:        field tag;
                    295:        field vtype;
                    296:        field vclass;
                    297:        field vstg;
                    298:        expptr vleng;
                    299:        char varname[VL];
                    300:        unsigned vdovar:1;
                    301:        unsigned vdcldone:1;
                    302:        unsigned vadjdim:1;
                    303:        unsigned vsave:1;
                    304:        unsigned vprocclass:3;
                    305:        unsigned vregno:4;
                    306:        union   {
                    307:                int varno;
                    308:                struct Intrpacked intrdesc;     /* bits for intrinsic function*/
                    309:                } vardesc;
                    310:        struct Dimblock *vdim;
                    311:        ftnint voffset;
                    312:        union   {
                    313:                chainp namelist;        /* points to chain of names in */
                    314:                chainp vstfdesc;        /* points to (formals, expr) pair */
                    315:                } varxptr;
                    316:        char inlcomm;
                    317:        char init;
                    318:        long initoffset;
                    319:        ftnint varsize;
                    320:        };
                    321: 
                    322: 
                    323: struct Paramblock
                    324:        {
                    325:        field tag;
                    326:        field vtype;
                    327:        field vclass;
                    328:        field vstg;
                    329:        expptr vleng;
                    330:        char varname[VL];
                    331:        expptr paramval;
                    332:        } ;
                    333: 
                    334: 
                    335: struct Exprblock
                    336:        {
                    337:        field tag;
                    338:        field vtype;
                    339:        field vclass;
                    340:        field vstg;
                    341:        expptr vleng;
                    342:        unsigned opcode:6;
                    343:        expptr leftp;
                    344:        expptr rightp;
                    345:        };
                    346: 
                    347: 
                    348: union Constant
                    349:        {
                    350:        char *ccp;
                    351:        ftnint ci;
                    352:        double cd[2];
                    353:        };
                    354: 
                    355: struct Constblock
                    356:        {
                    357:        field tag;
                    358:        field vtype;
                    359:        field vclass;
                    360:        field vstg;
                    361:        expptr vleng;
                    362:        union Constant const;
                    363:        };
                    364: 
                    365: 
                    366: struct Listblock
                    367:        {
                    368:        field tag;
                    369:        field vtype;
                    370:        chainp listp;
                    371:        };
                    372: 
                    373: 
                    374: 
                    375: struct Addrblock
                    376:        {
                    377:        field tag;
                    378:        field vtype;
                    379:        field vclass;
                    380:        field vstg;
                    381:        expptr vleng;
                    382:        int memno;
                    383:        expptr memoffset;
                    384:        unsigned istemp:1;
                    385:         unsigned isarray:1;
                    386:        unsigned issaved:1;
                    387:        unsigned ntempelt:10;
                    388:        ftnint varleng;
                    389:        ftnint varsize;
                    390:        };
                    391: 
                    392: 
                    393: 
                    394: struct Tempblock
                    395:        {
                    396:        field tag;
                    397:        field vtype;
                    398:        field vclass;
                    399:        expptr vleng;
                    400:        Addrp memalloc;
                    401:        unsigned istemp:1;
                    402:        unsigned ntempelt:10;
                    403:        ftnint varleng;
                    404:        };
                    405: 
                    406: 
                    407: 
                    408: struct Errorblock
                    409:        {
                    410:        field tag;
                    411:        field vtype;
                    412:        };
                    413: 
                    414: 
                    415: union Expression
                    416:        {
                    417:        field tag;
                    418:        struct Headblock headblock;
                    419:        struct Exprblock exprblock;
                    420:        struct Addrblock addrblock;
                    421:        struct Tempblock tempblock;
                    422:        struct Constblock constblock;
                    423:        struct Errorblock errorblock;
                    424:        struct Listblock listblock;
                    425:        struct Primblock primblock;
                    426:        } ;
                    427: 
                    428: 
                    429: 
                    430: struct Dimblock
                    431:        {
                    432:        int ndim;
                    433:        expptr nelt;
                    434:        expptr baseoffset;
                    435:        expptr basexpr;
                    436:        struct
                    437:                {
                    438:                expptr dimsize;
                    439:                expptr dimexpr;
                    440:                expptr lb;
                    441:                expptr lbaddr;
                    442:                expptr ub;
                    443:                expptr ubaddr;
                    444:                } dims[1];
                    445:        };
                    446: 
                    447: 
                    448: struct Impldoblock
                    449:        {
                    450:        field tag;
                    451:        unsigned isactive:1;
                    452:        unsigned isbusy:1;
                    453:        Namep varnp;
                    454:        Constp varvp;
                    455:        chainp impdospec;
                    456:        expptr implb;
                    457:        expptr impub;
                    458:        expptr impstep;
                    459:        ftnint impdiff;
                    460:        ftnint implim;
                    461:        struct Chain *datalist;
                    462:        };
                    463: 
                    464: 
                    465: struct Rplblock        /* name replacement block */
                    466:        {
                    467:        struct Rplblock *rplnextp;
                    468:        Namep rplnp;
                    469:        expptr rplvp;
                    470:        expptr rplxp;
                    471:        int rpltag;
                    472:        };
                    473: 
                    474: 
                    475: 
                    476: struct Equivblock
                    477:        {
                    478:        struct Eqvchain *equivs;
                    479:        flag eqvinit;
                    480:        long int eqvtop;
                    481:        long int eqvbottom;
                    482:        char inlcomm;
                    483:        char init;
                    484:        long initoffset;
                    485:        } ;
                    486: #define eqvleng eqvtop
                    487: 
                    488: extern struct Equivblock *eqvclass;
                    489: 
                    490: 
                    491: struct Eqvchain
                    492:        {
                    493:        struct Eqvchain *eqvnextp;
                    494:        union
                    495:                {
                    496:                struct Primblock *eqvlhs;
                    497:                Namep eqvname;
                    498:                } eqvitem;
                    499:        long int eqvoffset;
                    500:        } ;
                    501: 
                    502: 
                    503: union Taggedblock
                    504:        {
                    505:        field tag;
                    506:        struct Headblock headblock;
                    507:        struct Nameblock nameblock;
                    508:        struct Paramblock paramblock;
                    509:        struct Exprblock exprblock;
                    510:        struct Constblock constblock;
                    511:        struct Listblock listblock;
                    512:        struct Addrblock addrblock;
                    513:        struct Tempblock tempblock;
                    514:        struct Errorblock errorblock;
                    515:        struct Primblock primblock;
                    516:        struct Impldoblock impldoblock;
                    517:        } ;
                    518: 
                    519: 
                    520: 
                    521: 
                    522: struct Literal
                    523:        {
                    524:        short littype;
                    525:        short litnum;
                    526:        union   {
                    527:                ftnint litival;
                    528:                double litdval;
                    529:                struct  {
                    530:                        char litclen;   /* small integer */
                    531:                        char litcstr[XL];
                    532:                        } litcval;
                    533:                } litval;
                    534:        };
                    535: 
                    536: extern struct Literal litpool[ ];
                    537: extern int nliterals;
                    538: 
                    539: 
                    540: 
                    541: /* popular functions with non integer return values */
                    542: 
                    543: 
                    544: int *ckalloc();
                    545: char *varstr(), *nounder(), *varunder();
                    546: char *copyn(), *copys();
                    547: chainp hookup(), mkchain();
                    548: ftnint convci();
                    549: char *convic();
                    550: char *setdoto();
                    551: double convcd();
                    552: Namep mkname();
                    553: struct Labelblock *mklabel(), *execlab();
                    554: struct Extsym *mkext(), *newentry();
                    555: expptr addrof(), call1(), call2(), call3(), call4();
                    556: Tempp mktmpn();
                    557: Addrp builtin(), mktemp(), altmpn(), mkaltemp(), mkaltmpn(), autovar();
                    558: Addrp mkplace(), mkaddr(), putconst(), memversion();
                    559: expptr mkprim(), mklhs(), mkexpr(), mkconv(), mkfunct(), fixexpr(), fixtype();
                    560: expptr errnode(), mkintcon();
                    561: tagptr cpexpr();
                    562: ftnint lmin(), lmax(), iarrlen();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.