|
|
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.