* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)defs.h 5.1 (Berkeley) 6/7/85
* Definitions for f77pass1
* University of Utah CS Dept modification history:
* $Header: defs.h,v 2.3 85/06/07 21:06:48 root Exp $
* Revision 2.3 85/06/07 21:06:48 root
* Revision 2.2 85/01/11 21:02:58 donn
* Added 'issaved' bit to addrblocks to help implement SAVE statements.
* Revision 2.1 84/07/19 12:02:46 donn
* Changed comment headers for UofU.
* Revision 1.2 84/02/27 00:49:40 donn
* Added external references to lists of argument temporaries, used in the
* Berkeley changes to reduce offsets of data.
typedef union Expression
*expptr
;
typedef union Taggedblock
*tagptr
;
typedef struct Chain
*chainp
;
typedef struct Addrblock
*Addrp
;
typedef struct Tempblock
*Tempp
;
typedef struct Constblock
*Constp
;
typedef struct Exprblock
*Exprp
;
typedef struct Nameblock
*Namep
;
extern long int headoffset
;
extern struct Labelblock
*thislabel
;
extern ftnint typesize
[];
extern int fudgelabel
; /* to confuse the pdp11 optimizer */
extern Namep regnamep
[ ];
extern chainp argtemplist
;
extern chainp activearglist
;
extern struct Entrypoint
*entries
;
extern struct Rplblock
*rpllist
;
extern struct Chain
*curdtp
;
extern int eqvstart
; /* offset to eqv number to guarantee uniqueness */
extern char cdatafname
[];
extern char vdatafname
[];
#define endlabel ctlabels[0]
#define elselabel ctlabels[1]
#define dobodylabel ctlabels[1]
#define doposlabel ctlabels[2]
#define doneglabel ctlabels[3]
extern struct Ctlframe
*ctls
;
extern struct Ctlframe
*ctlstack
;
extern struct Ctlframe
*lastctl
;
extern struct Extsym
*extsymtab
;
extern struct Extsym
*nextext
;
extern struct Extsym
*lastext
;
extern struct Labelblock
*labeltab
;
extern struct Labelblock
*labtabend
;
extern struct Labelblock
*highlabtab
;
struct Entrypoint
*entnextp
;
struct Extsym
*entryname
;
extern struct Hashentry
*hashtab
;
extern struct Hashentry
*lasthash
;
struct Intrpacked
/* bits for intrinsic function description */
struct Intrpacked intrdesc
; /* bits for intrinsic function*/
chainp namelist
; /* points to chain of names in */
chainp vstfdesc
; /* points to (formals, expr) pair */
struct Headblock headblock
;
struct Exprblock exprblock
;
struct Addrblock addrblock
;
struct Tempblock tempblock
;
struct Constblock constblock
;
struct Errorblock errorblock
;
struct Listblock listblock
;
struct Primblock primblock
;
struct Rplblock
/* name replacement block */
struct Rplblock
*rplnextp
;
extern struct Equivblock
*eqvclass
;
struct Eqvchain
*eqvnextp
;
struct Primblock
*eqvlhs
;
struct Headblock headblock
;
struct Nameblock nameblock
;
struct Paramblock paramblock
;
struct Exprblock exprblock
;
struct Constblock constblock
;
struct Listblock listblock
;
struct Addrblock addrblock
;
struct Tempblock tempblock
;
struct Errorblock errorblock
;
struct Primblock primblock
;
struct Impldoblock impldoblock
;
char litclen
; /* small integer */
extern struct Literal litpool
[ ];
/* popular functions with non integer return values */
char *varstr(), *nounder(), *varunder();
chainp
hookup(), mkchain();
struct Labelblock
*mklabel(), *execlab();
struct Extsym
*mkext(), *newentry();
expptr
addrof(), call1(), call2(), call3(), call4();
Addrp
builtin(), mktemp(), altmpn(), mkaltemp(), mkaltmpn(), autovar();
Addrp
mkplace(), mkaddr(), putconst(), memversion();
expptr
mkprim(), mklhs(), mkexpr(), mkconv(), mkfunct(), fixexpr(), fixtype();
expptr
errnode(), mkintcon();
ftnint
lmin(), lmax(), iarrlen();