Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:plunky:20111212091825

Diff

Diff from 1.23 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/pcc/pcc/f77/fcom/defs.h

Annotated File View

plunky
1.23
1 /*      $Id: defs.h,v 1.23 2011/12/12 09:18:25 plunky Exp $     */
ragge
1.1
2 /*
3  * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * Redistributions of source code and documentation must retain the above
10  * copyright notice, this list of conditions and the following disclaimer.
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditionsand the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  * All advertising materials mentioning features or use of this software
15  * must display the following acknowledgement:
16  *      This product includes software developed or owned by Caldera
17  *      International, Inc.
18  * Neither the name of Caldera International, Inc. nor the names of other
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
23  * INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
24  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED.  IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
27  * FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT,
31  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
33  * POSSIBILITY OF SUCH DAMAGE.
34  */
35 #include <stdio.h>
ragge
1.2
36 #include <ctype.h>
ragge
1.4
37 #include <stdlib.h>
ragge
1.1
38
plunky
1.23
39 /* Copied from ../../cc/ccom/pass1.h. */
40 #define DATA    1
41 #define RDATA   2
42 #define UDATA   4
43
ragge
1.1
44 #define VL 6
ragge
1.14
45 #define XL 8
ragge
1.1
46
47 #define MAXINCLUDES 10
48 #define MAXLITERALS 20
49 #define MAXCTL 20
50 #define MAXHASH 401
ragge
1.18
51 #define MAXSTNO 1000
ragge
1.1
52 #define MAXEXT 200
53 #define MAXEQUIV 150
54 #define MAXLABLIST 100
55
ragge
1.6
56 typedef struct bigblock *bigptr;
ragge
1.1
57 typedef union chainedblock *chainp;
58
ragge
1.16
59 extern FILE *infile;
60 extern FILE *diagfile;
ragge
1.1
61 extern long int headoffset;
62
63 extern char token [ ];
64 extern int toklen;
65 extern int lineno;
66 extern char *infname;
67 extern int needkwd;
68 extern struct labelblock *thislabel;
69
ragge
1.20
70 extern int mflagtflag;
71
ragge
1.1
72 extern flag profileflag;
73 extern flag optimflag;
sgk
1.22
74 extern flag quietflag;
ragge
1.1
75 extern flag nowarnflag;
76 extern flag ftn66flag;
77 extern flag shiftcase;
78 extern flag undeftype;
79 extern flag shortsubs;
80 extern flag onetripflag;
81 extern flag checksubs;
82 extern flag debugflag;
83 extern int nerr;
84 extern int nwarn;
85 extern int ndata;
86
87 extern int parstate;
88 extern flag headerdone;
89 extern int blklevel;
90 extern flag saveall;
91 extern flag substars;
92 extern int impltype[ ];
93 extern int implleng[ ];
94 extern int implstg[ ];
95
96 extern int tyint;
97 extern int tylogical;
98 extern ftnint typesize[];
99 extern int typealign[];
100 extern int procno;
101 extern int proctype;
102 extern char * procname;
103 extern int rtvlabel[ ];
104 extern int fudgelabel;  /* to confuse the pdp11 optimizer */
ragge
1.8
105 extern struct bigblock *typeaddr;
ragge
1.9
106 extern struct bigblock *retslot;
ragge
1.1
107 extern int cxslot;
108 extern int chslot;
109 extern int chlgslot;
110 extern int procclass;
111 extern ftnint procleng;
112 extern int nentry;
113 extern flag multitype;
114 extern int blklevel;
115 extern int lastlabno;
116 extern int lastvarno;
117 extern int lastargslot;
118 extern int argloc;
119 extern ftnint autoleng;
120 extern ftnint bssleng;
121 extern int retlabel;
122 extern int ret0label;
123 extern int dorange;
124 extern int regnum[ ];
ragge
1.9
125 extern bigptr regnamep[ ];
ragge
1.1
126 extern int maxregvar;
127 extern int highregvar;
128
129 extern chainp templist;
130 extern chainp holdtemps;
ragge
1.9
131 extern chainp entries;
132 extern chainp rpllist;
ragge
1.1
133 extern chainp curdtp;
134 extern ftnint curdtelt;
135 extern flag toomanyinit;
136
137 extern flag inioctl;
138 extern int iostmt;
ragge
1.6
139 extern struct bigblock *ioblkp;
ragge
1.1
140 extern int nioctl;
141 extern int nequiv;
142 extern int nintnames;
143 extern int nextnames;
144
145 struct chain
146         {
147         chainp nextp;
ragge
1.6
148         bigptr datap;
ragge
1.1
149         };
150
151 extern chainp chains;
152
153 struct ctlframe
154         {
155         unsigned ctltype:8;
156         unsigned dostepsign:8;
157         int ctlabels[4];
158         int dolabel;
ragge
1.9
159         struct bigblock *donamep;
ragge
1.6
160         bigptr domax;
161         bigptr dostep;
ragge
1.1
162         };
163 #define endlabel ctlabels[0]
164 #define elselabel ctlabels[1]
165 #define dobodylabel ctlabels[1]
166 #define doposlabel ctlabels[2]
167 #define doneglabel ctlabels[3]
168 extern struct ctlframe ctls[ ];
169 extern struct ctlframe *ctlstack;
170 extern struct ctlframe *lastctl;
171
172 struct extsym
173         {
174         char extname[XL];
175         unsigned extstg:4;
176         unsigned extsave:1;
177         unsigned extinit:1;
ragge
1.9
178         chainp extp;
ragge
1.1
179         ftnint extleng;
180         ftnint maxleng;
181         };
182
183 extern struct extsym extsymtab[ ];
184 extern struct extsym *nextext;
185 extern struct extsym *lastext;
186
187 struct labelblock
188         {
189         int labelno;
190         unsigned blklevel:8;
191         unsigned labused:1;
192         unsigned labinacc:1;
193         unsigned labdefined:1;
194         unsigned labtype:2;
195         ftnint stateno;
196         };
197
198 extern struct labelblock labeltab[ ];
199 extern struct labelblock *labtabend;
200 extern struct labelblock *highlabtab;
201
202 struct entrypoint
203         {
204         chainp nextp;
205         struct extsym *entryname;
206         chainp arglist;
207         int entrylabel;
208         int typelabel;
209         ptr enamep;
210         };
211
212 struct primblock
213         {
ragge
1.6
214         struct bigblock *namep;
215         struct bigblock *argsp;
216         bigptr fcharp;
217         bigptr lcharp;
ragge
1.1
218         };
219
220
221 struct hashentry
222         {
223         int hashval;
ragge
1.6
224         struct bigblock *varp;
ragge
1.1
225         };
226 extern struct hashentry hashtab[ ];
227 extern struct hashentry *lasthash;
228
229 struct intrpacked       /* bits for intrinsic function description */
230         {
231         unsigned f1:3;
232         unsigned f2:4;
233         unsigned f3:7;
234         };
235
236 struct nameblock
237         {
238         char varname[VL];
239         unsigned vdovar:1;
240         unsigned vdcldone:1;
241         unsigned vadjdim:1;
242         unsigned vsave:1;
243         unsigned vprocclass:3;
244         unsigned vregno:4;
245         union   {
246                 int varno;
247                 chainp vstfdesc;        /* points to (formals, expr) pair */
248                 struct intrpacked intrdesc;     /* bits for intrinsic function */
249                 } vardesc;
250         struct dimblock *vdim;
251         int voffset;
252         };
253
254
255 struct paramblock
256         {
257         char varname[VL];
ragge
1.6
258         bigptr paramval;
ragge
1.1
259         } ;
260
261
262 struct exprblock
263         {
264         unsigned opcode:6;
ragge
1.6
265         bigptr leftp;
266         bigptr rightp;
ragge
1.1
267         };
268
ragge
1.6
269 struct dcomplex {
270         double drealdimag;
271 };
ragge
1.1
272
273 union constant
274         {
275         char *ccp;
276         ftnint ci;
277         double cd[2];
ragge
1.6
278         struct dcomplex dc;
ragge
1.1
279         };
280
281 struct constblock
282         {
ragge
1.2
283         union constant fconst;
ragge
1.1
284         };
285
286
287 struct listblock
288         {
289         chainp listp;
290         };
291
292
293
294 struct addrblock
295         {
296         int memno;
ragge
1.6
297         bigptr memoffset;
ragge
1.1
298         unsigned istemp:1;
299         unsigned ntempelt:10;
300         };
301
302
303
304 struct errorblock
305         {
ragge
1.6
306         int pad;
ragge
1.1
307         };
308
309
310 struct dimblock
311         {
312         int ndim;
ragge
1.6
313         bigptr nelt;
314         bigptr baseoffset;
315         bigptr basexpr;
ragge
1.1
316         struct
317                 {
ragge
1.6
318                 bigptr dimsize;
319                 bigptr dimexpr;
ragge
1.1
320                 } dims[1];
321         };
322
323
ragge
1.6
324 struct impldoblock  /* XXXX */
ragge
1.1
325         {
ragge
1.6
326 #define isactive vtype
327 #define isbusy vclass
ragge
1.9
328         struct bigblock *varnp;
329         struct bigblock *varvp;
ragge
1.6
330         bigptr implb;
331         bigptr impub;
332         bigptr impstep;
ragge
1.1
333         ftnint impdiff;
334         ftnint implim;
335         chainp datalist;
336         };
337
338
339 struct rplblock /* name replacement block */
340         {
341         chainp nextp;
ragge
1.6
342         struct bigblock *rplnp;
ragge
1.1
343         ptr rplvp;
ragge
1.6
344         struct bigblock *rplxp;
ragge
1.1
345         int rpltag;
346         };
347
348
349
350 struct equivblock
351         {
352         ptr equivs;
353         unsigned eqvinit:1;
354         long int eqvtop;
355         long int eqvbottom;
356         } ;
357 #define eqvleng eqvtop
358
359 extern struct equivblock eqvclass[ ];
360
361
362 struct eqvchain
363         {
364         chainp nextp;
365         ptr eqvitem;
366         long int eqvoffset;
367         } ;
368
369 union chainedblock
370         {
ragge
1.2
371         struct chain chain;
372         struct entrypoint entrypoint;
373         struct rplblock rplblock;
374         struct eqvchain eqvchain;
ragge
1.1
375         };
376
377
ragge
1.6
378 struct bigblock {
379         unsigned tag:4;
380         unsigned vtype:4;
381         unsigned vclass:4;
382         unsigned vstg:4;
383         bigptr vleng;
384         union {
385                 struct exprblock _expr;
386                 struct addrblock _addr;
387                 struct constblock _const;
388                 struct errorblock _error;
389                 struct listblock _list;
390                 struct primblock _prim;
391                 struct nameblock _name;
392                 struct paramblock _param;
393                 struct impldoblock _impldo;
394         } _u;
395 #define b_expr          _u._expr
396 #define b_addr          _u._addr
397 #define b_const         _u._const
398 #define b_error         _u._error
399 #define b_list          _u._list
400 #define b_prim          _u._prim
401 #define b_name          _u._name
402 #define b_param         _u._param
403 #define b_impldo        _u._impldo
404 };
ragge
1.1
405
406 struct literal
407         {
408         short littype;
409         short litnum;
410         union   {
411                 ftnint litival;
412                 double litdval;
413                 struct  {
414                         char litclen;   /* small integer */
415                         char litcstr[XL];
416                         } litcval;
417                 } litval;
418         };
419
420 extern struct literal litpool[ ];
421 extern int nliterals;
422
423
424
425
426
427 /* popular functions with non integer return values */
ragge
1.6
428 #define expptr bigptr
429 #define tagptr bigptr
ragge
1.1
430
ragge
1.9
431 ptr cpblock(int ,void *);
ragge
1.1
432
ragge
1.9
433 ptr ckalloc(int);
ragge
1.4
434 char *varstr(intchar *), *nounder(intchar *), *varunder(intchar *);
435 char *copyn(intchar *), *copys(char *);
ragge
1.7
436 chainp hookup(chainpchainp), mkchain(bigptrchainp);
ragge
1.6
437 ftnint convci(intchar *), iarrlen(struct bigblock *q);
ragge
1.5
438 ftnint lmin(ftnintftnint), lmax(ftnintftnint);
ragge
1.6
439 ftnint simoffset(expptr *);
ragge
1.4
440 char *memname(intint), *convic(ftnint), *setdoto(char *);
441 double convcd(intchar *);
ragge
1.6
442 struct extsym *mkext(char *), 
443         *newentry(struct bigblock *),
ragge
1.4
444         *comblock(intchar *s);
ragge
1.6
445 struct bigblock *mkname(intchar *);
ragge
1.4
446 struct labelblock *mklabel(ftnint);
ragge
1.6
447 struct bigblock *addrof(expptr), *call1(intchar *, expptr),
ragge
1.4
448         *call2(intchar *, expptrexpptr),
449         *call3(intchar *, expptrexpptrexpptr),
450         *call4(intchar *, expptrexpptrexpptrexpptr);
ragge
1.6
451 struct bigblock *call0(intchar *), *mkexpr(intbigptrbigptr);
ragge
1.9
452 struct bigblock *callk(intchar *, bigptr);
ragge
1.5
453
ragge
1.6
454 struct bigblock *builtin(intchar *), *fmktemp(intbigptr),
455         *mktmpn(intintbigptr), *nextdata(ftnint *, ftnint *),
456         *autovar(intintbigptr), *mklhs(struct bigblock *),
457         *mkaddr(struct bigblock *), *putconst(struct bigblock *),
458         *memversion(struct bigblock *);
459 struct bigblock *mkscalar(struct bigblock *np);
460 struct bigblock *realpart(struct bigblock *p);
461 struct bigblock *imagpart(struct bigblock *p);
ragge
1.5
462
ragge
1.6
463 struct bigblock *mkintcon(ftnint), *mkbitcon(intintchar *),
ragge
1.4
464         *mklogcon(int), *mkaddcon(int), *mkrealcon(intdouble),
ragge
1.6
465         *mkstrcon(intchar *), *mkcxcon(bigptr,bigptr);
ragge
1.9
466 bigptr mkconst(int t);
ragge
1.5
467
ragge
1.9
468 bigptr mklist(chainp p);
469 bigptr mkiodo(chainpchainp);
ragge
1.4
470
471
ragge
1.6
472 bigptr mkconv(intbigptr),
473         mkfunct(struct bigblock *), fixexpr(struct bigblock *),
474         fixtype(bigptr);
ragge
1.4
475
476
ragge
1.9
477 bigptr cpexpr(bigptr), mkprim(bigptrstruct bigblock *, bigptrbigptr);
ragge
1.6
478 struct bigblock *mkarg(intint);
479 struct bigblock *errnode(void);
ragge
1.4
480 void initkey(void), prtail(void), puteof(void), done(int);
481 void fileinit(void), procinit(void), endproc(void), doext(void), preven(int);
482 int inilex(char *), yyparse(void), newlabel(void), lengtype(intint);
483 void err(char *, ...), warn(char *, ...), fatal(char *, ...), enddcl(void);
ragge
1.12
484 void p2pass(char *s), frexpr(bigptr), execerr(char *, ...);
ragge
1.4
485 void setimpl(intftnintintint), setlog(void), newproc(void);
ragge
1.6
486 void prdbginfo(void), impldcl(struct bigblock *p);
ragge
1.4
487 void putbracket(void), enddcl(void), doequiv(void);
488 void puthead(char *), startproc(struct extsym *, int);
ragge
1.6
489 void dclerr(char *sstruct bigblock *v), putforce(intbigptr);
ragge
1.4
490 void entrypt(intintftnintstruct extsym *, chainp);
ragge
1.6
491 void settype(struct bigblock *, intint), putlabel(int);
492 void putbranch(struct bigblock *p), goret(int), putrbrack(int);
493 void prolog(struct entrypoint *, struct bigblock *), prendproc(void);
ragge
1.4
494 void prlocvar(char *, ftnint), prext(char *, ftnintint);
ragge
1.6
495 void vardcl(struct bigblock *v), frchain(chainp *p); 
496 void frtemp(struct bigblock *p), incomm(struct extsym *, struct bigblock *);
497 void setintr(struct bigblock * v), setext(struct bigblock * v);
ragge
1.4
498 struct uux { expptr lbub; };
ragge
1.6
499 void setbound(struct bigblock *, intstruct uux []);
ragge
1.4
500 void setfmt(struct labelblock *lp), frdata(chainp), frrpl(void),
ragge
1.6
501         dataval(struct bigblock *, struct bigblock *),
502         consnegop(struct bigblock *p), exdo(intchainp), exelse(void),
503         exendif(void), exif(bigptr), exelif(bigptr),
504         exequals(struct bigblock *, bigptr),
505         exassign(struct bigblock *, struct labelblock *),
506         exarif(bigptrstruct labelblock *, struct labelblock *,
ragge
1.4
507             struct labelblock *);
508
509
510
511 int intrfunct(char s[VL]), eqn(intchar *, char *);
512 int fmtstmt(struct labelblock *lp);
ragge
1.5
513 int cktype(intintint);
ragge
1.6
514 int yylex(void), inregister(struct bigblock *);
ragge
1.5
515 int inilex(char *), iocname(void);
ragge
1.10
516 int maxtype(intint), flog2(ftnint), hextoi(int);
ragge
1.5
517 int cmpstr(char *, char *, ftnintftnint);
ragge
1.6
518 int enregister(struct bigblock *np);
519 int conssgn(bigptr p);
520 int fixargs(intstruct bigblock *);
521 int addressable(bigptr p);
ragge
1.5
522
ragge
1.12
523 void prlabel(int);
ragge
1.18
524 void prconi(FILE *, intftnint);
ragge
1.12
525 void prcona(ftnint);
ragge
1.18
526 void prconr(FILE *, intdouble);
ragge
1.6
527 void prarif(bigptrintintint);
ragge
1.12
528 void putstr(char *, ftnint);
ragge
1.11
529 NODE *putex1(bigptr p);
ragge
1.6
530 void puteq(bigptrbigptr);
ragge
1.5
531 void popstack(chainp *p); 
532 void consconv(intunion constant *, intunion constant *);
533 void yyerror(char *s);
534 void enddo(int);
535 void doinclude(char *);
536 void flline(void);
537 void startioctl(void);
ragge
1.6
538 void endioctl(void), endio(void), ioclause(intbigptr), doio(chainp);
ragge
1.9
539 void excall(struct bigblock *, struct bigblock *, intstruct labelblock *[]);
ragge
1.5
540 void exreturn(expptr p);
541 void exstop(intexpptr);
542 void exgoto(struct labelblock *);
ragge
1.9
543 void exasgoto(bigptr);
ragge
1.5
544 void putcmgo(expptrintstruct labelblock *[]);
545 void putexpr(expptr p);
546 void putif(expptrint);
547 void putgoto(int);
ragge
1.6
548 void deregister(struct bigblock *np);
ragge
1.11
549 NODE *putx(expptr p);
ragge
1.5
550 void cpn(intchar *, char *);
551 void prcmgoto(expptrintintint);
ragge
1.6
552 char *lexline(ftnint *n);
ragge
1.15
553 bigptr suboffset(struct bigblock *p);
ragge
1.9
554 struct bigblock *intraddr(struct bigblock *np);
555 struct bigblock *intrcall(bigptrbigptrint);
ragge
1.12
556 void setloc(int);
ragge
1.17
557 void prnloc(char *name);
ragge
1.19
558 void fprint(bigptr pint indx);
559 void ckfree(void *p);
560
ragge
1.6
561 #undef expptr
562 #undef tagptr
ragge
1.4
563
564 #define err1 err
565 #define err2 err
566 #define warn1 warn
567 #define fatal1 fatal
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-08-30 18:15 +0200