Annotation of 3BSD/cmd/f77/defs, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: 
                      3: #ifdef unix
                      4: #      include <ctype.h>
                      5: #endif
                      6: 
                      7: #include "ftypes"
                      8: #include "defines"
                      9: #include "machdefs"
                     10: 
                     11: #define VL 6
                     12: 
                     13: #define MAXDIM 20
                     14: #define MAXINCLUDES 10
                     15: #define MAXLITERALS 20
                     16: #define MAXCTL 20
                     17: #define MAXHASH 401
                     18: #define MAXSTNO 201
                     19: #define MAXEXT 200
                     20: #define MAXEQUIV 150
                     21: #define MAXLABLIST 125
                     22: 
                     23: typedef union Expression *expptr;
                     24: typedef union Taggedblock *tagptr;
                     25: typedef union Chainedblock *chainp;
                     26: 
                     27: extern FILEP infile;
                     28: extern FILEP diagfile;
                     29: extern FILEP textfile;
                     30: extern FILEP asmfile;
                     31: extern FILEP initfile;
                     32: extern long int headoffset;
                     33: 
                     34: extern char token [ ];
                     35: extern int toklen;
                     36: extern int yylval;
                     37: extern int lineno;
                     38: extern char *infname;
                     39: extern int needkwd;
                     40: extern struct Labelblock *thislabel;
                     41: 
                     42: extern int maxctl;
                     43: extern int maxequiv;
                     44: extern int maxstno;
                     45: extern int maxhash;
                     46: extern int maxext;
                     47: 
                     48: extern flag profileflag;
                     49: extern flag optimflag;
                     50: extern flag nowarnflag;
                     51: extern flag ftn66flag;
                     52: extern flag no66flag;
                     53: extern flag noextflag;
                     54: extern flag shiftcase;
                     55: extern flag undeftype;
                     56: extern flag shortsubs;
                     57: extern flag onetripflag;
                     58: extern flag checksubs;
                     59: extern flag debugflag;
                     60: extern int nerr;
                     61: extern int nwarn;
                     62: extern int ndata;
                     63: 
                     64: extern int parstate;
                     65: extern flag headerdone;
                     66: extern int blklevel;
                     67: extern flag saveall;
                     68: extern flag substars;
                     69: extern int impltype[ ];
                     70: extern int implleng[ ];
                     71: extern int implstg[ ];
                     72: 
                     73: extern int tyint;
                     74: extern int tylogical;
                     75: extern ftnint typesize[];
                     76: extern int typealign[];
                     77: extern int procno;
                     78: extern int proctype;
                     79: extern char * procname;
                     80: extern int rtvlabel[ ];
                     81: extern int fudgelabel; /* to confuse the pdp11 optimizer */
                     82: extern struct Addrblock *typeaddr;
                     83: extern struct Addrblock *retslot;
                     84: extern int cxslot;
                     85: extern int chslot;
                     86: extern int chlgslot;
                     87: extern int procclass;
                     88: extern ftnint procleng;
                     89: extern int nentry;
                     90: extern flag multitype;
                     91: extern int blklevel;
                     92: extern int lastlabno;
                     93: extern int lastvarno;
                     94: extern int lastargslot;
                     95: extern int argloc;
                     96: extern ftnint autoleng;
                     97: extern ftnint bssleng;
                     98: extern int retlabel;
                     99: extern int ret0label;
                    100: extern int dorange;
                    101: extern int regnum[ ];
                    102: extern struct Nameblock *regnamep[ ];
                    103: extern int maxregvar;
                    104: extern int highregvar;
                    105: extern int nregvar;
                    106: 
                    107: extern chainp templist;
                    108: extern int maxdim;
                    109: extern chainp holdtemps;
                    110: extern struct Entrypoint *entries;
                    111: extern struct Rplblock *rpllist;
                    112: extern struct Chain *curdtp;
                    113: extern ftnint curdtelt;
                    114: extern flag toomanyinit;
                    115: 
                    116: extern flag inioctl;
                    117: extern int iostmt;
                    118: extern struct Addrblock *ioblkp;
                    119: extern int nioctl;
                    120: extern int nequiv;
                    121: extern int eqvstart;   /* offset to eqv number to guarantee uniqueness */
                    122: extern int nintnames;
                    123: extern int nextnames;
                    124: 
                    125: #ifdef SDB
                    126: extern int dbglabel;
                    127: extern flag sdbflag;
                    128: #endif
                    129: 
                    130: struct Chain
                    131:        {
                    132:        chainp nextp;
                    133:        tagptr datap;
                    134:        };
                    135: 
                    136: extern chainp chains;
                    137: 
                    138: struct Headblock
                    139:        {
                    140:        unsigned tag:4;
                    141:        unsigned vtype:4;
                    142:        unsigned vclass:4;
                    143:        unsigned vstg:4;
                    144:        expptr vleng;
                    145:        } ;
                    146: 
                    147: struct Ctlframe
                    148:        {
                    149:        unsigned ctltype:8;
                    150:        unsigned dostepsign:8;
                    151:        int ctlabels[4];
                    152:        int dolabel;
                    153:        struct Nameblock *donamep;
                    154:        expptr domax;
                    155:        expptr dostep;
                    156:        };
                    157: #define endlabel ctlabels[0]
                    158: #define elselabel ctlabels[1]
                    159: #define dobodylabel ctlabels[1]
                    160: #define doposlabel ctlabels[2]
                    161: #define doneglabel ctlabels[3]
                    162: extern struct Ctlframe *ctls;
                    163: extern struct Ctlframe *ctlstack;
                    164: extern struct Ctlframe *lastctl;
                    165: 
                    166: struct Extsym
                    167:        {
                    168:        char extname[XL];
                    169:        unsigned extstg:4;
                    170:        unsigned extsave:1;
                    171:        unsigned extinit:1;
                    172:        ptr extp;
                    173:        ftnint extleng;
                    174:        ftnint maxleng;
                    175:        };
                    176: 
                    177: extern struct Extsym *extsymtab;
                    178: extern struct Extsym *nextext;
                    179: extern struct Extsym *lastext;
                    180: 
                    181: struct Labelblock
                    182:        {
                    183:        int labelno;
                    184:        unsigned blklevel:8;
                    185:        unsigned labused:1;
                    186:        unsigned labinacc:1;
                    187:        unsigned labdefined:1;
                    188:        unsigned labtype:2;
                    189:        ftnint stateno;
                    190:        };
                    191: 
                    192: extern struct Labelblock *labeltab;
                    193: extern struct Labelblock *labtabend;
                    194: extern struct Labelblock *highlabtab;
                    195: 
                    196: struct Entrypoint
                    197:        {
                    198:        chainp nextp;
                    199:        struct Extsym *entryname;
                    200:        chainp arglist;
                    201:        int entrylabel;
                    202:        int typelabel;
                    203:        ptr enamep;
                    204:        };
                    205: 
                    206: struct Primblock
                    207:        {
                    208:        unsigned tag:4;
                    209:        unsigned vtype:4;
                    210:        struct Nameblock *namep;
                    211:        struct Listblock *argsp;
                    212:        expptr fcharp;
                    213:        expptr lcharp;
                    214:        };
                    215: 
                    216: 
                    217: struct Hashentry
                    218:        {
                    219:        int hashval;
                    220:        struct Nameblock *varp;
                    221:        };
                    222: extern struct Hashentry *hashtab;
                    223: extern struct Hashentry *lasthash;
                    224: 
                    225: struct Intrpacked      /* bits for intrinsic function description */
                    226:        {
                    227:        unsigned f1:3;
                    228:        unsigned f2:4;
                    229:        unsigned f3:7;
                    230:        };
                    231: 
                    232: struct Nameblock
                    233:        {
                    234:        unsigned tag:4;
                    235:        unsigned vtype:4;
                    236:        unsigned vclass:4;
                    237:        unsigned vstg:4;
                    238:        expptr vleng;
                    239:        char varname[VL];
                    240:        unsigned vdovar:1;
                    241:        unsigned vdcldone:1;
                    242:        unsigned vadjdim:1;
                    243:        unsigned vsave:1;
                    244:        unsigned vprocclass:3;
                    245:        unsigned vregno:4;
                    246:        union   {
                    247:                int varno;
                    248:                chainp vstfdesc;        /* points to (formals, expr) pair */
                    249:                struct Intrpacked intrdesc;     /* bits for intrinsic function */
                    250:                } vardesc;
                    251:        struct Dimblock *vdim;
                    252:        ftnint voffset;
                    253:        };
                    254: 
                    255: 
                    256: struct Paramblock
                    257:        {
                    258:        unsigned tag:4;
                    259:        unsigned vtype:4;
                    260:        unsigned vclass:4;
                    261:        expptr vleng;
                    262:        char varname[VL];
                    263:        ptr paramval;
                    264:        } ;
                    265: 
                    266: 
                    267: struct Exprblock
                    268:        {
                    269:        unsigned tag:4;
                    270:        unsigned vtype:4;
                    271:        unsigned vclass:4;
                    272:        expptr vleng;
                    273:        unsigned opcode:6;
                    274:        expptr leftp;
                    275:        expptr rightp;
                    276:        };
                    277: 
                    278: 
                    279: union Constant
                    280:        {
                    281:        char *ccp;
                    282:        ftnint ci;
                    283:        double cd[2];
                    284:        };
                    285: 
                    286: struct Constblock
                    287:        {
                    288:        unsigned tag:4;
                    289:        unsigned vtype:4;
                    290:        expptr vleng;
                    291:        union Constant const;
                    292:        };
                    293: 
                    294: 
                    295: struct Listblock
                    296:        {
                    297:        unsigned tag:4;
                    298:        unsigned vtype:4;
                    299:        chainp listp;
                    300:        };
                    301: 
                    302: 
                    303: 
                    304: struct Addrblock
                    305:        {
                    306:        unsigned tag:4;
                    307:        unsigned vtype:4;
                    308:        unsigned vclass:4;
                    309:        unsigned vstg:4;
                    310:        expptr vleng;
                    311:        int memno;
                    312:        expptr memoffset;
                    313:        unsigned istemp:1;
                    314:        unsigned ntempelt:10;
                    315:        };
                    316: 
                    317: 
                    318: 
                    319: struct Errorblock
                    320:        {
                    321:        unsigned tag:4;
                    322:        unsigned vtype:4;
                    323:        };
                    324: 
                    325: 
                    326: union Expression
                    327:        {
                    328:        struct Headblock headblock;
                    329:        struct Exprblock exprblock;
                    330:        struct Addrblock addrblock;
                    331:        struct Constblock constblock;
                    332:        struct Errorblock errorblock;
                    333:        struct Listblock listblock;
                    334:        struct Primblock primblock;
                    335:        } ;
                    336: 
                    337: 
                    338: 
                    339: struct Dimblock
                    340:        {
                    341:        int ndim;
                    342:        expptr nelt;
                    343:        expptr baseoffset;
                    344:        expptr basexpr;
                    345:        struct
                    346:                {
                    347:                expptr dimsize;
                    348:                expptr dimexpr;
                    349:                } dims[1];
                    350:        };
                    351: 
                    352: 
                    353: struct Impldoblock
                    354:        {
                    355:        unsigned tag:4;
                    356:        unsigned isactive:1;
                    357:        unsigned isbusy:1;
                    358:        struct Nameblock *varnp;
                    359:        struct Constblock *varvp;
                    360:        expptr implb;
                    361:        expptr impub;
                    362:        expptr impstep;
                    363:        ftnint impdiff;
                    364:        ftnint implim;
                    365:        struct Chain *datalist;
                    366:        };
                    367: 
                    368: 
                    369: struct Rplblock        /* name replacement block */
                    370:        {
                    371:        chainp nextp;
                    372:        struct Nameblock *rplnp;
                    373:        ptr rplvp;
                    374:        struct Exprblock *rplxp;
                    375:        int rpltag;
                    376:        };
                    377: 
                    378: 
                    379: 
                    380: struct Equivblock
                    381:        {
                    382:        ptr equivs;
                    383:        unsigned eqvinit:1;
                    384:        long int eqvtop;
                    385:        long int eqvbottom;
                    386:        } ;
                    387: #define eqvleng eqvtop
                    388: 
                    389: extern struct Equivblock *eqvclass;
                    390: 
                    391: 
                    392: struct Eqvchain
                    393:        {
                    394:        chainp nextp;
                    395:        ptr eqvitem;
                    396:        long int eqvoffset;
                    397:        } ;
                    398: 
                    399: union Chainedblock
                    400:        {
                    401:        struct Chain;
                    402:        struct Entrypoint;
                    403:        struct Rplblock;
                    404:        struct Eqvchain;
                    405:        };
                    406: 
                    407: 
                    408: 
                    409: union Taggedblock
                    410:        {
                    411:        struct Headblock headblock;
                    412:        struct Nameblock nameblock;
                    413:        struct Paramblock paramblock;
                    414:        struct Exprblock exprblock;
                    415:        struct Constblock constblock;
                    416:        struct Listblock listblock;
                    417:        struct Addrblock addrblock;
                    418:        struct Errorblock errorblock;
                    419:        struct Primblock primblock;
                    420:        struct Impldoblock impldoblock;
                    421:        } ;
                    422: 
                    423: 
                    424: 
                    425: 
                    426: struct Literal
                    427:        {
                    428:        short littype;
                    429:        short litnum;
                    430:        union   {
                    431:                ftnint litival;
                    432:                double litdval;
                    433:                struct  {
                    434:                        char litclen;   /* small integer */
                    435:                        char litcstr[XL];
                    436:                        } litcval;
                    437:                } litval;
                    438:        };
                    439: 
                    440: extern struct Literal litpool[ ];
                    441: extern int nliterals;
                    442: 
                    443: 
                    444: 
                    445: 
                    446: 
                    447: /* popular functions with non integer return values */
                    448: 
                    449: 
                    450: int *ckalloc();
                    451: char *varstr(), *nounder(), *varunder();
                    452: char *copyn(), *copys();
                    453: chainp hookup(), mkchain();
                    454: ftnint convci();
                    455: char *convic();
                    456: char *setdoto();
                    457: double convcd();
                    458: struct Nameblock *mkname();
                    459: struct Labelblock *mklabel();
                    460: struct Extsym *mkext(), *newentry();
                    461: struct Exprblock *addrof(), *call1(), *call2(), *call3(), *call4();
                    462: struct Addrblock *builtin(), *mktemp(), *mktmpn();
                    463: struct Addrblock *autovar(), *mklhs(), *mkaddr(), *putconst(), *memversion();
                    464: struct Constblock *mkintcon();
                    465: expptr mkexpr(), mkconv(), mkfunct(), fixexpr(), fixtype();
                    466: tagptr cpexpr(), mkprim();
                    467: struct Errorblock *errnode();
                    468: 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.