typedef union Expression *expptr;
typedef union Taggedblock *tagptr;
typedef struct Chain *chainp;
typedef struct Addrblock *Addrp;
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 struct Entrypoint *entries;
extern struct Rplblock *rpllist;
extern struct Chain *curdtp;
extern int eqvstart; /* offset to eqv number to guarantee uniqueness */
#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 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 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(), mktmpn(), autovar();
Addrp mkplace(), mkaddr(), putconst(), memversion();
expptr mkprim(), mklhs(), mkexpr(), mkconv(), mkfunct(), fixexpr(), fixtype();
expptr errnode(), mkintcon();
ftnint lmin(), lmax(), iarrlen();