|
|
1.1 root 1: /*
2: * structure to hold trees for optimization
3: */
4:
5: typedef struct slt {
6: field type;
7: field flags;
8: short lineno;
9: struct slt *next, *prev;
10: struct slt *nullslot;
11: expptr expr;
12: int label;
13: int *ctlinfo;
14: };
15:
16: typedef struct slt *Slotp;
17:
18: extern Slotp firstslot, lastslot; /* first, last slots in buffer */
19: extern int numslots; /* number of slots */
20:
21: Slotp newslot(), optbuff(), optinsert();
22: struct Ctlframe *cpframe();
23:
24: /*
25: ** Structures for cse analysis
26: */
27:
28: typedef struct IDblock *idptr;
29: typedef struct VALUEnode *valuen;
30: typedef struct IDlist *idlptr;
31: typedef struct DUPlist *duplptr;
32: typedef struct NODElist *nodelptr;
33:
34: struct IDblock
35: {
36: expptr idaddr;
37: valuen initval, assgnval;
38: nodelptr headnodelist;
39: struct IDblock *next;
40: };
41:
42: struct VALUEnode
43: {
44: expptr opp;
45: expptr *parent;
46: int n_dups;
47: unsigned is_dead : 1;
48: valuen lc,rc,rs;
49: idlptr headdeplist;
50: duplptr headduplist;
51: struct VALUEnode *next;
52: };
53:
54: struct IDlist
55: {
56: idptr idp;
57: struct IDlist *next;
58: };
59:
60: struct DUPlist
61: {
62: expptr *parent;
63: struct DUPlist *next;
64: };
65:
66: struct NODElist
67: {
68: valuen nodep;
69: struct NODElist *next;
70: };
71:
72: /*
73: * structure to hold information on basic blocks
74: */
75:
76:
77:
78: typedef struct bblock {
79: Slotp first, last;
80: idptr headid;
81: valuen headnode, tailnode;
82: struct bblock *next, *prev;
83: };
84:
85: typedef struct bblock *Bblockp;
86:
87: extern Bblockp firstblock; /* first block in buffer */
88: extern Bblockp lastblock; /* last block in buffer */
89:
90:
91:
92: /* data structure for optloop and regalloc routines */
93:
94: typedef
95: struct regnode
96: {
97: field vstg;
98: field vtype;
99: int memno;
100: int memoffset;
101: unsigned isarrayarg : 1;
102: } REGNODE;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.