Annotation of 43BSD/lib/mip/pass1.h, revision 1.1

1.1     ! root        1: /*     pass1.h 4.2     85/08/22        */
        !             2: 
        !             3: #ifndef _PASS1_
        !             4: #define        _PASS1_
        !             5: 
        !             6: #include "macdefs.h"
        !             7: #include "manifest.h"
        !             8: 
        !             9: /*
        !            10:  * Symbol table definition.
        !            11:  *
        !            12:  * Colliding entries are moved down with a standard
        !            13:  * probe (no quadratic rehash here) and moved back when
        !            14:  * entries are cleared.
        !            15:  */
        !            16: struct symtab {
        !            17: #ifndef FLEXNAMES
        !            18:        char    sname[NCHNAM];
        !            19: #else
        !            20:        char    *sname;
        !            21: #endif
        !            22:        struct  symtab *snext;  /* link to other symbols in the same scope */
        !            23:        TWORD   stype;          /* type word */
        !            24:        char    sclass;         /* storage class */
        !            25:        char    slevel;         /* scope level */
        !            26:        char    sflags;         /* flags, see below */
        !            27:        int     offset;         /* offset or value */
        !            28:        short   dimoff;         /* offset into the dimension table */
        !            29:        short   sizoff;         /* offset into the size table */
        !            30:        int     suse;           /* line number of last use of the variable */
        !            31: };
        !            32: 
        !            33: /*
        !            34:  * Storage classes
        !            35:  */
        !            36: #define SNULL          0               /* initial value */
        !            37: #define AUTO           1               /* automatic (on stack) */
        !            38: #define EXTERN         2               /* external reference */
        !            39: #define STATIC         3               /* static scope */
        !            40: #define REGISTER       4               /* register requested */
        !            41: #define EXTDEF         5               /* external definition */
        !            42: #define LABEL          6               /* label definition */
        !            43: #define ULABEL         7               /* undefined label reference */
        !            44: #define MOS            8               /* member of structure */
        !            45: #define PARAM          9               /* parameter */
        !            46: #define STNAME         10              /* structure name */
        !            47: #define MOU            11              /* member of union */
        !            48: #define UNAME          12              /* union name */
        !            49: #define TYPEDEF                13              /* typedef name */
        !            50: #define FORTRAN                14              /* fortran function */
        !            51: #define ENAME          15              /* enumeration name */
        !            52: #define MOE            16              /* member of enumeration */
        !            53: #define UFORTRAN       17              /* undefined fortran reference */
        !            54: #define USTATIC                18              /* undefined static reference */
        !            55: 
        !            56: /* field size is ORed in */
        !            57: #define FIELD          0100
        !            58: #define FLDSIZ         077
        !            59: #ifndef BUG1
        !            60: extern char *scnames();
        !            61: #endif
        !            62: 
        !            63: /*
        !            64:  * Symbol table flags
        !            65:  */
        !            66: #define SMOS           01              /* member of structure */
        !            67: #define SHIDDEN                02              /* hidden in current scope */
        !            68: #define SHIDES         04              /* hides symbol in outer scope */
        !            69: #define SSET           010             /* symbol assigned to */
        !            70: #define SREF           020             /* symbol referenced */
        !            71: #define SNONUNIQ       040             /* non-unique structure member */
        !            72: #define STAG           0100            /* structure tag name */
        !            73: 
        !            74: /*
        !            75:  * Location counters
        !            76:  */
        !            77: #define PROG           0               /* program segment */
        !            78: #define DATA           1               /* data segment */
        !            79: #define ADATA          2               /* array data segment */
        !            80: #define STRNG          3               /* string data segment */
        !            81: #define ISTRNG         4               /* initialized string segment */
        !            82: #define STAB           5               /* symbol table segment */
        !            83: 
        !            84: 
        !            85: #ifndef ONEPASS
        !            86: #include "ndu.h"
        !            87: #endif
        !            88: 
        !            89: 
        !            90: #ifndef FIXDEF
        !            91: #define FIXDEF(p)
        !            92: #endif
        !            93: #ifndef FIXARG
        !            94: #define FIXARG(p)
        !            95: #endif
        !            96: #ifndef FIXSTRUCT
        !            97: #define FIXSTRUCT(a,b)
        !            98: #endif
        !            99: 
        !           100:        /* alignment of initialized quantities */
        !           101: #ifndef AL_INIT
        !           102: #define        AL_INIT ALINT
        !           103: #endif
        !           104: 
        !           105: /*
        !           106:  * External definitions
        !           107:  */
        !           108: struct sw {            /* switch table */
        !           109:        CONSZ   sval;   /* case value */
        !           110:        int     slab;   /* associated label */
        !           111: };
        !           112: extern struct sw swtab[];
        !           113: extern struct sw *swp;
        !           114: extern int swx;
        !           115: 
        !           116: extern int ftnno;
        !           117: extern int blevel;
        !           118: extern int instruct, stwart;
        !           119: 
        !           120: extern int lineno, nerrors;
        !           121: 
        !           122: extern CONSZ lastcon;
        !           123: extern float fcon;
        !           124: extern double dcon;
        !           125: 
        !           126: extern char ftitle[];
        !           127: extern char ititle[];
        !           128: extern struct symtab stab[];
        !           129: extern int curftn;
        !           130: extern int curclass;
        !           131: extern int curdim;
        !           132: extern int dimtab[];
        !           133: extern int paramstk[];
        !           134: extern int paramno;
        !           135: extern int autooff, argoff, strucoff;
        !           136: extern int regvar;
        !           137: extern int minrvar;
        !           138: extern int brkflag;
        !           139: typedef union {
        !           140:        int intval;
        !           141:        NODE * nodep;
        !           142:        } YYSTYPE;
        !           143: extern YYSTYPE yylval;
        !           144: extern char yytext[];
        !           145: 
        !           146: extern int strflg;
        !           147: 
        !           148: extern OFFSZ inoff;
        !           149: 
        !           150: extern int reached;
        !           151: 
        !           152: /* tunnel to buildtree for name id's */
        !           153: extern int idname;
        !           154: 
        !           155: extern NODE node[];
        !           156: extern NODE *lastfree;
        !           157: 
        !           158: extern int cflag, hflag, pflag;
        !           159: 
        !           160: /* various labels */
        !           161: extern int brklab;
        !           162: extern int contlab;
        !           163: extern int flostat;
        !           164: extern int retlab;
        !           165: extern int retstat;
        !           166: extern int asavbc[], *psavbc;
        !           167: 
        !           168: /* declarations of various functions */
        !           169: extern NODE
        !           170:        *buildtree(),
        !           171:        *bdty(),
        !           172:        *mkty(),
        !           173:        *rstruct(),
        !           174:        *dclstruct(),
        !           175:        *getstr(),
        !           176:        *tymerge(),
        !           177:        *stref(),
        !           178:        *offcon(),
        !           179:        *bcon(),
        !           180:        *bpsize(),
        !           181:        *convert(),
        !           182:        *pconvert(),
        !           183:        *oconvert(),
        !           184:        *ptmatch(),
        !           185:        *tymatch(),
        !           186:        *makety(),
        !           187:        *block(),
        !           188:        *doszof(),
        !           189:        *talloc(),
        !           190:        *optim(),
        !           191:        *fixargs(),
        !           192:        *clocal();
        !           193: OFFSZ  tsize(),
        !           194:        psize();
        !           195: TWORD  types();
        !           196: double atof();
        !           197: char   *exname(), *exdcon();
        !           198: 
        !           199: #define checkst(x)
        !           200: 
        !           201: #ifndef CHARCAST
        !           202: /* to make character constants into character connstants */
        !           203: /* this is a macro to defend against cross-compilers, etc. */
        !           204: #define CHARCAST(x) (char)(x)
        !           205: #endif
        !           206: #endif
        !           207: 
        !           208: /*
        !           209:  * Flags used in structures/unions
        !           210:  */
        !           211: #define SEENAME                01
        !           212: #define INSTRUCT       02
        !           213: #define INUNION                04
        !           214: #define FUNNYNAME      010
        !           215: #define TAGNAME                020
        !           216: 
        !           217: /*
        !           218:  * Flags used in the (elementary) flow analysis ...
        !           219:  */
        !           220: #define FBRK           02
        !           221: #define FCONT          04
        !           222: #define FDEF           010
        !           223: #define FLOOP          020
        !           224: 
        !           225: /*
        !           226:  * Flags used for return status
        !           227:  */
        !           228: #define RETVAL         1
        !           229: #define NRETVAL                2
        !           230: 
        !           231: #define NONAME         040000          /* marks constant w/o name field */
        !           232: #define NOOFFSET       (-10201)        /* mark an offset which is undefined */
        !           233: 

unix.superglobalmegacorp.com

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