1*47933Sbostic /*- 2*47933Sbostic * Copyright (c) 1991 The Regents of the University of California. 3*47933Sbostic * All rights reserved. 424470Sdonn * 5*47933Sbostic * %sccs.include.proprietary.c% 6*47933Sbostic * 7*47933Sbostic * @(#)defines.h 5.4 (Berkeley) 04/12/91 824470Sdonn */ 924470Sdonn 1024471Sdonn /* 1124471Sdonn * defines.h 1224471Sdonn * 1324471Sdonn * Global definitions for the first pass of the f77 compiler, Unix 4.3 BSD. 1424471Sdonn * 1524471Sdonn * University of Utah CS Dept modification history: 1624471Sdonn * 1724471Sdonn * $Log: defines.h,v $ 1824471Sdonn * Revision 5.2 85/08/10 05:11:20 donn 1924471Sdonn * Added comment header; added Jerry Berkman's changes to delete INTRCNST 2024471Sdonn * and to ifdef 66 code. 2124471Sdonn * 2224471Sdonn */ 2324471Sdonn 2424470Sdonn #define INTERDATA 2 2524470Sdonn #define GCOS 3 2624470Sdonn #define PDP11 4 2724470Sdonn #define IBM 5 2824470Sdonn #define CMACH 6 2924470Sdonn #define VAX 7 3024470Sdonn 3124470Sdonn #define DMR 2 3224470Sdonn #define PCC 3 3324470Sdonn 3424470Sdonn #ifndef FAMILY 3524470Sdonn FAMILY NOT DEFINED !!! 3624470Sdonn Family = FAMILY 3724470Sdonn #endif 3824470Sdonn 3924470Sdonn #ifndef HERE 4024470Sdonn HERE NOT DEFINED !!!! 4124470Sdonn Here = HERE 4224470Sdonn #endif 4324470Sdonn 4424470Sdonn #define M(x) (1<<x) 4524470Sdonn #define ALLOC(x) (struct x *) ckalloc(sizeof(struct x)) 4624470Sdonn #define ALLOCN(n,x) (struct x *) ckalloc(n*sizeof(struct x)) 4724470Sdonn #define ALLEXPR (expptr) ckalloc( sizeof(union Expression) ) 4824470Sdonn typedef int *ptr; 4924470Sdonn typedef char *charptr; 5024470Sdonn typedef FILE *FILEP; 5124470Sdonn typedef short flag; 5224470Sdonn typedef char field; /* actually need only 4 bits */ 5324470Sdonn typedef long int ftnint; 5424470Sdonn #define LOCAL static 5524470Sdonn 5624470Sdonn #define NO 0 5724470Sdonn #define YES 1 5824470Sdonn 5924470Sdonn #define CNULL (char *) 0 6024470Sdonn #define PNULL (ptr) 0 6124470Sdonn #define CHNULL (chainp) 0 6224470Sdonn #define ENULL (expptr) 0 6324470Sdonn 6424470Sdonn 6524470Sdonn 6624470Sdonn /* block tag values */ 6724470Sdonn 6824470Sdonn #define TNAME 1 6924470Sdonn #define TCONST 2 7024470Sdonn #define TEXPR 3 7124470Sdonn #define TADDR 4 7224470Sdonn #define TTEMP 5 7324470Sdonn #define TPRIM 6 7424470Sdonn #define TLIST 7 7524470Sdonn #define TIMPLDO 8 7624470Sdonn #define TERROR 9 7724470Sdonn 7824470Sdonn 7924470Sdonn /* parser states */ 8024470Sdonn 8124470Sdonn #define OUTSIDE 0 8224470Sdonn #define INSIDE 1 8324470Sdonn #define INDCL 2 8424470Sdonn #define INDATA 3 8524470Sdonn #define INEXEC 4 8624470Sdonn 8724470Sdonn /* procedure classes */ 8824470Sdonn 8924470Sdonn #define PROCMAIN 1 9024470Sdonn #define PROCBLOCK 2 9124470Sdonn #define PROCSUBR 3 9224470Sdonn #define PROCFUNCT 4 9324470Sdonn 9424470Sdonn 9524470Sdonn /* storage classes -- vstg values */ 9624470Sdonn 9724470Sdonn #define STGUNKNOWN 0 9824470Sdonn #define STGARG 1 9924470Sdonn #define STGAUTO 2 10024470Sdonn #define STGBSS 3 10124470Sdonn #define STGINIT 4 10224470Sdonn #define STGCONST 5 10324470Sdonn #define STGEXT 6 10424470Sdonn #define STGINTR 7 10524470Sdonn #define STGSTFUNCT 8 10624470Sdonn #define STGCOMMON 9 10724470Sdonn #define STGEQUIV 10 10824470Sdonn #define STGREG 11 10924470Sdonn #define STGLENG 12 11024470Sdonn #define STGNULL 13 11124470Sdonn #define STGPREG 14 11224470Sdonn 11324470Sdonn /* name classes -- vclass values */ 11424470Sdonn 11524470Sdonn #define CLUNKNOWN 0 11624470Sdonn #define CLPARAM 1 11724470Sdonn #define CLVAR 2 11824470Sdonn #define CLENTRY 3 11924470Sdonn #define CLMAIN 4 12024470Sdonn #define CLBLOCK 5 12124470Sdonn #define CLPROC 6 12224470Sdonn #define CLNAMELIST 7 12324470Sdonn 12424470Sdonn 12524470Sdonn /* vprocclass values */ 12624470Sdonn 12724470Sdonn #define PUNKNOWN 0 12824470Sdonn #define PEXTERNAL 1 12924470Sdonn #define PINTRINSIC 2 13024470Sdonn #define PSTFUNCT 3 13124470Sdonn #define PTHISPROC 4 13224470Sdonn 13324470Sdonn /* control stack codes */ 13424470Sdonn 13524470Sdonn #define CTLDO 1 13624470Sdonn #define CTLIF 2 13724470Sdonn #define CTLELSE 3 13824470Sdonn 13924470Sdonn 14024470Sdonn /* operators -- see also arrays 'ops' and 'ops2' in put.c */ 14124470Sdonn 14224470Sdonn #define OPPLUS 1 14324470Sdonn #define OPMINUS 2 14424470Sdonn #define OPSTAR 3 14524470Sdonn #define OPSLASH 4 14624470Sdonn #define OPPOWER 5 14724470Sdonn #define OPNEG 6 14824470Sdonn #define OPOR 7 14924470Sdonn #define OPAND 8 15024470Sdonn #define OPEQV 9 15124470Sdonn #define OPNEQV 10 15224470Sdonn #define OPNOT 11 15324470Sdonn #define OPCONCAT 12 15424470Sdonn #define OPLT 13 15524470Sdonn #define OPEQ 14 15624470Sdonn #define OPGT 15 15724470Sdonn #define OPLE 16 15824470Sdonn #define OPNE 17 15924470Sdonn #define OPGE 18 16024470Sdonn #define OPCALL 19 16124470Sdonn #define OPCCALL 20 16224470Sdonn #define OPASSIGN 21 16324470Sdonn #define OPPLUSEQ 22 16424470Sdonn #define OPSTAREQ 23 16524470Sdonn #define OPCONV 24 16624470Sdonn #define OPLSHIFT 25 16724470Sdonn #define OPMOD 26 16824470Sdonn #define OPCOMMA 27 16924470Sdonn #define OPQUEST 28 17024470Sdonn #define OPCOLON 29 17124470Sdonn #define OPABS 30 17224470Sdonn #define OPMIN 31 17324470Sdonn #define OPMAX 32 17424470Sdonn #define OPADDR 33 17524470Sdonn #define OPINDIRECT 34 17624470Sdonn #define OPBITOR 35 17724470Sdonn #define OPBITAND 36 17824470Sdonn #define OPBITXOR 37 17924470Sdonn #define OPBITNOT 38 18024470Sdonn #define OPRSHIFT 39 18124470Sdonn #define OPPAREN 40 18224470Sdonn #define OPUNARYPLUS 41 18324470Sdonn 18424470Sdonn 18524470Sdonn /* label type codes */ 18624470Sdonn 18724470Sdonn #define LABUNKNOWN 0 18824470Sdonn #define LABEXEC 1 18924470Sdonn #define LABFORMAT 2 19024470Sdonn #define LABOTHER 3 19124470Sdonn 19224470Sdonn 19324470Sdonn /* INTRINSIC function codes*/ 19424470Sdonn 19524470Sdonn #define INTREND 0 19624470Sdonn #define INTRCONV 1 19724470Sdonn #define INTRMIN 2 19824470Sdonn #define INTRMAX 3 19924470Sdonn #define INTRGEN 4 20024470Sdonn #define INTRSPEC 5 20124470Sdonn #define INTRBOOL 6 20224470Sdonn 20324470Sdonn 20424470Sdonn /* I/O statement codes */ 20524470Sdonn 20624470Sdonn #define IOSTDIN ICON(5) 20724470Sdonn #define IOSTDOUT ICON(6) 20824470Sdonn #define IOSTDERR ICON(0) 20924470Sdonn 21024470Sdonn #define IOSBAD (-1) 21124470Sdonn #define IOSPOSITIONAL 0 21224470Sdonn #define IOSUNIT 1 21324470Sdonn #define IOSFMT 2 21424470Sdonn 21524470Sdonn #define IOINQUIRE 1 21624470Sdonn #define IOOPEN 2 21724470Sdonn #define IOCLOSE 3 21824470Sdonn #define IOREWIND 4 21924470Sdonn #define IOBACKSPACE 5 22024470Sdonn #define IOENDFILE 6 22124470Sdonn #define IOREAD 7 22224470Sdonn #define IOWRITE 8 22324470Sdonn 22424470Sdonn 22524470Sdonn /* type masks */ 22624470Sdonn 22724470Sdonn #define MSKLOGICAL M(TYLOGICAL) 22824470Sdonn #define MSKADDR M(TYADDR) 22924470Sdonn #define MSKCHAR M(TYCHAR) 23024470Sdonn #define MSKINT M(TYSHORT)|M(TYLONG) 23124470Sdonn #define MSKREAL M(TYREAL)|M(TYDREAL) 23224470Sdonn #define MSKCOMPLEX M(TYCOMPLEX)|M(TYDCOMPLEX) 23324470Sdonn #define MSKSTATIC (M(STGINIT)|M(STGBSS)|M(STGCOMMON)|M(STGEQUIV)|M(STGCONST)) 23424470Sdonn 23524470Sdonn /* miscellaneous macros */ 23624470Sdonn 23724470Sdonn #define ONEOF(x,y) (M(x) & (y)) 23824470Sdonn #define ISCOMPLEX(z) ONEOF(z, MSKCOMPLEX) 23924470Sdonn #define ISREAL(z) ONEOF(z, MSKREAL) 24024470Sdonn #define ISNUMERIC(z) ONEOF(z, MSKINT|MSKREAL|MSKCOMPLEX) 24124470Sdonn #define ISICON(z) (z->tag==TCONST && ISINT(z->constblock.vtype)) 24224470Sdonn #define ISCHAR(z) (z->headblock.vtype==TYCHAR) 24324470Sdonn #define ISINT(z) ONEOF(z, MSKINT) 24424470Sdonn #define ISCONST(z) (z->tag==TCONST) 24524470Sdonn #define ISERROR(z) (z->tag==TERROR) 24624470Sdonn #define ISPLUSOP(z) (z->tag==TEXPR && z->exprblock.opcode==OPPLUS) 24724470Sdonn #define ISSTAROP(z) (z->tag==TEXPR && z->exprblock.opcode==OPSTAR) 24833258Sbostic #define ISONE(z) (ISICON(z) && z->constblock.constant.ci==1) 24924470Sdonn #define INT(z) ONEOF(z, MSKINT|MSKCHAR) 25024470Sdonn #define ICON(z) mkintcon( (ftnint)(z) ) 25124470Sdonn 25224471Sdonn #ifdef ONLY66 25324470Sdonn #define NO66(s) if(no66flag) err66(s) 25424470Sdonn #define NOEXT(s) if(noextflag) errext(s) 25524471Sdonn #else 25624471Sdonn #define NO66(s) 25724471Sdonn #define NOEXT(s) 25824471Sdonn #endif 25924470Sdonn 26024470Sdonn /* round a up to a multiple of b */ 26124470Sdonn #define roundup(a,b) ( b * ( (a+b-1)/b) ) 26224470Sdonn 26324470Sdonn 26424470Sdonn /* optimization buffer slot types */ 26524470Sdonn 26624470Sdonn #define SKNULL 0 26724470Sdonn #define SKIFN 1 26824470Sdonn #define SKGOTO 2 26924470Sdonn #define SKLABEL 3 27024470Sdonn #define SKEQ 4 27124470Sdonn #define SKCALL 5 27224470Sdonn #define SKCMGOTO 6 27324470Sdonn #define SKSTOP 7 27424470Sdonn #define SKDOHEAD 8 27524470Sdonn #define SKENDDO 9 27624470Sdonn #define SKARIF 10 27724470Sdonn #define SKRETURN 11 27824470Sdonn #define SKASGOTO 12 27924470Sdonn #define SKPAUSE 13 28024470Sdonn #define SKASSIGN 14 28124470Sdonn #define SKIOIFN 15 28224470Sdonn #define SKFRTEMP 16 283