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