1*8a5477baSbostic /*- 2*8a5477baSbostic * Copyright (c) 1991 The Regents of the University of California. 3*8a5477baSbostic * All rights reserved. 4b364078bSdonn * 5*8a5477baSbostic * %sccs.include.proprietary.c% 6*8a5477baSbostic * 7*8a5477baSbostic * @(#)defines.h 5.4 (Berkeley) 04/12/91 8fa8ffe6cSdonn */ 9fa8ffe6cSdonn 10fa8ffe6cSdonn /* 11fa8ffe6cSdonn * defines.h 12fa8ffe6cSdonn * 13fa8ffe6cSdonn * Global definitions for the first pass of the f77 compiler, Unix 4.3 BSD. 14fa8ffe6cSdonn * 15fa8ffe6cSdonn * University of Utah CS Dept modification history: 16fa8ffe6cSdonn * 17fa8ffe6cSdonn * $Log: defines.h,v $ 18fa8ffe6cSdonn * Revision 5.2 85/08/10 05:11:20 donn 19fa8ffe6cSdonn * Added comment header; added Jerry Berkman's changes to delete INTRCNST 20fa8ffe6cSdonn * and to ifdef 66 code. 21fa8ffe6cSdonn * 22b364078bSdonn */ 23b364078bSdonn 24b364078bSdonn #define INTERDATA 2 25b364078bSdonn #define GCOS 3 26b364078bSdonn #define PDP11 4 27b364078bSdonn #define IBM 5 28b364078bSdonn #define CMACH 6 29b364078bSdonn #define VAX 7 30b364078bSdonn 31b364078bSdonn #define DMR 2 32b364078bSdonn #define PCC 3 33b364078bSdonn 34b364078bSdonn #ifndef FAMILY 35b364078bSdonn FAMILY NOT DEFINED !!! 36b364078bSdonn Family = FAMILY 37b364078bSdonn #endif 38b364078bSdonn 39b364078bSdonn #ifndef HERE 40b364078bSdonn HERE NOT DEFINED !!!! 41b364078bSdonn Here = HERE 42b364078bSdonn #endif 43b364078bSdonn 44b364078bSdonn #define M(x) (1<<x) 45b364078bSdonn #define ALLOC(x) (struct x *) ckalloc(sizeof(struct x)) 46b364078bSdonn #define ALLOCN(n,x) (struct x *) ckalloc(n*sizeof(struct x)) 47b364078bSdonn #define ALLEXPR (expptr) ckalloc( sizeof(union Expression) ) 48b364078bSdonn typedef int *ptr; 49b364078bSdonn typedef char *charptr; 50b364078bSdonn typedef FILE *FILEP; 51b364078bSdonn typedef short flag; 52b364078bSdonn typedef char field; /* actually need only 4 bits */ 53b364078bSdonn typedef long int ftnint; 54b364078bSdonn #define LOCAL static 55b364078bSdonn 56b364078bSdonn #define NO 0 57b364078bSdonn #define YES 1 58b364078bSdonn 59b364078bSdonn #define CNULL (char *) 0 60b364078bSdonn #define PNULL (ptr) 0 61b364078bSdonn #define CHNULL (chainp) 0 62b364078bSdonn #define ENULL (expptr) 0 63b364078bSdonn 64b364078bSdonn 65b364078bSdonn 66b364078bSdonn /* block tag values */ 67b364078bSdonn 68b364078bSdonn #define TNAME 1 69b364078bSdonn #define TCONST 2 70b364078bSdonn #define TEXPR 3 71b364078bSdonn #define TADDR 4 72b364078bSdonn #define TTEMP 5 73b364078bSdonn #define TPRIM 6 74b364078bSdonn #define TLIST 7 75b364078bSdonn #define TIMPLDO 8 76b364078bSdonn #define TERROR 9 77b364078bSdonn 78b364078bSdonn 79b364078bSdonn /* parser states */ 80b364078bSdonn 81b364078bSdonn #define OUTSIDE 0 82b364078bSdonn #define INSIDE 1 83b364078bSdonn #define INDCL 2 84b364078bSdonn #define INDATA 3 85b364078bSdonn #define INEXEC 4 86b364078bSdonn 87b364078bSdonn /* procedure classes */ 88b364078bSdonn 89b364078bSdonn #define PROCMAIN 1 90b364078bSdonn #define PROCBLOCK 2 91b364078bSdonn #define PROCSUBR 3 92b364078bSdonn #define PROCFUNCT 4 93b364078bSdonn 94b364078bSdonn 95b364078bSdonn /* storage classes -- vstg values */ 96b364078bSdonn 97b364078bSdonn #define STGUNKNOWN 0 98b364078bSdonn #define STGARG 1 99b364078bSdonn #define STGAUTO 2 100b364078bSdonn #define STGBSS 3 101b364078bSdonn #define STGINIT 4 102b364078bSdonn #define STGCONST 5 103b364078bSdonn #define STGEXT 6 104b364078bSdonn #define STGINTR 7 105b364078bSdonn #define STGSTFUNCT 8 106b364078bSdonn #define STGCOMMON 9 107b364078bSdonn #define STGEQUIV 10 108b364078bSdonn #define STGREG 11 109b364078bSdonn #define STGLENG 12 110b364078bSdonn #define STGNULL 13 111b364078bSdonn #define STGPREG 14 112b364078bSdonn 113b364078bSdonn /* name classes -- vclass values */ 114b364078bSdonn 115b364078bSdonn #define CLUNKNOWN 0 116b364078bSdonn #define CLPARAM 1 117b364078bSdonn #define CLVAR 2 118b364078bSdonn #define CLENTRY 3 119b364078bSdonn #define CLMAIN 4 120b364078bSdonn #define CLBLOCK 5 121b364078bSdonn #define CLPROC 6 122b364078bSdonn #define CLNAMELIST 7 123b364078bSdonn 124b364078bSdonn 125b364078bSdonn /* vprocclass values */ 126b364078bSdonn 127b364078bSdonn #define PUNKNOWN 0 128b364078bSdonn #define PEXTERNAL 1 129b364078bSdonn #define PINTRINSIC 2 130b364078bSdonn #define PSTFUNCT 3 131b364078bSdonn #define PTHISPROC 4 132b364078bSdonn 133b364078bSdonn /* control stack codes */ 134b364078bSdonn 135b364078bSdonn #define CTLDO 1 136b364078bSdonn #define CTLIF 2 137b364078bSdonn #define CTLELSE 3 138b364078bSdonn 139b364078bSdonn 140b364078bSdonn /* operators -- see also arrays 'ops' and 'ops2' in put.c */ 141b364078bSdonn 142b364078bSdonn #define OPPLUS 1 143b364078bSdonn #define OPMINUS 2 144b364078bSdonn #define OPSTAR 3 145b364078bSdonn #define OPSLASH 4 146b364078bSdonn #define OPPOWER 5 147b364078bSdonn #define OPNEG 6 148b364078bSdonn #define OPOR 7 149b364078bSdonn #define OPAND 8 150b364078bSdonn #define OPEQV 9 151b364078bSdonn #define OPNEQV 10 152b364078bSdonn #define OPNOT 11 153b364078bSdonn #define OPCONCAT 12 154b364078bSdonn #define OPLT 13 155b364078bSdonn #define OPEQ 14 156b364078bSdonn #define OPGT 15 157b364078bSdonn #define OPLE 16 158b364078bSdonn #define OPNE 17 159b364078bSdonn #define OPGE 18 160b364078bSdonn #define OPCALL 19 161b364078bSdonn #define OPCCALL 20 162b364078bSdonn #define OPASSIGN 21 163b364078bSdonn #define OPPLUSEQ 22 164b364078bSdonn #define OPSTAREQ 23 165b364078bSdonn #define OPCONV 24 166b364078bSdonn #define OPLSHIFT 25 167b364078bSdonn #define OPMOD 26 168b364078bSdonn #define OPCOMMA 27 169b364078bSdonn #define OPQUEST 28 170b364078bSdonn #define OPCOLON 29 171b364078bSdonn #define OPABS 30 172b364078bSdonn #define OPMIN 31 173b364078bSdonn #define OPMAX 32 174b364078bSdonn #define OPADDR 33 175b364078bSdonn #define OPINDIRECT 34 176b364078bSdonn #define OPBITOR 35 177b364078bSdonn #define OPBITAND 36 178b364078bSdonn #define OPBITXOR 37 179b364078bSdonn #define OPBITNOT 38 180b364078bSdonn #define OPRSHIFT 39 181b364078bSdonn #define OPPAREN 40 182b364078bSdonn #define OPUNARYPLUS 41 183b364078bSdonn 184b364078bSdonn 185b364078bSdonn /* label type codes */ 186b364078bSdonn 187b364078bSdonn #define LABUNKNOWN 0 188b364078bSdonn #define LABEXEC 1 189b364078bSdonn #define LABFORMAT 2 190b364078bSdonn #define LABOTHER 3 191b364078bSdonn 192b364078bSdonn 193b364078bSdonn /* INTRINSIC function codes*/ 194b364078bSdonn 195b364078bSdonn #define INTREND 0 196b364078bSdonn #define INTRCONV 1 197b364078bSdonn #define INTRMIN 2 198b364078bSdonn #define INTRMAX 3 199b364078bSdonn #define INTRGEN 4 200b364078bSdonn #define INTRSPEC 5 201b364078bSdonn #define INTRBOOL 6 202b364078bSdonn 203b364078bSdonn 204b364078bSdonn /* I/O statement codes */ 205b364078bSdonn 206b364078bSdonn #define IOSTDIN ICON(5) 207b364078bSdonn #define IOSTDOUT ICON(6) 208b364078bSdonn #define IOSTDERR ICON(0) 209b364078bSdonn 210b364078bSdonn #define IOSBAD (-1) 211b364078bSdonn #define IOSPOSITIONAL 0 212b364078bSdonn #define IOSUNIT 1 213b364078bSdonn #define IOSFMT 2 214b364078bSdonn 215b364078bSdonn #define IOINQUIRE 1 216b364078bSdonn #define IOOPEN 2 217b364078bSdonn #define IOCLOSE 3 218b364078bSdonn #define IOREWIND 4 219b364078bSdonn #define IOBACKSPACE 5 220b364078bSdonn #define IOENDFILE 6 221b364078bSdonn #define IOREAD 7 222b364078bSdonn #define IOWRITE 8 223b364078bSdonn 224b364078bSdonn 225b364078bSdonn /* type masks */ 226b364078bSdonn 227b364078bSdonn #define MSKLOGICAL M(TYLOGICAL) 228b364078bSdonn #define MSKADDR M(TYADDR) 229b364078bSdonn #define MSKCHAR M(TYCHAR) 230b364078bSdonn #define MSKINT M(TYSHORT)|M(TYLONG) 231b364078bSdonn #define MSKREAL M(TYREAL)|M(TYDREAL) 232b364078bSdonn #define MSKCOMPLEX M(TYCOMPLEX)|M(TYDCOMPLEX) 233b364078bSdonn #define MSKSTATIC (M(STGINIT)|M(STGBSS)|M(STGCOMMON)|M(STGEQUIV)|M(STGCONST)) 234b364078bSdonn 235b364078bSdonn /* miscellaneous macros */ 236b364078bSdonn 237b364078bSdonn #define ONEOF(x,y) (M(x) & (y)) 238b364078bSdonn #define ISCOMPLEX(z) ONEOF(z, MSKCOMPLEX) 239b364078bSdonn #define ISREAL(z) ONEOF(z, MSKREAL) 240b364078bSdonn #define ISNUMERIC(z) ONEOF(z, MSKINT|MSKREAL|MSKCOMPLEX) 241b364078bSdonn #define ISICON(z) (z->tag==TCONST && ISINT(z->constblock.vtype)) 242b364078bSdonn #define ISCHAR(z) (z->headblock.vtype==TYCHAR) 243b364078bSdonn #define ISINT(z) ONEOF(z, MSKINT) 244b364078bSdonn #define ISCONST(z) (z->tag==TCONST) 245b364078bSdonn #define ISERROR(z) (z->tag==TERROR) 246b364078bSdonn #define ISPLUSOP(z) (z->tag==TEXPR && z->exprblock.opcode==OPPLUS) 247b364078bSdonn #define ISSTAROP(z) (z->tag==TEXPR && z->exprblock.opcode==OPSTAR) 24814a97b91Sbostic #define ISONE(z) (ISICON(z) && z->constblock.constant.ci==1) 249b364078bSdonn #define INT(z) ONEOF(z, MSKINT|MSKCHAR) 250b364078bSdonn #define ICON(z) mkintcon( (ftnint)(z) ) 251b364078bSdonn 252fa8ffe6cSdonn #ifdef ONLY66 253b364078bSdonn #define NO66(s) if(no66flag) err66(s) 254b364078bSdonn #define NOEXT(s) if(noextflag) errext(s) 255fa8ffe6cSdonn #else 256fa8ffe6cSdonn #define NO66(s) 257fa8ffe6cSdonn #define NOEXT(s) 258fa8ffe6cSdonn #endif 259b364078bSdonn 260b364078bSdonn /* round a up to a multiple of b */ 261b364078bSdonn #define roundup(a,b) ( b * ( (a+b-1)/b) ) 262b364078bSdonn 263b364078bSdonn 264b364078bSdonn /* optimization buffer slot types */ 265b364078bSdonn 266b364078bSdonn #define SKNULL 0 267b364078bSdonn #define SKIFN 1 268b364078bSdonn #define SKGOTO 2 269b364078bSdonn #define SKLABEL 3 270b364078bSdonn #define SKEQ 4 271b364078bSdonn #define SKCALL 5 272b364078bSdonn #define SKCMGOTO 6 273b364078bSdonn #define SKSTOP 7 274b364078bSdonn #define SKDOHEAD 8 275b364078bSdonn #define SKENDDO 9 276b364078bSdonn #define SKARIF 10 277b364078bSdonn #define SKRETURN 11 278b364078bSdonn #define SKASGOTO 12 279b364078bSdonn #define SKPAUSE 13 280b364078bSdonn #define SKASSIGN 14 281b364078bSdonn #define SKIOIFN 15 282b364078bSdonn #define SKFRTEMP 16 283