Annotation of coherent/d/bin/cc/c/h/cc0.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * This header file contains the definitions used by
        !             3:  * all parts of the C compiler parser (cc0)
        !             4:  * and the C compiler preprocessor (cpp).
        !             5:  * It includes the definitions of the reserved words,
        !             6:  * the built-in types, and so forth.
        !             7:  */
        !             8: #define        CC0_H   CC0_H
        !             9: 
        !            10: #include <stdio.h>
        !            11: #include <setjmp.h>
        !            12: #ifdef   vax
        !            13: #include "INC$LIB:mch.h"
        !            14: #include "INC$LIB:host.h"
        !            15: #include "INC$LIB:ops.h"
        !            16: #include "INC$LIB:var.h"
        !            17: #include "INC$LIB:varmch.h"
        !            18: #include "INC$LIB:cc0mch.h"
        !            19: #include "INC$LIB:stream.h"
        !            20: #include "INC$LIB:cppmch.h"
        !            21: #else
        !            22: #include "mch.h"
        !            23: #include "host.h"
        !            24: #include "ops.h"
        !            25: #include "var.h"
        !            26: #include "varmch.h"
        !            27: #include "cc0mch.h"
        !            28: #include "stream.h"
        !            29: #include "cppmch.h"
        !            30: #endif
        !            31: 
        !            32: /*
        !            33:  * These defines adjust the sizes of the tables in the parser.
        !            34:  * They can be changed to just about anything, 
        !            35:  */
        !            36: #define NHASH   67             /* Hash buckets */
        !            37: #define        NDIRS   32              /* Number of include directories */
        !            38: #define        NLEV    32              /* Nesting level of cpp constructs */
        !            39: #define NDLEV  128             /* DSTACK size */
        !            40: #define        NDBUF   1024            /* Size of the define buffer */
        !            41: #define ARG0   0200            /* Base of formals in define bodies */
        !            42: #define SET0   (ARG0+NARGS)    /* Base of hide set indices in text */
        !            43: /* High parity characters are accepted in strings, but otherwise forbidden */
        !            44: /* because they conflict with this scheme for packing macro formals and hide */
        !            45: /* sets into the least space and overhead I can manage */
        !            46: 
        !            47: /*
        !            48:  * cpp keywords and macro classes.
        !            49:  * these hide at a distinct level
        !            50:  * in the symbol table.
        !            51:  */
        !            52: #define        XUSER   0       /* User macro */
        !            53: #define        XUSERA  1       /* User macro with arguments */
        !            54: #define        XUFILE  2       /* Macro __FILE__ */
        !            55: #define        XULINE  3       /* Macro __LINE__ */
        !            56: #define XUDATE 4       /* Macro __DATE__ */
        !            57: #define XUTIME 5       /* Macro __TIME__ */
        !            58: #define XUSTDC 6       /* Macro __STDC__ */
        !            59: #define XDEFINED 8     /* User macro defined() */
        !            60: #define        XDEFINE 9       /* #define */
        !            61: #define        XINCLUDE 10     /* #include */
        !            62: #define        XUNDEF  11      /* #undef */
        !            63: #define        XLINE   12      /* #line */
        !            64: #define        XASSERT 13      /* #assert */
        !            65: #define XERROR 14      /* #error */
        !            66: #define XPRAGMA        15      /* #pragma */
        !            67: #define        XIF     20      /* #if is the first conditional */
        !            68: #define        XIFDEF  21      /* #ifdef */
        !            69: #define        XIFNDEF 22      /* #ifndef */
        !            70: #define        XELSE   23      /* #else */
        !            71: #define XELIF  24      /* #elif */
        !            72: #define        XENDIF  25      /* #endif */
        !            73: 
        !            74: /*
        !            75:  * Tokens.
        !            76:  * Character classes.
        !            77:  * Other things that are C compiler parser specific.
        !            78:  * By convention, these begin at 100 decimal.
        !            79:  */
        !            80: #define DOT    100             /* . */
        !            81: #define ARROW  101             /* -> */
        !            82: #define SEMI   102             /* ; */
        !            83: #define SHARP  103             /* # */
        !            84: #define JUNK   104             /* Junk character */
        !            85: #define SKIP   105             /* Whitespace */
        !            86: #define LBRACE 106             /* { */
        !            87: #define RBRACE 107             /* } */
        !            88: #define LBRACK 108             /* [ */
        !            89: #define RBRACK 109             /* ] */
        !            90: #define LPAREN 110             /* ( */
        !            91: #define RPAREN 111             /* ) */
        !            92: #define ID     112             /* All identifiers */
        !            93: #define CON    113             /* Constants */
        !            94: #define QUOTE  114             /* ' */
        !            95: #define STRING 115             /* " */
        !            96: #define HIGH0  116             /* High parity junk, 0200..0237 */
        !            97: #define HIGH1  117             /* High parity junk, 0240..0277 */
        !            98: #define HIGH2  118             /* High parity junk, 0300..0337 */
        !            99: #define HIGH3  119             /* High parity junk, 0340..0377 */
        !           100: #define BACKDIV        120             /* Back slash */
        !           101: 
        !           102: /*
        !           103:  * Types.
        !           104:  * Classes.
        !           105:  * Do not change these unless you update the tables in "gcandt.c".
        !           106:  */
        !           107: #define INT    150             /* int */
        !           108: #define CHAR   151             /* char */
        !           109: #define FLOAT  152             /* float */
        !           110: #define DOUBLE 153             /* double */
        !           111: #define        VOID    154             /* void */
        !           112: #define STRUCT 155             /* struct */
        !           113: #define UNION  156             /* union */
        !           114: #define ENUM   157             /* enum */
        !           115: #define LONG   158             /* long */
        !           116: #define SHORT  159             /* short */
        !           117: #define UNSIGNED 160           /* unsigned */
        !           118: #define EXTERN 161             /* extern */
        !           119: #define STATIC 162             /* static */
        !           120: #define REGISTER 163           /* register */
        !           121: #define TYPEDEF        164             /* typedef */
        !           122: #define AUTO   165             /* auto */
        !           123: #define CONST  166             /* const */
        !           124: #define VOLATILE 167           /* volatile */
        !           125: #define SIGNED 168             /* signed */
        !           126: 
        !           127: /*
        !           128:  * Other C reserved words.
        !           129:  * These are in no particular order at all.
        !           130:  */
        !           131: #define DEFAULT        180             /* default */
        !           132: #define DO     181             /* do */
        !           133: #define ELSE   182             /* else */
        !           134: #define GOTO   183             /* goto */
        !           135: #define IF     184             /* if */
        !           136: #define RETURN 185             /* return */
        !           137: #define SWITCH 186             /* switch */
        !           138: #define CONTINUE 187           /* continue */
        !           139: #define FOR    188             /* for */
        !           140: #define WHILE  189             /* while */
        !           141: #define BREAK  190             /* break */
        !           142: #define        CASE    191             /* case */
        !           143: 
        !           144: /* MWC proprietary keywords */
        !           145: #define        READONLY 200            /* readonly */
        !           146: #define ALIEN   201            /* Other language interface */
        !           147: 
        !           148: /*
        !           149:  * Types.
        !           150:  */
        !           151: #define T_NONE  0              /* No type (yet) */
        !           152: #define T_CHAR  1              /* Char */
        !           153: #define T_UCHAR 2              /* Unsigned char */
        !           154: #define T_SHORT 3              /* Short */
        !           155: #define T_USHORT 4             /* Unsigned short */
        !           156: #define T_INT   5              /* Int */
        !           157: #define T_UINT  6              /* Unsigned int */
        !           158: #define T_PTR   7              /* Pointer */
        !           159: #define T_LONG  8              /* Long */
        !           160: #define T_ULONG 9              /* Unsigned long */
        !           161: #define T_FLOAT 10             /* Float */
        !           162: #define T_DOUBLE 11            /* Double */
        !           163: #define        T_VOID  12              /* Void */
        !           164: #define T_STRUCT 13            /* Struct */
        !           165: #define T_FSTRUCT 14           /* Forward struct reference */
        !           166: #define T_UNION 15             /* Union */
        !           167: #define T_FUNION 16            /* Forward union reference */
        !           168: #define T_ENUM  17             /* Enumeration */
        !           169: #define T_FENUM 18             /* Forward enumeration reference */
        !           170: #define T_LDOUBLE 19           /* Long double, should follow double NB */
        !           171: 
        !           172: /*
        !           173:  * Storage classes.
        !           174:  */
        !           175: #define C_NONE  0              /* No class */
        !           176: #define C_AUTO  1              /* Auto */
        !           177: #define C_SIN   2              /* Static internal */
        !           178: #define C_SEX   3              /* Static external */
        !           179: #define C_GDEF  4              /* Global def. */
        !           180: #define C_GREF  5              /* Global ref. */
        !           181: #define C_ARG   6              /* Argument */
        !           182: #define C_CXT   7              /* Contextual */
        !           183: #define C_LAB   8              /* Label */
        !           184: #define C_FREF  9              /* Forward ref. label */
        !           185: #define C_KEY   10             /* Keyword */
        !           186: #define C_TYPE  11             /* Typedef name */
        !           187: #define C_REG   12             /* Register */
        !           188: #define C_STAG  13             /* Structure tag */
        !           189: #define C_UTAG  14             /* Union tag */
        !           190: #define C_ETAG  15             /* Enumeration tag */
        !           191: #define C_MOS   16             /* Member of structure */
        !           192: #define C_MOU   17             /* Member of union */
        !           193: #define C_MOE   18             /* Member of enumeration */
        !           194: #define C_PAUTO 19             /* Parametric auto */
        !           195: #define C_PREG  20             /* Parametric register */
        !           196: 
        !           197: /*
        !           198:  * Dimensions.
        !           199:  * A list of these begins at the "s_dp" of a symbol
        !           200:  * and at the "e_dp" of an expression tree node.
        !           201:  */
        !           202: typedef        struct  dim {
        !           203:        struct  dim *d_dp;              /* Link */
        !           204:        short   d_type;                 /* Type */
        !           205:        sizeof_t d_bound;               /* Array bound */
        !           206: }      DIM;
        !           207: 
        !           208: #define D_PTR   0                      /* Pointer */
        !           209: #define D_FUNC  1                      /* Function returning */
        !           210: #define D_ARRAY 2                      /* Array */
        !           211: #define D_MOSAR 3                      /* MOS array */
        !           212: #define D_CONST        4                       /* const modifier */
        !           213: #define D_VOLATILE 5                   /* volatile modifier */
        !           214: 
        !           215: /*
        !           216:  * An INFO structure keeps track of structure elements,
        !           217:  * union elements and enumeration constants.
        !           218:  * It is pointed to by the INFO links of symbols and expressions.
        !           219:  * The reference count only considers symbol usages.
        !           220:  */
        !           221: typedef        struct  {
        !           222:        short   i_refc;                 /* Reference count */
        !           223:        short   i_nsp;                  /* Number of symbols */
        !           224:        union {
        !           225:                sizeof_t i_data0;
        !           226:                int      i_data1;
        !           227:        } i_data;
        !           228:        struct  sym *i_sp[];            /* The symbols */
        !           229: }      INFO;
        !           230: 
        !           231: #define        i_size  i_data.i_data0          /* Structure or union size */
        !           232: #define        i_type  i_data.i_data1          /* Base type of an enumeration */
        !           233: 
        !           234: /*
        !           235:  * Symbol.
        !           236:  * Symbols are kept in a hash table.
        !           237:  * Each bucket has the keywords on the front.
        !           238:  */
        !           239: 
        !           240: typedef struct symbol SYM;
        !           241: typedef struct token TOK;
        !           242: struct symbol {
        !           243:        SYM     *s_sp;                  /* Link */
        !           244:        int     s_slevel;               /* Symbol table level */
        !           245:        int     s_value;                /* Value */
        !           246:        int     s_dline;                /* Decl. line number */
        !           247:        char    s_level;                /* Block level */
        !           248:        char    s_flag;                 /* Flag */
        !           249:        char    s_width;                /* Field width */
        !           250:        char    s_offset;               /* Bit offset */
        !           251:        char    s_seg;                  /* Segment */
        !           252:        char    s_class;                /* Class */
        !           253:        char    s_type;                 /* Type */
        !           254:        DIM     *s_dp;                  /* Dimensions */
        !           255:        INFO    *s_ip;                  /* Info */
        !           256:        char    *s_id;                  /* Name string */
        !           257: };
        !           258: 
        !           259: /* Keyword symbols occupy less space */
        !           260: typedef struct {
        !           261:        SYM     *s_sp;
        !           262:        int     s_slevel;
        !           263:        int     s_value;
        !           264: } KEYSYM;
        !           265: 
        !           266: /* Preprocessor symbols take a little more space */
        !           267: typedef struct {
        !           268:        SYM     *s_sp;
        !           269:        int     s_slevel;
        !           270:        int     s_value;
        !           271:        int     s_narg;
        !           272: #if ANSI_STUPID
        !           273:        TOK     *s_targs;
        !           274: #endif
        !           275:        char    s_body[];
        !           276: } CPPSYM;
        !           277: 
        !           278: /* C symbol s_flag values */
        !           279: #define        S_RONLY 01                      /* Readonly */
        !           280: #define S_ALIEN        02                      /* Other language */
        !           281: #define S_USED  04                     /* Used */
        !           282: #define        S_TAG   010                     /* Tag present */
        !           283: #define        S_INIT  020                     /* Initialized */
        !           284: #define S_SYMB 040                     /* Written to debug table */
        !           285: 
        !           286: /* Disjunct symbol table levels */
        !           287: #define SL_CPP -2                      /* Cpp tokens */
        !           288: #define SL_KEY -1                      /* C keywords and ops */
        !           289: #define SL_VAR 0                       /* Normal symbols */
        !           290: #define SL_LAB 1                       /* Labels */
        !           291: #define SL_TAG 2                       /* Tags */
        !           292: #define SL_MOS 3                       /* Members of structures, and up */
        !           293: 
        !           294: /* Lexical scope levels */
        !           295: #define LL_EXT 0                       /* Externals */
        !           296: #define LL_ARG 1                       /* Parameters */
        !           297: #define LL_AUTO        2                       /* Automatics, and up */
        !           298: 
        !           299: /*
        !           300:  * All tokens are hashed.
        !           301:  * Each unique token is the head
        !           302:  * of a list of symbol buckets.
        !           303:  */
        !           304: struct token {
        !           305:        TOK     *t_tp;
        !           306:        SYM     *t_sym;
        !           307:        char    t_id[];
        !           308: };
        !           309: 
        !           310: /*
        !           311:  * Macro expansion stack.
        !           312:  */
        !           313: typedef        struct {
        !           314:        char    ds_type;                /* Type of stack item */
        !           315:        char    ds_char;                /* Ungotten char or temp */
        !           316:        char    *ds_ptr;                /* Pointer to string */
        !           317: } DSTACK;
        !           318: 
        !           319: #define DS_FILE                0       /* Dstack is at source file level */
        !           320: #define DS_UNGET       1       /* Dstack is ungotten character */
        !           321: #define DS_FUNGET      2       /* Dstack is ungotten file character */
        !           322: #define DS_STRNG       3       /* Dstack is normal string to read */
        !           323: #define DS_PARAM       4       /* Dstack is parameter to be expanded */
        !           324: #define DS_SHARP       5       /* Dstack is parameter to stringize */
        !           325: #define DS_SHARP2      6       /* Dstack is parameter to glue */
        !           326: #define DS_DPUTP       7       /* Dstack is pushed dputp pointer */
        !           327: #define DS_NAME                8       /* Dstack is pushed name of macro */
        !           328: #define DS_IEOF                9       /* Dstack is internal end of file */
        !           329: #define DS_UFILE       10      /* Dstack is __FILE__ to expand */
        !           330: 
        !           331: /*
        !           332:  * Macro hide set structure.
        !           333:  */
        !           334: typedef struct hideset HIDESET;
        !           335: typedef struct hidemem HIDEMEM;
        !           336: struct hideset {
        !           337:        HIDESET *h_next_set;
        !           338:        HIDEMEM *h_this_set;
        !           339: };
        !           340: struct hidemem {
        !           341:        HIDEMEM *h_next_mem;
        !           342:        TOK     *h_this_mem;
        !           343: };
        !           344: 
        !           345: /*
        !           346:  * Conditional stack.
        !           347:  * One of these is allocated when a #if* line
        !           348:  * is encountered to store the state of the
        !           349:  * conditional block until the matching #endif
        !           350:  * is found.
        !           351:  */
        !           352: typedef struct {
        !           353:        int             c_op;           /* Last operator seen in block */
        !           354:        int             c_state;        /* Has any block been true */
        !           355: } CSTACK;
        !           356: 
        !           357: /*
        !           358:  * Include pushdown stack entry.
        !           359:  * One of these is allocated when a #include line
        !           360:  * is encountered to hold the file name, the line number
        !           361:  * and the FILE pointer of the old source file.
        !           362:  */
        !           363: typedef        struct {
        !           364:        FILE            *i_fp;          /* Saved FILE pointer */
        !           365:        int             i_line;         /* Saved line */
        !           366:        TOK             *i_file;        /* Saved file name */
        !           367:        CSTACK          *i_cstackp;     /* Saved conditional stack state */
        !           368: } ISTACK;
        !           369: 
        !           370: /*
        !           371:  * These structures keep track of the labels and constants for switches.
        !           372:  * It is used by code in the statement reader "stat.c".
        !           373:  */
        !           374: typedef struct {
        !           375:        int     sc_lab;                 /* Label number */
        !           376:        ival_t  sc_val;                 /* Value */
        !           377: } SCASE;
        !           378: 
        !           379: typedef struct {
        !           380:        int     sb_ncase;               /* # of cases */
        !           381:        int     sb_dlab;                /* Default label */
        !           382:        SCASE   sb_case[];              /* Adjustable array */
        !           383: }      SBLOCK;
        !           384: 
        !           385: /*
        !           386:  * Tree nodes.
        !           387:  * All tree nodes are the same size.
        !           388:  * A node of any type may be changed into a node of any other type.
        !           389:  * The madness with the defines and the dots is just niceness
        !           390:  * in the wake of wishing to compile under both Bell and UCB structure rules.
        !           391:  */
        !           392: typedef        struct tree TREE;
        !           393: struct tree
        !           394: {
        !           395:        short   t_op;                   /* Opcode */
        !           396:        short   t_type;                 /* Internal type (T_) */
        !           397:        DIM     *t_dp;                  /* DIM list */
        !           398:        INFO    *t_ip;                  /* INFO if aggregate */
        !           399:        union   {
        !           400:                struct  {
        !           401:                        TREE    *t_xlp;
        !           402:                        union   {
        !           403:                                TREE    *t_xrp;
        !           404:                                struct  {
        !           405:                                        char    t_xfw;
        !           406:                                        char    t_xfb;
        !           407:                                }       t_1;
        !           408:                        }       t_2;
        !           409:                }       t_3;
        !           410:                ival_t  t_xival;
        !           411:                lval_t  t_xlval;
        !           412:                dval_t  t_xdval;
        !           413:                sizeof_t t_xzval;
        !           414:                struct  {
        !           415:                        sizeof_t t_xoffs;
        !           416:                        int     t_xseg;
        !           417:                        union   {
        !           418:                                int     t_xlab;
        !           419:                                SYM     *t_xsp;
        !           420:                        }       t_4;
        !           421:                }       t_5;
        !           422:                short   t_xreg;
        !           423:        }       t_6;
        !           424: };
        !           425: 
        !           426: #define        t_lp    t_6.t_3.t_xlp           /* Left link */
        !           427: #define        t_rp    t_6.t_3.t_2.t_xrp       /* Right link */
        !           428: #define        t_width t_6.t_3.t_2.t_1.t_xfw   /* Field width, bits */
        !           429: #define        t_base  t_6.t_3.t_2.t_1.t_xfb   /* Field base bit */
        !           430: #define        t_ival  t_6.t_xival             /* ICON value */
        !           431: #define        t_lval  t_6.t_xlval             /* LCON value */
        !           432: #define        t_dval  t_6.t_xdval             /* DCON value */
        !           433: #define t_zval t_6.t_xzval             /* ZCON value */
        !           434: #define        t_reg   t_6.t_xreg              /* Register code */
        !           435: #define t_offs t_6.t_5.t_xoffs         /* Label offset */
        !           436: #define        t_seg   t_6.t_5.t_xseg          /* Segment */
        !           437: #define        t_label t_6.t_5.t_4.t_xlab      /* Label # */
        !           438: #define        t_sp    t_6.t_5.t_4.t_xsp       /* Global symbol link */
        !           439: 
        !           440: /*
        !           441:  * Opdope flag bits.
        !           442:  */
        !           443: #define PRIO    037                    /* Priority */
        !           444: #define NSTL   040                     /* No structures on left */
        !           445: #define RAS     0100                   /* Right associative */
        !           446: #define RLVL    0200                   /* Require lvalue on left */
        !           447: #define NFLT    0400                   /* No floats */
        !           448: #define NPTR    01000                  /* No pointers on right */
        !           449: #define NPTL    02000                  /* No pointers on left */
        !           450: #define RTOR    04000                  /* Require truth value on right */
        !           451: #define RTOL    010000                 /* Require truth value on left */
        !           452: #define ASGN    020000                 /* Assignment op */
        !           453: #define NSTR    040000                 /* No structures on right */
        !           454: 
        !           455: /*
        !           456:  * Conversion dope bits.
        !           457:  */
        !           458: #define GOAL   077                     /* Goal type */
        !           459: #define CVRA   0100                    /* Convert right on assignment */
        !           460: #define CVR    0200                    /* Convert right */
        !           461: #define CVL    0400                    /* Convert left */
        !           462: #define GTL     01000                  /* Goal type from left */
        !           463: #define GTR     02000                  /* Goal type from right */
        !           464: #define UREL    04000                  /* Unsigned relation check needed */
        !           465: #define CARA   010000                  /* Cast right on assignment */
        !           466: 
        !           467: /*
        !           468:  * cpp variables.
        !           469:  */
        !           470: extern char    dbuf[NDBUF], *dputp, *dpshp;
        !           471: extern DSTACK  dstack[], *dstackp, *dlistp;
        !           472: extern ISTACK  istack[], *istackp;
        !           473: extern CSTACK  cstack[], *cstackp;
        !           474: extern HIDESET *hidefree, *hidesets;
        !           475: extern int     cstate;
        !           476: extern int     lastchar;
        !           477: extern int     instring;
        !           478: extern int     notskip;
        !           479: extern int     ndirs;
        !           480: extern char    *incdirs[];
        !           481: extern char    deftrue[];
        !           482: extern char    deffalse[];
        !           483: extern long    curtime;
        !           484: 
        !           485: /*
        !           486:  * Functions and variables.
        !           487:  */
        !           488: extern  int     mysizes[];
        !           489: extern  SYM    *cfsym;
        !           490: extern  int     cflab;
        !           491: extern  char    id[];
        !           492: extern  unsigned     idhash;
        !           493: extern unsigned     idhide;
        !           494: extern int     idsize;
        !           495: extern TOK     *idp;
        !           496: extern  TOK    *hash0[];
        !           497: extern  int     llex;
        !           498: extern int     lsym;
        !           499: extern  int     s;
        !           500: extern  ival_t  ival;
        !           501: extern  lval_t  lval;
        !           502: extern dval_t  dval;
        !           503: extern short   tval;
        !           504: extern  int     line;
        !           505: extern  char    file[];
        !           506: extern TOK     *tfile;
        !           507: extern unsigned char ct[];
        !           508: extern TOK     *newtoken();
        !           509: extern  SYM    *newsym();
        !           510: extern CPPSYM  *newcpp();
        !           511: extern  DIM    *dupldim();
        !           512: extern  DIM    *tackdim();
        !           513: extern  INFO    *newinfo();
        !           514: extern  char    *new();
        !           515: extern  int     nerr;
        !           516: extern char    *passname;
        !           517: extern  int     nargs;
        !           518: extern  SYM    *args[];
        !           519: extern TREE    *expr();
        !           520: extern int     incpp;
        !           521: extern  int     ininit;
        !           522: extern int     incase;
        !           523: extern  char    *talloc();
        !           524: extern TREE    *transform();
        !           525: extern  short   opdope[];
        !           526: extern  short   cvdope[];
        !           527: extern TREE    *pexpr();
        !           528: extern  DIM    *tdalloc();
        !           529: extern TREE    *build();
        !           530: extern TREE    *charray();
        !           531: extern TREE    *chfun();
        !           532: extern TREE    *bicon();
        !           533: extern TREE    *bzcon();
        !           534: extern TREE    *bid();
        !           535: extern TREE    *bcvt();
        !           536: extern TREE    *bconvert();
        !           537: extern TREE    *term();
        !           538: extern TREE    *tree();
        !           539: extern TREE    *bstring();
        !           540: extern  char    mytypes[];
        !           541: extern TREE    *fold0();
        !           542: extern SYM     *deflookup();
        !           543: extern SYM     *reflookup();
        !           544: extern SYM     *moslookup();
        !           545: extern SYM     *fakedef();
        !           546: extern SYM     *taglookup();
        !           547: extern SYM     *fixlevel();
        !           548: extern SYM     *declare();
        !           549: extern long    fieldalign();
        !           550: extern sizeof_t ssize();
        !           551: extern sizeof_t tsize();
        !           552: extern sizeof_t sdsize();
        !           553: extern sizeof_t tidsize();
        !           554: extern sizeof_t psize();
        !           555: extern sizeof_t getbound();
        !           556: extern sizeof_t szcheck();     /* mch - object size check */
        !           557: extern TREE    *cast();        /* cast declarator reader */
        !           558: extern int     oldseg;
        !           559: extern int     mnamef;
        !           560: extern int     labgen;
        !           561: extern int     cblab;
        !           562: extern int     cclab;
        !           563: extern SBLOCK  *sbp;
        !           564: extern FILE    *ifp;
        !           565: extern FILE    *ofp;           /* Output file */
        !           566: 
        !           567: #if OVERLAID
        !           568: extern jmp_buf death;          /* Fatal errors */
        !           569: #endif

unix.superglobalmegacorp.com

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