1: #include <stdio.h>
2:
3: #ifdef unix
4: # include <ctype.h>
5: #endif
6:
7: #include "ftypes"
8: #include "defines"
9: #include "locdefs"
10:
11: #define VL 6
12:
13: #define MAXINCLUDES 10
14: #define MAXLITERALS 20
15: #define MAXCTL 20
16: #define MAXHASH 401
17: #define MAXSTNO 201
18: #define MAXEXT 200
19: #define MAXEQUIV 150
20: #define MAXLABLIST 125
21:
22: typedef union expression *expptr;
23: typedef union taggedblock *tagptr;
24: typedef union chainedblock *chainp;
25:
26: extern FILEP infile;
27: extern FILEP diagfile;
28: extern FILEP textfile;
29: extern FILEP asmfile;
30: extern FILEP initfile;
31: extern long int headoffset;
32:
33: extern char token [ ];
34: extern int toklen;
35: extern int yylval;
36: extern int lineno;
37: extern char *infname;
38: extern int needkwd;
39: extern struct labelblock *thislabel;
40:
41: extern flag profileflag;
42: extern flag optimflag;
43: extern flag nowarnflag;
44: extern flag ftn66flag;
45: extern flag shiftcase;
46: extern flag undeftype;
47: extern flag shortsubs;
48: extern flag onetripflag;
49: extern flag checksubs;
50: extern flag debugflag;
51: extern int nerr;
52: extern int nwarn;
53: extern int ndata;
54:
55: extern int parstate;
56: extern flag headerdone;
57: extern int blklevel;
58: extern flag saveall;
59: extern flag substars;
60: extern int impltype[ ];
61: extern int implleng[ ];
62: extern int implstg[ ];
63:
64: extern int tyint;
65: extern int tylogical;
66: extern ftnint typesize[];
67: extern int typealign[];
68: extern int procno;
69: extern int proctype;
70: extern char * procname;
71: extern int rtvlabel[ ];
72: extern int fudgelabel; /* to confuse the pdp11 optimizer */
73: extern struct addrblock *typeaddr;
74: extern struct addrblock *retslot;
75: extern int cxslot;
76: extern int chslot;
77: extern int chlgslot;
78: extern int procclass;
79: extern ftnint procleng;
80: extern int nentry;
81: extern flag multitype;
82: extern int blklevel;
83: extern int lastlabno;
84: extern int lastvarno;
85: extern int lastargslot;
86: extern int argloc;
87: extern ftnint autoleng;
88: extern ftnint bssleng;
89: extern int retlabel;
90: extern int ret0label;
91: extern int dorange;
92: extern int regnum[ ];
93: extern struct nameblock *regnamep[ ];
94: extern int maxregvar;
95: extern int highregvar;
96: extern int nregvar;
97:
98: extern chainp templist;
99: extern chainp holdtemps;
100: extern struct entrypoint *entries;
101: extern struct rplblock *rpllist;
102: extern chainp curdtp;
103: extern ftnint curdtelt;
104: extern flag toomanyinit;
105:
106: extern flag inioctl;
107: extern int iostmt;
108: extern struct addrblock *ioblkp;
109: extern int nioctl;
110: extern int nequiv;
111: extern int nintnames;
112: extern int nextnames;
113:
114: struct chain
115: {
116: chainp nextp;
117: tagptr datap;
118: };
119:
120: extern chainp chains;
121:
122: struct ctlframe
123: {
124: unsigned ctltype:8;
125: unsigned dostepsign:8;
126: int ctlabels[4];
127: int dolabel;
128: struct nameblock *donamep;
129: expptr domax;
130: expptr dostep;
131: };
132: #define endlabel ctlabels[0]
133: #define elselabel ctlabels[1]
134: #define dobodylabel ctlabels[1]
135: #define doposlabel ctlabels[2]
136: #define doneglabel ctlabels[3]
137: extern struct ctlframe ctls[ ];
138: extern struct ctlframe *ctlstack;
139: extern struct ctlframe *lastctl;
140:
141: struct extsym
142: {
143: char extname[XL];
144: unsigned extstg:4;
145: unsigned extsave:1;
146: unsigned extinit:1;
147: ptr extp;
148: ftnint extleng;
149: ftnint maxleng;
150: };
151:
152: extern struct extsym extsymtab[ ];
153: extern struct extsym *nextext;
154: extern struct extsym *lastext;
155:
156: struct labelblock
157: {
158: int labelno;
159: unsigned blklevel:8;
160: unsigned labused:1;
161: unsigned labinacc:1;
162: unsigned labdefined:1;
163: unsigned labtype:2;
164: ftnint stateno;
165: };
166:
167: extern struct labelblock labeltab[ ];
168: extern struct labelblock *labtabend;
169: extern struct labelblock *highlabtab;
170:
171: struct entrypoint
172: {
173: chainp nextp;
174: struct extsym *entryname;
175: chainp arglist;
176: int entrylabel;
177: int typelabel;
178: ptr enamep;
179: };
180:
181: struct primblock
182: {
183: unsigned tag:4;
184: unsigned vtype:4;
185: struct nameblock *namep;
186: struct listblock *argsp;
187: expptr fcharp;
188: expptr lcharp;
189: };
190:
191:
192: struct hashentry
193: {
194: int hashval;
195: struct nameblock *varp;
196: };
197: extern struct hashentry hashtab[ ];
198: extern struct hashentry *lasthash;
199:
200: struct intrpacked /* bits for intrinsic function description */
201: {
202: unsigned f1:3;
203: unsigned f2:4;
204: unsigned f3:7;
205: };
206:
207: struct nameblock
208: {
209: unsigned tag:4;
210: unsigned vtype:4;
211: unsigned vclass:4;
212: unsigned vstg:4;
213: expptr vleng;
214: char varname[VL];
215: unsigned vdovar:1;
216: unsigned vdcldone:1;
217: unsigned vadjdim:1;
218: unsigned vsave:1;
219: unsigned vprocclass:3;
220: unsigned vregno:4;
221: union {
222: int varno;
223: chainp vstfdesc; /* points to (formals, expr) pair */
224: struct intrpacked intrdesc; /* bits for intrinsic function */
225: } vardesc;
226: struct dimblock *vdim;
227: int voffset;
228: };
229:
230:
231: struct paramblock
232: {
233: unsigned tag:4;
234: unsigned vtype:4;
235: unsigned vclass:4;
236: expptr vleng;
237: char varname[VL];
238: ptr paramval;
239: } ;
240:
241:
242: struct exprblock
243: {
244: unsigned tag:4;
245: unsigned vtype:4;
246: unsigned vclass:4;
247: expptr vleng;
248: unsigned opcode:6;
249: expptr leftp;
250: expptr rightp;
251: };
252:
253:
254: union constant
255: {
256: char *ccp;
257: ftnint ci;
258: double cd[2];
259: };
260:
261: struct constblock
262: {
263: unsigned tag:4;
264: unsigned vtype:4;
265: expptr vleng;
266: union constant const;
267: };
268:
269:
270: struct listblock
271: {
272: unsigned tag:4;
273: unsigned vtype:4;
274: chainp listp;
275: };
276:
277:
278:
279: struct addrblock
280: {
281: unsigned tag:4;
282: unsigned vtype:4;
283: unsigned vclass:4;
284: unsigned vstg:4;
285: expptr vleng;
286: int memno;
287: expptr memoffset;
288: unsigned istemp:1;
289: unsigned ntempelt:10;
290: };
291:
292:
293:
294: struct errorblock
295: {
296: unsigned tag:4;
297: unsigned vtype:4;
298: };
299:
300:
301: union expression
302: {
303: struct exprblock;
304: struct addrblock;
305: struct constblock;
306: struct errorblock;
307: struct listblock;
308: struct primblock;
309: } ;
310:
311:
312:
313: struct dimblock
314: {
315: int ndim;
316: expptr nelt;
317: expptr baseoffset;
318: expptr basexpr;
319: struct
320: {
321: expptr dimsize;
322: expptr dimexpr;
323: } dims[1];
324: };
325:
326:
327: struct impldoblock
328: {
329: unsigned tag:4;
330: unsigned isactive:1;
331: unsigned isbusy:1;
332: struct nameblock *varnp;
333: struct constblock *varvp;
334: expptr implb;
335: expptr impub;
336: expptr impstep;
337: ftnint impdiff;
338: ftnint implim;
339: chainp datalist;
340: };
341:
342:
343: struct rplblock /* name replacement block */
344: {
345: chainp nextp;
346: struct nameblock *rplnp;
347: ptr rplvp;
348: struct exprblock *rplxp;
349: int rpltag;
350: };
351:
352:
353:
354: struct equivblock
355: {
356: ptr equivs;
357: unsigned eqvinit:1;
358: long int eqvtop;
359: long int eqvbottom;
360: } ;
361: #define eqvleng eqvtop
362:
363: extern struct equivblock eqvclass[ ];
364:
365:
366: struct eqvchain
367: {
368: chainp nextp;
369: ptr eqvitem;
370: long int eqvoffset;
371: } ;
372:
373: union chainedblock
374: {
375: struct chain;
376: struct entrypoint;
377: struct rplblock;
378: struct eqvchain;
379: };
380:
381:
382:
383: union taggedblock
384: {
385: struct nameblock;
386: struct paramblock;
387: struct exprblock;
388: struct constblock;
389: struct listblock;
390: struct addrblock;
391: struct errorblock;
392: struct primblock;
393: struct impldoblock;
394: } ;
395:
396:
397:
398:
399: struct literal
400: {
401: short littype;
402: short litnum;
403: union {
404: ftnint litival;
405: double litdval;
406: struct {
407: char litclen; /* small integer */
408: char litcstr[XL];
409: } litcval;
410: } litval;
411: };
412:
413: extern struct literal litpool[ ];
414: extern int nliterals;
415:
416:
417:
418:
419:
420: /* popular functions with non integer return values */
421:
422:
423: int *ckalloc();
424: char *varstr(), *nounder(), *varunder();
425: char *copyn(), *copys();
426: chainp hookup(), mkchain();
427: ftnint convci();
428: char *convic();
429: char *setdoto();
430: double convcd();
431: struct nameblock *mkname();
432: struct labelblock *mklabel();
433: struct extsym *mkext(), *newentry();
434: struct exprblock *addrof(), *call1(), *call2(), *call3(), *call4();
435: struct addrblock *builtin(), *mktemp(), *mktmpn();
436: struct addrblock *autovar(), *mklhs(), *mkaddr(), *putconst(), *memversion();
437: struct constblock *mkintcon();
438: expptr mkexpr(), mkconv(), mkfunct(), fixexpr(), fixtype();
439: tagptr cpexpr(), mkprim();
440: struct errorblock *errnode();
Defined struct's
addrblock
defined in line
279; used 201 times
- in line 73-74(2),
108,
304(2),
390(2),
435-436(4)
- in /usr/src/cmd/f77/data.c line
13-14(4),
53(2),
191(2)
- in /usr/src/cmd/f77/exec.c line
272(2),
425(2),
471(2),
549(2)
- in /usr/src/cmd/f77/expr.c line
220(2),
615(2),
649(2),
679(2),
852-855(4),
948-951(4),
1118-1123(6),
1173(2),
1225(2)
- in /usr/src/cmd/f77/init.c line
54-55(4),
102(2)
- in /usr/src/cmd/f77/intr.c line
306(2),
476-479(4)
- in /usr/src/cmd/f77/io.c line
364(2),
485(2),
686(2)
- in /usr/src/cmd/f77/misc.c line
365-370(4)
- in /usr/src/cmd/f77/pdp11.c line
277(2)
- in /usr/src/cmd/f77/proc.c line
214(2),
252(2),
538(2),
548-553(4),
585(2),
592(2),
623(2)
- in /usr/src/cmd/f77/put.c line
100-103(6),
114-117(6),
131-134(4)
- in /usr/src/cmd/f77/putdmr.c line
94(2),
176(2),
476(2),
527-531(6),
546(2),
569(2),
579-584(6),
735(2),
754-759(6),
872-876(4),
907-911(4),
934(2),
1018-1023(4),
1140(2)
- in /usr/src/cmd/f77/putscj.c line
145(2),
205(2),
446(2),
497-501(6),
516(2),
539(2),
549-554(6),
705(2),
724-729(6),
843-847(4),
878-882(4),
905(2),
1076-1081(4),
1203(2)
constblock
defined in line
261; used 68 times
- in line 305(2),
333(2),
388(2),
437(2)
- in /usr/src/cmd/f77/data.c line
9(2),
65(2),
193(2)
- in /usr/src/cmd/f77/exec.c line
217(2),
472(2)
- in /usr/src/cmd/f77/expr.c line
5-8(4),
17-20(4),
29-32(4),
45-48(4),
57-61(4),
69-74(4),
88-92(4),
104-108(4),
218(2),
1658(2),
1847(2),
1873(2)
- in /usr/src/cmd/f77/intr.c line
310(2)
- in /usr/src/cmd/f77/io.c line
486(2)
- in /usr/src/cmd/f77/pdp11.c line
283(2)
- in /usr/src/cmd/f77/put.c line
118(2),
132(2)
exprblock
defined in line
242; used 98 times
- in line 303(2),
348(2),
387(2),
434(2)
- in /usr/src/cmd/f77/expr.c line
199(2),
219(2),
384(2),
682-683(4),
770(2),
778(2),
1314(2),
1656(2),
2108(2)
- in /usr/src/cmd/f77/intr.c line
300(2),
308(2),
517-522(4)
- in /usr/src/cmd/f77/io.c line
346(2),
417-418(4),
466(2)
- in /usr/src/cmd/f77/misc.c line
505-510(4),
519(2),
532(2),
546(2),
560(2),
569(2)
- in /usr/src/cmd/f77/putdmr.c line
544(2),
731-736(4),
819(2),
846(2),
1019-1025(6),
1134-1138(4)
- in /usr/src/cmd/f77/putscj.c line
514(2),
701-706(4),
789(2),
817(2),
1077-1083(6),
1197-1201(4)
extsym
defined in line
141; used 50 times
- in line 152-154(6),
174(2),
433(2)
- in /usr/src/cmd/f77/expr.c line
680(2),
1121(2)
- in /usr/src/cmd/f77/init.c line
79-81(6)
- in /usr/src/cmd/f77/misc.c line
326(2),
332(2),
369(2)
- in /usr/src/cmd/f77/proc.c line
66(2),
92-96(6),
119(2),
393(2),
442(2),
472(2),
517(2),
632-636(4),
657(2)
labelblock
defined in line
156; used 45 times
- in line 39,
167-169(6),
432(2)
- in /usr/src/cmd/f77/exec.c line
98(2),
120(2),
197(2),
469(2),
485(2)
- in /usr/src/cmd/f77/init.c line
17(2),
87-89(6),
134(2)
- in /usr/src/cmd/f77/io.c line
138(2),
161(2),
193(2)
- in /usr/src/cmd/f77/misc.c line
292-295(4)
- in /usr/src/cmd/f77/proc.c line
23(2)
- in /usr/src/cmd/f77/putdmr.c line
149(2)
- in /usr/src/cmd/f77/putscj.c line
177(2)
nameblock
defined in line
207; used 106 times
- in line 93,
128,
185,
195,
332(2),
346(2),
385(2),
431(2)
- in /usr/src/cmd/f77/data.c line
58(2)
- in /usr/src/cmd/f77/equiv.c line
16(2),
145(2),
207(2)
- in /usr/src/cmd/f77/error.c line
55(2)
- in /usr/src/cmd/f77/exec.c line
163(2),
268(2),
424(2),
468(2)
- in /usr/src/cmd/f77/expr.c line
217(2),
647(2),
681(2),
771(2),
857(2),
934(2),
949(2),
964(2),
978(2),
1012(2),
1065(2),
1119(2),
1188(2),
1221(2),
1271(2)
- in /usr/src/cmd/f77/init.c line
75(2),
131(2)
- in /usr/src/cmd/f77/intr.c line
301(2),
477(2)
- in /usr/src/cmd/f77/io.c line
363(2),
484(2)
- in /usr/src/cmd/f77/misc.c line
254(2),
260(2)
- in /usr/src/cmd/f77/pdp11.c line
281(2),
349(2),
422(2)
- in /usr/src/cmd/f77/proc.c line
93(2),
122(2),
289-291(4),
389(2),
452(2),
476(2),
658(2),
673(2),
763(2),
786(2),
805(2)
Defined union's
Defined typedef's
chainp
defined in line
24; used 57 times
- in line 98-102(3),
120,
426-116(2),
173-175(2),
223,
274,
339,
345,
368
- in /usr/src/cmd/f77/data.c line
295-297(2)
- in /usr/src/cmd/f77/equiv.c line
19,
256
- in /usr/src/cmd/f77/exec.c line
164,
264-269(2)
- in /usr/src/cmd/f77/expr.c line
212,
281,
611,
774-776(2),
1007
- in /usr/src/cmd/f77/init.c line
91-99(4),
135
- in /usr/src/cmd/f77/intr.c line
309,
520
- in /usr/src/cmd/f77/io.c line
344,
358-360(2)
- in /usr/src/cmd/f77/misc.c line
75-78(3),
92,
103-106(2),
393-395(2),
492-494(2),
508,
579
- in /usr/src/cmd/f77/pdp11.c line
280
- in /usr/src/cmd/f77/proc.c line
120,
290,
473,
591
- in /usr/src/cmd/f77/putdmr.c line
1021,
1139
- in /usr/src/cmd/f77/putscj.c line
1079,
1202
expptr
defined in line
22; used 153 times
- in line 438-130(3),
187-188(2),
213,
236,
247-250(3),
265,
285-287(2),
316-322(5),
334-336(3)
- in /usr/src/cmd/f77/data.c line
61-62(2)
- in /usr/src/cmd/f77/equiv.c line
17
- in /usr/src/cmd/f77/exec.c line
8,
18,
133,
160,
199,
213,
266-267(2),
273,
423,
484,
516,
525
- in /usr/src/cmd/f77/expr.c line
105,
148-154(4),
186-190(3),
200,
340,
383-390(5),
544-547(3),
675,
779,
856,
1002-1011(5),
1064-1069(3),
1190,
1226,
1310-1312(2),
1318,
1655-1662(3),
2075,
2107-2110(2)
- in /usr/src/cmd/f77/intr.c line
311,
357
- in /usr/src/cmd/f77/io.c line
29,
192,
300,
362,
413-414(2),
483,
589,
622,
637,
669,
684,
699,
714,
730
- in /usr/src/cmd/f77/misc.c line
522,
535,
549,
563,
611,
633
- in /usr/src/cmd/f77/pdp11.c line
146,
170
- in /usr/src/cmd/f77/proc.c line
475,
550,
588,
625,
807-809(2),
821
- in /usr/src/cmd/f77/put.c line
59,
71,
80,
91
- in /usr/src/cmd/f77/putdmr.c line
61,
122,
133,
147,
174,
333-338(2),
462,
473-475(2),
567,
580,
755,
806,
873,
895,
906,
938,
1260-1262(2)
- in /usr/src/cmd/f77/putscj.c line
110,
165,
175,
203,
363-366(2),
431,
443-445(2),
537,
550,
725,
776,
844,
866,
877,
910,
1045,
1256-1259(2)
tagptr
defined in line
23; used 12 times
Defined macros
VL
defined in line
11; used 33 times
- in line 214,
237
- in /usr/src/cmd/f77/error.c line
60
- in /usr/src/cmd/f77/exec.c line
281
- in /usr/src/cmd/f77/expr.c line
703,
909,
1033,
1100,
1111,
1130,
1198
- in /usr/src/cmd/f77/intr.c line
18,
435-439(2),
449-460(4),
483,
506
- in /usr/src/cmd/f77/lex.c line
721-724(3)
- in /usr/src/cmd/f77/misc.c line
262,
271-276(2),
286
- in /usr/src/cmd/f77/pdp11.c line
462
- in /usr/src/cmd/f77/proc.c line
98,
130,
302,
403,
416
Usage of this include