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