Annotation of researchv10no/cmd/ccom/common/xdefs.c, revision 1.1.1.1

1.1       root        1: /* @(#) xdefs.c: 1.2 1/12/84                           */
                      2: 
                      3: # include "mfile1.h"
                      4: 
                      5: /*     communication between lexical routines  */
                      6: 
                      7: int    lineno;         /* line number of the input file */
                      8: 
                      9: CONSZ lastcon;  /* the last constant read by the lexical analyzer */
                     10: double dcon;   /* the last double read by the lexical analyzer */
                     11: 
                     12: 
                     13: /*     symbol table maintainence */
                     14: 
                     15: struct symtab stab[SYMTSZ+1];  /* one extra slot for scratch */
                     16: 
                     17: int    curftn;  /* "current" function */
                     18: int    strftn;  /* 1 if current function returns struct or union */
                     19: int    ftnno;  /* "current" function number */
                     20: int    curloc;           /* current location counter value */
                     21: 
                     22: int    curclass,         /* current storage class */
                     23: instruct,      /* "in structure" flag */
                     24: stwart,                /* for accessing names which are structure members or names */
                     25: blevel,                /* block level: 0 for extern, 1 for ftn args, >=2 inside function */
                     26: curdim;                /* current offset into the dimension table */
                     27: 
                     28: int    *dimtab;
                     29: 
                     30: int    paramstk[ PARAMSZ ];  /* holds symtab indices of function parameters */
                     31: int    paramno;          /* the number of parameters */
                     32: int    argsoff[ ARGSZ ];  /* the offsets for the arguments */
                     33: int    argno;          /* the number of arguments */
                     34: int    argstk[ ARGSZ ];        /* the symtab indices  of arguments */
                     35: TWORD  argty[ ARGSZ ];         /* the types of the arguments */
                     36: int    autooff,        /* the next unused automatic offset */
                     37: argoff,        /* the next unused argument offset */
                     38: strucoff;      /*  the next structure offset position */
                     39: int    regvar;         /* the next free register for register variables */
                     40: int    nextrvar;       /* the next allocated reg (set by cisreg) */
                     41: OFFSZ  inoff;          /* offset of external element being initialized */
                     42: int    brkflag = 0;    /* complain about break statements not reached */
                     43: 
                     44: struct sw swtab[SWITSZ];  /* table for cases within a switch */
                     45: struct sw *swp;  /* pointer to next free entry in swtab */
                     46: int swx;  /* index of beginning of cases for current switch */
                     47: 
                     48: /* debugging flag */
                     49: int xdebug = 0;
                     50: int idebug = 0;
                     51: 
                     52: int strflg;  /* if on, strings are to be treated as lists */
                     53: 
                     54: int reached;   /* true if statement can be reached... */
                     55: 
                     56: int idname;    /* tunnel to buildtree for name id's */
                     57: 
                     58: 
                     59: int cflag = 0;  /* do we check for funny casts */
                     60: int hflag = 0;  /* do we check for various heuristics which may indicate errors */
                     61: int pflag = 0;  /* do we check for portable constructions */
                     62: int gdebug;    /* for pi/sdb */
                     63: 
                     64: int brklab;
                     65: int contlab;
                     66: #ifdef M32B
                     67:        int swregno;
                     68: #endif
                     69: int flostat;
                     70: int retlab = NOLAB;
                     71: int retstat;
                     72: 
                     73: /* save array for break, continue labels, and flostat */
                     74: 
                     75: int asavbc[BCSZ];
                     76: int *psavbc = asavbc ;
                     77: 
                     78: /* stack of scope chains */
                     79: 
                     80: struct symtab *scopestack[MAXNEST];
                     81: 
                     82: static char *ccnames[] = 
                     83: {
                     84:         /* names of storage classes */
                     85:        "SNULL",
                     86:        "AUTO",
                     87:        "EXTERN",
                     88:        "STATIC",
                     89:        "REGISTER",
                     90:        "EXTDEF",
                     91:        "LABEL",
                     92:        "ULABEL",
                     93:        "MOS",
                     94:        "PARAM",
                     95:        "STNAME",
                     96:        "MOU",
                     97:        "UNAME",
                     98:        "TYPEDEF",
                     99:        "FORTRAN",
                    100:        "ENAME",
                    101:        "MOE",
                    102:        "UFORTRAN",
                    103:        "USTATIC",
                    104: };
                    105: 
                    106: char *
                    107: scnames( c )
                    108: register c; 
                    109: {
                    110:        /* return the name for storage class c */
                    111:        static char buf[12];
                    112:        if( c&FIELD )
                    113:        {
                    114:                sprintf( buf, "FIELD[%d]", c&FLDSIZ );
                    115:                return( buf );
                    116:        }
                    117:        return( ccnames[c] );
                    118: }
                    119: 
                    120: #ifdef M32B
                    121:        /* for register allocation optimizations */
                    122: 
                    123:        int fordepth;   /* nest depth of 'for' loops */
                    124:        int whdepth;    /* nest depth of 'while' and 'do-while' loops */
                    125:        int brdepth;    /* nest depth of 'if', 'if-else', and 'switch' */
                    126: #endif

unix.superglobalmegacorp.com

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