xref: /csrg-svn/usr.bin/f77/pass1.vax/defs.h (revision 22805)
1*22805Smckusick /*
2*22805Smckusick  * Copyright (c) 1980 Regents of the University of California.
3*22805Smckusick  * All rights reserved.  The Berkeley software License Agreement
4*22805Smckusick  * specifies the terms and conditions for redistribution.
5*22805Smckusick  *
6*22805Smckusick  *	@(#)defs.h	5.1 (Berkeley) 06/07/85
7*22805Smckusick  */
8*22805Smckusick 
9*22805Smckusick /*
10*22805Smckusick  * defs.h
11*22805Smckusick  *
12*22805Smckusick  * Definitions for f77pass1
13*22805Smckusick  *
14*22805Smckusick  * University of Utah CS Dept modification history:
15*22805Smckusick  *
16*22805Smckusick  * $Header: defs.h,v 2.3 85/06/07 21:06:48 root Exp $
17*22805Smckusick  * $Log:	defs.h,v $
18*22805Smckusick  * Revision 2.3  85/06/07  21:06:48  root
19*22805Smckusick  * Add copyright
20*22805Smckusick  *
21*22805Smckusick  * Revision 2.2  85/01/11  21:02:58  donn
22*22805Smckusick  * Added 'issaved' bit to addrblocks to help implement SAVE statements.
23*22805Smckusick  *
24*22805Smckusick  * Revision 2.1  84/07/19  12:02:46  donn
25*22805Smckusick  * Changed comment headers for UofU.
26*22805Smckusick  *
27*22805Smckusick  * Revision 1.2  84/02/27  00:49:40  donn
28*22805Smckusick  * Added external references to lists of argument temporaries, used in the
29*22805Smckusick  * Berkeley changes to reduce offsets of data.
30*22805Smckusick  *
31*22805Smckusick  */
32*22805Smckusick 
33*22805Smckusick #include <stdio.h>
34*22805Smckusick 
35*22805Smckusick #ifdef unix
36*22805Smckusick #	include <ctype.h>
37*22805Smckusick #endif
38*22805Smckusick 
39*22805Smckusick #include "ftypes.h"
40*22805Smckusick #include "defines.h"
41*22805Smckusick #include "machdefs.h"
42*22805Smckusick 
43*22805Smckusick #define VL 16
44*22805Smckusick 
45*22805Smckusick #define MAXDIM 20
46*22805Smckusick #define MAXINCLUDES 10
47*22805Smckusick #define MAXLITERALS 30
48*22805Smckusick #define MAXCTL 20
49*22805Smckusick #define MAXHASH 1009
50*22805Smckusick #define MAXSTNO 401
51*22805Smckusick #define MAXEXT 200
52*22805Smckusick #define MAXEQUIV 150
53*22805Smckusick #define MAXLABLIST 256
54*22805Smckusick #define MAXDEBUGFLAG 20
55*22805Smckusick 
56*22805Smckusick typedef union Expression *expptr;
57*22805Smckusick typedef union Taggedblock *tagptr;
58*22805Smckusick typedef struct Chain *chainp;
59*22805Smckusick typedef struct Addrblock *Addrp;
60*22805Smckusick typedef struct Tempblock *Tempp;
61*22805Smckusick typedef struct Constblock *Constp;
62*22805Smckusick typedef struct Exprblock *Exprp;
63*22805Smckusick typedef struct Nameblock *Namep;
64*22805Smckusick 
65*22805Smckusick extern FILEP infile;
66*22805Smckusick extern FILEP diagfile;
67*22805Smckusick extern FILEP textfile;
68*22805Smckusick extern FILEP asmfile;
69*22805Smckusick extern FILEP initfile;
70*22805Smckusick extern long int headoffset;
71*22805Smckusick 
72*22805Smckusick extern char token [ ];
73*22805Smckusick extern int toklen;
74*22805Smckusick extern int lineno;
75*22805Smckusick extern char *infname;
76*22805Smckusick extern int needkwd;
77*22805Smckusick extern struct Labelblock *thislabel;
78*22805Smckusick 
79*22805Smckusick extern int maxctl;
80*22805Smckusick extern int maxequiv;
81*22805Smckusick extern int maxstno;
82*22805Smckusick extern int maxhash;
83*22805Smckusick extern int maxext;
84*22805Smckusick 
85*22805Smckusick extern flag profileflag;
86*22805Smckusick extern flag optimflag;
87*22805Smckusick extern flag nowarnflag;
88*22805Smckusick extern flag ftn66flag;
89*22805Smckusick extern flag no66flag;
90*22805Smckusick extern flag noextflag;
91*22805Smckusick extern flag shiftcase;
92*22805Smckusick extern flag undeftype;
93*22805Smckusick extern flag shortsubs;
94*22805Smckusick extern flag onetripflag;
95*22805Smckusick extern flag checksubs;
96*22805Smckusick extern flag debugflag[];
97*22805Smckusick extern flag equivdcl;
98*22805Smckusick extern int nerr;
99*22805Smckusick extern int nwarn;
100*22805Smckusick extern int ndata;
101*22805Smckusick 
102*22805Smckusick extern int parstate;
103*22805Smckusick extern flag headerdone;
104*22805Smckusick extern int blklevel;
105*22805Smckusick extern flag saveall;
106*22805Smckusick extern flag substars;
107*22805Smckusick extern int impltype[ ];
108*22805Smckusick extern int implleng[ ];
109*22805Smckusick extern int implstg[ ];
110*22805Smckusick 
111*22805Smckusick extern int tyint;
112*22805Smckusick extern int tylogical;
113*22805Smckusick extern ftnint typesize[];
114*22805Smckusick extern int typealign[];
115*22805Smckusick extern int procno;
116*22805Smckusick extern int proctype;
117*22805Smckusick extern char * procname;
118*22805Smckusick extern int rtvlabel[ ];
119*22805Smckusick extern int fudgelabel;	/* to confuse the pdp11 optimizer */
120*22805Smckusick extern Addrp typeaddr;
121*22805Smckusick extern Addrp retslot;
122*22805Smckusick extern int cxslot;
123*22805Smckusick extern int chslot;
124*22805Smckusick extern int chlgslot;
125*22805Smckusick extern int procclass;
126*22805Smckusick extern ftnint procleng;
127*22805Smckusick extern int nentry;
128*22805Smckusick extern flag multitype;
129*22805Smckusick extern int blklevel;
130*22805Smckusick extern int lastlabno;
131*22805Smckusick extern int lastvarno;
132*22805Smckusick extern int lastargslot;
133*22805Smckusick extern int argloc;
134*22805Smckusick extern ftnint autoleng;
135*22805Smckusick extern ftnint bssleng;
136*22805Smckusick extern int retlabel;
137*22805Smckusick extern int ret0label;
138*22805Smckusick extern int dorange;
139*22805Smckusick extern int regnum[ ];
140*22805Smckusick extern Namep regnamep[ ];
141*22805Smckusick extern int maxregvar;
142*22805Smckusick extern int highregvar;
143*22805Smckusick extern int nregvar;
144*22805Smckusick extern ftnint lowbss;
145*22805Smckusick extern ftnint highbss;
146*22805Smckusick extern int bsslabel;
147*22805Smckusick extern flag anyinits;
148*22805Smckusick extern flag anylocals;
149*22805Smckusick 
150*22805Smckusick extern chainp templist;
151*22805Smckusick extern chainp argtemplist;
152*22805Smckusick extern chainp activearglist;
153*22805Smckusick extern int maxdim;
154*22805Smckusick extern chainp holdtemps;
155*22805Smckusick extern struct Entrypoint *entries;
156*22805Smckusick extern struct Rplblock *rpllist;
157*22805Smckusick extern struct Chain *curdtp;
158*22805Smckusick extern ftnint curdtelt;
159*22805Smckusick extern flag toomanyinit;
160*22805Smckusick 
161*22805Smckusick extern flag inioctl;
162*22805Smckusick extern int iostmt;
163*22805Smckusick extern Addrp ioblkp;
164*22805Smckusick extern int nioctl;
165*22805Smckusick extern int nequiv;
166*22805Smckusick extern int eqvstart;	/* offset to eqv number to guarantee uniqueness */
167*22805Smckusick extern int nintnames;
168*22805Smckusick 
169*22805Smckusick #ifdef SDB
170*22805Smckusick extern int dbglabel;
171*22805Smckusick extern flag sdbflag;
172*22805Smckusick #endif
173*22805Smckusick 
174*22805Smckusick extern int cdatafile;
175*22805Smckusick extern int cchkfile;
176*22805Smckusick extern int vdatafile;
177*22805Smckusick extern int vchkfile;
178*22805Smckusick 
179*22805Smckusick extern char cdatafname[];
180*22805Smckusick extern char cchkfname[];
181*22805Smckusick extern char vdatafname[];
182*22805Smckusick extern char vchkfname[];
183*22805Smckusick 
184*22805Smckusick extern long cdatahwm;
185*22805Smckusick extern long vdatahwm;
186*22805Smckusick 
187*22805Smckusick 
188*22805Smckusick struct Chain
189*22805Smckusick 	{
190*22805Smckusick 	chainp nextp;
191*22805Smckusick 	tagptr datap;
192*22805Smckusick 	};
193*22805Smckusick 
194*22805Smckusick extern chainp chains;
195*22805Smckusick 
196*22805Smckusick struct Headblock
197*22805Smckusick 	{
198*22805Smckusick 	field tag;
199*22805Smckusick 	field vtype;
200*22805Smckusick 	field vclass;
201*22805Smckusick 	field vstg;
202*22805Smckusick 	expptr vleng;
203*22805Smckusick 	} ;
204*22805Smckusick 
205*22805Smckusick struct Ctlframe
206*22805Smckusick 	{
207*22805Smckusick 	unsigned ctltype:8;
208*22805Smckusick 	unsigned dostepsign:8;
209*22805Smckusick 	int ctlabels[4];
210*22805Smckusick 	int dolabel;
211*22805Smckusick 	Namep donamep;
212*22805Smckusick 	expptr domax;
213*22805Smckusick 	expptr dostep;
214*22805Smckusick 	};
215*22805Smckusick #define endlabel ctlabels[0]
216*22805Smckusick #define elselabel ctlabels[1]
217*22805Smckusick #define dobodylabel ctlabels[1]
218*22805Smckusick #define doposlabel ctlabels[2]
219*22805Smckusick #define doneglabel ctlabels[3]
220*22805Smckusick extern struct Ctlframe *ctls;
221*22805Smckusick extern struct Ctlframe *ctlstack;
222*22805Smckusick extern struct Ctlframe *lastctl;
223*22805Smckusick 
224*22805Smckusick struct Extsym
225*22805Smckusick 	{
226*22805Smckusick 	char extname[XL+1];
227*22805Smckusick 	field extstg;
228*22805Smckusick 	unsigned extsave:1;
229*22805Smckusick 	unsigned extinit:1;
230*22805Smckusick 	chainp extp;
231*22805Smckusick 	ftnint extleng;
232*22805Smckusick 	ftnint maxleng;
233*22805Smckusick 	char init;
234*22805Smckusick 	long initoffset;
235*22805Smckusick 	};
236*22805Smckusick 
237*22805Smckusick extern struct Extsym *extsymtab;
238*22805Smckusick extern struct Extsym *nextext;
239*22805Smckusick extern struct Extsym *lastext;
240*22805Smckusick 
241*22805Smckusick struct Labelblock
242*22805Smckusick 	{
243*22805Smckusick 	int labelno;
244*22805Smckusick 	unsigned blklevel:8;
245*22805Smckusick 	unsigned labused:1;
246*22805Smckusick 	unsigned labinacc:1;
247*22805Smckusick 	unsigned labdefined:1;
248*22805Smckusick 	unsigned labtype:2;
249*22805Smckusick 	ftnint stateno;
250*22805Smckusick 	};
251*22805Smckusick 
252*22805Smckusick extern struct Labelblock *labeltab;
253*22805Smckusick extern struct Labelblock *labtabend;
254*22805Smckusick extern struct Labelblock *highlabtab;
255*22805Smckusick 
256*22805Smckusick struct Entrypoint
257*22805Smckusick 	{
258*22805Smckusick 	struct Entrypoint *entnextp;
259*22805Smckusick 	struct Extsym *entryname;
260*22805Smckusick 	chainp arglist;
261*22805Smckusick 	int entrylabel;
262*22805Smckusick 	int typelabel;
263*22805Smckusick 	Namep enamep;
264*22805Smckusick 	};
265*22805Smckusick 
266*22805Smckusick struct Primblock
267*22805Smckusick 	{
268*22805Smckusick 	field tag;
269*22805Smckusick 	field vtype;
270*22805Smckusick 	Namep namep;
271*22805Smckusick 	struct Listblock *argsp;
272*22805Smckusick 	expptr fcharp;
273*22805Smckusick 	expptr lcharp;
274*22805Smckusick 	};
275*22805Smckusick 
276*22805Smckusick 
277*22805Smckusick struct Hashentry
278*22805Smckusick 	{
279*22805Smckusick 	int hashval;
280*22805Smckusick 	Namep varp;
281*22805Smckusick 	};
282*22805Smckusick extern struct Hashentry *hashtab;
283*22805Smckusick extern struct Hashentry *lasthash;
284*22805Smckusick 
285*22805Smckusick struct Intrpacked	/* bits for intrinsic function description */
286*22805Smckusick 	{
287*22805Smckusick 	unsigned f1:3;
288*22805Smckusick 	unsigned f2:4;
289*22805Smckusick 	unsigned f3:7;
290*22805Smckusick 	};
291*22805Smckusick 
292*22805Smckusick struct Nameblock
293*22805Smckusick 	{
294*22805Smckusick 	field tag;
295*22805Smckusick 	field vtype;
296*22805Smckusick 	field vclass;
297*22805Smckusick 	field vstg;
298*22805Smckusick 	expptr vleng;
299*22805Smckusick 	char varname[VL];
300*22805Smckusick 	unsigned vdovar:1;
301*22805Smckusick 	unsigned vdcldone:1;
302*22805Smckusick 	unsigned vadjdim:1;
303*22805Smckusick 	unsigned vsave:1;
304*22805Smckusick 	unsigned vprocclass:3;
305*22805Smckusick 	unsigned vregno:4;
306*22805Smckusick 	union	{
307*22805Smckusick 		int varno;
308*22805Smckusick 		struct Intrpacked intrdesc;	/* bits for intrinsic function*/
309*22805Smckusick 		} vardesc;
310*22805Smckusick 	struct Dimblock *vdim;
311*22805Smckusick 	ftnint voffset;
312*22805Smckusick 	union	{
313*22805Smckusick 		chainp namelist;	/* points to chain of names in */
314*22805Smckusick 		chainp vstfdesc;	/* points to (formals, expr) pair */
315*22805Smckusick 		} varxptr;
316*22805Smckusick 	char inlcomm;
317*22805Smckusick 	char init;
318*22805Smckusick 	long initoffset;
319*22805Smckusick 	ftnint varsize;
320*22805Smckusick 	};
321*22805Smckusick 
322*22805Smckusick 
323*22805Smckusick struct Paramblock
324*22805Smckusick 	{
325*22805Smckusick 	field tag;
326*22805Smckusick 	field vtype;
327*22805Smckusick 	field vclass;
328*22805Smckusick 	field vstg;
329*22805Smckusick 	expptr vleng;
330*22805Smckusick 	char varname[VL];
331*22805Smckusick 	expptr paramval;
332*22805Smckusick 	} ;
333*22805Smckusick 
334*22805Smckusick 
335*22805Smckusick struct Exprblock
336*22805Smckusick 	{
337*22805Smckusick 	field tag;
338*22805Smckusick 	field vtype;
339*22805Smckusick 	field vclass;
340*22805Smckusick 	field vstg;
341*22805Smckusick 	expptr vleng;
342*22805Smckusick 	unsigned opcode:6;
343*22805Smckusick 	expptr leftp;
344*22805Smckusick 	expptr rightp;
345*22805Smckusick 	};
346*22805Smckusick 
347*22805Smckusick 
348*22805Smckusick union Constant
349*22805Smckusick 	{
350*22805Smckusick 	char *ccp;
351*22805Smckusick 	ftnint ci;
352*22805Smckusick 	double cd[2];
353*22805Smckusick 	};
354*22805Smckusick 
355*22805Smckusick struct Constblock
356*22805Smckusick 	{
357*22805Smckusick 	field tag;
358*22805Smckusick 	field vtype;
359*22805Smckusick 	field vclass;
360*22805Smckusick 	field vstg;
361*22805Smckusick 	expptr vleng;
362*22805Smckusick 	union Constant const;
363*22805Smckusick 	};
364*22805Smckusick 
365*22805Smckusick 
366*22805Smckusick struct Listblock
367*22805Smckusick 	{
368*22805Smckusick 	field tag;
369*22805Smckusick 	field vtype;
370*22805Smckusick 	chainp listp;
371*22805Smckusick 	};
372*22805Smckusick 
373*22805Smckusick 
374*22805Smckusick 
375*22805Smckusick struct Addrblock
376*22805Smckusick 	{
377*22805Smckusick 	field tag;
378*22805Smckusick 	field vtype;
379*22805Smckusick 	field vclass;
380*22805Smckusick 	field vstg;
381*22805Smckusick 	expptr vleng;
382*22805Smckusick 	int memno;
383*22805Smckusick 	expptr memoffset;
384*22805Smckusick 	unsigned istemp:1;
385*22805Smckusick         unsigned isarray:1;
386*22805Smckusick 	unsigned issaved:1;
387*22805Smckusick 	unsigned ntempelt:10;
388*22805Smckusick 	ftnint varleng;
389*22805Smckusick 	ftnint varsize;
390*22805Smckusick 	};
391*22805Smckusick 
392*22805Smckusick 
393*22805Smckusick 
394*22805Smckusick struct Tempblock
395*22805Smckusick 	{
396*22805Smckusick 	field tag;
397*22805Smckusick 	field vtype;
398*22805Smckusick 	field vclass;
399*22805Smckusick 	expptr vleng;
400*22805Smckusick 	Addrp memalloc;
401*22805Smckusick 	unsigned istemp:1;
402*22805Smckusick 	unsigned ntempelt:10;
403*22805Smckusick 	ftnint varleng;
404*22805Smckusick 	};
405*22805Smckusick 
406*22805Smckusick 
407*22805Smckusick 
408*22805Smckusick struct Errorblock
409*22805Smckusick 	{
410*22805Smckusick 	field tag;
411*22805Smckusick 	field vtype;
412*22805Smckusick 	};
413*22805Smckusick 
414*22805Smckusick 
415*22805Smckusick union Expression
416*22805Smckusick 	{
417*22805Smckusick 	field tag;
418*22805Smckusick 	struct Headblock headblock;
419*22805Smckusick 	struct Exprblock exprblock;
420*22805Smckusick 	struct Addrblock addrblock;
421*22805Smckusick 	struct Tempblock tempblock;
422*22805Smckusick 	struct Constblock constblock;
423*22805Smckusick 	struct Errorblock errorblock;
424*22805Smckusick 	struct Listblock listblock;
425*22805Smckusick 	struct Primblock primblock;
426*22805Smckusick 	} ;
427*22805Smckusick 
428*22805Smckusick 
429*22805Smckusick 
430*22805Smckusick struct Dimblock
431*22805Smckusick 	{
432*22805Smckusick 	int ndim;
433*22805Smckusick 	expptr nelt;
434*22805Smckusick 	expptr baseoffset;
435*22805Smckusick 	expptr basexpr;
436*22805Smckusick 	struct
437*22805Smckusick 		{
438*22805Smckusick 		expptr dimsize;
439*22805Smckusick 		expptr dimexpr;
440*22805Smckusick 		expptr lb;
441*22805Smckusick 		expptr lbaddr;
442*22805Smckusick 		expptr ub;
443*22805Smckusick 		expptr ubaddr;
444*22805Smckusick 		} dims[1];
445*22805Smckusick 	};
446*22805Smckusick 
447*22805Smckusick 
448*22805Smckusick struct Impldoblock
449*22805Smckusick 	{
450*22805Smckusick 	field tag;
451*22805Smckusick 	unsigned isactive:1;
452*22805Smckusick 	unsigned isbusy:1;
453*22805Smckusick 	Namep varnp;
454*22805Smckusick 	Constp varvp;
455*22805Smckusick 	chainp impdospec;
456*22805Smckusick 	expptr implb;
457*22805Smckusick 	expptr impub;
458*22805Smckusick 	expptr impstep;
459*22805Smckusick 	ftnint impdiff;
460*22805Smckusick 	ftnint implim;
461*22805Smckusick 	struct Chain *datalist;
462*22805Smckusick 	};
463*22805Smckusick 
464*22805Smckusick 
465*22805Smckusick struct Rplblock	/* name replacement block */
466*22805Smckusick 	{
467*22805Smckusick 	struct Rplblock *rplnextp;
468*22805Smckusick 	Namep rplnp;
469*22805Smckusick 	expptr rplvp;
470*22805Smckusick 	expptr rplxp;
471*22805Smckusick 	int rpltag;
472*22805Smckusick 	};
473*22805Smckusick 
474*22805Smckusick 
475*22805Smckusick 
476*22805Smckusick struct Equivblock
477*22805Smckusick 	{
478*22805Smckusick 	struct Eqvchain *equivs;
479*22805Smckusick 	flag eqvinit;
480*22805Smckusick 	long int eqvtop;
481*22805Smckusick 	long int eqvbottom;
482*22805Smckusick 	char inlcomm;
483*22805Smckusick 	char init;
484*22805Smckusick 	long initoffset;
485*22805Smckusick 	} ;
486*22805Smckusick #define eqvleng eqvtop
487*22805Smckusick 
488*22805Smckusick extern struct Equivblock *eqvclass;
489*22805Smckusick 
490*22805Smckusick 
491*22805Smckusick struct Eqvchain
492*22805Smckusick 	{
493*22805Smckusick 	struct Eqvchain *eqvnextp;
494*22805Smckusick 	union
495*22805Smckusick 		{
496*22805Smckusick 		struct Primblock *eqvlhs;
497*22805Smckusick 		Namep eqvname;
498*22805Smckusick 		} eqvitem;
499*22805Smckusick 	long int eqvoffset;
500*22805Smckusick 	} ;
501*22805Smckusick 
502*22805Smckusick 
503*22805Smckusick union Taggedblock
504*22805Smckusick 	{
505*22805Smckusick 	field tag;
506*22805Smckusick 	struct Headblock headblock;
507*22805Smckusick 	struct Nameblock nameblock;
508*22805Smckusick 	struct Paramblock paramblock;
509*22805Smckusick 	struct Exprblock exprblock;
510*22805Smckusick 	struct Constblock constblock;
511*22805Smckusick 	struct Listblock listblock;
512*22805Smckusick 	struct Addrblock addrblock;
513*22805Smckusick 	struct Tempblock tempblock;
514*22805Smckusick 	struct Errorblock errorblock;
515*22805Smckusick 	struct Primblock primblock;
516*22805Smckusick 	struct Impldoblock impldoblock;
517*22805Smckusick 	} ;
518*22805Smckusick 
519*22805Smckusick 
520*22805Smckusick 
521*22805Smckusick 
522*22805Smckusick struct Literal
523*22805Smckusick 	{
524*22805Smckusick 	short littype;
525*22805Smckusick 	short litnum;
526*22805Smckusick 	union	{
527*22805Smckusick 		ftnint litival;
528*22805Smckusick 		double litdval;
529*22805Smckusick 		struct	{
530*22805Smckusick 			char litclen;	/* small integer */
531*22805Smckusick 			char litcstr[XL];
532*22805Smckusick 			} litcval;
533*22805Smckusick 		} litval;
534*22805Smckusick 	};
535*22805Smckusick 
536*22805Smckusick extern struct Literal litpool[ ];
537*22805Smckusick extern int nliterals;
538*22805Smckusick 
539*22805Smckusick 
540*22805Smckusick 
541*22805Smckusick /* popular functions with non integer return values */
542*22805Smckusick 
543*22805Smckusick 
544*22805Smckusick int *ckalloc();
545*22805Smckusick char *varstr(), *nounder(), *varunder();
546*22805Smckusick char *copyn(), *copys();
547*22805Smckusick chainp hookup(), mkchain();
548*22805Smckusick ftnint convci();
549*22805Smckusick char *convic();
550*22805Smckusick char *setdoto();
551*22805Smckusick double convcd();
552*22805Smckusick Namep mkname();
553*22805Smckusick struct Labelblock *mklabel(), *execlab();
554*22805Smckusick struct Extsym *mkext(), *newentry();
555*22805Smckusick expptr addrof(), call1(), call2(), call3(), call4();
556*22805Smckusick Tempp mktmpn();
557*22805Smckusick Addrp builtin(), mktemp(), altmpn(), mkaltemp(), mkaltmpn(), autovar();
558*22805Smckusick Addrp mkplace(), mkaddr(), putconst(), memversion();
559*22805Smckusick expptr mkprim(), mklhs(), mkexpr(), mkconv(), mkfunct(), fixexpr(), fixtype();
560*22805Smckusick expptr errnode(), mkintcon();
561*22805Smckusick tagptr cpexpr();
562*22805Smckusick ftnint lmin(), lmax(), iarrlen();
563