|
|
1.1 ! root 1: /* @(#) mfile1.h: 1.1 12/22/83 */ ! 2: ! 3: ! 4: # include "macdefs.h" ! 5: # include "manifest.h" ! 6: ! 7: /* storage classes */ ! 8: # define SNULL 0 ! 9: # define AUTO 1 ! 10: # define EXTERN 2 ! 11: # define STATIC 3 ! 12: # define REGISTER 4 ! 13: # define EXTDEF 5 ! 14: # define LABEL 6 ! 15: # define ULABEL 7 ! 16: # define MOS 8 ! 17: # define PARAM 9 ! 18: # define STNAME 10 ! 19: # define MOU 11 ! 20: # define UNAME 12 ! 21: # define TYPEDEF 13 ! 22: # define FORTRAN 14 ! 23: # define ENAME 15 ! 24: # define MOE 16 ! 25: # define UFORTRAN 17 ! 26: # define USTATIC 18 ! 27: /* field size is ORed in */ ! 28: # define FIELD 0100 ! 29: # define FLDSIZ 077 ! 30: # ifndef NODBG ! 31: extern char *scnames(); ! 32: # endif ! 33: ! 34: /* location counters */ ! 35: # define PROG 0 ! 36: # define ADATA 1 ! 37: # define DATA 2 ! 38: # define ISTRNG 3 ! 39: # define STRNG 4 ! 40: ! 41: /* symbol table flags */ ! 42: # define SMOS 01 ! 43: # define SHIDDEN 02 ! 44: # define SHIDES 04 ! 45: # define SSET 010 ! 46: # define SREF 020 ! 47: # define SNONUNIQ 040 ! 48: # define STAG 0100 ! 49: # define SBSS 0200 ! 50: ! 51: typedef long OFFSZ; ! 52: ! 53: struct symtab { ! 54: char *sname; ! 55: TWORD stype; /* type word */ ! 56: ! 57: char sclass; /* storage class */ ! 58: char slevel; /* scope level */ ! 59: char sflags; /* flags for set, use, hidden, mos, etc. */ ! 60: int offset; /* offset or value */ ! 61: short dimoff; /* offset into the dimension table */ ! 62: short sizoff; /* offset into the size table */ ! 63: short suse; /* line number of last use of the variable */ ! 64: struct symtab *scopelink; /* chain of symbols at same level */ ! 65: }; ! 66: ! 67: ! 68: struct sw { ! 69: CONSZ sval; ! 70: int slab; ! 71: }; ! 72: ! 73: extern struct sw swtab[]; ! 74: extern struct sw *swp; ! 75: extern int swx; ! 76: ! 77: extern int ftnno; ! 78: extern int blevel; ! 79: extern int instruct, stwart; ! 80: ! 81: extern int lineno, slineno, nerrors; ! 82: typedef struct { ! 83: union { ! 84: int u_intval; ! 85: NODE *u_nodep; ! 86: } YY_un; ! 87: int lineno; ! 88: } YYSTYPE; ! 89: #define intval YY_un.u_intval ! 90: #define nodep YY_un.u_nodep ! 91: extern YYSTYPE yylval; ! 92: ! 93: extern CONSZ lastcon; ! 94: extern CONSZ ccast(); ! 95: extern double dcon; ! 96: ! 97: extern char ftitle[]; ! 98: extern struct symtab stab[]; ! 99: extern int curftn; ! 100: extern int strftn; ! 101: extern char *locnames[]; ! 102: extern int curloc; ! 103: extern int curclass; ! 104: extern int curdim; ! 105: extern int *dimtab; ! 106: extern int paramstk[]; ! 107: extern int paramno; ! 108: extern int argstk[]; ! 109: extern int argsoff[]; ! 110: extern TWORD argty[]; ! 111: extern int argno; ! 112: extern int autooff, argoff, strucoff; ! 113: extern int regvar; ! 114: extern int nextrvar; ! 115: extern int brkflag; ! 116: extern char yytext[]; ! 117: ! 118: extern int strflg; ! 119: ! 120: extern OFFSZ inoff; ! 121: ! 122: extern int reached; ! 123: ! 124: /* tunnel to buildtree for name id's */ ! 125: ! 126: extern int idname; ! 127: ! 128: extern NODE node[]; ! 129: extern NODE *lastfree; ! 130: ! 131: extern int cflag, hflag, pflag; ! 132: ! 133: /* various labels */ ! 134: extern int brklab; ! 135: extern int contlab; ! 136: #ifdef M32B ! 137: extern int swregno; ! 138: #endif ! 139: extern int flostat; ! 140: extern int retlab; ! 141: extern int retstat; ! 142: extern int asavbc[], *psavbc; ! 143: ! 144: /* flags used in structures/unions */ ! 145: ! 146: # define SEENAME 01 ! 147: # define INSTRUCT 02 ! 148: # define INUNION 04 ! 149: # define FUNNYNAME 010 ! 150: # define TAGNAME 020 ! 151: ! 152: /* flags used in the (elementary) flow analysis ... */ ! 153: ! 154: # define FBRK 02 ! 155: # define FCONT 04 ! 156: # define FDEF 010 ! 157: # define FLOOP 020 ! 158: ! 159: /* ! 160: * These defines control "while" and "for" loop code generation. ! 161: * wloop_level and floop_level each must be set to one of these values. ! 162: */ ! 163: #define LL_TOP 0 /* test at loop top */ ! 164: #define LL_BOT 1 /* test at loop bottom */ ! 165: #define LL_DUP 2 /* duplicate loop test at top and bottom */ ! 166: ! 167: #ifdef M32B ! 168: /* for register allocation optimization */ ! 169: extern int fordepth; ! 170: extern int whdepth; ! 171: extern int brdepth; ! 172: # ifdef IMPREGAL ! 173: extern void rainit(), radbl(), raname(), raua(), raftn(); ! 174: # endif ! 175: #endif ! 176: ! 177: /* flags used for return status */ ! 178: ! 179: # define RETVAL 1 ! 180: # define NRETVAL 2 ! 181: ! 182: /* used to mark a constant with no name field */ ! 183: ! 184: # define NONAME 040000 ! 185: ! 186: /* mark an offset which is undefined */ ! 187: ! 188: # define NOOFFSET (-10201) ! 189: ! 190: /* declarations of various functions */ ! 191: ! 192: extern NODE ! 193: *aadjust(), ! 194: *bcon(), ! 195: *bdty(), ! 196: *block(), ! 197: *bpsize(), ! 198: *buildtree(), ! 199: #ifdef M32B ! 200: *myand(), ! 201: *setswreg(), ! 202: #endif ! 203: *clocal(), ! 204: *conval(), ! 205: *convert(), ! 206: *dclstruct(), ! 207: *doszof(), ! 208: *getstr(), ! 209: *makety(), ! 210: *mkty(), ! 211: *oconvert(), ! 212: *offcon(), ! 213: *optim(), ! 214: *pconvert(), ! 215: *ptmatch(), ! 216: *pvconvert(), ! 217: *rstruct(), ! 218: *sconvert(), ! 219: *strargs(), ! 220: *stref(), ! 221: *talloc(), ! 222: *tymatch(), ! 223: *tymerge(), ! 224: *unconvert(), ! 225: *xicolon(); ! 226: ! 227: OFFSZ tsize(), ! 228: psize(); ! 229: ! 230: TWORD types(), ! 231: ctype(); ! 232: ! 233: char *exname(), *exdcon(); ! 234: ! 235: # define checkst(x) ! 236: ! 237: /* type that is equivalent to pointers in size */ ! 238: # ifndef PTRTYPE ! 239: # define PTRTYPE INT ! 240: # endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.