Annotation of 43BSDReno/libexec/pcc/mip/pass1.h, revision 1.1.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.